Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
908d933fa7 | ||
|
|
2fd60900c4 | ||
|
|
0ea3eeda32 |
@@ -16,5 +16,5 @@ labels: compiling help
|
||||
[ ] Mac
|
||||
|
||||
### Explain your issue
|
||||
##### Please check first if your issue haven't already been reported yet, and make sure you ran the `update.bat` file before building.
|
||||
[weed]: <> (MAKE SURE TO ADD A SCREENSHOT OF THE CRASH HANDLER, IF AVAILABLE, AND STEPS TO REPRODUCE THE BUG!)
|
||||
##### Please check first if your issue haven't already been reported yet.
|
||||
[weed]: <> (MAKE SURE TO ADD A SCREENSHOT OF THE CRASH HANDLER, IF AVAILABLE, AND STEPS TO REPRODUCE THE BUG!)
|
||||
@@ -2,12 +2,10 @@
|
||||
name: Linux Build
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
name: Linux Build
|
||||
permissions: write-all
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Pulling the source
|
||||
uses: actions/checkout@v2
|
||||
@@ -26,27 +24,22 @@ jobs:
|
||||
export/release/linux/obj/
|
||||
restore-keys: |
|
||||
cache-build-linux
|
||||
- name: Installing LibVLC
|
||||
run: |
|
||||
sudo apt-get install libvlc-dev libvlccore-dev
|
||||
- name: Installing/Updating libraries
|
||||
run: |
|
||||
haxe -cp commandline -D analyzer-optimize --run Main setup
|
||||
haxe -cp ./update -D analyzer-optimize -main Update --interp
|
||||
- name: Building the game
|
||||
run: |
|
||||
haxelib run lime build linux
|
||||
- name: Tar files
|
||||
run: tar -zcvf CodenameEngine.tar.gz export/release/linux/bin
|
||||
- name: Uploading artifact (entire build)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Codename Engine
|
||||
path: CodenameEngine.tar.gz
|
||||
# - name: Uploading artifact (executable)
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: Update-Linux
|
||||
# path: export/release/linux/bin/CodenameEngine
|
||||
path: export/release/linux/bin
|
||||
- name: Uploading artifact (executable)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Update-Linux
|
||||
path: export/release/linux/bin/CodenameEngine
|
||||
- name: Clearing already existing cache
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
@@ -76,4 +69,4 @@ jobs:
|
||||
export/release/linux/haxe/
|
||||
export/release/linux/obj/
|
||||
restore-keys: |
|
||||
cache-build-linux
|
||||
cache-build-linux
|
||||
@@ -2,11 +2,9 @@
|
||||
name: Mac OS Build
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
name: Mac OS Build
|
||||
permissions: write-all
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: Pulling the new commit
|
||||
@@ -28,22 +26,20 @@ jobs:
|
||||
cache-build-mac
|
||||
- name: Installing/Updating libraries
|
||||
run: |
|
||||
haxe -cp commandline -D analyzer-optimize --run Main setup
|
||||
haxe -cp ./update -D analyzer-optimize -main Update --interp
|
||||
- name: Building the game
|
||||
run: |
|
||||
haxelib run lime build mac
|
||||
- name: Tar files
|
||||
run: tar -zcvf CodenameEngine.tar.gz export/release/macos/bin
|
||||
- name: Uploading artifact (entire build)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Codename Engine
|
||||
path: CodenameEngine.tar.gz
|
||||
# - name: Uploading artifact (executable)
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: Update-Mac
|
||||
# path: export/release/macos/bin/CodenameEngine
|
||||
path: export/release/macos/bin
|
||||
- name: Uploading artifact (executable)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Update-Mac
|
||||
path: export/release/macos/bin/CodenameEngine
|
||||
- name: Clearing already existing cache
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
@@ -73,4 +69,4 @@ jobs:
|
||||
export/release/macos/haxe/
|
||||
export/release/macos/obj/
|
||||
restore-keys: |
|
||||
cache-build-mac
|
||||
cache-build-mac
|
||||
@@ -2,11 +2,9 @@
|
||||
name: Windows Build
|
||||
on:
|
||||
push:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
name: Windows Build
|
||||
permissions: write-all
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Pulling the new commit
|
||||
@@ -28,7 +26,7 @@ jobs:
|
||||
cache-build-windows
|
||||
- name: Installing/Updating libraries
|
||||
run: |
|
||||
haxe -cp commandline -D analyzer-optimize --run Main setup
|
||||
haxe -cp ./update -D analyzer-optimize -main Update --interp
|
||||
- name: Building the game
|
||||
run: |
|
||||
haxelib run lime build windows
|
||||
@@ -37,11 +35,11 @@ jobs:
|
||||
with:
|
||||
name: Codename Engine
|
||||
path: export/release/windows/bin
|
||||
# - name: Uploading artifact (executable)
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: Update-Windows
|
||||
# path: export/release/windows/bin/CodenameEngine.exe
|
||||
- name: Uploading artifact (executable)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Update-Windows
|
||||
path: export/release/windows/bin/CodenameEngine.exe
|
||||
- name: Clearing already existing cache
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
@@ -71,4 +69,4 @@ jobs:
|
||||
export/release/windows/haxe/
|
||||
export/release/windows/obj/
|
||||
restore-keys: |
|
||||
cache-build-windows
|
||||
cache-build-windows
|
||||
@@ -2,10 +2,5 @@ export/
|
||||
dump/
|
||||
latest/windows/obj/
|
||||
latest/windows/haxe/
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
.haxelib/
|
||||
pages/
|
||||
docs/doc.xml
|
||||
mods/Baldi's Basics in Funkin'/
|
||||
.vscode/
|
||||
.haxelib/
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"editor.detectIndentation": false,
|
||||
"editor.insertSpaces": false,
|
||||
"files.associations": {
|
||||
"*.hx": "haxe",
|
||||
"*.hscript": "haxe",
|
||||
"*.hsc": "haxe",
|
||||
"*.hxs": "haxe"
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "lime",
|
||||
"command": "test",
|
||||
"problemMatcher": [
|
||||
"$haxe-absolute",
|
||||
"$haxe",
|
||||
"$haxe-error",
|
||||
"$haxe-trace"
|
||||
],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"label": "lime: test (active configuration)"
|
||||
},
|
||||
{
|
||||
"type": "lime",
|
||||
"command": "build",
|
||||
"problemMatcher": [
|
||||
"$haxe-absolute",
|
||||
"$haxe",
|
||||
"$haxe-error",
|
||||
"$haxe-trace"
|
||||
],
|
||||
"group": "build",
|
||||
"label": "lime: build (active configuration)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
# Codename Engine v0.4.idk
|
||||
|
||||
### This is the first ever public release of Codename Engine **BETA**.
|
||||
Shoutout to the people who stuck with us throughout the alpha and supported us! \
|
||||
<br />
|
||||
|
||||
# Features available in this version:
|
||||
- ### Simple but advanced modding system!
|
||||
- Mods have been reworked to run in it's entirety instead of just limited to songs.
|
||||
- Uses an advanced scripting system based on haxe which is capable of modifying the game beyond source code.
|
||||
- Uses a system of events based on actions going on in the game allowing change of those actions to your needs. (ex. when a player hits a note, when it confirms on a menu etc.)
|
||||
- Ability to bind scripts to characters or stages.
|
||||
- Ability to bind scripts to states/menus.
|
||||
- Ability to create your own states/classes just like source code.
|
||||
- Ability to create even more advanced stuff using systems like ndll.
|
||||
- Uses a brand new song structure for cleanliness.
|
||||
- Uses a brand new chart format for optimization and extensibility.
|
||||
- Uses meta system for storing important values instead of in the chart file.
|
||||
- Characters, stages, weeks use an xml format for cleanliness.
|
||||
- Native custom shaders support.
|
||||
- Native 3D renderer.
|
||||
- Addon system for adding scripts or skins to run in any mod.
|
||||
- Ability to add your own options.
|
||||
- ### Multiple Overhauls
|
||||
- Settings are more streamlined.
|
||||
- Strumlines are more flexible than before (unlike base game's hardcoded 2)
|
||||
- Characters are also flexible (unlike base game's hardcoded 3)
|
||||
- New input system
|
||||
- New accuracy and misses system, added to fix the base game UI.
|
||||
- New options, including:
|
||||
- Controls rebinds (for P1 and P2)
|
||||
- Downscroll
|
||||
- Ghost Tapping
|
||||
- Countless of rewrites around the code (menus, gameplay, system etc.)
|
||||
- ### New Features
|
||||
- Opponent & Co-op modes
|
||||
- New volume change SFX (no more loud flixel beep, customizable)
|
||||
- New FPS counter allowing you to see advanced info by pressing F3.
|
||||
- (Windows) FNF is no longer blurry on 125-150% DPI
|
||||
- FNF auto fixes audio on state change when you plug in/out your headphones.
|
||||
- FNF auto applies dark titlebar
|
||||
- Week 7 uses softcoded cutscenes (no MP4)
|
||||
- Auto updating: Once the engine updates, a prompt will be available at launch. If you accept to update, the engine will auto install the newest version. All of the following update files will be downloaded from the GitHub releases:
|
||||
- `Update-Windows.exe` - Containing the latest Windows executable. (~60mb)
|
||||
- `Update-Assets.zip` - Every asset change from the latest version to the newest. If upgrading from even older version, all of the `Update-Assets.zip` files for the versions in between and the latest one will be downloaded.
|
||||
- ### Optimizations
|
||||
- optimizations idk fill this with stuff
|
||||
- Memory has been optimized (most of the game runs < 500mb)
|
||||
- Usage of [flxanimate](https://github.com/Dot-Stuff/flxanimate) on big sprites, such as Girlfriend to save memory.
|
||||
- Ability to add more optimizations to your mod using the `Low Memory Mode` option.
|
||||
|
||||
- ### Editors
|
||||
- Charter
|
||||
- Has been reworked entirely to have new, more streamlined UI.
|
||||
- idk too lazy to fill this in
|
||||
- Undos/Redos supported
|
||||
- Warning on closing unsaved work
|
||||
- Clean UI (for ocd freaks)
|
||||
- Mature Chart editor (Character editor rework soon)
|
||||
- Features not found in other editors!
|
||||
- Every single state & substate can be modified via HScript (`data/statesStateName.hx`)
|
||||
@@ -1,82 +0,0 @@
|
||||
# Codename Engine features
|
||||
This markdown file contains every single feature Codename has, separated into multiple categories. List may be incomplete.
|
||||
|
||||
_**QOL = Quality of Life**_
|
||||
|
||||
<details>
|
||||
<summary><h2>Player QOL Features</h2></summary>
|
||||
|
||||
- New input system
|
||||
- New accuracy and misses system, added to fix the base game UI.
|
||||
- New options, including:
|
||||
- Controls rebinds (for P1 and P2)
|
||||
- Downscroll
|
||||
- Ghost Tapping
|
||||
- Opponent & Co-op modes
|
||||
- Memory optimisation (most of the game runs < 500mb)
|
||||
- Usage of [flxanimate](https://github.com/Dot-Stuff/flxanimate) on big sprites, such as Girlfriend to save memory.
|
||||
- You can further optimize it on certain stages by enabling `Low Memory Mode` in `Options > Appearance`.
|
||||
- New volume change SFX (no more loud flixel beep, customizable)
|
||||
- New FPS counter allowing you to see advanced info by pressing F3.
|
||||
- Simple but advanced modding system (press TAB on main menu)
|
||||
- **Windows only:**
|
||||
- (Windows) FNF is no longer blurry on 125-150% DPI
|
||||
- FNF auto fixes audio on state change when you plug in/out your headphones.
|
||||
- FNF auto applies dark titlebar
|
||||
- **Week 7 included** with softcoded cutscenes (no MP4)
|
||||
- Auto updating: Once the engine updates, a prompt will be available at launch. If you accept to update, the engine will auto install the newest version. All of the following update files will be downloaded from the GitHub releases:
|
||||
- `Update-Windows.exe` - Containing the latest Windows executable. (~60mb)
|
||||
- `Update-Assets.zip` - Every asset change from the latest version to the newest. If upgrading from even older version, all of the `Update-Assets.zip` files for the versions in between and the latest one will be downloaded.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h2>Modding QOL features</h2></summary>
|
||||
|
||||
- New assets and scripting management - **Applies both to the `assets` folder and mods.**
|
||||
- Support for `hscript-improved`, a fork made to allow HScript to push modding even further
|
||||
- Allows for imports
|
||||
- Allows for public variables (variables shared between every script in a ScriptPack such as a song scripts)
|
||||
- Allows for static variables (variabels shared between every single script ran in this mod)
|
||||
- Allows you to use for example `boyfriend` instead of `PlayState.boyfriend` or `game.boyfriend`, for smaller and easier to comprehend code.
|
||||
- Allows you to use `@:bypassAccessor`
|
||||
- Allows you to use maps
|
||||
- Usage of XML files for Characters instead of hardcoding them.
|
||||
- Animation names, prefixes, indices, etc... can be set in the XML without an additional line of code.
|
||||
- Offsets are automatically fixed. That means changes such as scaling, rotation, and playing as an opponent character wont break them.
|
||||
- Entirely new song structure (`songs/name/`)
|
||||
- Usage of `meta.json`, which allows you to synchronize data between charts and the Freeplay menu.
|
||||
- Charts can use their own by specifying `meta` in the JSON (Codename charts only)
|
||||
- Charts are now located in `songs/name/charts/`, and are named after the difficulty `hard.json` instead of `name-hard.json`
|
||||
- Difficulties are auto-detected in case they aren't specified in the `meta.json` file.
|
||||
- Scripts are located in `songs/name/scripts/`, and only applies to the current song.
|
||||
- Script that applies on every song are located in `data/charts/`.
|
||||
- Song files are now located in `songs/name/song/`. They still follow their `Inst.ogg` and `Voices.ogg` names.
|
||||
- Inst/Voices for custom difficulties can be set by naming those files `Inst-difficulty.ogg` and/or `Voices-difficulty.ogg`.
|
||||
- Song length limits
|
||||
- Usage of XML files for stages. XMLs can:
|
||||
- Change camera zooms, camera offsets, etc...
|
||||
- Add elements to the stage and
|
||||
- Position them
|
||||
- Add animations
|
||||
- Change their scale
|
||||
- Change their scrollfactor
|
||||
- Change their zoomfactor
|
||||
- Turn on/off their antialiasing (on by default)
|
||||
- Change additional properties via child nodes.
|
||||
- Change boyfriend, girlfriend and dad's info
|
||||
- Moving the `<boyfriend />`, `<girlfriend />` and `<dad />` nodes will move them in the layers
|
||||
- Adding x and y attributes to them will change their position
|
||||
- You can add positioning for custom characters by adding `<character name="name" />`
|
||||
- Usage of XML files for weeks.
|
||||
- Characters are located in `data/weeks/characters`.
|
||||
- Weeks are located in `data/weeks/weeks/`
|
||||
- If you need to rearrange the weeks in-game, you can use the `data/weeks/weeks.txt` file.
|
||||
- Editors for Charts and Characters (Stage coming soon)
|
||||
- Undos/Redos supported
|
||||
- Warning on closing unsaved work
|
||||
- Clean UI (for ocd freaks)
|
||||
- Mature Chart editor (Character editor rework soon)
|
||||
- Features not found in other editors!
|
||||
- Every single state & substate can be modified via HScript (`data/states/StateName.hx`)
|
||||
- **Instances launched via `lime test windows` will automatically use assets from source.**
|
||||
</details>
|
||||
@@ -1,80 +0,0 @@
|
||||
# The Charter Update
|
||||
## All major chart editors are finished as of this update (finally...)
|
||||
## Engine goes from alpha to beta state : D
|
||||
|
||||
<details>
|
||||
<summary><h2>Patch Notes</h2></summary>
|
||||
|
||||
- CHARTER FEATURES
|
||||
- BIG BOY FEATURES
|
||||
- Ability to add Note Types in the charter
|
||||
- In-engine Difficulty Creation is now implemented
|
||||
- Snaps for notes/events in the charter
|
||||
- Multiple Vocals Support (per strumline)
|
||||
- Playback speed in the charter
|
||||
- New SEXY editor assets by paige and nex!!!! (and lunar, does 16x16 even count??? 😭)
|
||||
- NEW EVENTS (Camera events, play animation, scroll speed change)
|
||||
- Events window is now scrollable (more events, more room)
|
||||
- Custom Properities in Meta AND Character (Editable in Charter and Character Editor :D) (accessible with SONG.meta.customValues.[property] and [character].extras.[property])
|
||||
- SMALLER BUT STILL COOL
|
||||
- Multiple Icons now show up on strumlines with multiple characters in the charter
|
||||
- Note hoverer to show where your note is going to be placed
|
||||
- Editor UI got some slight reworks (top bar/elements)
|
||||
- Event files can be packed together into one (image/script/json all in a .pack file)
|
||||
- Optimized notes in the charter (Faster loading, can handle a billion now so cool neeo!!)
|
||||
- Editor Song pos now stays the same even after playtesting
|
||||
- Other smaller stuff i forgot 😭
|
||||
- BUG FIXES:
|
||||
- COPY PASTED EVENTS NOW WON'T BREAK!!!
|
||||
- Song position line no longer jitters
|
||||
- UNDOs are more stable now
|
||||
- Drags work much better
|
||||
- Freezes fixed (deleting strumlines)
|
||||
- ENGINE FEATURES
|
||||
- BIG BOY FEATURES
|
||||
- Position custom characters in the stage xml using char="" attribute
|
||||
- Aseprite sprites support (for characters and many more)
|
||||
- Edit Draw calls directly from the sprite (sprite.onDraw = (spr:FlxSprite) -> {spr.draw();})
|
||||
- Addons will now properly function together (changed how state scripts and scripts overall load)
|
||||
- MusicBeatTransition is more scriptable
|
||||
- Moddable Game Over Events!!
|
||||
- Reworked Lagless Credits Codename Engine's Contributors Menu
|
||||
- New Credit Method for GitHub accounts (also lagless) in Mod Credits (First gets the data normally, if fails uses the ratelimited api)
|
||||
- MANY OG GAME WEEK STUFF!! (still wip and softcoded and also many reworks by nex!)
|
||||
- Senpai Cutscene got reworked! (https://github.com/FNF-CNE-Devs/CodenameEngine/assets/87421482/3b3f32fc-78d1-40fa-8398-776554cab1d6)
|
||||
- Thorns got reworked with a cool chromatic aberration effect! (https://github.com/FNF-CNE-Devs/CodenameEngine/assets/87421482/73d9f7c5-1c9c-407e-baf0-e8e2c381ecbb)
|
||||
- Winter Horrorland got reworked with a bloody vignette effect! (https://github.com/FNF-CNE-Devs/CodenameEngine/assets/87421482/1e10c3e2-32dc-4de2-b31a-d9d577d516da - https://github.com/FNF-CNE-Devs/CodenameEngine/assets/87421482/cad852c3-1ee2-409e-a70e-b3571ab5cf7b)
|
||||
- SMALLER BUT STILL COOL
|
||||
- Ability to set Controls.hx variables (Being able to block inputs or even trigger them (needs to be in an if statement))
|
||||
- You can now easily check if a cutscene was played (by default is disabled and makes it auto play or not; Check startCutscene() code for more details in PlayState)
|
||||
- onScriptCreated event in global.hx
|
||||
- Addons priority (Being able to set addons to load before or after a mod)
|
||||
- Added Script.fromString to add scripts without making pesky new files!!
|
||||
- 9 Splice Sprites can render smaller than their intended size
|
||||
- Ability to turn off gitaroo easter egg (finally...)
|
||||
- Auto complete for certain text fields (characters/stages/notetypes)
|
||||
- HSCRIPT FEATURES:
|
||||
- Added "is" for checking var type
|
||||
- Maps are now iterable (for (key=>value in map))
|
||||
- FIXED CRASH ON EMPTY SCRIPTS!!!!!
|
||||
- BUG FIXES
|
||||
- Fix events to be more stable
|
||||
- Fix for onBeat sprites type with also customizable beat intervals and offset (and decide if also skipping negative beats so for example before the song starts)
|
||||
- Fix for pressing F5 in an editor breaking it
|
||||
- Fix when getting GitHub data and a redirect happens
|
||||
- Fix for healthbar incorrectly colored in opponent mode
|
||||
- Video cutscenes are ALOT more stable (thanks majigsaw :D)
|
||||
- 3D now works again (so cool i love away3d in 2024)
|
||||
- Lots and lots of grammar and wording fixes (so true bro -lunar)
|
||||
- Lots and lots of other optimizations made
|
||||
- CHANGES
|
||||
- onDestroy has been renamed to destroy in all instances
|
||||
- Strumline Pos X in editors is now a ratio (0.25 for bf, 0.75 for dad)
|
||||
- BY DEFAULT when in Story Mode, the arrows tween in only when there was a transition
|
||||
- onBeatHit renamed to beatHit in gameover substate (stepHit added)
|
||||
- Alt Animation Events can now control both poses and idle (may need to be readded in pre existing charts)
|
||||
- Some other shit idk ill add it whenever someone tells me backward compat is broke 💔
|
||||
</details>
|
||||
|
||||
thanks so much for the support and always being there, it really does mean alot to us < 3
|
||||
we are one step closer to turning beta so we really can't wait !
|
||||
@@ -1,16 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project>
|
||||
<!-- _________________________ Application Settings _________________________ -->
|
||||
<app
|
||||
title="Friday Night Funkin' - Codename Engine" main="funkin.backend.system.Main"
|
||||
file="CodenameEngine" packageName="com.yoshman29.codenameengine"
|
||||
package="com.yoshman29.codenameengine"
|
||||
version="0.1.0" company="Yoshman29" />
|
||||
|
||||
<!--
|
||||
CHANGE THE SAVE PATH & NAME FOR YOUR MOD HERE!
|
||||
-->
|
||||
<app save-path="YoshiCrafter29/CodenameEngine" save-name="save-default" mod-saves="true" />
|
||||
<app title="Friday Night Funkin' - Codename Engine" file="CodenameEngine" packageName="com.yoshman29.codenameengine" package="com.yoshman29.codenameengine" main="funkin.system.Main" version="0.1.0" company="Yoshman29" />
|
||||
|
||||
<!--Switch Export with Unique ApplicationID and Icon-->
|
||||
<set name="APP_ID" value="0x0100f6c013bbc000" />
|
||||
@@ -20,6 +12,7 @@
|
||||
|
||||
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
||||
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
||||
<!-- <app preloader="Preloader" resizable="true" /> -->
|
||||
<app preloader="flixel.system.FlxPreloader" />
|
||||
|
||||
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
|
||||
@@ -35,7 +28,6 @@
|
||||
|
||||
<!--Desktop-specific-->
|
||||
<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false"/>
|
||||
<window if="mac" allow-high-dpi="true" />
|
||||
|
||||
<!--Mobile-specific-->
|
||||
<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false"/>
|
||||
@@ -47,11 +39,10 @@
|
||||
|
||||
<set name="BUILD_DIR" value="export/debug" if="debug" />
|
||||
<set name="BUILD_DIR" value="export/release" unless="debug" />
|
||||
<set name="BUILD_DIR" value="export/debug-32bit" if="debug 32bit" />
|
||||
<set name="BUILD_DIR" value="export/release-32bit" if="32bit" unless="debug" />
|
||||
<set name="BUILD_DIR" value="export/32bit" if="32bit" />
|
||||
<set name="BUILD_DIR" value="latest/" if="beta" />
|
||||
|
||||
<source name="source" />
|
||||
<classpath name="source" />
|
||||
|
||||
<define name="PRELOAD_ALL" unless="web" />
|
||||
<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL"/>
|
||||
@@ -59,23 +50,25 @@
|
||||
<library name="assets" preload="true" if="PRELOAD_ALL"/>
|
||||
<library name="assets" preload="false" if="NO_PRELOAD_ALL" />
|
||||
|
||||
<section unless="TEST_BUILD">
|
||||
<assets path="assets/" rename="assets" exclude="*.ogg" if="web"/>
|
||||
<assets path="assets/" rename="assets" exclude="*.mp3" unless="web"/>
|
||||
</section>
|
||||
<assets path="assets/" rename="assets" exclude="*.ogg" if="web"/>
|
||||
<assets path="assets/" rename="assets" exclude="*.mp3" unless="web"/>
|
||||
|
||||
<assets path='mods' rename='mods' embed='false'/>
|
||||
<assets path='art/readme.txt' rename='do NOT readme.txt' />
|
||||
|
||||
<!-- ______________________________ Haxedefines _____________________________ -->
|
||||
|
||||
<haxeflag name="--macro" value="funkin.backend.system.macros.NewHaxeWarning.warn()" />
|
||||
<!--Enable the Flixel core recording system-->
|
||||
<!--<haxedef name="FLX_RECORD" />-->
|
||||
|
||||
<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />
|
||||
|
||||
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
|
||||
<haxedef name="FLX_NO_DEBUG" unless="debug" />
|
||||
|
||||
<!--Enable this for Nape release builds for a serious performance improvement-->
|
||||
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
|
||||
|
||||
<!-- _________________________________ Custom _______________________________ -->
|
||||
|
||||
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
||||
@@ -91,30 +84,26 @@
|
||||
<icon path="art/iconOG.png" size='256' />
|
||||
<icon path="art/iconOG.png" size='512' />
|
||||
<icon path="art/iconOG.png" size='768' />
|
||||
<icon path="art/iconOG.png" size='1024' />
|
||||
|
||||
|
||||
<!-- _________________________________ Engine Settings _______________________________ -->
|
||||
|
||||
<!-- Comment this out to disable multiple windows for editors !-->
|
||||
<define name="ALLOW_MULTITASKING" />
|
||||
|
||||
<!-- Comment this out to disable updates !-->
|
||||
<!-- <define name="UPDATE_CHECKING" unless="web || hl || neko"/> -->
|
||||
|
||||
<!-- Comment this out to disable Discord RPC !-->
|
||||
<section if="cpp">
|
||||
<define name="DISCORD_RPC" if="desktop"/>
|
||||
</section>
|
||||
<define name="DISCORD_RPC" unless="web || hl || neko"/>
|
||||
|
||||
<!-- Comment this out to disable GitHub API integration !-->
|
||||
<define name="GITHUB_API" unless="web || hl"/>
|
||||
|
||||
<!-- Comment this out to prevent unused classes from being compiled.
|
||||
<!-- Comment this off to prevent unused classes from being compiled.
|
||||
Reduces compilation time at the cost of limited HScript flexibility. !-->
|
||||
<define name="COMPILE_ALL_CLASSES" />
|
||||
|
||||
<!-- Comment this out to prevent extending classes in hscript.
|
||||
Reduces compilation time at the cost of limited HScript flexibility. !-->
|
||||
<define name="CUSTOM_CLASSES" />
|
||||
|
||||
<!-- Comment this out to disable multithreading !-->
|
||||
<haxedef name="ALLOW_MULTITHREADING" unless="web || flash" />
|
||||
|
||||
@@ -130,71 +119,59 @@
|
||||
<!-- Comment this out to disable softcoded states and state scripting !-->
|
||||
<haxedef name="SOFTCODED_STATES" />
|
||||
|
||||
<!-- Comment this out to disable usage of source assets when using lime test windows !-->
|
||||
<haxedef name="USE_SOURCE_ASSETS" />
|
||||
|
||||
<!-- Comment this out to use the default OpenFL assets system for the assets/ folder. !-->
|
||||
<haxedef name="USE_ADAPTED_ASSETS" unless="web" />
|
||||
<haxedef name="USE_ADAPTED_ASSETS" />
|
||||
|
||||
<!-- Comment this out to disable support for custom ndlls. !-->
|
||||
<haxedef name="NDLLS_SUPPORTED" unless="web || iphonesim" />
|
||||
|
||||
<!-- Comment this out to disable support for Away3D Flixel Intergration (reduces compile times)-->
|
||||
<define name="THREE_D_SUPPORT" />
|
||||
<!-- Comment this out to disable the use of luajit. !-->
|
||||
<define name="ENABLE_LUA" if="windows || mac || linux"/>
|
||||
|
||||
<!-- Comment this out to disable video cutscene support, in case of compilation errors. !-->
|
||||
<section if="cpp">
|
||||
<define name="VIDEO_CUTSCENES" if="desktop || android" />
|
||||
</section>
|
||||
<define name="VIDEO_CUTSCENES" unless="web || linux || hl || mac" />
|
||||
|
||||
<!-- Comment this out to disable commit number on FPS -->
|
||||
<define name="SHOW_BUILD_ON_FPS" />
|
||||
|
||||
<!-- Comment this out to disable dark mode windows -->
|
||||
<define name="DARK_MODE_WINDOW"/>
|
||||
|
||||
<haxedef name="ENABLE_LUA" if="ENABLE_LUA" />
|
||||
<haxedef name="VIDEO_CUTSCENES" if="VIDEO_CUTSCENES" />
|
||||
<haxedef name="UPDATE_CHECKING" if="UPDATE_CHECKING" />
|
||||
<haxedef name="LUAJIT_ENABLE_LUA52COMPAT" if="ENABLE_LUA" />
|
||||
<haxedef name="DISCORD_RPC" if="DISCORD_RPC" />
|
||||
<haxedef name="SHOW_BUILD_ON_FPS" if="SHOW_BUILD_ON_FPS" />
|
||||
<haxedef name="SOFTCODED_CLASSES" if="SOFTCODED_CLASSES" />
|
||||
<haxedef name="openfl_dpi_aware" if="openfl_dpi_aware" />
|
||||
|
||||
<haxedef name="EXPERIMENTAL_FLXGRAPHIC_DESTROY_FIX" />
|
||||
|
||||
<haxeflag name="--macro" value="funkin.macros.StdDeprecationsRemover.init()" />
|
||||
<!-- _______________________________ Libraries ______________________________ -->
|
||||
|
||||
<!-- KEEP BOTH OF THESE AS THERE ARE SOME PARTICULAR CASES! -->
|
||||
<define name="disable-version-check"/>
|
||||
<haxedef name="disable-version-check"/>
|
||||
|
||||
<haxedef name="no-deprecation-warnings"/>
|
||||
<haxedef name="DISCORD_DISABLE_IO_THREAD" if="DISCORD_RPC"/>
|
||||
|
||||
<haxelib name="flixel" />
|
||||
<haxelib name="flixel-addons" />
|
||||
|
||||
<haxelib name="hxvlc" if="VIDEO_CUTSCENES" />
|
||||
<haxelib name="away3d" if="THREE_D_SUPPORT" />
|
||||
<haxelib name="linc_luajit" if="ENABLE_LUA" />
|
||||
<haxelib name="hxCodec" if="VIDEO_CUTSCENES" />
|
||||
<haxelib name="away3d" />
|
||||
<haxelib name="format" />
|
||||
<haxelib name="flxanimate" />
|
||||
|
||||
<haxelib name="flixel-yc29" rename="flixel" />
|
||||
<haxedev set='webgl' />
|
||||
|
||||
<haxelib name="hscript-improved" />
|
||||
<haxelib name="hxdiscord_rpc" if="DISCORD_RPC"/>
|
||||
<haxelib name="linc_discord-rpc" if="DISCORD_RPC"/>
|
||||
|
||||
<haxelib name="markdown" />
|
||||
|
||||
<!-- _________________________________ Additional stuff _______________________________ -->
|
||||
<!-- <haxelib name="hxcpp-debug-server" if="desktop"/> -->
|
||||
|
||||
<!-- _________________________________ HScript classes _______________________________ -->
|
||||
|
||||
|
||||
<section if="COMPILE_ALL_CLASSES">
|
||||
<haxeflag name="-dce" value="no" />
|
||||
<haxeflag name="--macro" value="funkin.backend.system.macros.Macros.addAdditionalClasses()" />
|
||||
<haxeflag name="--macro" value="funkin.macros.ScriptsMacro.addAdditionalClasses()" />
|
||||
</section>
|
||||
<haxeflag name="--macro" value="exclude('funkin.updating')" unless="UPDATE_CHECKING"/>
|
||||
<haxeflag name="--macro" value="exclude('funkin.multitasking')" unless="ALLOW_MULTITASKING"/>
|
||||
|
||||
<haxeflag name="--macro" value="funkin.backend.system.macros.Macros.initMacros()" />
|
||||
|
||||
<!-- Fix compiling issues -->
|
||||
<setenv name="HAXEPATH" value="./"/>
|
||||
<!-- MACROS & DOCUMENTATION !-->
|
||||
<haxeflag name="--macro" value="funkin.macros.BuildCounterMacro.getBuildNumber()" />
|
||||
|
||||
<haxedef name="HXCPP_CHECK_POINTER" if="release" />
|
||||
<haxedef name="HXCPP_STACK_LINE" if="release" />
|
||||
<haxedef name="HXCPP_DEBUG_LINK" if="release" />
|
||||
|
||||
<haxedef name="hscriptPos" /> <!-- for logging -->
|
||||
</project>
|
||||
@@ -1,25 +1,23 @@
|
||||
# Friday Night Funkin' - Codename Engine (WIP)
|
||||
|
||||
## PLEASE NOTE - THIS IS STILL IN A BETA STATE
|
||||
### Mods created with beta versions of Codename may not be compatible with the release version
|
||||
Known issues in the beta:
|
||||
- Some options are missing
|
||||
- Week 5 has no monster animation
|
||||
- Week 6 still have no dialogue
|
||||
- Week 7 have no running tankman
|
||||
|
||||
Build instructions are below. Press TAB on the main menu to switch mods.
|
||||
Build instructions are below. Press TAB on the main menu to switch mods (make sure a mod folder exists or it crashes).
|
||||
|
||||
Also, the command `.\cne test` uses the source assets folder instead of the export one for easier development (Although you can still use `lime test windows` normally).
|
||||
Also, `lime test windows` uses the source assets folder instead of the export one for easier development.
|
||||
|
||||
## Codename Engine
|
||||
<details>
|
||||
<summary><h2>Credits</h2></summary>
|
||||
|
||||
Codename Engine is a new Friday Night Funkin' Engine aimed at simplifying modding, along with extensiblity and ease of use.<br>
|
||||
Make sure to read the wiki and join the Discord server linked there!<br>
|
||||
#### It includes many new features, as seen [here](FEATURES.md)<br>
|
||||
#### Wanna see the new features added in the most recent update? Click [here](PATCHNOTES.md)<br>
|
||||
|
||||
## How to download
|
||||
|
||||
Latest builds for the engine can be found in the [Actions](https://github.com/YoshiCrafter29/CodenameEngine/actions) tab.<br>
|
||||
In the future (when the engine won't be a WIP anymore) we're gonna also publish the engine on platforms like Gamebanana; stay tuned!
|
||||
- Credits to [Ne_Eo](https://twitter.com/Ne_Eo_Twitch) and the [3D-HaxeFlixel](https://github.com/lunarcleint/3D-HaxeFlixel) repository for Away3D Flixel support
|
||||
- Credits to the [FlxAnimate](https://github.com/Dot-Stuff/flxanimate) team for the Animate Atlas support.
|
||||
- Credits to Smokey555 for the backup Animate Atlas to spritesheet code.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h2>How to build</h2></summary>
|
||||
@@ -29,18 +27,32 @@ In the future (when the engine won't be a WIP anymore) we're gonna also publish
|
||||
<summary>Windows</summary>
|
||||
|
||||
##### Tested on Windows 10 21H2
|
||||
1. Install [version 4.2.5 of Haxe](https://haxe.org/download/version/4.2.5/).
|
||||
2. Download and install [`git-scm`](https://git-scm.com/download/win).
|
||||
1. Install the [latest version of Haxe](https://haxe.org/download/).
|
||||
2. Download [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe)
|
||||
3. Wait for the Visual Studio Installer to install
|
||||
4. On the Visual Studio installer screen, go to the "Individual components" tab and only select those options:
|
||||
- MSVC v143 VS 2022 C++ x64/x86 build tools (Latest)
|
||||
- Windows 10/11 SDK (any works)
|
||||
5. This is what your Installation details panel should look like. Once correct, press "Install".
|
||||
- ⚠ This will download around 1.07 GB of data from the internet, and will require around 5.5 GB of available space on your computer.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/YoshiCrafter29/CodenameEngine/blob/main/art/github/windows-installation-details.png?raw=true" />
|
||||
</p>
|
||||
|
||||
6. Once the installation is done, close Visual Studio Installer.
|
||||
7. Download and install [`git-scm`](https://git-scm.com/download/win).
|
||||
- Leave all installation options as default.
|
||||
3. Run `update.bat` using cmd or double-clicking it, and wait for the libraries to install.
|
||||
4. Once the libraries are installed, run `haxelib run lime test windows` to compile and launch the game (may take a long time)
|
||||
8. Open the Codename Engine source folder, click on the address bar and type `cmd` to open a command prompt window.
|
||||
9. On the command prompt, run `update.bat`, and wait for the libraries to install.
|
||||
10. Once the libraries are installed, run `haxelib run lime test windows` to compile and launch the game (may take a long time)
|
||||
- ℹ You can run `haxelib run lime setup` to make the lime command global, allowing you to execute `lime test windows` directly.
|
||||
</details>
|
||||
<details>
|
||||
<summary>Linux</summary>
|
||||
|
||||
##### Requires testing
|
||||
1. Install [version 4.2.5 of Haxe](https://haxe.org/download/version/4.2.5/).
|
||||
1. Install the [latest version of Haxe](https://haxe.org/download/).
|
||||
2. Install `g++`, if not present already.
|
||||
3. Download and install [`git-scm`](https://git-scm.com/download/linux).
|
||||
4. Open a terminal in the Codename Engine source folder, and run `update.sh`.
|
||||
@@ -51,39 +63,14 @@ In the future (when the engine won't be a WIP anymore) we're gonna also publish
|
||||
<summary>MacOS</summary>
|
||||
|
||||
##### Requires testing
|
||||
1. Install [version 4.2.5 of Haxe](https://haxe.org/download/version/4.2.5/).
|
||||
1. Install the [latest version of Haxe](https://haxe.org/download/).
|
||||
2. Install `Xcode` to allow C++ app building.
|
||||
3. Download and install [`git-scm`](https://git-scm.com/download/mac).
|
||||
4. Open a terminal in the Codename Engine source folder, and run `update.sh`.
|
||||
5. Once the libraries are installed, run `haxelib run lime test mac` to compile and launch the game (may take a long time)
|
||||
- ℹ You can run `haxelib run lime setup` to make the lime command global, allowing you to execute `lime test mac` directly.
|
||||
|
||||
|
||||
</details>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h2>What can you do or not do</h2></summary>
|
||||
|
||||
### You can:
|
||||
- Download and play the engine with its mods and modpacks
|
||||
- Mod and fork the engine (without using it for illicit purposes)
|
||||
- Contribute to the engine (for example through *Pull Requests*, *Issues*, etc)
|
||||
- Create a sub engine with Codename Engine as **TEMPLATE** with **CREDITS** (for example leaving the *credits menu submenu with the GitHub contributors* and putting the *[main devs](https://github.com/FNF-CNE-Devs)* in a *README* specifying that it's a *sub engine from Codename Engine*)
|
||||
- Release excutable mods that use Codename Engine as source (Specifing that uses Codename Engine by for example the same way written above this)
|
||||
- Release modpacks
|
||||
|
||||
### You can't:
|
||||
- Create a *side/new/etc* engine (or mod that doesn't use Codename Engine) using Codename Engine's code
|
||||
- Steal code from Codename Engine for another different project that is not Codename Engine related (Codename Engine mods excluded) without properly crediting
|
||||
- Release the entire Codename Engine on platforms (Mods that use Codename Engine as source are fine, if it's specified even better)
|
||||
|
||||
#### *If you need more info or feel like asking to do something which is not listed here, ask us directly on our discord (linked in the wiki)!*
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h2>Credits</h2></summary>
|
||||
|
||||
- Credits to [Ne_Eo](https://twitter.com/Ne_Eo_Twitch) and the [3D-HaxeFlixel](https://github.com/lunarcleint/3D-HaxeFlixel) repository for Away3D Flixel support
|
||||
- Credits to the [FlxAnimate](https://github.com/Dot-Stuff/flxanimate) team for the Animate Atlas support
|
||||
- Credits to Smokey555 for the backup Animate Atlas to spritesheet code
|
||||
- Credits to MAJigsaw77 for [hxvlc](https://github.com/MAJigsaw77/hxvlc) (video cutscene/mp4 support) and [hxdiscord_rpc](https://github.com/MAJigsaw77/hxdiscord_rpc) (discord rpc integration)
|
||||
</details>
|
||||
|
||||
</details>
|
||||
@@ -1,61 +0,0 @@
|
||||
# Codename Engine Todo List
|
||||
|
||||
## `v1.0.0` - Initial release
|
||||
|
||||
- [x] Remove Herobrine
|
||||
- [ ] Chart Editor
|
||||
- [x] Place & Delete notes
|
||||
- [x] Ctrl+Z & Ctrl+Y
|
||||
- [x] Selection box & dragging
|
||||
- [x] Scroll bar at the right + Song info
|
||||
- [x] Fix the strumlines bar when zooming out
|
||||
- [x] Algorithm to make note placements faster & sorted out
|
||||
- [x] Play here working
|
||||
- [x] Cap zoom in & out
|
||||
- [x] Events (including Camera Movement)
|
||||
- [x] Metadata Editing
|
||||
- [ ] Custom Notetypes
|
||||
- [ ] Reorderable Strumlines
|
||||
- [ ] Step based zooming
|
||||
- [ ] Add Undo to more actions
|
||||
- [ ] New Chart Button
|
||||
- [ ] Bug fixes
|
||||
- [ ] Zooming in causing notes to disappear
|
||||
- [ ] Holds disappear too early
|
||||
- [ ] Time signature fixes
|
||||
- [ ] BPM Changes Events
|
||||
- [ ] Character Editor
|
||||
- [x] Animation Editing
|
||||
- [x] Animation Deletion/Creationg
|
||||
- [x] Character Info Editing
|
||||
- [x] Character Saving
|
||||
- [x] Add Undos to Actions
|
||||
- [ ] Change Stage
|
||||
- [ ] New Character Button
|
||||
- [ ] Port Videos to a more stable video lib
|
||||
- [ ] Optimization to Editors
|
||||
- [ ] Fix Ratings Lag
|
||||
- [x] Re-export gf-christmas, gf-car and gf-tankmen with padding
|
||||
- [x] Re-add shader camera stuff
|
||||
- [x] Make update.bat use libs.xml instead of hmm.json
|
||||
- [ ] New Switch Mod menu
|
||||
- [x] Port shader camera stuff over to new flixel fork
|
||||
- [ ] Add note offset
|
||||
- [x] Dialogue
|
||||
- [ ] Finish Base Game port
|
||||
- [x] Add credits
|
||||
- [ ] Verbose mode (`--verbose`)
|
||||
- [ ] Tooltips
|
||||
- [ ] Fix bugs
|
||||
|
||||
## `v1.1.0`
|
||||
- [ ] Charter Waveforms (maybe in v1.1.0, dont wanna slow shit down)
|
||||
- [ ] Custom classes
|
||||
- [ ] Proper super overrides (FlxText_HSX doesn't allow overrides for update because of this)
|
||||
- [ ] Custom Class extending Custom Classes
|
||||
- [ ] Statics on Custom Classes
|
||||
- [ ] Fix Bugs
|
||||
- [ ] Full 3D support via stages files
|
||||
- [ ] Multithread sprites and assets loading (for faster load times) ?
|
||||
- [ ] Stage Editor
|
||||
- [ ] Optimize flxanimate isOnScreen
|
||||
@@ -1,10 +0,0 @@
|
||||
## DEV (PRIVATE) REPO INSTRUCTIONS TO SYNC UP WITH IT INSTEAD OF SYNCING WITH THE PUBLIC ONE
|
||||
- Open a Command Prompt window in the public codename repo folder
|
||||
- Type those commands:
|
||||
- `git remote add dev https://www.github.com/YoshiCrafter29/CodenameEngine-Dev`
|
||||
- `git branch --set-upstream-to dev/main`
|
||||
- GitHub desktop should be synchronized with the dev repo now. If you're unsure,
|
||||
- Repo name should still say "CodenameEngine"
|
||||
- Current branch should still say "main"
|
||||
- "Fetch" button should say "Fetch dev"
|
||||
- You shouldn't have any commit to push.
|
||||
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 150 KiB |
@@ -1,30 +1,30 @@
|
||||
__ /
|
||||
/ _ _ |_ |_ . _
|
||||
\__) (- |_ |_ | | )
|
||||
|
||||
__
|
||||
|_ _ _ _ |
|
||||
| | (- (_| |( \/
|
||||
/
|
||||
|
||||
_ _ _
|
||||
(_) | ) (_|
|
||||
|
||||
__
|
||||
|_ _ . _| _ _ . _ |_ |_ _ _ |_
|
||||
| | | (_| (_| \/ | ) | (_) | ) |_ \/ (- (_| | )
|
||||
/ _/ /
|
||||
__ /
|
||||
/ _ _ |_ |_ . _
|
||||
\__) (- |_ |_ | | )
|
||||
|
||||
__
|
||||
|_ _ _ _ |
|
||||
| | (- (_| |( \/
|
||||
/
|
||||
|
||||
_ _ _
|
||||
(_) | ) (_|
|
||||
|
||||
__
|
||||
|_ _ . _| _ _ . _ |_ |_ _ _ |_
|
||||
| | | (_| (_| \/ | ) | (_) | ) |_ \/ (- (_| | )
|
||||
/ _/ /
|
||||
|
||||
HEY
|
||||
Thanks for downloadin Friday Night FUNKIN'
|
||||
If you downloaded this from any other place than ninja-muffin24.itch.io/FUNKIN
|
||||
You might be in DANGER!!!
|
||||
You might be in DANGER!!!
|
||||
|
||||
The Itch.io release is the only official source for the desktop (PC, Mac, Linux) versions of the game!
|
||||
As of right now, the game is FREE! If you paid for it, you got SCAMMED!
|
||||
|
||||
Now that that's out of the way....
|
||||
THANKS FOR DOWNLOADIN.
|
||||
THANKS FOR DOWNLOADIN.
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
|
||||
PERMISSIONS XDDDD
|
||||
@@ -77,16 +77,16 @@ I love Tom Fulp.
|
||||
- Cameron ♪(´▽`)
|
||||
|
||||
##################################################################################
|
||||
|
||||
_ _ _____ _ _ ____ ____ ___ _ _ _ _ ____ ____
|
||||
| \ | | | ____| | | | | / ___| | _ \ / _ \ | | | | | \ | | | _ \ / ___|
|
||||
| \| | | _| | | /\ | | | | _ | |_) | | | | | | | | | | \| | | | | | \___ \
|
||||
|
||||
_ _ _____ _ _ ____ ____ ___ _ _ _ _ ____ ____
|
||||
| \ | | | ____| | | | | / ___| | _ \ / _ \ | | | | | \ | | | _ \ / ___|
|
||||
| \| | | _| | | /\ | | | | _ | |_) | | | | | | | | | | \| | | | | | \___ \
|
||||
| |\ | | |___ \ V V / | |_| | | _ < | |_| | | |_| | | |\ | | |_| | ___) |
|
||||
|_| \_| |_____| \_/\_/ \____| |_| \_\ \___/ \___/ |_| \_| |____/ |____/
|
||||
_ _ _ ___ ___ __ _ _ _ _ _
|
||||
|_ | | |_ |_) \_/ | |_| | |\ | /__ |_ |_ | | |_ |_) \_/ / \ |\ | |_
|
||||
|_| \_| |_____| \_/\_/ \____| |_| \_\ \___/ \___/ |_| \_| |____/ |____/
|
||||
_ _ _ ___ ___ __ _ _ _ _ _
|
||||
|_ | | |_ |_) \_/ | |_| | |\ | /__ |_ |_ | | |_ |_) \_/ / \ |\ | |_
|
||||
|_ \/ |_ | \ | | | | _|_ | \| \_| o |_)\/ |_ \/ |_ | \ | \_/ | \| |_ o
|
||||
/ /
|
||||
|
||||
/ /
|
||||
|
||||
##################################################################################
|
||||
i stole this from stamper.
|
||||
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 250 KiB |
@@ -1,128 +1,127 @@
|
||||
<!DOCTYPE codename-engine-alphabet>
|
||||
<letters fps="24">
|
||||
<bold spritesheet="menus/alphabet-bold">
|
||||
<!-- Bold Letters !-->
|
||||
<letter char="A" anim="A bold" />
|
||||
<letter char="B" anim="B bold" />
|
||||
<letter char="C" anim="C bold" />
|
||||
<letter char="D" anim="D bold" />
|
||||
<letter char="E" anim="E bold" />
|
||||
<letter char="F" anim="F bold" />
|
||||
<letter char="G" anim="G bold" />
|
||||
<letter char="H" anim="H bold" />
|
||||
<letter char="I" anim="I bold" />
|
||||
<letter char="J" anim="J bold" />
|
||||
<letter char="K" anim="K bold" />
|
||||
<letter char="L" anim="L bold" />
|
||||
<letter char="M" anim="M bold" />
|
||||
<letter char="N" anim="N bold" />
|
||||
<letter char="O" anim="O bold" />
|
||||
<letter char="P" anim="P bold" />
|
||||
<letter char="Q" anim="Q bold" />
|
||||
<letter char="R" anim="R bold" />
|
||||
<letter char="S" anim="S bold" />
|
||||
<letter char="T" anim="T bold" />
|
||||
<letter char="U" anim="U bold" />
|
||||
<letter char="V" anim="V bold" />
|
||||
<letter char="W" anim="W bold" />
|
||||
<letter char="X" anim="X bold" />
|
||||
<letter char="Y" anim="Y bold" />
|
||||
<letter char="Z" anim="Z bold" />
|
||||
<letter char=">" anim="> Bold" />
|
||||
</bold>
|
||||
<normal spritesheet="menus/alphabet">
|
||||
<!-- Symbols !-->
|
||||
<letter char="$" anim="dollarsign" />
|
||||
<letter char="#" anim="hashtag" />
|
||||
<letter char="%" anim="%" />
|
||||
<letter char="&" anim="amp" />
|
||||
<letter char="(" anim="(" />
|
||||
<letter char=")" anim=")" />
|
||||
<letter char="*" anim="*" center="middle" />
|
||||
<letter char="+" anim="+" center="middle" />
|
||||
<letter char="-" anim="-" center="middle" />
|
||||
<letter char="0" anim="0" />
|
||||
<letter char="1" anim="1" />
|
||||
<letter char="2" anim="2" />
|
||||
<letter char="3" anim="3" />
|
||||
<letter char="4" anim="4" />
|
||||
<letter char="5" anim="5" />
|
||||
<letter char="6" anim="6" />
|
||||
<letter char="7" anim="7" />
|
||||
<letter char="8" anim="8" />
|
||||
<letter char="9" anim="9" />
|
||||
<letter char=":" anim=":" />
|
||||
<letter char=";" anim=";" />
|
||||
<letter char="<" anim="<" />
|
||||
<letter char=">" anim=">" />
|
||||
<letter char="=" anim="=" />
|
||||
<letter char="@" anim="@" />
|
||||
<letter char="|" anim="|" />
|
||||
<letter char="~" anim="~" />
|
||||
<letter char="[" anim="[" />
|
||||
<letter char="]" anim="]" />
|
||||
<letter char="→" anim="right arrow" center="middle" />
|
||||
<letter char="←" anim="left arrow" center="middle" />
|
||||
<letter char="↓" anim="down arrow" center="middle" />
|
||||
<letter char="↑" anim="up arrow" center="middle" />
|
||||
<letter char="." anim="period" center="middle" />
|
||||
<letter char="?" anim="question mark" />
|
||||
<letter char=""" anim="start parentheses" />
|
||||
<bold spritesheet="menus/alphabet-bold">
|
||||
<!-- Bold Letters !-->
|
||||
<letter char="A" anim="A bold" />
|
||||
<letter char="B" anim="B bold" />
|
||||
<letter char="C" anim="C bold" />
|
||||
<letter char="D" anim="D bold" />
|
||||
<letter char="E" anim="E bold" />
|
||||
<letter char="F" anim="F bold" />
|
||||
<letter char="G" anim="G bold" />
|
||||
<letter char="H" anim="H bold" />
|
||||
<letter char="I" anim="I bold" />
|
||||
<letter char="J" anim="J bold" />
|
||||
<letter char="K" anim="K bold" />
|
||||
<letter char="L" anim="L bold" />
|
||||
<letter char="M" anim="M bold" />
|
||||
<letter char="N" anim="N bold" />
|
||||
<letter char="O" anim="O bold" />
|
||||
<letter char="P" anim="P bold" />
|
||||
<letter char="Q" anim="Q bold" />
|
||||
<letter char="R" anim="R bold" />
|
||||
<letter char="S" anim="S bold" />
|
||||
<letter char="T" anim="T bold" />
|
||||
<letter char="U" anim="U bold" />
|
||||
<letter char="V" anim="V bold" />
|
||||
<letter char="W" anim="W bold" />
|
||||
<letter char="X" anim="X bold" />
|
||||
<letter char="Y" anim="Y bold" />
|
||||
<letter char="Z" anim="Z bold" />
|
||||
</bold>
|
||||
<normal spritesheet="menus/alphabet">
|
||||
<!-- Symbols !-->
|
||||
<letter char="$" anim="dollarsign" />
|
||||
<letter char="#" anim="hashtag" />
|
||||
<letter char="%" anim="%" />
|
||||
<letter char="&" anim="amp" />
|
||||
<letter char="(" anim="(" />
|
||||
<letter char=")" anim=")" />
|
||||
<letter char="*" anim="*" center="middle" />
|
||||
<letter char="+" anim="+" center="middle" />
|
||||
<letter char="-" anim="-" center="middle" />
|
||||
<letter char="0" anim="0" />
|
||||
<letter char="1" anim="1" />
|
||||
<letter char="2" anim="2" />
|
||||
<letter char="3" anim="3" />
|
||||
<letter char="4" anim="4" />
|
||||
<letter char="5" anim="5" />
|
||||
<letter char="6" anim="6" />
|
||||
<letter char="7" anim="7" />
|
||||
<letter char="8" anim="8" />
|
||||
<letter char="9" anim="9" />
|
||||
<letter char=":" anim=":" />
|
||||
<letter char=";" anim=";" />
|
||||
<letter char="<" anim="<" />
|
||||
<letter char=">" anim=">" />
|
||||
<letter char="=" anim="=" />
|
||||
<letter char="@" anim="@" />
|
||||
<letter char="|" anim="|" />
|
||||
<letter char="~" anim="~" />
|
||||
<letter char="[" anim="[" />
|
||||
<letter char="]" anim="]" />
|
||||
<letter char="→" anim="right arrow" center="middle" />
|
||||
<letter char="←" anim="left arrow" center="middle" />
|
||||
<letter char="↓" anim="down arrow" center="middle" />
|
||||
<letter char="↑" anim="up arrow" center="middle" />
|
||||
<letter char="." anim="period" center="middle" />
|
||||
<letter char="?" anim="question mark" />
|
||||
<letter char=""" anim="start parentheses" />
|
||||
|
||||
<!-- Capital Letters !-->
|
||||
<letter char="A" anim="A capital" />
|
||||
<letter char="B" anim="B capital" />
|
||||
<letter char="C" anim="C capital" />
|
||||
<letter char="D" anim="D capital" />
|
||||
<letter char="E" anim="E capital" />
|
||||
<letter char="F" anim="F capital" />
|
||||
<letter char="G" anim="G capital" />
|
||||
<letter char="H" anim="H capital" />
|
||||
<letter char="I" anim="I capital" />
|
||||
<letter char="J" anim="J capital" />
|
||||
<letter char="K" anim="K capital" />
|
||||
<letter char="L" anim="L capital" />
|
||||
<letter char="M" anim="M capital" />
|
||||
<letter char="N" anim="N capital" />
|
||||
<letter char="O" anim="O capital" />
|
||||
<letter char="P" anim="P capital" />
|
||||
<letter char="Q" anim="Q capital" />
|
||||
<letter char="R" anim="R capital" />
|
||||
<letter char="S" anim="S capital" />
|
||||
<letter char="T" anim="T capital" />
|
||||
<letter char="U" anim="U capital" />
|
||||
<letter char="V" anim="V capital" />
|
||||
<letter char="W" anim="W capital" />
|
||||
<letter char="X" anim="X capital" />
|
||||
<letter char="Y" anim="Y capital" />
|
||||
<letter char="Z" anim="Z capital" />
|
||||
<!-- Capital Letters !-->
|
||||
<letter char="A" anim="A capital" />
|
||||
<letter char="B" anim="B capital" />
|
||||
<letter char="C" anim="C capital" />
|
||||
<letter char="D" anim="D capital" />
|
||||
<letter char="E" anim="E capital" />
|
||||
<letter char="F" anim="F capital" />
|
||||
<letter char="G" anim="G capital" />
|
||||
<letter char="H" anim="H capital" />
|
||||
<letter char="I" anim="I capital" />
|
||||
<letter char="J" anim="J capital" />
|
||||
<letter char="K" anim="K capital" />
|
||||
<letter char="L" anim="L capital" />
|
||||
<letter char="M" anim="M capital" />
|
||||
<letter char="N" anim="N capital" />
|
||||
<letter char="O" anim="O capital" />
|
||||
<letter char="P" anim="P capital" />
|
||||
<letter char="Q" anim="Q capital" />
|
||||
<letter char="R" anim="R capital" />
|
||||
<letter char="S" anim="S capital" />
|
||||
<letter char="T" anim="T capital" />
|
||||
<letter char="U" anim="U capital" />
|
||||
<letter char="V" anim="V capital" />
|
||||
<letter char="W" anim="W capital" />
|
||||
<letter char="X" anim="X capital" />
|
||||
<letter char="Y" anim="Y capital" />
|
||||
<letter char="Z" anim="Z capital" />
|
||||
|
||||
<!-- Lowercase Letters !-->
|
||||
<letter char="a" anim="a lowercase" />
|
||||
<letter char="b" anim="b lowercase" />
|
||||
<letter char="c" anim="c lowercase" />
|
||||
<letter char="d" anim="d lowercase" />
|
||||
<letter char="e" anim="e lowercase" />
|
||||
<letter char="f" anim="f lowercase" />
|
||||
<letter char="g" anim="g lowercase" />
|
||||
<letter char="h" anim="h lowercase" />
|
||||
<letter char="i" anim="i lowercase" />
|
||||
<letter char="j" anim="j lowercase" />
|
||||
<letter char="k" anim="k lowercase" />
|
||||
<letter char="l" anim="l lowercase" />
|
||||
<letter char="m" anim="m lowercase" />
|
||||
<letter char="n" anim="n lowercase" />
|
||||
<letter char="o" anim="o lowercase" />
|
||||
<letter char="p" anim="p lowercase" />
|
||||
<letter char="q" anim="q lowercase" />
|
||||
<letter char="r" anim="r lowercase" />
|
||||
<letter char="s" anim="s lowercase" />
|
||||
<letter char="t" anim="t lowercase" />
|
||||
<letter char="u" anim="u lowercase" />
|
||||
<letter char="v" anim="v lowercase" />
|
||||
<letter char="w" anim="w lowercase" />
|
||||
<letter char="x" anim="x lowercase" />
|
||||
<letter char="y" anim="y lowercase" />
|
||||
<letter char="z" anim="z lowercase" />
|
||||
</normal>
|
||||
<!-- Lowercase Letters !-->
|
||||
<letter char="a" anim="a lowercase" />
|
||||
<letter char="b" anim="b lowercase" />
|
||||
<letter char="c" anim="c lowercase" />
|
||||
<letter char="d" anim="d lowercase" />
|
||||
<letter char="e" anim="e lowercase" />
|
||||
<letter char="f" anim="f lowercase" />
|
||||
<letter char="g" anim="g lowercase" />
|
||||
<letter char="h" anim="h lowercase" />
|
||||
<letter char="i" anim="i lowercase" />
|
||||
<letter char="j" anim="j lowercase" />
|
||||
<letter char="k" anim="k lowercase" />
|
||||
<letter char="l" anim="l lowercase" />
|
||||
<letter char="m" anim="m lowercase" />
|
||||
<letter char="n" anim="n lowercase" />
|
||||
<letter char="o" anim="o lowercase" />
|
||||
<letter char="p" anim="p lowercase" />
|
||||
<letter char="q" anim="q lowercase" />
|
||||
<letter char="r" anim="r lowercase" />
|
||||
<letter char="s" anim="s lowercase" />
|
||||
<letter char="t" anim="t lowercase" />
|
||||
<letter char="u" anim="u lowercase" />
|
||||
<letter char="v" anim="v lowercase" />
|
||||
<letter char="w" anim="w lowercase" />
|
||||
<letter char="x" anim="x lowercase" />
|
||||
<letter char="y" anim="y lowercase" />
|
||||
<letter char="z" anim="z lowercase" />
|
||||
</normal>
|
||||
</letters>
|
||||
@@ -1,12 +1,12 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" camx="25">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
</character>
|
||||
@@ -1,13 +1,13 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" camy="55">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
|
||||
</character>
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350">
|
||||
<anim name="firstDeath" anim="BF dies" fps="24" loop="false" x="37" y="11"/>
|
||||
<anim name="deathLoop" anim="BF Dead Loop" fps="24" loop="false" x="37" y="5"/>
|
||||
<anim name="deathConfirm" anim="BF Dead confirm" fps="24" loop="false" x="37" y="69"/>
|
||||
<anim name="firstDeath" anim="BF dies" fps="24" loop="false" x="37" y="11"/>
|
||||
<anim name="deathLoop" anim="BF Dead Loop" fps="24" loop="false" x="37" y="5"/>
|
||||
<anim name="deathConfirm" anim="BF Dead confirm" fps="24" loop="false" x="37" y="69"/>
|
||||
</character>
|
||||
@@ -1,6 +0,0 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character x="-50" y="330" isGF="false" flipX="true" isPlayer="true" antialiasing="true" sprite="bf-holding-gf-dead">
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="BF Dies with GF" name="firstDeath"/>
|
||||
<anim x="0" loop="false" y="-17" fps="24" anim="BF Dead with GF Loop" name="deathLoop"/>
|
||||
<anim x="0" loop="false" y="14" fps="24" anim="RETRY confirm holding gf" name="deathConfirm"/>
|
||||
</character>
|
||||
@@ -1,13 +1,13 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" gameOverChar="bf-holding-gf-dead">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="10"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="7"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-41" y="23"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-10"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="10"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="7"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-41" y="23"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-10" y="-10"/>
|
||||
<anim name="bfCatch" anim="BF catches GF" fps="24" loop="false" x="6" y="88"/>
|
||||
</character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="10"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="7"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-41" y="23"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-10"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="10"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="7"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-41" y="23"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-10" y="-10"/>
|
||||
<anim name="bfCatch" anim="BF catches GF" fps="24" loop="false" x="0" y="0"/>
|
||||
</character>
|
||||
@@ -1,6 +0,0 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character icon="bf-pixel-dead" x="200" y="570" isGF="false" scale="6" flipX="true" isPlayer="true" antialiasing="false" sprite="bf-pixel-dead">
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="BF Dies pixel" name="firstDeath"/>
|
||||
<anim x="-5" loop="true" y="-2" fps="24" anim="Retry Loop" name="deathLoop"/>
|
||||
<anim x="-5" loop="false" y="-2" fps="24" anim="RETRY CONFIRM" name="deathConfirm"/>
|
||||
</character>
|
||||
@@ -1,15 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="200" y="570" antialiasing="false" scale="6" gameOverChar="bf-pixel-dead">
|
||||
<anim name="idle" anim="BF IDLE" fps="24" loop="false" x="0" y="0" />
|
||||
<character isPlayer="true" flipX="true" x="200" y="570" antialiasing="false" scale="6" camx="-200" camy="-20">
|
||||
<anim name="idle" anim="BF IDLE" fps="24" loop="false" x="0" y="0" />
|
||||
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="BF LEFT NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singDOWN" anim="BF DOWN NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singUP" anim="BF UP NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singRIGHT" anim="BF RIGHT NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
|
||||
<anim name="singUPmiss" anim="BF UP MISS" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singLEFTmiss" anim="BF LEFT MISS" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singRIGHTmiss" anim="BF RIGHT MISS" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singDOWNmiss" anim="BF DOWN MISS" fps="24" loop="false" x="0" y="0"/>
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="BF LEFT NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singDOWN" anim="BF DOWN NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singUP" anim="BF UP NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singRIGHT" anim="BF RIGHT NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
</character>
|
||||
@@ -1,14 +1,14 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="true" flipX="true" x="0" y="350">
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
|
||||
<anim name="scared" anim="BF idle shaking" fps="24" loop="true" x="-4" y="0"/>
|
||||
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
|
||||
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
|
||||
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
|
||||
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
|
||||
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
|
||||
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
|
||||
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
|
||||
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
|
||||
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
|
||||
<anim name="scared" anim="BF idle shaking" fps="24" loop="true" x="-4" y="0"/>
|
||||
</character>
|
||||
@@ -1,8 +0,0 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" holdTime="6.1" icon="dad" y="150">
|
||||
<anim name="idle" anim="Dad idle dance" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singUP" anim="Dad Sing note UP" fps="24" loop="false" x="-2" y="50"/>
|
||||
<anim name="singLEFT" anim="dad sing note right" fps="24" loop="false" x="-2" y="10"/>
|
||||
<anim name="singRIGHT" anim="Dad Sing Note LEFT" fps="24" loop="false" x="-5" y="27"/>
|
||||
<anim name="singDOWN" anim="Dad Sing Note DOWN" fps="24" loop="false" x="0" y="-30"/>
|
||||
</character>
|
||||
@@ -1,8 +1,8 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" holdTime="6.1">
|
||||
<anim name="idle" anim="Dad idle dance" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singUP" anim="Dad Sing note UP" fps="24" loop="false" x="-6" y="50"/>
|
||||
<anim name="singLEFT" anim="dad sing note right" fps="24" loop="false" x="-10" y="10"/>
|
||||
<anim name="singRIGHT" anim="Dad Sing Note LEFT" fps="24" loop="false" x="0" y="27"/>
|
||||
<anim name="singDOWN" anim="Dad Sing Note DOWN" fps="24" loop="false" x="0" y="-30"/>
|
||||
<anim name="idle" anim="Dad idle dance" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singUP" anim="Dad Sing Note UP" fps="24" loop="false" x="-6" y="50"/>
|
||||
<anim name="singLEFT" anim="Dad Sing Note LEFT" fps="24" loop="false" x="-10" y="10"/>
|
||||
<anim name="singRIGHT" anim="Dad Sing Note RIGHT" fps="24" loop="false" x="0" y="27"/>
|
||||
<anim name="singDOWN" anim="Dad Sing Note DOWN" fps="24" loop="false" x="0" y="-30"/>
|
||||
</character>
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" isGF="true" x="75" y="335" icon="gf">
|
||||
<anim name="danceLeft" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
<character isPlayer="false" flipX="false" isGF="true" x="75" y="335">
|
||||
<anim name="danceLeft" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</character>
|
||||
@@ -1,14 +1,14 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character x="115" icon="gf" y="325" isGF="true" flipX="false" isPlayer="false" antialiasing="true">
|
||||
<anim x="0" loop="true" y="-9" fps="24" anim="GF FEAR" name="scared"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Down Note" name="singDOWN"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" name="danceRight"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Up Note" name="singUP"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" name="danceLeft"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat Hair blowing" indices="0,1,2,3" name="hairBlow"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Right Note" name="singRIGHT"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat Hair Landing" indices="0,1,2,3,4,5,6,7,8,9,10,11" name="hairFall"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF Cheer" name="cheer"/>
|
||||
<anim x="0" loop="false" y="-9" fps="24" anim="GF left note" name="singLEFT"/>
|
||||
<anim x="-51" loop="true" y="306" fps="24" anim="gf sad" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" name="sad"/>
|
||||
<character isPlayer="false" flipX="false" isGF="true" x="115" y="325">
|
||||
<anim name="cheer" anim="GF Cheer" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="GF Up Note" fps="24" loop="false" x="0" y="4" />
|
||||
<anim name="singLEFT" anim="GF left note" fps="24" loop="false" x="0" y="-19" />
|
||||
<anim name="singRIGHT" anim="GF Right Note" fps="24" loop="false" x="0" y="-20" />
|
||||
<anim name="singDOWN" anim="GF Down Note" fps="24" loop="false" x="0" y="-20" />
|
||||
<anim name="danceLeft" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="-9" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="-9" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" fps="24" loop="false" x="45" y="-8" indices="0,1,2,3" />
|
||||
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" fps="24" loop="false" x="0" y="-9" indices="0,1,2,3,4,5,6,7,8,9,10,11" />
|
||||
<anim name="scared" anim="GF FEAR" fps="24" loop="true" x="-2" y="-17" />
|
||||
<anim name="sad" anim="gf sad" fps="24" loop="true" x="-2" y="-21" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" />
|
||||
</character>
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="180" y="300" antialiasing="false" scale="6" camx="180" camy="300">
|
||||
<anim name="danceLeft" anim="GF IDLE" fps="24" loop="false" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" x="0" y="0" />
|
||||
<anim name="danceRight" anim="GF IDLE" fps="24" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" x="0" y="0" />
|
||||
<anim name="danceLeft" anim="GF IDLE" fps="24" loop="false" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" x="0" y="0" />
|
||||
<anim name="danceRight" anim="GF IDLE" fps="24" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" x="0" y="0" />
|
||||
</character>
|
||||
@@ -1,7 +1,6 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character icon="gf" isGF="true" flipX="false" isPlayer="false" antialiasing="true">
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="GF Dancing at Gunpoint" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" name="danceLeft"/>
|
||||
<anim x="0" loop="true" y="0" fps="24" anim="GF Dancing at Gunpoint" name="dance-cutscene"/>
|
||||
<anim x="-315" loop="true" y="6" fps="24" anim="GF Crying at Gunpoint" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" name="sad"/>
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="GF Dancing at Gunpoint" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" name="danceRight"/>
|
||||
</character>
|
||||
<character isPlayer="false" flipX="false" isGF="true">
|
||||
<anim name="danceLeft" anim="GF Dancing at Gunpoint" fps="24" loop="false" x="0" y="-9" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing at Gunpoint" fps="24" loop="false" x="0" y="-9" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
<anim name="sad" anim="GF Crying at Gunpoint" fps="24" loop="true" x="-2" y="-21" indices="0,1,2,3,4,5,6,7,8,9,10,11,12"/>
|
||||
</character>
|
||||
@@ -1,14 +1,14 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" isGF="true" x="100" y="275">
|
||||
<anim name="cheer" anim="GF Cheer" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="GF Up Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singLEFT" anim="GF left note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singRIGHT" anim="GF Right Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singDOWN" anim="GF Down Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="danceLeft" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" fps="24" loop="true" x="0" y="0" indices="0,1,2,3" />
|
||||
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" fps="24" loop="false" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11" />
|
||||
<anim name="scared" anim="GF FEAR" fps="24" loop="true" x="0" y="0" />
|
||||
<anim name="sad" anim="gf sad" fps="24" loop="true" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" />
|
||||
<anim name="cheer" anim="GF Cheer" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="GF Up Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singLEFT" anim="GF left note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singRIGHT" anim="GF Right Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singDOWN" anim="GF Down Note" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="danceLeft" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" fps="24" loop="false" x="0" y="0" indices="0,1,2,3" />
|
||||
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" fps="24" loop="false" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11" />
|
||||
<anim name="scared" anim="GF FEAR" fps="24" loop="true" x="0" y="0" />
|
||||
<anim name="sad" anim="gf sad" fps="24" loop="true" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" />
|
||||
</character>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" icon="mom">
|
||||
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
|
||||
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
|
||||
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
|
||||
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
|
||||
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
|
||||
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
|
||||
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
|
||||
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
|
||||
<!-- CUZ DAVE IS DUMB! -->
|
||||
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
|
||||
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
|
||||
</character>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false">
|
||||
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
|
||||
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
|
||||
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
|
||||
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
|
||||
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
|
||||
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
|
||||
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
|
||||
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
|
||||
<!-- CUZ DAVE IS DUMB! -->
|
||||
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
|
||||
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
|
||||
</character>
|
||||
@@ -1,8 +1,8 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="0" y="130" icon="monster">
|
||||
<anim name="idle" anim="monster idle" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="50"/>
|
||||
<anim name="singRIGHT" anim="Monster left note" fps="24" loop="false" x="-30" y="0"/>
|
||||
<anim name="singLEFT" anim="Monster Right note" fps="24" loop="false" x="-51" y="0"/>
|
||||
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-40" y="-94"/>
|
||||
<anim name="idle" anim="monster idle" fps="24" loop="false" x="0" y="0"/>
|
||||
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="50"/>
|
||||
<anim name="singLEFT" anim="Monster left note" fps="24" loop="false" x="-30" y="0"/>
|
||||
<anim name="singRIGHT" anim="Monster Right note" fps="24" loop="false" x="-51" y="0"/>
|
||||
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-40" y="-94"/>
|
||||
</character>
|
||||
@@ -1,8 +1,8 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="0" y="100">
|
||||
<anim name="idle" anim="monster idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="94"/>
|
||||
<anim name="singRIGHT" anim="Monster left note" fps="24" loop="false" x="-30" y="20"/>
|
||||
<anim name="singLEFT" anim="Monster Right note" fps="24" loop="false" x="-51" y="30"/>
|
||||
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-50" y="-80"/>
|
||||
<anim name="idle" anim="monster idle" fps="24" loop="false" />
|
||||
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="94"/>
|
||||
<anim name="singLEFT" anim="Monster left note" fps="24" loop="false" x="-30" y="20"/>
|
||||
<anim name="singRIGHT" anim="Monster Right note" fps="24" loop="false" x="-51" y="30"/>
|
||||
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-50" y="-80"/>
|
||||
</character>
|
||||
@@ -1,12 +1,12 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="-500" y="0">
|
||||
<anim name="idle" anim="Parent Christmas Idle" fps="24" loop="false"/>
|
||||
<anim name="singUP" anim="Parent Up Note Dad" fps="24" loop="false" x="-47" y="24"/>
|
||||
<anim name="singDOWN" anim="Parent Down Note Dad" fps="24" loop="false" x="-31" y="-29"/>
|
||||
<anim name="singLEFT" anim="Parent Left Note Dad" fps="24" loop="false" x="-30" y="16"/>
|
||||
<anim name="singRIGHT" anim="Parent Right Note Dad" fps="24" loop="false" x="-1" y="-23"/>
|
||||
<anim name="singUP-alt" anim="Parent Up Note Mom" fps="24" loop="false" x="-47" y="24"/>
|
||||
<anim name="singDOWN-alt" anim="Parent Down Note Mom" fps="24" loop="false" x="-30" y="-27"/>
|
||||
<anim name="singLEFT-alt" anim="Parent Left Note Mom" fps="24" loop="false" x="-30" y="15"/>
|
||||
<anim name="singRIGHT-alt" anim="Parent Right Note Mom" fps="24" loop="false" x="-1" y="-24"/>
|
||||
<anim name="idle" anim="Parent Christmas Idle" fps="24" loop="false"/>
|
||||
<anim name="singUP" anim="Parent Up Note Dad" fps="24" loop="false" x="-47" y="24"/>
|
||||
<anim name="singDOWN" anim="Parent Down Note Dad" fps="24" loop="false" x="-31" y="-29"/>
|
||||
<anim name="singLEFT" anim="Parent Left Note Dad" fps="24" loop="false" x="-30" y="16"/>
|
||||
<anim name="singRIGHT" anim="Parent Right Note Dad" fps="24" loop="false" x="-1" y="-23"/>
|
||||
<anim name="singUP-alt" anim="Parent Up Note Mom" fps="24" loop="false" x="-47" y="24"/>
|
||||
<anim name="singDOWN-alt" anim="Parent Down Note Mom" fps="24" loop="false" x="-30" y="-27"/>
|
||||
<anim name="singLEFT-alt" anim="Parent Left Note Mom" fps="24" loop="false" x="-30" y="15"/>
|
||||
<anim name="singRIGHT-alt" anim="Parent Right Note Mom" fps="24" loop="false" x="-1" y="-24"/>
|
||||
</character>
|
||||
@@ -1,19 +1,19 @@
|
||||
var dir = 2;
|
||||
|
||||
function onDance(event) {
|
||||
event.cancel();
|
||||
|
||||
playAnim("idle" + Std.string(dir), true, "DANCE");
|
||||
event.cancel();
|
||||
|
||||
playAnim("idle" + Std.string(dir), true, "DANCE");
|
||||
}
|
||||
|
||||
function onPlaySingAnim(event) {
|
||||
dir = FlxG.random.int(0, 1) + (event.direction == 0 ? 3 : 1);
|
||||
event.cancel();
|
||||
dir = FlxG.random.int(0, 1) + (event.direction == 0 ? 1 : 3);
|
||||
event.cancel();
|
||||
|
||||
playAnim("shoot" + Std.string(dir), true);
|
||||
playAnim("shoot" + Std.string(dir), true);
|
||||
}
|
||||
|
||||
function update(elapsed) {
|
||||
if (getAnimName() == null || (getAnimName().substr(0, 5) == "shoot" && isAnimFinished()))
|
||||
dance();
|
||||
if (animation.curAnim == null || (animation.curAnim.name.substr(0, 5) == "shoot" && animation.curAnim.finished))
|
||||
dance();
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" icon="pico" x="115" y="-85" camx="195" camy="360">
|
||||
<!-- Left Animations -->
|
||||
<anim name="shoot1" anim="Pico shoot 1" fps="24" loop="false" indices="0,1,2,3" />
|
||||
<anim name="idle1" anim="Pico shoot 1" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
|
||||
<character isPlayer="false" flipX="false" icon="pico" x="140" y="-125">
|
||||
<!-- Left Animations -->
|
||||
<anim name="shoot1" anim="Pico shoot 1" fps="24" loop="false" indices="0,1,2,3" />
|
||||
<anim name="idle1" anim="Pico shoot 1" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
|
||||
|
||||
<anim name="shoot2" anim="Pico shoot 2" fps="24" loop="false" indices="0,1,2,3" />
|
||||
<anim name="idle2" anim="Pico shoot 2" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
|
||||
<anim name="shoot2" anim="Pico shoot 2" fps="24" loop="false" indices="0,1,2,3" x="-1" y="-128" />
|
||||
<anim name="idle2" anim="Pico shoot 2" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" x="-1" y="-128" />
|
||||
|
||||
<!-- Right Animations-->
|
||||
<anim name="shoot3" anim="Pico shoot 3" fps="24" loop="false" indices="0,1,2,3" />
|
||||
<anim name="idle3" anim="Pico shoot 3" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
|
||||
<!-- Right Animations-->
|
||||
<anim name="shoot3" anim="Pico shoot 3" fps="24" loop="false" indices="0,1,2,3" x="412" y="-64" />
|
||||
<anim name="idle3" anim="Pico shoot 3" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" x="412" y="-64" />
|
||||
|
||||
<anim name="shoot4" anim="Pico shoot 4" fps="24" loop="false" indices="0,1,2,3" />
|
||||
<anim name="idle4" anim="Pico shoot 4" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
|
||||
<anim name="shoot4" anim="Pico shoot 4" fps="24" loop="false" indices="0,1,2,3" x="439" y="-19" />
|
||||
<anim name="idle4" anim="Pico shoot 4" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" x="439" y="-19" />
|
||||
</character>
|
||||
@@ -1,16 +1,16 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="true" x="100" y="300" camx="-100">
|
||||
<anim name="idle" anim="Pico Idle Dance" fps="24" loop="false"/>
|
||||
<anim name="idle" anim="Pico Idle Dance" fps="24" loop="false"/>
|
||||
|
||||
<!-- Sing Animations -->
|
||||
<anim name="singLEFT" anim="Pico Note Right0" fps="24" loop="false" x="65" y="9" />
|
||||
<anim name="singDOWN" anim="Pico Down Note0" fps="24" loop="false" x="200" y="-70" />
|
||||
<anim name="singUP" anim="pico Up note0" fps="24" loop="false" x="-29" y="27" />
|
||||
<anim name="singRIGHT" anim="Pico NOTE LEFT0" fps="24" loop="false" x="-68" y="-7" />
|
||||
<!-- Sing Animations -->
|
||||
<anim name="singLEFT" anim="Pico Note Right0" fps="24" loop="false" x="65" y="9" />
|
||||
<anim name="singDOWN" anim="Pico Down Note0" fps="24" loop="false" x="200" y="-70" />
|
||||
<anim name="singUP" anim="pico Up note0" fps="24" loop="false" x="-20" y="50" />
|
||||
<anim name="singRIGHT" anim="Pico NOTE LEFT0" fps="24" loop="false" x="-51" y="0" />
|
||||
|
||||
<!-- Miss Animations -->
|
||||
<anim name="singLEFTmiss" anim="Pico Note Right Miss" fps="24" loop="false" x="62" y="64" />
|
||||
<anim name="singDOWNmiss" anim="Pico Down Note MISS" fps="24" loop="false" x="210" y="-28" />
|
||||
<anim name="singUPmiss" anim="pico Up note miss" fps="24" loop="false" x="-19" y="67" />
|
||||
<anim name="singRIGHTmiss" anim="Pico NOTE LEFT miss" fps="24" loop="false" x="-60" y="41" />
|
||||
<!-- Miss Animations -->
|
||||
<anim name="singLEFTmiss" anim="Pico Note Right Miss" fps="24" loop="false" x="62" y="64" />
|
||||
<anim name="singDOWNmiss" anim="Pico Down Note MISS" fps="24" loop="false" x="200" y="-70" />
|
||||
<anim name="singUPmiss" anim="pico Up note miss" fps="24" loop="false" x="-19" y="67" />
|
||||
<anim name="singRIGHTmiss" anim="Pico NOTE LEFT miss" fps="24" loop="false" x="-60" y="41" />
|
||||
</character>
|
||||
@@ -1,8 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character x="150" icon="senpai" camx="100" y="360" isGF="false" scale="6" camy="87" isPlayer="false" antialiasing="false" sprite="senpai">
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="Angry Senpai Idle" name="idle"/>
|
||||
<anim x="4" loop="false" y="1" fps="24" anim="Angry Senpai LEFT NOTE" name="singLEFT"/>
|
||||
<anim x="2" loop="false" y="0" fps="24" anim="Angry Senpai DOWN NOTE" name="singDOWN"/>
|
||||
<anim x="1" loop="false" y="6" fps="24" anim="Angry Senpai UP NOTE" name="singUP"/>
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="Angry Senpai RIGHT NOTE" name="singRIGHT"/>
|
||||
</character>
|
||||
<character sprite="senpai" isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" icon="senpai" camx="100">
|
||||
<anim name="idle" anim="Angry Senpai Idle" fps="24" loop="false" x="0" y="0" />
|
||||
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="Angry Senpai LEFT NOTE" fps="24" loop="false" x="7" y="0" />
|
||||
<anim name="singDOWN" anim="Angry Senpai DOWN NOTE" fps="24" loop="false" x="2" y="0" />
|
||||
<anim name="singUP" anim="Angry Senpai UP NOTE" fps="24" loop="false" x="1" y="6" />
|
||||
<anim name="singRIGHT" anim="Angry Senpai RIGHT NOTE" fps="24" loop="false" x="0" y="0" />
|
||||
</character>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" camx="100" camy="87">
|
||||
<anim name="idle" anim="Senpai Idle" fps="12" loop="false" x="0" y="0" />
|
||||
<character isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" camx="100">
|
||||
<anim name="idle" anim="Senpai Idle" fps="12" loop="false" x="0" y="0" />
|
||||
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="SENPAI LEFT NOTE" fps="12" loop="false" x="7" y="0" />
|
||||
<anim name="singDOWN" anim="SENPAI DOWN NOTE" fps="12" loop="false" x="2" y="0" />
|
||||
<anim name="singUP" anim="SENPAI UP NOTE" fps="12" loop="false" x="1" y="6" />
|
||||
<anim name="singRIGHT" anim="SENPAI RIGHT NOTE" fps="12" loop="false" x="0" y="0" />
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="SENPAI LEFT NOTE" fps="12" loop="false" x="7" y="0" />
|
||||
<anim name="singDOWN" anim="SENPAI DOWN NOTE" fps="12" loop="false" x="2" y="0" />
|
||||
<anim name="singUP" anim="SENPAI UP NOTE" fps="12" loop="false" x="1" y="6" />
|
||||
<anim name="singRIGHT" anim="SENPAI RIGHT NOTE" fps="12" loop="false" x="0" y="0" />
|
||||
</character>
|
||||
@@ -1,16 +0,0 @@
|
||||
import flixel.addons.effects.FlxTrail;
|
||||
|
||||
var self = this;
|
||||
var trail:FlxTrail;
|
||||
function postCreate() {
|
||||
trail = new FlxTrail(self, null, 4, 24, 0.3, 0.069);
|
||||
}
|
||||
|
||||
var toAdd:Bool = true; // Using this just to make sure
|
||||
function update(elpased) {
|
||||
if(toAdd) {
|
||||
toAdd = false;
|
||||
PlayState.instance.insert(PlayState.instance.members.indexOf(self), trail);
|
||||
disableScript();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="70" y="380" antialiasing="false" scale="6" camx="100">
|
||||
<anim name="idle" anim="idle spirit_" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="idle" anim="idle spirit_" fps="24" loop="false" x="0" y="0" />
|
||||
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="left_" fps="24" loop="false" x="3" y="0" />
|
||||
<anim name="singDOWN" anim="spirit down_" fps="24" loop="false" x="65" y="65" />
|
||||
<anim name="singUP" anim="up_" fps="24" loop="false" x="0" y="7" />
|
||||
<anim name="singRIGHT" anim="right_" fps="24" loop="false" x="0" y="0" />
|
||||
<!-- Offsets are actually multiplied by scale -->
|
||||
<anim name="singLEFT" anim="left_" fps="24" loop="false" x="3" y="0" />
|
||||
<anim name="singDOWN" anim="spirit down_" fps="24" loop="false" x="65" y="65" />
|
||||
<anim name="singUP" anim="up_" fps="24" loop="false" x="0" y="7" />
|
||||
<anim name="singRIGHT" anim="right_" fps="24" loop="false" x="0" y="0" />
|
||||
</character>
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character isPlayer="false" flipX="false" x="0" y="200">
|
||||
<anim name="danceLeft" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="0,2,6"/>
|
||||
<anim name="danceRight" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="8,10,12,14"/>
|
||||
<anim name="singUP" anim="spooky UP NOTE" fps="24" loop="false" x="-20" y="26"/>
|
||||
<anim name="singLEFT" anim="note sing left" fps="24" loop="false" x="130" y="-10"/>
|
||||
<anim name="singRIGHT" anim="spooky sing right" fps="24" loop="false" x="-130" y="-14"/>
|
||||
<anim name="singDOWN" anim="spooky DOWN note" fps="24" loop="false" x="-50" y="-130"/>
|
||||
<anim name="danceLeft" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="0,2,6"/>
|
||||
<anim name="danceRight" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="8,10,12,14"/>
|
||||
<anim name="singUP" anim="spooky UP NOTE" fps="24" loop="false" x="-20" y="26"/>
|
||||
<anim name="singLEFT" anim="note sing left" fps="24" loop="false" x="130" y="-10"/>
|
||||
<anim name="singRIGHT" anim="spooky sing right" fps="24" loop="false" x="-130" y="-14"/>
|
||||
<anim name="singDOWN" anim="spooky DOWN note" fps="24" loop="false" x="-50" y="-130"/>
|
||||
</character>
|
||||
@@ -1,10 +1,15 @@
|
||||
<!DOCTYPE codename-engine-character>
|
||||
<character x="0" icon="tankman" y="180" isGF="false" flipX="true" isPlayer="true" sprite="tankman">
|
||||
<anim x="0" loop="false" y="0" fps="24" anim="Tankman Idle Dance instance 100" name="idle"/>
|
||||
<anim x="-1" loop="false" y="-7" fps="24" anim="Tankman Right Note instance 1000" name="singRIGHT"/>
|
||||
<anim x="98" loop="false" y="-90" fps="24" anim="Tankman DOWN note instance 1000" name="singDOWN"/>
|
||||
<anim x="24" loop="false" y="56" fps="24" anim="Tankman UP note instance 1000" name="singUP"/>
|
||||
<anim x="100" loop="false" y="-14" fps="24" anim="Tankman Note Left instance 1000" name="singLEFT"/>
|
||||
<anim x="98" loop="false" y="17" fps="24" anim="PRETTY GOOD tankman instance 100" name="good!"/>
|
||||
<anim x="-16" loop="false" y="-9" fps="30" anim="TANKMAN UGH instance 100" name="singUP-alt"/>
|
||||
</character>
|
||||
|
||||
<!-- tankman actually have player offsets !-->
|
||||
<character isPlayer="true" flipX="true" x="0" y="180" camx="0">
|
||||
<anim name="idle" anim="Tankman Idle Dance instance 100" fps="24" loop="false" x="0" y="0" />
|
||||
<anim name="singRIGHT" anim="Tankman Right Note instance 1000" fps="24" loop="false" x="-1" y="-7" />
|
||||
<anim name="singDOWN" anim="Tankman DOWN note instance 1000" fps="24" loop="false" x="98" y="-90" />
|
||||
<anim name="singUP" anim="Tankman UP note instance 1000" fps="24" loop="false" x="24" y="56" />
|
||||
<anim name="singLEFT" anim="Tankman Note Left instance 1000" fps="24" loop="false" x="100" y="-14" />
|
||||
|
||||
<!-- Heh! Pretty Good! -->
|
||||
<anim name="singDOWN-alt" anim="PRETTY GOOD tankman instance 100" fps="24" loop="false" x="98" y="-90" />
|
||||
<!-- Ugh! -->
|
||||
<anim name="singUP-alt" anim="TANKMAN UGH instance 100" fps="30" loop="false" x="24" y="56" />
|
||||
</character>
|
||||
@@ -0,0 +1,7 @@
|
||||
<!DOCTYPE codename-config >
|
||||
<mod name="Codename Engine" desc="New FNF engine designed to make mod making easier, both in source and via softcoding!">
|
||||
<!-- This line is ignored if in source assets. Use the project.xml to change settings. !-->
|
||||
<window icon="icon.ico" title="Friday Night Funkin' - Codename Engine" width="1280" height="720" />
|
||||
|
||||
|
||||
</mod>
|
||||
@@ -1,7 +0,0 @@
|
||||
<!DOCTYPE codename-mod-credits>
|
||||
<!-- TEMPLATE FOR CUSTOM CREDITS!!! -->
|
||||
<menu name="Mod Credits" desc="Modify mod credits here">
|
||||
<!-- \/ You can also set the portrait shader as false as you can see below in the github one -->
|
||||
<credit name="Credit Example" desc="Click me to know more about me!" icon="credit icon example" size="130" url="https://youtu.be/fugtxz1znVw"/>
|
||||
<github user="NexIsDumb" customName="Nex is Dumb" desc="The bitch who made these credits menus" size="100" portrait="false"/>
|
||||
</menu>
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"clientID": "1027994136193810442",
|
||||
"logoKey": "icon"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
story mode
|
||||
visual novel
|
||||
freeplay
|
||||
options
|
||||
donate
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE codename-mod-options>
|
||||
<!-- TEMPLATE FOR CUSTOM OPTIONS!!! -->
|
||||
<menu name="Mod Options" desc="Modify mod options here">
|
||||
<checkbox id="checkboxExample" name="Checkbox example" />
|
||||
<number id="numberExample" name="Number example" min="0" max="10" change="1"/>
|
||||
<choice id="choiceExample" name="Choice Example">
|
||||
<value name="Disabled" value="disabled"/>
|
||||
<value name="This only" value="thisOnly"/>
|
||||
<value name="All" value="all"/>
|
||||
</choice>
|
||||
|
||||
<menu name="Submenu Example" desc="Submenu test">
|
||||
<checkbox id="levelOfIdk2" name="Level of idk" />
|
||||
</menu>
|
||||
</menu>
|
||||
@@ -1,24 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-box>
|
||||
<dialoguebox y="75">
|
||||
<!--
|
||||
Node containing all text settings
|
||||
-->
|
||||
<text font="vcr.ttf" x="107" y="206" width="1053" color="#000000" size="40"/>
|
||||
|
||||
<!--
|
||||
All positions for characters
|
||||
-->
|
||||
<charpos name="left" x="-500" y="184" flipBubble="true" />
|
||||
<charpos name="middle" x="0" y="184" />
|
||||
<charpos name="right" x="500" y="184" />
|
||||
|
||||
<!--
|
||||
All animations for the dialogue box
|
||||
For example, if you wanna add an "angry" animation, add an animation named "angry" (box idle), and "angry-open" (not needed, for box apparition)
|
||||
-->
|
||||
<anim name="normal" anim="speech bubble normal" fps="24" loop="true" x="-30"/>
|
||||
<anim name="normal-open" anim="Speech Bubble Normal Open" fps="24" />
|
||||
|
||||
<anim name="angry" anim="AHH speech bubble" fps="24" loop="true" y="60"/>
|
||||
<anim name="angry-open" anim="speech bubble loud open" fps="24" y="60"/>
|
||||
</dialoguebox>
|
||||
@@ -1,61 +0,0 @@
|
||||
var loopedTimah:FlxTimer; // Hey! a man has fallen into the river in lego city! and if youre asking why this is here, you shall disappear! - Nex
|
||||
var bgFade:FlxSprite;
|
||||
var hand:FlxSprite;
|
||||
|
||||
function postCreate() {
|
||||
bgFade = new FlxSprite().makeSolid(FlxG.width + 100, FlxG.height + 100, 0xFFB3DFd8);
|
||||
bgFade.screenCenter();
|
||||
bgFade.scrollFactor.set();
|
||||
bgFade.alpha = 0;
|
||||
cutscene.insert(0, bgFade);
|
||||
|
||||
loopedTimah = new FlxTimer().start(0.83, function(tmr:FlxTimer)
|
||||
{
|
||||
bgFade.alpha += (1 / 5) * 0.7;
|
||||
if (bgFade.alpha > 0.7)
|
||||
bgFade.alpha = 0.7;
|
||||
}, 5);
|
||||
|
||||
hand = new FlxSprite(0, 600).loadGraphic(Paths.image('stages/school/ui/hand_textbox'));
|
||||
hand.scale.set(4, 4);
|
||||
hand.updateHitbox();
|
||||
}
|
||||
|
||||
var finished:Bool = false;
|
||||
function close(event) {
|
||||
if(finished) return;
|
||||
else event.cancelled = true;
|
||||
cutscene.canProceed = false;
|
||||
|
||||
cutscene.curMusic?.fadeOut(1, 0);
|
||||
for(c in cutscene.charMap) c.visible = false;
|
||||
|
||||
loopedTimah.cancel();
|
||||
loopedTimah = new FlxTimer().start(0.2, function(tmr:FlxTimer)
|
||||
{
|
||||
if (tmr.elapsedLoops <= 5) {
|
||||
cutscene.dialogueBox.alpha -= 1 / 5;
|
||||
cutscene.dialogueBox.text.alpha -= 1 / 5;
|
||||
bgFade.alpha -= (1 / 5) * 0.7;
|
||||
hand.alpha -= 1 / 5;
|
||||
} else {
|
||||
finished = true;
|
||||
cutscene.close();
|
||||
}
|
||||
}, 6);
|
||||
}
|
||||
|
||||
var time:Float = 0;
|
||||
function update(elapsed:Float) {
|
||||
if(hand.visible = dialogueEnded) {
|
||||
hand.x = 1060 + Math.sin((time += elapsed) * Math.PI * 2) * 12;
|
||||
hand.x -= hand.x % hand.scale.x;
|
||||
hand.y -= hand.y % hand.scale.y;
|
||||
}
|
||||
}
|
||||
|
||||
function postPlayBubbleAnim() {
|
||||
cutscene.remove(hand);
|
||||
if(active && visible)
|
||||
cutscene.add(hand);
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-box>
|
||||
<dialoguebox sprite="pixel/dialogueBox" antialiasing="false" graphicSizex="1227" x="-67" y="-325" textSound="pixel/pixelText" nextSound="pixel/clickText" updateHitbox="true">
|
||||
<!--
|
||||
Node containing all text settings
|
||||
-->
|
||||
<text font="pixel.otf" x="239" y="218" width="768" color="#3f2021" size="32" antialiasing="false" borderSize="1" borderStyle="shadow" borderColor="#D89494" shadowOffsetX="2" shadowOffsetY="2"/>
|
||||
|
||||
<!--
|
||||
All positions for characters
|
||||
-->
|
||||
<charpos name="left" x="-500" y="184" />
|
||||
<charpos name="middle" x="0" y="184" />
|
||||
<charpos name="right" x="490" y="184" />
|
||||
|
||||
<!--
|
||||
All animations for the dialogue box
|
||||
For example, if you wanna add an "angry" animation, add an animation named "angry" (box idle), and "angry-open" (not needed, for box apparition)
|
||||
-->
|
||||
<anim name="normal-firstOpen" anim="Text Box Appear instance 10" fps="24" />
|
||||
<anim name="angry-firstOpen" anim="Text Box Bump Appear instance 10" x="-16" y="-59" fps="24" />
|
||||
</dialoguebox>
|
||||
@@ -1,43 +0,0 @@
|
||||
import flixel.tweens.FlxTweenType;
|
||||
|
||||
var aberration:CustomShader = null;
|
||||
var spirit:FlxSprite;
|
||||
function postCreate() {
|
||||
spirit = new FlxSprite(320, 170).loadGraphic(Paths.image('game/cutscenes/weeb/spiritFaceForward'));
|
||||
spirit.setGraphicSize(Std.int(spirit.width * 6));
|
||||
if(Options.gameplayShaders) {
|
||||
spirit.shader = aberration = new CustomShader('chromaticAberration');
|
||||
FlxTween.num(-0.003, 0.003, 3, {ease: FlxEase.sineInOut, type: FlxTweenType.PINGPONG}, function(num) { if(aberration == null) return; aberration.redOff = [0, -num]; aberration.blueOff = [0, num]; });
|
||||
}
|
||||
cutscene.add(spirit);
|
||||
|
||||
FlxG.camera._fxFadeAlpha = 0;
|
||||
cutscene.dialogueCamera.bgColor = FlxColor.fromRGBFloat(1, 1, 1, 0.3);
|
||||
}
|
||||
|
||||
var finished:Bool = false;
|
||||
function close(event) {
|
||||
if(finished) return;
|
||||
else event.cancelled = true;
|
||||
cutscene.canProceed = false;
|
||||
|
||||
cutscene.curMusic?.fadeOut(1, 0);
|
||||
for(c in cutscene.charMap) c.visible = false;
|
||||
|
||||
spirit.destroy();
|
||||
spirit.shader = aberration = null;
|
||||
new FlxTimer().start(0.4, function(swagTimer:FlxTimer) {
|
||||
cutscene.dialogueCamera.alpha -= 0.15;
|
||||
|
||||
if(cutscene.dialogueCamera.alpha > 0) swagTimer.reset();
|
||||
else {
|
||||
finished = true;
|
||||
cutscene.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function popupChar(event) {
|
||||
if(!active || event.char.positionName != "left") return;
|
||||
event.char.color = FlxColor.BLACK;
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-box>
|
||||
<dialoguebox sprite="pixel/dialogueBox-evil" antialiasing="false" graphicSizex="1344" y="107" textSound="pixel/pixelText" nextSound="pixel/clickText" updateHitbox="true">
|
||||
<!--
|
||||
Node containing all text settings
|
||||
-->
|
||||
<text font="pixel.otf" x="265" y="220" width="768" color="#FFFFFF" size="32" antialiasing="false" borderSize="2" borderStyle="shadow" borderColor="#000000" />
|
||||
|
||||
<!--
|
||||
All positions for characters
|
||||
-->
|
||||
<charpos name="left" x="-510" y="183" />
|
||||
<charpos name="middle" x="0" y="183" />
|
||||
<charpos name="right" x="510" y="183" />
|
||||
|
||||
<!--
|
||||
All animations for the dialogue box
|
||||
For example, if you wanna add an "angry" animation, add an animation named "angry" (box idle), and "angry-open" (not needed, for box apparition)
|
||||
-->
|
||||
<anim name="normal-firstOpen" anim="Spirit Textbox spawn instance 10" fps="24" />
|
||||
</dialoguebox>
|
||||
@@ -1,4 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-character>
|
||||
<character x="285">
|
||||
<anim name="normal" anim="normal" fps="24" />
|
||||
</character>
|
||||
@@ -1,4 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-character>
|
||||
<character x="50" y="-60">
|
||||
<anim name="normal" anim="normal" fps="24" />
|
||||
</character>
|
||||
@@ -1,4 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-character>
|
||||
<character x="250" y="-350">
|
||||
<anim name="normal" anim="normal" fps="24" />
|
||||
</character>
|
||||
@@ -1,3 +0,0 @@
|
||||
function postHide() {
|
||||
if(curTween != null) curTween.percent = 1;
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-character>
|
||||
<character sprite="pixel/boyfriend" x="570" y="-599" graphicSizex="1334" antialiasing="false" textSound="pixel/pixelText">
|
||||
<anim name="normal-show" anim="Boyfriend portrait enter instance 10" fps="24" />
|
||||
</character>
|
||||
@@ -1,6 +0,0 @@
|
||||
function postHide() {
|
||||
if(curTween != null) {
|
||||
if(animation.curAnim?.name == 'angry-show') curTween.cancel();
|
||||
else curTween.percent = 1;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
<!DOCTYPE codename-engine-dialogue-character>
|
||||
<character sprite="pixel/senpai" x="-392" y="-599" graphicSizex="1334" antialiasing="false" textSound="pixel/pixelText">
|
||||
<anim name="normal-show" anim="Senpai Portrait Enter instance 10" fps="24" x="4.4" />
|
||||
<anim name="angry-show" anim="Senpai Portrait Angry instance 10" x="-56" y="-9" fps="24" />
|
||||
</character>
|
||||
@@ -1,50 +0,0 @@
|
||||
import funkin.backend.utils.DiscordUtil;
|
||||
|
||||
function onGameOver() {
|
||||
DiscordUtil.changePresence('Game Over', PlayState.SONG.meta.displayName + " (" + PlayState.difficulty + ")");
|
||||
}
|
||||
|
||||
function onDiscordPresenceUpdate(e) {
|
||||
var data = e.presence;
|
||||
|
||||
if(data.button1Label == null)
|
||||
data.button1Label = "Codename Engine Discord";
|
||||
if(data.button1Url == null)
|
||||
data.button1Url = "https://discord.gg/2NTCdsQvx4";
|
||||
}
|
||||
|
||||
function onPlayStateUpdate() {
|
||||
DiscordUtil.changeSongPresence(
|
||||
PlayState.instance.detailsText,
|
||||
(PlayState.instance.paused ? "Paused - " : "") + PlayState.SONG.meta.displayName + " (" + PlayState.difficulty + ")",
|
||||
PlayState.instance.inst,
|
||||
PlayState.instance.getIconRPC()
|
||||
);
|
||||
}
|
||||
|
||||
function onMenuLoaded(name:String) {
|
||||
// Name is either "Main Menu", "Freeplay", "Title Screen", "Options Menu", "Credits Menu", "Beta Warning", "Update Available Screen", "Update Screen"
|
||||
DiscordUtil.changePresenceSince("In the Menus", null);
|
||||
}
|
||||
|
||||
function onEditorTreeLoaded(name:String) {
|
||||
switch(name) {
|
||||
case "Character Editor":
|
||||
DiscordUtil.changePresenceSince("Choosing a Character", null);
|
||||
case "Chart Editor":
|
||||
DiscordUtil.changePresenceSince("Choosing a Chart", null);
|
||||
case "Stage Editor":
|
||||
DiscordUtil.changePresenceSince("Choosing a Stage", null);
|
||||
}
|
||||
}
|
||||
|
||||
function onEditorLoaded(name:String, editingThing:String) {
|
||||
switch(name) {
|
||||
case "Character Editor":
|
||||
DiscordUtil.changePresenceSince("Editing a Character", editingThing);
|
||||
case "Chart Editor":
|
||||
DiscordUtil.changePresenceSince("Editing a Chart", editingThing);
|
||||
case "Stage Editor":
|
||||
DiscordUtil.changePresenceSince("Editing a Stage", editingThing);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"addOGSongs": false,
|
||||
"songs": [
|
||||
{
|
||||
"name": "test",
|
||||
"icon": "bf"
|
||||
},
|
||||
{
|
||||
"name": "Tutorial",
|
||||
"icon": "gf",
|
||||
"color": "#9271FD"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Bopeebo",
|
||||
"icon": "dad",
|
||||
"color": "#9271FD"
|
||||
},
|
||||
{
|
||||
"name": "Fresh",
|
||||
"icon": "dad",
|
||||
"color": "#9271FD"
|
||||
},
|
||||
{
|
||||
"name": "Dadbattle",
|
||||
"icon": "dad",
|
||||
"color": "#9271FD"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Spookeez",
|
||||
"icon": "spooky",
|
||||
"color": "#223344"
|
||||
},
|
||||
{
|
||||
"name": "South",
|
||||
"icon": "spooky",
|
||||
"color": "#223344"
|
||||
},
|
||||
{
|
||||
"name": "Monster",
|
||||
"icon": "monster",
|
||||
"color": "#223344"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Pico",
|
||||
"icon": "pico",
|
||||
"color": "#941653"
|
||||
},
|
||||
{
|
||||
"name": "Philly Nice",
|
||||
"icon": "pico",
|
||||
"color": "#941653"
|
||||
},
|
||||
{
|
||||
"name": "Blammed",
|
||||
"icon": "pico",
|
||||
"color": "#941653"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Satin Panties",
|
||||
"icon": "mom",
|
||||
"color": "#FC96D7"
|
||||
},
|
||||
{
|
||||
"name": "High",
|
||||
"icon": "mom",
|
||||
"color": "#FC96D7"
|
||||
},
|
||||
{
|
||||
"name": "MILF",
|
||||
"icon": "mom",
|
||||
"color": "#FC96D7"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Cocoa",
|
||||
"icon": "parents-christmas",
|
||||
"color": "#A0D1FF"
|
||||
},
|
||||
{
|
||||
"name": "Eggnog",
|
||||
"icon": "parents-christmas",
|
||||
"color": "#A0D1FF"
|
||||
},
|
||||
{
|
||||
"name": "Winter Horrorland",
|
||||
"icon": "monster",
|
||||
"color": "#A0D1FF"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Senpai",
|
||||
"icon": "senpai",
|
||||
"color": "#FF78BF"
|
||||
},
|
||||
{
|
||||
"name": "Roses",
|
||||
"icon": "senpai",
|
||||
"color": "#FF78BF"
|
||||
},
|
||||
{
|
||||
"name": "Thorns",
|
||||
"icon": "spirit",
|
||||
"color": "#FF78BF"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "Ugh",
|
||||
"icon": "tankman",
|
||||
"color": "#F6B604"
|
||||
},
|
||||
{
|
||||
"name": "Guns",
|
||||
"icon": "tankman",
|
||||
"color": "#F6B604"
|
||||
},
|
||||
{
|
||||
"name": "Stress",
|
||||
"icon": "tankman",
|
||||
"color": "#F6B604"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
test
|
||||
tutorial
|
||||
|
||||
bopeebo
|
||||
fresh
|
||||
dadbattle
|
||||
|
||||
spookeez
|
||||
south
|
||||
monster
|
||||
|
||||
pico
|
||||
philly nice
|
||||
blammed
|
||||
|
||||
satin panties
|
||||
high
|
||||
milf
|
||||
|
||||
cocoa
|
||||
eggnog
|
||||
winter horrorland
|
||||
|
||||
senpai
|
||||
roses
|
||||
thorns
|
||||
|
||||
ugh
|
||||
guns
|
||||
stress
|
||||
@@ -1,3 +0,0 @@
|
||||
//
|
||||
function update(elapsed:Float)
|
||||
if (FlxG.keys.justPressed.F5) FlxG.resetState();
|
||||
@@ -1 +0,0 @@
|
||||
function onNoteHit(event) if (event.noteType == "Alt Anim Note") event.animSuffix = "-alt";
|
||||
@@ -1 +0,0 @@
|
||||
function onNoteHit(event) if (event.noteType == "No Anim Note") event.animCancelled = true;
|
||||
@@ -1,9 +1,8 @@
|
||||
import funkin.game.HudCamera;
|
||||
import funkin.backend.scripting.events.NoteHitEvent;
|
||||
import funkin.scripting.events.NoteHitEvent;
|
||||
|
||||
public var pixelNotesForBF = true;
|
||||
public var pixelNotesForDad = true;
|
||||
public var pixelSplashes = true;
|
||||
public var enablePixelUI = true;
|
||||
public var enablePixelGameOver = true;
|
||||
public var enableCameraHacks = Options.week6PixelPerfect;
|
||||
@@ -17,161 +16,154 @@ static var daPixelZoom = 6;
|
||||
* UI
|
||||
*/
|
||||
function onNoteCreation(event) {
|
||||
if (event.note.strumLine == playerStrums && !pixelNotesForBF) return;
|
||||
if (event.note.strumLine == cpuStrums && !pixelNotesForDad) return;
|
||||
if (event.note.mustPress && !pixelNotesForBF) return;
|
||||
if (!event.note.mustPress && !pixelNotesForDad) return;
|
||||
|
||||
event.cancel();
|
||||
|
||||
event.cancel();
|
||||
|
||||
var note = event.note;
|
||||
if (event.note.isSustainNote) {
|
||||
note.loadGraphic(Paths.image('stages/school/ui/arrowEnds'), true, 7, 6);
|
||||
note.animation.add("hold", [event.strumID]);
|
||||
note.animation.add("holdend", [4 + event.strumID]);
|
||||
} else {
|
||||
note.loadGraphic(Paths.image('stages/school/ui/arrows-pixels'), true, 17, 17);
|
||||
note.animation.add("scroll", [4 + event.strumID]);
|
||||
}
|
||||
note.scale.set(daPixelZoom, daPixelZoom);
|
||||
note.updateHitbox();
|
||||
}
|
||||
|
||||
function onPostNoteCreation(event) {
|
||||
var splashes = event.note;
|
||||
if (pixelSplashes)
|
||||
splashes.splash = "pixel-default";
|
||||
var note = event.note;
|
||||
if (event.note.isSustainNote) {
|
||||
note.loadGraphic(Paths.image('stages/school/ui/arrowEnds'), true, 7, 6);
|
||||
note.animation.add("hold", [event.strumID]);
|
||||
note.animation.add("holdend", [4 + event.strumID]);
|
||||
} else {
|
||||
note.loadGraphic(Paths.image('stages/school/ui/arrows-pixels'), true, 17, 17);
|
||||
note.animation.add("scroll", [4 + event.strumID]);
|
||||
}
|
||||
note.scale.set(daPixelZoom, daPixelZoom);
|
||||
note.updateHitbox();
|
||||
}
|
||||
|
||||
function onStrumCreation(event) {
|
||||
if (event.player == 1 && !pixelNotesForBF) return;
|
||||
if (event.player == 0 && !pixelNotesForDad) return;
|
||||
if (event.player == 1 && !pixelNotesForBF) return;
|
||||
if (event.player == 0 && !pixelNotesForDad) return;
|
||||
|
||||
event.cancel();
|
||||
event.cancel();
|
||||
|
||||
var strum = event.strum;
|
||||
strum.loadGraphic(Paths.image('stages/school/ui/arrows-pixels'), true, 17, 17);
|
||||
strum.animation.add("static", [event.strumID]);
|
||||
strum.animation.add("pressed", [4 + event.strumID, 8 + event.strumID], 12, false);
|
||||
strum.animation.add("confirm", [12 + event.strumID, 16 + event.strumID], 24, false);
|
||||
|
||||
strum.scale.set(daPixelZoom, daPixelZoom);
|
||||
strum.updateHitbox();
|
||||
var strum = event.strum;
|
||||
strum.loadGraphic(Paths.image('stages/school/ui/arrows-pixels'), true, 17, 17);
|
||||
strum.animation.add("static", [event.strumID]);
|
||||
strum.animation.add("pressed", [4 + event.strumID, 8 + event.strumID], 12, false);
|
||||
strum.animation.add("confirm", [12 + event.strumID, 16 + event.strumID], 24, false);
|
||||
|
||||
strum.scale.set(daPixelZoom, daPixelZoom);
|
||||
strum.updateHitbox();
|
||||
}
|
||||
|
||||
function onCountdown(event) {
|
||||
if (!enablePixelUI) return;
|
||||
if (!enablePixelUI) return;
|
||||
|
||||
if (event.soundPath != null) event.soundPath = 'pixel/' + event.soundPath;
|
||||
event.antialiasing = false;
|
||||
event.scale = daPixelZoom;
|
||||
event.spritePath = switch(event.swagCounter) {
|
||||
case 0: null;
|
||||
case 1: 'stages/school/ui/ready';
|
||||
case 2: 'stages/school/ui/set';
|
||||
case 3: 'stages/school/ui/go';
|
||||
};
|
||||
if (event.soundPath != null) event.soundPath = 'pixel/' + event.soundPath;
|
||||
event.antialiasing = false;
|
||||
event.scale = daPixelZoom;
|
||||
event.spritePath = switch(event.swagCounter) {
|
||||
case 0: null;
|
||||
case 1: 'stages/school/ui/ready';
|
||||
case 2: 'stages/school/ui/set';
|
||||
case 3: 'stages/school/ui/go';
|
||||
};
|
||||
}
|
||||
|
||||
function onPlayerHit(event:NoteHitEvent) {
|
||||
if (!enablePixelUI) return;
|
||||
event.ratingPrefix = "stages/school/ui/";
|
||||
event.ratingScale = daPixelZoom * 0.7;
|
||||
event.ratingAntialiasing = false;
|
||||
if (!enablePixelUI) return;
|
||||
event.ratingPrefix = "stages/school/ui/";
|
||||
event.ratingScale = daPixelZoom * 0.7;
|
||||
event.ratingAntialiasing = false;
|
||||
|
||||
event.numScale = daPixelZoom;
|
||||
event.numAntialiasing = false;
|
||||
event.numScale = daPixelZoom;
|
||||
event.numAntialiasing = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* CAMERA HACKS!!
|
||||
*/
|
||||
function postCreate() {
|
||||
if (enablePauseMenu) {
|
||||
PauseSubState.script = 'data/scripts/week6-pause';
|
||||
}
|
||||
if (enableCameraHacks) {
|
||||
camGame.pixelPerfectRender = true;
|
||||
camGame.antialiasing = false;
|
||||
|
||||
makeCameraPixely(camGame);
|
||||
defaultCamZoom /= daPixelZoom;
|
||||
}
|
||||
|
||||
iconP1.antialiasing = false;
|
||||
iconP2.antialiasing = false;
|
||||
|
||||
if (enablePixelGameOver) {
|
||||
gameOverSong = "pixel/gameOver";
|
||||
lossSFX = "pixel/gameOverSFX";
|
||||
retrySFX = "pixel/gameOverEnd";
|
||||
}
|
||||
if (enablePauseMenu) {
|
||||
PauseSubState.script = 'data/scripts/week6-pause';
|
||||
}
|
||||
if (enableCameraHacks) {
|
||||
FlxG.camera.antialiasing = false;
|
||||
FlxG.camera.pixelPerfectRender = true;
|
||||
|
||||
|
||||
iconP1.antialiasing = false;
|
||||
iconP2.antialiasing = false;
|
||||
|
||||
makeCameraPixely(camGame);
|
||||
defaultCamZoom /= daPixelZoom;
|
||||
}
|
||||
if (enablePixelGameOver) {
|
||||
gameOverSong = "pixel/gameOver";
|
||||
lossSFX = "pixel/gameOverSFX";
|
||||
retrySFX = "pixel/gameOverEnd";
|
||||
}
|
||||
}
|
||||
|
||||
function onStartCountdown() {
|
||||
/*var newNoteCamera = new HudCamera();
|
||||
newNoteCamera.bgColor = 0; // transparent
|
||||
FlxG.cameras.add(newNoteCamera, false);
|
||||
var newNoteCamera = new HudCamera();
|
||||
newNoteCamera.bgColor = 0; // transparent
|
||||
FlxG.cameras.add(newNoteCamera, false);
|
||||
|
||||
var pixelSwagWidth = Note.swagWidth + (daPixelZoom - (Note.swagWidth % daPixelZoom));
|
||||
|
||||
for(p in strumLines) {
|
||||
var i = 0;
|
||||
for(str in p.members) {
|
||||
str.x = (FlxG.width * strumOffset) + (pixelSwagWidth * (i - 2));
|
||||
str.x -= str.x % daPixelZoom;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
makeCameraPixely(newNoteCamera);*/
|
||||
var pixelSwagWidth = Note.swagWidth + (daPixelZoom - (Note.swagWidth % daPixelZoom));
|
||||
// TODO: multikey support??
|
||||
for(s in 0...4) {
|
||||
var i = 0;
|
||||
for(str in [cpuStrums.members[s], playerStrums.members[s]]) {
|
||||
// TODO: middlescroll???
|
||||
str.x = (FlxG.width * (0.25 + (0.5 * i))) + (pixelSwagWidth * (s - 2));
|
||||
str.x -= str.x % daPixelZoom;
|
||||
str.cameras = [newNoteCamera];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
makeCameraPixely(newNoteCamera);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this to make any camera pixelly (you wont be able to zoom with it anymore!)
|
||||
*/
|
||||
public function makeCameraPixely(cam) {
|
||||
cam.pixelPerfectRender = true;
|
||||
if(!enableCameraHacks) return;
|
||||
cam.pixelPerfectRender = true;
|
||||
cam.zoom /= Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y) * daPixelZoom;
|
||||
|
||||
cam.zoom /= Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y) * daPixelZoom;
|
||||
var shad = new CustomShader('pixelZoomShader');
|
||||
cam.addShader(shad);
|
||||
|
||||
var shad = new CustomShader('pixelZoomShader');
|
||||
cam.addShader(shad);
|
||||
pixellyCameras.push(cam);
|
||||
pixellyShaders.push(shad);
|
||||
|
||||
pixellyCameras.push(cam);
|
||||
pixellyShaders.push(shad);
|
||||
|
||||
FlxG.game.stage.quality = 2;
|
||||
FlxG.game.stage.quality = 2;
|
||||
}
|
||||
|
||||
function destroy() {
|
||||
// resets the stage quality
|
||||
FlxG.game.stage.quality = oldStageQuality;
|
||||
// resets the stage quality
|
||||
FlxG.game.stage.quality = oldStageQuality;
|
||||
}
|
||||
|
||||
function pixelCam(cam) {
|
||||
makeCameraPixely(cam);
|
||||
makeCameraPixely(cam);
|
||||
}
|
||||
|
||||
var pixellyCameras = [];
|
||||
var pixellyShaders = [];
|
||||
|
||||
function postUpdate(elapsed) {
|
||||
for(e in pixellyCameras) {
|
||||
if (Std.isOfType(e, HudCamera))
|
||||
e.downscroll = camHUD.downscroll;
|
||||
}
|
||||
if (enableCameraHacks) {
|
||||
for(p in strumLines)
|
||||
p.notes.forEach(function(n) {
|
||||
n.y -= n.y % daPixelZoom;
|
||||
n.x -= n.x % daPixelZoom;
|
||||
});
|
||||
}
|
||||
|
||||
for(e in pixellyCameras) {
|
||||
if (!e.exists) continue;
|
||||
e.zoom = 1 / daPixelZoom / Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y);
|
||||
}
|
||||
for(e in pixellyShaders) {
|
||||
e.pixelZoom = 1 / daPixelZoom / Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y);
|
||||
}
|
||||
for(e in pixellyCameras) {
|
||||
if (Std.isOfType(e, HudCamera))
|
||||
e.downscroll = camHUD.downscroll;
|
||||
}
|
||||
if (enableCameraHacks) {
|
||||
notes.forEach(function(n) {
|
||||
n.y -= n.y % daPixelZoom;
|
||||
n.x -= n.x % daPixelZoom;
|
||||
});
|
||||
}
|
||||
|
||||
for(e in pixellyCameras) {
|
||||
if (!e.exists) continue;
|
||||
e.zoom = 1 / daPixelZoom / Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y);
|
||||
}
|
||||
for(e in pixellyShaders) {
|
||||
e.pixelZoom = 1 / daPixelZoom / Math.min(FlxG.scaleMode.scale.x, FlxG.scaleMode.scale.y);
|
||||
}
|
||||
}
|
||||
@@ -11,117 +11,117 @@ var hand:FlxSprite;
|
||||
|
||||
var texts:Array<FlxText> = [];
|
||||
|
||||
var isThorns = PlayState.SONG.meta.name.toLowerCase() == "thorns";
|
||||
var isThorns = PlayState.SONG.song.toLowerCase() == "thorns";
|
||||
|
||||
function create(event) {
|
||||
// cancel default pause menu!!
|
||||
event.cancel();
|
||||
// cancel default pause menu!!
|
||||
event.cancel();
|
||||
|
||||
event.music = isThorns ? "pixel/LunchboxScary" : "pixel/Lunchbox";
|
||||
event.music = isThorns ? "pixel/LunchboxScary" : "pixel/Lunchbox";
|
||||
|
||||
cameras = [];
|
||||
cameras = [];
|
||||
|
||||
pixelScript = game.scripts.getByName("pixel.hx");
|
||||
pixelScript.call("pixelCam", [pauseCam]);
|
||||
pixelScript = game.scripts.getByName("pixel.hx");
|
||||
pixelScript.call("pixelCam", [pauseCam]);
|
||||
|
||||
FlxG.cameras.add(pauseCam, false);
|
||||
FlxG.cameras.add(pauseCam, false);
|
||||
|
||||
pauseCam.bgColor = isThorns ? 0x88000000 : 0x88FF99CC;
|
||||
pauseCam.alpha = 0;
|
||||
pauseCam.bgColor = isThorns ? 0x88000000 : 0x88FF99CC;
|
||||
pauseCam.alpha = 0;
|
||||
|
||||
bg = new FlxSprite(44 * 6, 14 * 6);
|
||||
bg.loadGraphic(Paths.image('stages/school/pause/bg'));
|
||||
if (isThorns)
|
||||
bg.color = 0xFF000000;
|
||||
bg.scale.set(6, 6);
|
||||
bg.updateHitbox();
|
||||
bg.scale.y = 4;
|
||||
bg.cameras = [pauseCam];
|
||||
add(bg);
|
||||
bg = new FlxSprite(44 * 6, 14 * 6);
|
||||
bg.loadGraphic(Paths.image('stages/school/pause/bg'));
|
||||
if (isThorns)
|
||||
bg.color = 0xFF000000;
|
||||
bg.scale.set(6, 6);
|
||||
bg.updateHitbox();
|
||||
bg.scale.y = 4;
|
||||
bg.cameras = [pauseCam];
|
||||
add(bg);
|
||||
|
||||
songText = new FlxText(0, 22 * 6, 0, "Pause", 8, false);
|
||||
confText(songText);
|
||||
add(songText);
|
||||
songText = new FlxText(0, 22 * 6, 0, "Pause", 8, false);
|
||||
confText(songText);
|
||||
add(songText);
|
||||
|
||||
var i = 2;
|
||||
for(e in menuItems) {
|
||||
text = new FlxText(0, (22 * 6) + (i * 9 * 6), 0, e, 8, false);
|
||||
confText(text);
|
||||
add(text);
|
||||
texts.push(text);
|
||||
i++;
|
||||
}
|
||||
var i = 2;
|
||||
for(e in menuItems) {
|
||||
text = new FlxText(0, (22 * 6) + (i * 9 * 6), 0, e, 8, false);
|
||||
confText(text);
|
||||
add(text);
|
||||
texts.push(text);
|
||||
i++;
|
||||
}
|
||||
|
||||
hand = new FlxSprite().loadGraphic(Paths.image('stages/school/ui/hand_textbox'));
|
||||
hand.scale.set(6, 6);
|
||||
hand.updateHitbox();
|
||||
add(hand);
|
||||
hand = new FlxSprite().loadGraphic(Paths.image('stages/school/ui/hand_textbox'));
|
||||
hand.scale.set(6, 6);
|
||||
hand.updateHitbox();
|
||||
add(hand);
|
||||
|
||||
FlxTween.tween(bg, {"scale.y": 6}, 0.75, {ease: FlxEase.elasticOut});
|
||||
FlxTween.tween(bg, {"scale.y": 6}, 0.75, {ease: FlxEase.elasticOut});
|
||||
|
||||
cameras = [pauseCam];
|
||||
cameras = [pauseCam];
|
||||
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/ANGRY' : 'pixel/clickText'));
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/ANGRY' : 'pixel/clickText'));
|
||||
}
|
||||
|
||||
function confText(text) {
|
||||
text.scale.set(6, 6);
|
||||
text.updateHitbox();
|
||||
text.screenCenter(FlxAxes.X);
|
||||
text.borderStyle = FlxTextBorderStyle.OUTLINE;
|
||||
if (!isThorns) text.borderColor = 0xFF953E3E;
|
||||
text.scale.set(6, 6);
|
||||
text.updateHitbox();
|
||||
text.screenCenter(FlxAxes.X);
|
||||
text.borderStyle = FlxTextBorderStyle.OUTLINE;
|
||||
if (!isThorns) text.borderColor = 0xFF953E3E;
|
||||
}
|
||||
|
||||
function destroy() {
|
||||
FlxG.cameras.remove(pauseCam);
|
||||
FlxG.cameras.remove(pauseCam);
|
||||
}
|
||||
|
||||
var canDoShit = true;
|
||||
var time:Float = 0;
|
||||
function update(elapsed) {
|
||||
pixelScript.call("postUpdate", [elapsed]);
|
||||
pixelScript.call("postUpdate", [elapsed]);
|
||||
|
||||
pauseCam.alpha = lerp(pauseCam.alpha, 1, 0.25);
|
||||
time += elapsed;
|
||||
pauseCam.alpha = lerp(pauseCam.alpha, 1, 0.25);
|
||||
time += elapsed;
|
||||
|
||||
var curText = texts[curSelected];
|
||||
hand.setPosition(curText.x - hand.width - 18 + (Math.sin(time * Math.PI * 2) * 12), curText.y + (text.height - hand.height) - 6);
|
||||
hand.x -= hand.x % 6;
|
||||
hand.y -= hand.y % 6;
|
||||
var curText = texts[curSelected];
|
||||
hand.setPosition(curText.x - hand.width - 18 + (Math.sin(time * Math.PI * 2) * 12), curText.y + (text.height - hand.height) - 6);
|
||||
hand.x -= hand.x % 6;
|
||||
hand.y -= hand.y % 6;
|
||||
|
||||
if (!canDoShit) return;
|
||||
var oldSec = curSelected;
|
||||
if (controls.DOWN_P)
|
||||
changeSelection(1, false);
|
||||
if (controls.UP_P)
|
||||
changeSelection(-1);
|
||||
if (!canDoShit) return;
|
||||
var oldSec = curSelected;
|
||||
if (controls.DOWN_P)
|
||||
changeSelection(1, false);
|
||||
if (controls.UP_P)
|
||||
changeSelection(-1);
|
||||
|
||||
if (oldSec != curSelected) {
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/type' : 'pixel/pixelText'));
|
||||
}
|
||||
if (oldSec != curSelected) {
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/type' : 'pixel/pixelText'));
|
||||
}
|
||||
|
||||
|
||||
if (controls.ACCEPT) {
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/ANGRY' : 'pixel/clickText'));
|
||||
var option = menuItems[curSelected];
|
||||
if (option == "Resume" || option == "Exit to menu") {
|
||||
canDoShit = false;
|
||||
for(t in texts) t.visible = false;
|
||||
hand.visible = songText.visible = false;
|
||||
FlxTween.tween(bg, {"scale.y": 0}, 0.125, {ease: FlxEase.cubeOut, onComplete: function() {
|
||||
selectOption();
|
||||
}});
|
||||
} else {
|
||||
selectOption();
|
||||
}
|
||||
}
|
||||
if (controls.ACCEPT) {
|
||||
FlxG.sound.play(Paths.sound(isThorns ? 'pixel/ANGRY' : 'pixel/clickText'));
|
||||
var option = menuItems[curSelected];
|
||||
if (option == "Resume" || option == "Exit to menu") {
|
||||
canDoShit = false;
|
||||
for(t in texts) t.visible = false;
|
||||
hand.visible = songText.visible = false;
|
||||
FlxTween.tween(bg, {"scale.y": 0}, 0.125, {ease: FlxEase.cubeOut, onComplete: function() {
|
||||
selectOption();
|
||||
}});
|
||||
} else {
|
||||
selectOption();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function changeSelection(change) {
|
||||
curSelected += change;
|
||||
curSelected += change;
|
||||
|
||||
if (curSelected < 0)
|
||||
curSelected = menuItems.length - 1;
|
||||
if (curSelected >= menuItems.length)
|
||||
curSelected = 0;
|
||||
if (curSelected < 0)
|
||||
curSelected = menuItems.length - 1;
|
||||
if (curSelected >= menuItems.length)
|
||||
curSelected = 0;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
var sound:Sound;
|
||||
|
||||
function create()
|
||||
sound = Paths.sound('jeffGameover/jeffGameover-' + FlxG.random.int(1, 25, !Options.naughtyness ? [1, 3, 8, 13, 17, 21] : null));
|
||||
|
||||
function beatHit(cur:Int) {
|
||||
if(cur != 0) return;
|
||||
|
||||
FlxG.sound.music.volume = 0.2;
|
||||
FlxG.sound.play(sound, 1, false, null, true, function()
|
||||
{
|
||||
if (!isEnding)
|
||||
FlxG.sound.music.fadeIn(4, 0.2, 1);
|
||||
});
|
||||
}
|
||||
@@ -1,19 +1,19 @@
|
||||
<!DOCTYPE codename-engine-splashes>
|
||||
<splashes sprite="game/splashes/default" alpha="0.6">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splashleft1" anim="note impact 1 purple" fps="24" x="0" y="0" />
|
||||
<anim name="splashleft2" anim="note impact 2 purple" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splashdown1" anim="note impact 1 blue" fps="24" x="0" y="0" />
|
||||
<anim name="splashdown2" anim="note impact 2 blue" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splashup1" anim="note impact 1 green" fps="24" x="0" y="0" />
|
||||
<anim name="splashup2" anim="note impact 2 green" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splashright1" anim="note impact 1 red" fps="24" x="0" y="0" />
|
||||
<anim name="splashright2" anim="note impact 2 red" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<splashes sprite="game/splashes/default" alpha="0.6">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splashleft1" anim="note impact 1 purple" fps="24" x="0" y="0" />
|
||||
<anim name="splashleft2" anim="note impact 2 purple" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splashdown1" anim="note impact 1 blue" fps="24" x="0" y="0" />
|
||||
<anim name="splashdown2" anim="note impact 2 blue" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splashup1" anim="note impact 1 green" fps="24" x="0" y="0" />
|
||||
<anim name="splashup2" anim="note impact 2 green" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splashright1" anim="note impact 1 red" fps="24" x="0" y="0" />
|
||||
<anim name="splashright2" anim="note impact 2 red" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
</splashes>
|
||||
@@ -1,20 +0,0 @@
|
||||
<!DOCTYPE codename-engine-splashes>
|
||||
<!--Pixel Splashes by APurples!!-->
|
||||
<splashes sprite="stages/school/ui/pixel-splashes" alpha="0.6" antialiasing="false" scale="3.5">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splashleft1" anim="splash purple 1" fps="24" x="-1" y="-2" />
|
||||
<anim name="splashleft2" anim="splash purple 2" fps="24" x="-1" y="-2" />
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splashdown1" anim="splash blue 1" fps="24" x="-1" y="-2" />
|
||||
<anim name="splashdown2" anim="splash blue 2" fps="24" x="-1" y="-2" />
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splashup1" anim="splash green 1" fps="24" x="-1" y="-2" />
|
||||
<anim name="splashup2" anim="splash green 2" fps="24" x="-1" y="-2" />
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splashright1" anim="splash red 1" fps="24" x="-1" y="-2" />
|
||||
<anim name="splashright2" anim="splash red 2" fps="24" x="-1" y="-2" />
|
||||
</strum>
|
||||
</splashes>
|
||||
@@ -1,16 +0,0 @@
|
||||
<!DOCTYPE codename-engine-splashes>
|
||||
<!--Pixel Splashes by APurples!!-->
|
||||
<splashes sprite="stages/school/ui/pixel-secret-splashes" alpha="0.6" antialiasing="false" scale="3.5">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splashleft1" anim="splash purple 1" fps="24" x="-3"/>
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splashdown1" anim="splash blue 1" fps="24" x="-3"/>
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splashup1" anim="splash green 1" fps="24" x="-3"/>
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splashright1" anim="splash red 1" fps="24" x="-3"/>
|
||||
</strum>
|
||||
</splashes>
|
||||
@@ -1,15 +1,15 @@
|
||||
<!DOCTYPE codename-engine-splashes>
|
||||
<splashes sprite="game/splashes/secret" alpha="0.6" scale="0.75">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splash purple" anim="splash purple" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splash blue" anim="splash blue" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splash green" anim="splash green" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splash red" anim="splash red" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<splashes sprite="game/splashes/secret" alpha="0.6" scale="0.75">
|
||||
<strum id="0"> <!-- LEFT -->
|
||||
<anim name="splash purple" anim="splash purple" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="1"> <!-- DOWN -->
|
||||
<anim name="splash blue" anim="splash blue" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="2"> <!-- UP -->
|
||||
<anim name="splash green" anim="splash green" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
<strum id="3"> <!-- RIGHT -->
|
||||
<anim name="splash red" anim="splash red" fps="24" x="0" y="0" />
|
||||
</strum>
|
||||
</splashes>
|
||||
@@ -1,39 +1,35 @@
|
||||
var fastCarCanDrive:Bool = true;
|
||||
|
||||
function create() {
|
||||
resetFastCar();
|
||||
resetFastCar();
|
||||
}
|
||||
function update(elapsed:Float) {
|
||||
if (!fastCarCanDrive && fastCar.x > 2000) {
|
||||
resetFastCar();
|
||||
fastCarCanDrive = true;
|
||||
}
|
||||
if (!fastCarCanDrive && fastCar.x > 2000) {
|
||||
resetFastCar();
|
||||
fastCarCanDrive = true;
|
||||
}
|
||||
|
||||
// back limo drive
|
||||
if (Options.lowMemoryMode) {
|
||||
bgLimo.frameOffset.x = Math.sin(curBeatFloat / 4) * Math.cos(curBeatFloat / 16) * 85;
|
||||
} else {
|
||||
for(e in [bgLimo, dancer1, dancer2, dancer3, dancer4, dancer5]) {
|
||||
e.frameOffset.x = Math.sin(curBeatFloat / 4) * Math.cos(curBeatFloat / 16) * 85;
|
||||
}
|
||||
}
|
||||
// back limo drive
|
||||
for(e in [bgLimo, dancer1, dancer2, dancer3, dancer4, dancer5]) {
|
||||
e.rotOffset.x = Math.sin(curBeatFloat / 4) * Math.cos(curBeatFloat / 16) * 85;
|
||||
}
|
||||
}
|
||||
function beatHit(curBeat:Int) {
|
||||
if (FlxG.random.bool(10) && fastCarCanDrive)
|
||||
fastCarDrive();
|
||||
if (FlxG.random.bool(10) && fastCarCanDrive)
|
||||
fastCarDrive();
|
||||
}
|
||||
|
||||
|
||||
function resetFastCar() {
|
||||
fastCar.x = -12600;
|
||||
fastCar.y = FlxG.random.int(140, 250);
|
||||
fastCar.velocity.x = 0;
|
||||
fastCarCanDrive = true;
|
||||
fastCar.x = -12600;
|
||||
fastCar.y = FlxG.random.int(140, 250);
|
||||
fastCar.velocity.x = 0;
|
||||
fastCarCanDrive = true;
|
||||
}
|
||||
function fastCarDrive()
|
||||
{
|
||||
FlxG.sound.play(Paths.soundRandom('carPass', 0, 1), 0.7);
|
||||
FlxG.sound.play(Paths.soundRandom('carPass', 0, 1), 0.7);
|
||||
|
||||
fastCar.velocity.x = (FlxG.random.int(170, 220) / FlxG.elapsed) * 3;
|
||||
fastCarCanDrive = false;
|
||||
fastCar.velocity.x = (FlxG.random.int(170, 220) / FlxG.elapsed) * 3;
|
||||
fastCarCanDrive = false;
|
||||
}
|
||||
@@ -1,46 +1,39 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="0.9" name="limo" folder="stages/limo/" startCamPosY="400">
|
||||
<!-- BG LIMOS !-->
|
||||
<sprite name="skyBG" x="-120" y="-50" sprite="limoSunset" scroll="0.1" zoomfactor="0"/>
|
||||
<sprite name="bgLimo" x="-200" y="480" sprite="bgLimo" scroll="0.4" zoomfactor="0.55" />
|
||||
<stage zoom="0.9" name="limo" folder="stages/limo/">
|
||||
<!-- BG LIMOS !-->
|
||||
<sprite name="skyBG" x="-120" y="-50" sprite="limoSunset" scroll="0.1" zoomfactor="0"/>
|
||||
<sprite name="bgLimo" x="-200" y="480" sprite="bgLimo" scroll="0.4" zoomfactor="0.55" />
|
||||
|
||||
<!-- ONLY FOR INSTANCES WITH LOW MEMORY MODE DISABLED -->
|
||||
<high-memory>
|
||||
<!-- DANCERS !-->
|
||||
<sprite name="dancer1" x="130" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer2" x="500" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer3" x="870" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer4" x="1240" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer5" x="1610" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<!-- DANCERS !-->
|
||||
<sprite name="dancer1" x="130" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer2" x="500" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer3" x="870" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer4" x="1240" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
<sprite name="dancer5" x="1610" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
|
||||
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
|
||||
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
|
||||
</sprite>
|
||||
|
||||
<!-- SUPER FAST CAR !-->
|
||||
<sprite name="fastCar" x="-300" y="160" sprite="fastCarLol" zoomfactor="0.75" />
|
||||
</high-memory>
|
||||
<!-- SUPER FAST CAR !-->
|
||||
<sprite name="fastCar" x="-300" y="160" sprite="fastCarLol" zoomfactor="0.75" />
|
||||
|
||||
|
||||
<!-- MORE LIMO STUFF !-->
|
||||
<girlfriend />
|
||||
<sprite name="limo" x="-120" y="550" sprite="limoDrive" />
|
||||
<boyfriend x="1030" y="-120" camxoffset="-300"/>
|
||||
|
||||
<high-memory>
|
||||
<sprite name="overlayShit" x="-500" y="480" sprite="limoOverlay" scroll="0">
|
||||
<property name="alpha" type="float" value="0.5" />
|
||||
</sprite>
|
||||
</high-memory>
|
||||
<!-- MORE LIMO STUFF !-->
|
||||
<girlfriend />
|
||||
<sprite name="limo" x="-120" y="550" sprite="limoDrive" />
|
||||
<boyfriend x="1030" y="-120" camxoffset="-300"/>
|
||||
<sprite name="overlayShit" x="-500" y="480" sprite="limoOverlay" scroll="0">
|
||||
<property name="alpha" type="float" value="0.5" />
|
||||
</sprite>
|
||||
</stage>
|
||||
@@ -1,24 +0,0 @@
|
||||
var idk:CustomShader = null;
|
||||
function create() {
|
||||
if(!Options.gameplayShaders) {
|
||||
disableScript();
|
||||
return;
|
||||
}
|
||||
|
||||
idk = new CustomShader('coloredVignette');
|
||||
idk.color = [1, 0, 0];
|
||||
camGame.addShader(idk);
|
||||
}
|
||||
|
||||
var adder:Int = 0;
|
||||
function postUpdate(elapsed:Float) { // Doing it like this so at least the red bump doesnt look too much instant
|
||||
var toAdd:Int = lerp(adder, 0, elapsed);
|
||||
idk.amount = camGame.zoom * camHUD.zoom + toAdd;
|
||||
idk.strength = (camGame.zoom - camHUD.zoom + toAdd) * 5;
|
||||
if(adder > 0) adder -= 0.0001 * camZoomingStrength;
|
||||
}
|
||||
|
||||
function beatHit() {
|
||||
if(Options.camZoomOnBeat && camZooming && FlxG.camera.zoom < maxCamZoom && curBeat % camZoomingInterval == 0)
|
||||
adder = 0.05 * camZoomingStrength;
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1.05" name="mall-evil" folder="stages/mall/" startCamPosY="400" startCamPosX="1300">
|
||||
<sprite name="bg" x="-400" y="-500" sprite="evilBG" scroll="0.2"/>
|
||||
<sprite name="evilTree" x="300" y="-300" sprite="evilTree" scroll="0.2"/>
|
||||
<sprite name="evilSnow" x="-200" y="700" sprite="evilSnow" />
|
||||
<stage zoom="1.05" name="mall-evil" folder="stages/mall/">
|
||||
<sprite name="bg" x="-400" y="-500" sprite="evilBG" scroll="0.2"/>
|
||||
<sprite name="evilTree" x="300" y="-300" sprite="evilTree" scroll="0.2"/>
|
||||
<sprite name="evilSnow" x="-200" y="700" sprite="evilSnow" />
|
||||
|
||||
<girlfriend />
|
||||
<dad y="20"/>
|
||||
<boyfriend x="1090"/>
|
||||
<girlfriend />
|
||||
<dad y="20"/>
|
||||
<boyfriend x="1090"/>
|
||||
</stage>
|
||||
@@ -1,21 +1,14 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="0.8" name="mall" folder="stages/mall/" startCamPosY="450" startCamPosX="500">
|
||||
<sprite name="bg" x="-1000" y="-500" sprite="bgWalls" scroll="0.2"/>
|
||||
<stage zoom="0.8" name="mall" folder="stages/mall/">
|
||||
<sprite name="bg" x="-1000" y="-500" sprite="bgWalls" scroll="0.2"/>
|
||||
<sprite name="upperBoppers" x="-240" y="-90" sprite="upperBop" scroll="0.2" />
|
||||
<sprite name="bgEscalator" x="-1100" y="-600" sprite="bgEscalator" scroll="0.3" scale="0.9" updateHitbox="true"/>
|
||||
<sprite name="tree" x="370" y="-250" sprite="christmasTree" scroll="0.4"/>
|
||||
<sprite name="bottomBoppers" x="-300" y="140" sprite="bottomBop" scroll="0.9"/>
|
||||
<sprite name="fgSnow" x="-600" y="700" sprite="fgSnow"/>
|
||||
<sprite name="santa" x="-840" y="150" sprite="santa"/>
|
||||
|
||||
<high-memory>
|
||||
<sprite name="upperBoppers" x="-240" y="-90" sprite="upperBop" scroll="0.2" type="onbeat" beatInterval="1"/>
|
||||
</high-memory>
|
||||
<sprite name="bgEscalator" x="-1100" y="-600" sprite="bgEscalator" scroll="0.3" scale="0.9" updateHitbox="true"/>
|
||||
<sprite name="tree" x="370" y="-250" sprite="christmasTree" scroll="0.4"/>
|
||||
<sprite name="bottomBoppers" x="-300" y="140" sprite="bottomBop" scroll="0.9" type="onbeat" beatInterval="1"/>
|
||||
<sprite name="fgSnow" x="-600" y="700" sprite="fgSnow"/>
|
||||
|
||||
<high-memory>
|
||||
<sprite name="santa" x="-840" y="150" sprite="santa" type="onbeat" beatInterval="1"/>
|
||||
</high-memory>
|
||||
|
||||
|
||||
<girlfriend />
|
||||
<dad />
|
||||
<boyfriend x="870" camyoffset="-200"/>
|
||||
<girlfriend />
|
||||
<dad />
|
||||
<boyfriend x="870" camyoffset="-200"/>
|
||||
</stage>
|
||||
@@ -5,11 +5,11 @@ import funkin.game.PlayState;
|
||||
var curColor:Int = 0;
|
||||
var trainSound:FlxSound;
|
||||
var colors = [
|
||||
0xFF31A2FD,
|
||||
0xFF31FD8C,
|
||||
0xFFFB33F5,
|
||||
0xFFFD4531,
|
||||
0xFFFBA633
|
||||
0xFF31A2FD,
|
||||
0xFF31FD8C,
|
||||
0xFFFB33F5,
|
||||
0xFFFD4531,
|
||||
0xFFFBA633
|
||||
];
|
||||
var trainMoving:Bool = false;
|
||||
var trainFrameTiming:Float = 0;
|
||||
@@ -18,85 +18,84 @@ var trainFinishing:Bool = false;
|
||||
var trainCooldown:Int = 0;
|
||||
|
||||
function create() {
|
||||
// defaultCamZoom = 0.5;
|
||||
phillyTrain.moves = true; // Def value false in funkinsprite
|
||||
light.color = colors[curColor];
|
||||
trainSound = FlxG.sound.load(Paths.sound("train_passes"));
|
||||
// defaultCamZoom = 0.5;
|
||||
light.color = colors[curColor];
|
||||
trainSound = FlxG.sound.load(Paths.sound("train_passes"));
|
||||
}
|
||||
|
||||
function beatHit(curBeat:Int) {
|
||||
if (curBeat % 4 == 0) {
|
||||
// switches color
|
||||
var newColor = FlxG.random.int(0, colors.length-2);
|
||||
if (newColor >= curColor) newColor++;
|
||||
curColor = newColor;
|
||||
light.color = colors[curColor];
|
||||
}
|
||||
if (curBeat % 4 == 0) {
|
||||
// switches color
|
||||
var newColor = FlxG.random.int(0, colors.length-2);
|
||||
if (newColor >= curColor) newColor++;
|
||||
curColor = newColor;
|
||||
light.color = colors[curColor];
|
||||
}
|
||||
|
||||
if (!trainMoving)
|
||||
trainCooldown += 1;
|
||||
if (!trainMoving)
|
||||
trainCooldown += 1;
|
||||
|
||||
if (curBeat % 8 == 4 && FlxG.random.bool(30) && !trainMoving && trainCooldown > 8 && !trainSound.playing)
|
||||
{
|
||||
trainCooldown = FlxG.random.int(-4, 0);
|
||||
trainStart();
|
||||
}
|
||||
if (curBeat % 8 == 4 && FlxG.random.bool(30) && !trainMoving && trainCooldown > 8 && !trainSound.playing)
|
||||
{
|
||||
trainCooldown = FlxG.random.int(-4, 0);
|
||||
trainStart();
|
||||
}
|
||||
}
|
||||
|
||||
function update(elapsed:Float) {
|
||||
if (Conductor.songPosition > 0)
|
||||
light.alpha = 1 - (FlxEase.cubeIn((curBeatFloat / 4) % 1) * 0.85);
|
||||
else
|
||||
light.alpha = 0;
|
||||
if (Conductor.songPosition > 0)
|
||||
light.alpha = 1 - (FlxEase.cubeIn((curBeatFloat / 4) % 1) * 0.85);
|
||||
else
|
||||
light.alpha = 0;
|
||||
|
||||
if (trainMoving) {
|
||||
updateTrainPos();
|
||||
}
|
||||
if (trainMoving) {
|
||||
updateTrainPos();
|
||||
}
|
||||
}
|
||||
|
||||
function trainStart():Void
|
||||
{
|
||||
trainMoving = true;
|
||||
if (!trainSound.playing)
|
||||
trainSound.play(true);
|
||||
trainMoving = true;
|
||||
if (!trainSound.playing)
|
||||
trainSound.play(true);
|
||||
}
|
||||
|
||||
var startedMoving:Bool = false;
|
||||
|
||||
function updateTrainPos():Void
|
||||
{
|
||||
if (trainSound.time >= 4700)
|
||||
{
|
||||
startedMoving = true;
|
||||
gf.playAnim('hairBlow');
|
||||
}
|
||||
if (trainSound.time >= 4700)
|
||||
{
|
||||
startedMoving = true;
|
||||
gf.playAnim('hairBlow');
|
||||
}
|
||||
|
||||
if (startedMoving)
|
||||
{
|
||||
phillyTrain.velocity.x = -400 * 24;
|
||||
if (phillyTrain.x < -2000 && !trainFinishing)
|
||||
{
|
||||
phillyTrain.x = -1150;
|
||||
trainCars -= 1;
|
||||
if (startedMoving)
|
||||
{
|
||||
phillyTrain.velocity.x = -400 * 24;
|
||||
if (phillyTrain.x < -2000 && !trainFinishing)
|
||||
{
|
||||
phillyTrain.x = -1150;
|
||||
trainCars -= 1;
|
||||
|
||||
if (trainCars <= 0)
|
||||
trainFinishing = true;
|
||||
}
|
||||
if (trainCars <= 0)
|
||||
trainFinishing = true;
|
||||
}
|
||||
|
||||
if (phillyTrain.x < -4000 && trainFinishing)
|
||||
trainReset();
|
||||
}
|
||||
if (phillyTrain.x < -4000 && trainFinishing)
|
||||
trainReset();
|
||||
}
|
||||
}
|
||||
|
||||
function trainReset():Void
|
||||
{
|
||||
gf.playAnim('hairFall', true);
|
||||
phillyTrain.x = FlxG.width + 200;
|
||||
trainMoving = false;
|
||||
// trainSound.stop();
|
||||
// trainSound.time = 0;
|
||||
trainCars = 8;
|
||||
trainFinishing = false;
|
||||
startedMoving = false;
|
||||
phillyTrain.velocity.x = 0;
|
||||
gf.playAnim('hairFall');
|
||||
phillyTrain.x = FlxG.width + 200;
|
||||
trainMoving = false;
|
||||
// trainSound.stop();
|
||||
// trainSound.time = 0;
|
||||
trainCars = 8;
|
||||
trainFinishing = false;
|
||||
startedMoving = false;
|
||||
phillyTrain.velocity.x = 0;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1.05" name="philly" folder="stages/philly/" startCamPosY="510" startCamPosX="950">
|
||||
<sprite name="bg" x="-100" y="0" sprite="sky" scroll="0.1" zoomfactor="0"/>
|
||||
<sprite name="city" x="-10" y="0" sprite="city" scroll="0.3" scale="0.85" updateHitbox="true" zoomfactor="0.3"/>
|
||||
<sprite name="light" x="-10" y="0" sprite="win" scroll="0.3" scale="0.85" updateHitbox="true" zoomfactor="0.3"/>
|
||||
<sprite name="streetBehind" x="-40" y="50" sprite="behindTrain" zoomfactor="1" />
|
||||
<sprite name="phillyTrain" x="2000" y="360" sprite="train" zoomfactor="1" />
|
||||
<sprite name="street" x="-40" y="50" sprite="street" zoomfactor="1" />
|
||||
<stage zoom="1.05" name="philly" folder="stages/philly/">
|
||||
<sprite name="bg" x="-100" y="0" sprite="sky" scroll="0.1" zoomfactor="0"/>
|
||||
<sprite name="city" x="-10" y="0" sprite="city" scroll="0.3" scale="0.85" updateHitbox="true" zoomfactor="0.3"/>
|
||||
<sprite name="light" x="-10" y="0" sprite="win" scroll="0.3" scale="0.85" updateHitbox="true" zoomfactor="0.3"/>
|
||||
<sprite name="streetBehind" x="-40" y="50" sprite="behindTrain" zoomfactor="1" />
|
||||
<sprite name="phillyTrain" x="2000" y="360" sprite="train" zoomfactor="1" />
|
||||
<sprite name="street" x="-40" y="50" sprite="street" zoomfactor="1" />
|
||||
</stage>
|
||||
@@ -1,9 +1,4 @@
|
||||
function create() {
|
||||
importScript("data/scripts/pixel");
|
||||
isSpooky = true;
|
||||
|
||||
// Make transition work between school types
|
||||
if(PlayState.smoothTransitionData?.stage == "school") PlayState.smoothTransitionData.stage = curStage;
|
||||
|
||||
disableScript();
|
||||
importScript("data/scripts/pixel");
|
||||
isSpooky = true;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1" name="school-evil" folder="stages/school/" startCamPosY="550" startCamPosX="600">
|
||||
<sprite name="bg" x="400" y="200" sprite="animatedEvilSchool"
|
||||
antialiasing="false" scale="6" scrollx="0.8" scrolly="0.9" type="loop"/>
|
||||
<stage zoom="0.5" name="school-evil" folder="stages/school/" >
|
||||
<sprite name="bg" x="400" y="200" sprite="animatedEvilSchool"
|
||||
antialiasing="false" scale="6" scrollx="0.8" scrolly="0.9" type="loop"/>
|
||||
</stage>
|
||||
@@ -1,10 +1,14 @@
|
||||
function create() {
|
||||
importScript("data/scripts/pixel");
|
||||
if (PlayState.SONG.meta.name.toLowerCase() == "roses") {
|
||||
bgGirls.animation.remove("danceLeft");
|
||||
bgGirls.animation.remove("danceRight");
|
||||
bgGirls.animation.addByIndices('danceLeft', 'BG fangirls dissuaded', CoolUtil.numberArray(14), "", 24, false);
|
||||
bgGirls.animation.addByIndices('danceRight', 'BG fangirls dissuaded', CoolUtil.numberArray(30, 15), "", 24, false);
|
||||
}
|
||||
bgGirls.animation.play("danceLeft", true); // horrible fix, please fix later
|
||||
importScript("data/scripts/pixel");
|
||||
if (PlayState.SONG.song == "Roses") {
|
||||
flabbergastGirls();
|
||||
}
|
||||
}
|
||||
|
||||
public function flabbergastGirls() {
|
||||
bgGirls.animation.remove("danceLeft");
|
||||
bgGirls.animation.remove("danceRight");
|
||||
bgGirls.animation.addByIndices('danceLeft', 'BG fangirls dissuaded', CoolUtil.numberArray(14), "", 24, false);
|
||||
bgGirls.animation.addByIndices('danceRight', 'BG fangirls dissuaded', CoolUtil.numberArray(30, 15), "", 24, false);
|
||||
bgGirls.animation.play("danceLeft", true);
|
||||
}
|
||||
@@ -1,30 +1,25 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1" folder="stages/school/" startCamPosY="550" startCamPosX="600">
|
||||
<sprite name="bgSky" x="-12" y="0" sprite="weebSky"
|
||||
antialiasing="false" scale="6" scroll="0.1" updateHitbox="true"/>
|
||||
<stage zoom="1" folder="stages/school/" >
|
||||
<sprite name="bgSky" x="-12" y="0" sprite="weebSky"
|
||||
antialiasing="false" scale="6" scroll="0.1" updateHitbox="true"/>
|
||||
|
||||
<sprite name="bgSchool" x="-216" y="0" sprite="weebSchool"
|
||||
antialiasing="false" scale="6" scrollx="0.6" scrolly="0.9" updateHitbox="true"/>
|
||||
<sprite name="bgSchool" x="-216" y="0" sprite="weebSchool"
|
||||
antialiasing="false" scale="6" scrollx="0.6" scrolly="0.9" updateHitbox="true"/>
|
||||
|
||||
<sprite name="bgStreet" x="-204" y="0" sprite="weebStreet"
|
||||
antialiasing="false" scale="6" scroll="0.95" updateHitbox="true"/>
|
||||
<sprite name="bgStreet" x="-204" y="0" sprite="weebStreet"
|
||||
antialiasing="false" scale="6" scroll="0.95" updateHitbox="true"/>
|
||||
|
||||
<sprite name="fgTrees" x="-30" y="130" sprite="weebTreesBack"
|
||||
antialiasing="false" scale="4.8" scroll="0.9" updateHitbox="true" type="loop"/>
|
||||
|
||||
<sprite name="fgTrees" x="-30" y="130" sprite="weebTreesBack"
|
||||
antialiasing="false" scale="4.797" scroll="0.9" updateHitbox="true" type="loop"/>
|
||||
<sprite name="bgTrees" x="-1180" y="-1600" sprite="weebTrees"
|
||||
antialiasing="false" scale="8.4" scroll="0.85" updateHitbox="true" type="loop"/>
|
||||
|
||||
<sprite name="bgTrees" x="-590" y="-800" sprite="weebTrees" antialiasing="false" scale="5.102" scroll="0.85" updateHitbox="true" type="loop">
|
||||
<!-- Frame 19 isnt used in og -->
|
||||
<anim name="trees" anim="trees" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19" fps="12" loop="true"/>
|
||||
</sprite>
|
||||
<sprite name="treeLeaves" x="-200" y="-40" sprite="petals"
|
||||
antialiasing="false" scale="6" scroll="0.85" updateHitbox="true" type="loop"/>
|
||||
|
||||
<high-memory>
|
||||
<sprite name="treeLeaves" x="-200" y="-40" sprite="petals"
|
||||
antialiasing="false" scale="6" scroll="0.85" updateHitbox="true" type="loop"/>
|
||||
</high-memory>
|
||||
|
||||
<sprite name="bgGirls" x="-100" y="190" sprite="bgFreaks" scroll="0.9" scale="6" antialiasing="false" updateHitbox="true" type="onbeat" beatInterval="1">
|
||||
<anim name="danceLeft" anim="BG girls group" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13" fps="24" loop="false"/>
|
||||
<anim name="danceRight" anim="BG girls group" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" fps="24" loop="false"/>
|
||||
</sprite>
|
||||
<sprite name="bgGirls" x="-100" y="190" sprite="bgFreaks" scroll="0.9" scale="6" antialiasing="false" updateHitbox="true">
|
||||
<anim name="danceLeft" anim="BG girls group" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13" fps="24" loop="false"/>
|
||||
<anim name="danceRight" anim="BG girls group" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" fps="24" loop="false"/>
|
||||
</sprite>
|
||||
</stage>
|
||||
@@ -1,28 +1,22 @@
|
||||
public var lightningStrike:Bool = true;
|
||||
public var lightningStrikeBeat:Int = 0;
|
||||
public var lightningOffset:Int = 8;
|
||||
public var thunderSFXamount:Int = 2;
|
||||
|
||||
function create() {
|
||||
for(i in 1...thunderSFXamount+1)
|
||||
FlxG.sound.load(Paths.sound('thunder_' + Std.string(i)));
|
||||
bg.playAnim('idle');
|
||||
}
|
||||
public function lightningStrikeShit():Void
|
||||
{
|
||||
FlxG.sound.play(Paths.soundRandom('thunder_', 1, thunderSFXamount));
|
||||
bg.playAnim('lightning');
|
||||
FlxG.sound.play(Paths.soundRandom('thunder_', 1, 2));
|
||||
bg.animation.play('lightning');
|
||||
|
||||
lightningStrikeBeat = curBeat;
|
||||
lightningOffset = FlxG.random.int(8, 24);
|
||||
lightningStrikeBeat = curBeat;
|
||||
lightningOffset = FlxG.random.int(8, 24);
|
||||
|
||||
boyfriend.playAnim('scared', true, "SING"); // SING so that they dont get indefinitely looped
|
||||
gf.playAnim('scared', true, "SING");
|
||||
boyfriend.playAnim('scared', true, "SING"); // SING so that they dont get indefinitely looped
|
||||
gf.playAnim('scared', true, "SING");
|
||||
}
|
||||
|
||||
function beatHit(curBeat) {
|
||||
if (lightningStrike && FlxG.random.bool(10) && curBeat > lightningStrikeBeat + lightningOffset)
|
||||
{
|
||||
lightningStrikeShit();
|
||||
}
|
||||
if (lightningStrike && FlxG.random.bool(10) && curBeat > lightningStrikeBeat + lightningOffset)
|
||||
{
|
||||
lightningStrikeShit();
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="1.05" name="spooky" folder="stages/spooky/" startCamPosY="400" startCamPosX="600">
|
||||
<sprite name="bg" x="-200" y="-100" sprite="halloween_bg" anim="idle" type="none" scale="1.05">
|
||||
<anim name="idle" anim="halloweem bg0" type="loop" />
|
||||
<anim name="lightning" anim="halloweem bg lightning strike" loop="false"/>
|
||||
</sprite>
|
||||
<stage zoom="1.05" name="spooky" folder="stages/spooky/">
|
||||
<sprite name="bg" x="-200" y="-100" sprite="halloween_bg" anim="idle" type="none">
|
||||
<anim name="idle" anim="halloweem bg0" type="loop" />
|
||||
<anim name="lightning" anim="halloweem bg lightning strike" loop="false"/>
|
||||
</sprite>
|
||||
</stage>
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE codename-engine-stage>
|
||||
<stage zoom="0.9" name="stage" folder="stages/default/" startCamPosY="600" startCamPosX="1000">
|
||||
<sprite name="bg" x="-600" y="-200" sprite="stageback" scroll="0.9" />
|
||||
<sprite name="stageFront" x="-600" y="600" sprite="stagefront" scroll="0.9" />
|
||||
<girlfriend />
|
||||
<dad />
|
||||
<boyfriend />
|
||||
<sprite name="stageCurtains" x="-500" y="-300" sprite="stagecurtains" scroll="1.3" />
|
||||
<stage zoom="0.9" name="stage" folder="stages/default/">
|
||||
<sprite name="bg" x="-600" y="-200" sprite="stageback" scroll="0.9" />
|
||||
<sprite name="stageFront" x="-600" y="600" sprite="stagefront" scroll="0.9" />
|
||||
<girlfriend />
|
||||
<dad />
|
||||
<boyfriend />
|
||||
<sprite name="stageCurtains" x="-500" y="-300" sprite="stagecurtains" scroll="1.3" />
|
||||
</stage>
|
||||