Skip to content

Releases: RhenaudTheLukark/CreateYourFrisk

CYF 0.6.6 - LTS 2

19 Jun 14:43
Compare
Choose a tag to compare

Here's another version with a few fixes and additions! Hope you all enjoy!

Fixes and additions

  • Fix potential issue if an absolute path is used on Linux in CYF
  • Add better error message whenever a letter is duplicated in a font
  • Fix nonexistent file opening forbidden by the path sanitizer
  • Changed Misc object documentation to reflect the usage of ..
  • Added Text.SendToTop/Bottom()
  • Fix overworld sprite paths not being saved properly
  • Fix various Default fonts which were missing special characters
  • Removed duplicate 'The Text Object' entry in the side bar of the page 'Sprites & Animations' in the docs
  • Allow State() to process non-capitalized state names
  • Text objects can now hold variables
  • Fix camera borders not showing if a mod is starting in fullscreen
  • Fix mugshots not loading correctly on Mac & Linux

Since I've had huge problems to upload CYF releases to GitHub and I can't for the life of me not stumble on the "Something went terribly wrong" error message when trying to do so, today you're getting Discord links instead for the download of this release:
Windows (32 bits) | Windows (64 bits) | Linux (32 bits) | Linux (64 bits) | Mac

Please tell me if you encounter any problem with CYF and I will make sure to look into it as soon as possible!

CYF 0.6.6 - LTS 1

12 Jun 15:24
Compare
Choose a tag to compare

With the new Long Term Support thing going on, bugfixing versions should come rather often! So as promised, here's CYF's first LTS version!

Fixes and additions

  • Removed the 1.5x cap on Player overheal
  • Fix Misc.ResizeWindow() not applied to the Game Over screen
  • Fix fonts not loading on Mac and Linux
  • Removed Cropped Fullscreen button
  • Fixed cropped screen on startup if CYF was closed in fullscreen
  • Fixed CYF going windowed if it was closed in fullscreen
  • Broadened audio file & font system to allow fetching resources outside of the current mod
  • Fix text objects not wrapping automatically if [instant] is used as one of their first commands
  • Added LTSversion variable

Please tell me if you encounter any problem with CYF and I will make sure to look into it as soon as possible!

The renewal

06 Jun 21:28
Compare
Choose a tag to compare

...it's been a while, huh. The last CYF version was released exactly 23 months ago, almost two years!
I'm sure at this point many thought there wouldn't be a new version of CYF, but here we are!

This version's goal is to add elements on top of CYF 0.6.5, making mods from that version fully compatible with mods made in it.
So, if you see any difference from this new version that may break a past mod, please feel free to tell me so!

On top of this, you can consider 0.6.6 a LTS version of Create Your Frisk! LTS means "Long Time Support", meaning updates for 0.6.6 will come in to fix bugs I may have left in the version, even if new versions will be released!

IMPORTANT NOTE: If you're upgrading from any past version of CYF, please copy the new Default AND Mods folders over your current ones.

Scroll to the bottom for downloads.

Major Changes:

  • Enemies can now be manipulated in battle! You can add and remove them in the middle of battle!
  • CYF's user interface is now more flexible than ever! Say hi to the new UI object, that allows you to manipulate CYF's UI to your heart's contents.
  • I've heard File object manipulation was a little barebones, so I broadened its usefulness: you can now manipulate any file you want in CYF's Mods folder!
  • Dusting sprites always looked a little weird, as you were unable to keep the rotation of a sprite when it's dusted, same for their scale and color, and finally the dusting effect would always appear on top of everything! Well, now it takes care of all that!
  • Arena manipulation outside of waves is now a thing!
  • Some projects tend to go above and beyond CYF's capabilities, and sometimes CYF looks a little cramped, we can say. So now, you can change CYF's window's size! And it works in fullscreen too!
  • Always wanted to add new states to CYF's battles? No? Well too bad, now you can lol

There has been a huge amount of fixes as well, other there has been too many to properly list them, really, so I won't be listing them this time! Sorry about that!

Throwing off some shade

05 Jul 21:40
Compare
Choose a tag to compare

So I heard people around these parts have been waiting to use shaders and stuff in CYF.
It's a thing many people asked for for a very long time now, but it's something we can't really add easily in a Unity project...
...nah, just joking. Give a huge thanks to @TheEternalShine and @WD200019 for their hard work!

IMPORTANT NOTE: If you're upgrading from v0.6.4, please copy the new Default AND Mods folders over your current ones.

Scroll to the bottom for downloads.

Major Changes:

Shaders
  • The big new feature of this version is shaders! You can use shaders created in Unity ShaderLab and apply them to any sprite object in your mod, even the entire screen itself! Full details and explanation are in the documentation. (thanks go to @TheEternalShine on GitHub/Discord for this feature!)
The Discord Object
  • Discord now has rich presence integration with CYF! This can be toggled in CYF's Options menu. It will display various things like what mod and encounter you are playing, how long you have been playing, as well as messages for in the Overworld. And the status properties can be modified with Lua! (thanks go to CMD_God#0490 on Discord for this feature!)
Engine
  • All warning messages that you'd see in the debugger are now hidden by default in retrocompatibility mode, as they were in Unitale
Battle Scene
  • Updated the calculation for if the player can successfully flee from battle. It now follows Undertale - 50% chance to flee on turn 1, + 10% for every turn spent in battle. This was verified accurate by decompiling Undertale's code
Misc. Functions
  • Added the new function EnableDebugger, which can be used to forcefully toggle the debugger's functionality, and force-hide it!
The Player Object
  • Added a fourth argument to Player.Hurt, which can be used to disable sound created by the function. Useful for, say, starting the player's invincibility frames silently
The Audio and NewAudio objects
  • Reverted the changes made to several audio functions in CYF v0.6.4, because new users did not understand how to use it at all. They will display an error screen if an audio file was not loaded successfully. This includes:

    • Audio.LoadFile

    • Audio.PlaySound

    • NewAudio.PlayMusic

    • NewAudio.PlaySound

    • NewAudio.PlayVoice

If you still wish to check if the file was loaded successfully, use the Lua function pcall.

The Text Object
  • Added Text.SetAnchor (NOT Pivot) for simpler use with parenting

  • Added Text.GetLetters(), which generates a table full of sprite objects you can use to manipulate a text object's individual letters!

  • Text objects now call the new Game Event OnTextAdvance when advancing, if possible

Game Events
  • The Game Event BeforeDamageValues now can have an argument which represents the amount of damage the enemy is about to take, but before the damage is applied, unlike in HandleAttack

  • Added the Game Event OnTextAdvance, which is run whenever a text object advances its text, in whatever script it was created in

Sprites & Layers
  • CreateLayer now returns a boolean representing whether the layer was created successfully, instead of erroring
The Misc Object
  • Misc.WindowWidth and Misc.WindowHeight are no longer Windows-only! They can be used to calculate the amount of pixels that are shown inside CYF, including in wide fullscreen, as well as the level of scaling applied to CYF when being drawn to the window.

  • The byte editing mode added in CYF v0.6.4 has been replaced with the most direct solution possible. File.encoding has been removed, as well as the "b" file opening mode. In its place are the new functions File.ReadBytes() and File.WriteBytes()!

The Overworld
  • Added Map.GetName() to the Overworld, used for getting the name of the active map

  • Added Map.GetSaveName(mapName) to the Overworld, used for retrieving the save point text for a given map


Bug Fixes:

Engine
  • Fixed engine screen resolution being set to 1x1px fullscreen on first launch on Linux (#66)

  • Properly show an error screen for all XML errors while loading fonts. Up to now, if such an error were encountered, the engine would try to continue battle but with some assets mysteriously not loaded.

  • Fixed the EncounterStarting function still being called, even if an error occured in a monster script and the battle should have ended

Battle scene
  • (tried to) Fix "FIGHT"/"ACT"/"ITEM"/"MERCY" buttons blurring on systems with older graphics cards

  • Fix object buildup when enemies die, or when calling sprite.Dust

  • Fixed the chance for successfully fleeing a battle actually being 33% instead of 50%

  • Fixed bug: creating a projectile with the sprite name "Text" (case sensitive) would cause it to parent to the Debugger, and hide and show with it

  • Fixed dust particles (from sprite.Dust and killing enemies) staying on screen for 1 frame on battle end

  • Fixed the particles from sparing monsters not unloading

Monsters
  • If a monster's font variable points to an invalid font, the default monster font will now be used instead of erroring
The Player
  • Fixed the player being unable to level up naturally to LV 20 at a battle's end, even if they reached 99999 XP

  • You are now finally able to change the player's stats before EncounterStarting with no issues

Camera Movement
  • Fixed the player being offset based on the camera's position whenever a game over screen starts (since CYF v0.6.2)

  • Fixed Misc.StopShake() having no effect (since CYF v0.6.4)

  • Fixed the hitbox debugger displaying the player's hitbox in the wrong location if the camera is moved

Text Commands
  • Fixed the [health:x,y] text command not updating the health bar when used in battle

  • Fix no error screen showing, leading to engine freezes and invisible monster text bubbles, when trying to load an invalid font in some cases

  • Fixed the [lettereffect] text command persisting after a line of text in the Overworld and in battle. It now resets to "none" after every line of text.

  • Fixed [lettereffect] not applying to letters that get skipped over by the player, with the [instant] and [instant:allowcommand] commands, and text.SkipLine()

  • Fixed [lettereffect]'s version of "twitch" taking an absurd 5 seconds (at minimum) for each letter to start twitching, per letter

  • Fixed [name] disappearing entirely instead of displaying the player's name as intended

Text Objects
  • Fixed engine error when calling Text.SkipLine() if script did not contain playerskipdocommand = true (since CYF v0.6.4)

  • Fixed engine error if using Text.GetTextWidth() while the text object is given characters not supported by the font file. Also applies to the automatic line break system in battles and in the Overworld (since CYF v0.6.4)

  • Fixed 0.6.4's system of moving encountertext up 9 pixels continuing to apply in the states ENEMYSELECT, ITEMMENU and MERCYMENU (since CYF v0.6.4)

  • Fixed strange behavior involving Text.Remove() and a resulting engine error

  • Fixed Text.layer throwing an engine error most of the time when read

The Inventory Object
  • The Bisicle now properly gets replaced by a Unisicle on use (thanks go to @heartlessmushroom on Github/Discord for this fix!)

  • Fixed being able to exceed 8 items in the inventory if you actually give it 10 or more items, as opposed to just 9

Sprite Masking
  • Fixed a bug where removing bullets could cause future bullets to be missing their mask components, and error when attempting to use bullet.sprite.Mask (since CYF v0.6.4)

  • Fixed an error screen when trying to use Player.sprite.Mask (since CYF v0.6.4)

The Overworld
  • Fixed a 1-frame error that happens when an event stops moving during the same frame as the map changing (since CYF v0.6.4)

  • Fixed sprite.animationpaused, sprite.currentframe, sprite.currenttime, sprite.totaltime, and sprite.animationspeed being unusable on Overworld event sprites (since CYF v0.6.4)

  • Fixed the player's saved play time carrying over to a new game when the player chooses "Reset" on the continue screen (since CYF v0.6.4)

  • Fixed the Overworld text box being potentially covered up by Screen.SetTone and similar functions, when selecting "Use" on an item in the inventory

  • Fixed strange and buggy collision on the big snowy map in which the player could get stuck (demo: https://i.gyazo.com/e15c89fa9f077b2798fa9e981e870335.mp4)

  • Fixed a bug causing the Overworld's item box UI to display all of its sprites and text only within the 640x480 area at the bottom left corner of any map that has camera scrolling.

  • Fixed animated mugshots remaining active in futu...

Read more

Behind The Mask

25 Dec 03:20
Compare
Choose a tag to compare

Hey, it's Christmas and I think y'all deserve a gift, so here it is!

You were waiting for masks and now they're IN! Have fun remaking your waves with them now lol

IMPORTANT NOTE: If you're upgrading from v0.6.3, please copy the new Default AND Mods folders over your current ones.

Also, text objects including the ones used by enemies when they speak may behave differently, so what used to fit on v0.6.3 may not in v0.6.4 because we fixed them a lot.

Scroll to the bottom for downloads.

Major Changes:

The Sprite Object
  • Added a basic masking system through sprite.Mask, which forcefully masks or cookie-cuts a sprite's children based on one of 5 different modes
  • Added* a third argument to CreateSprite for the purposes of choosing a sorted position in the given sprite layer
The Player Object
  • Added* the Game Event BeforeDeath(), which executes just as the Player is being killed, and allows you to execute code on the Player's death and even prevent the Game Over sequence from starting
  • Player.SetAttackAnim now can take a third argument, in the same manner as sprite.SetAnimation (contributed by @deonix37)
  • Made Player.maxhp settable for ease of access compared to using Player.SetMaxHPShift
The Input Object
  • Added Input.MouseScroll, which allows you to track the scroll wheel movement supplied by the user's mouse or trackpad
The Text Object
  • Text.xscale/Text.yscale/Text.Scale now functions the same at ANY time, compared to v0.6.3!
  • Text.SkipLine() now takes playerskipdocommand into account
File Manipulation
  • Added Misc.DirExists, Misc.CreateDir, Misc.MoveDir and Misc.RemoveDir to the Misc object for folder manipulation
  • Added function File.Move to the File object (contributed by @deonix37)
  • Added File.Copy for copying files!
  • Added File.filePath to get the full path to the opened file on the user's computer!
  • The File Object can now have the "b" attribute in its mode, which fetches a file's bytes rather than characters, and lets you read from and write to files with bytes and specific encodings
    • Added the property file.encoding, which lets you choose the file encoding method used to read from and write to files in byte mode
The Misc. Object
  • Added Misc.MonitorWidth and Misc.MonitorHeight, which always return the size of the user's monitor regardless of settings or fullscreen status
  • Added Misc.SetWideFullscreen, which removes the left and right black pillars when in fullscreen if the player's aspect ratio is wider than 4:3. Can only be used in battles, and resolution resets on battle end.
The Audio and NewAudio objects
  • Changed several Audio-related functions: they no longer display a warning if an audio file could not be loaded; instead, they return a boolean representing if the file was successfully loaded or not (meaning you can now test for if given audio files exist!)
    • Audio.LoadFile
    • Audio.PlaySound
    • NewAudio.PlayMusic
    • NewAudio.PlaySound
    • NewAudio.PlayVoice
  • Added a second argument to NewAudio.GetAudioName which lets you get the actual name you'd enter into PlaySound/LoadFile and such, without the prefix
The Script Object
  • Added* Script.scriptname to the script object, for getting the name of a script object's source lua file
Misc. Functions
  • SetAction now has an extra use while in the state ACTIONSELECT: manually moving the Player onto the 4 different buttons
Monster Scripts
  • Added a special variable dialogueprefix to monster scripts, which can be used to prefix text to the beginning of all monster dialogue. Especially useful for text effects (contributed by @deonix37)
  • Added defensemisstext and noattackmisstext, which when set, will change the damage text displayed when dealing no damage to the enemy and not pressing Z to attack the enemy, respectively (contributed by @Shiftenas)
Text Commands
  • Added* [texteffect:x,intensity], which allows for multiple different text effects in the same line of text
  • Added* [mugshot:x] for use in the Overworld
  • You may now use [charspacing:default] to reset a text manager's character spacing to its original value
The Engine
  • In the Lua folder, you now only require an "Encounters" folder to load your mod
  • Error messages are now automatically formatted to be more friendly to new users, pointing out which numbers are line numbers and which indicate characters on a line
  • If your encounter text or battle dialog would go to 4 lines or longer, then the text will now move slightly upwards to compensate
  • The disclaimer screen will from now on always say the current version of CYF
The Overworld (long)
  • Cleaned up and organized the Overworld. It's now in its best state ever since CYF's creation!
  • You no longer have to restart CYF completely when you get an error in the overworld! Pressing Escape will take you back to the initial disclaimer screen.
  • Changed the way you access a certain secret so you no longer have to edit code to reach it
  • Added the utility functions Event.Exists, Event.GetSpeed, Event.isMoving and Event.isRotating
  • Added General.EndDialog, which can be used from parallel process event functions to forcefully close the dialog box at any time
  • Added Player.ResetMaxHP() which resets the player's max hp to what it would be based on their LV
  • You can use a second argument in General.EnterShop() to skip the fading screen transition
  • The second argument for General.SetBattle has been changed to a string. Use it to make the battle start animation play out normally, play out fast like Undyne's sequence in Undertale, or enter the battle instantly with no transition!
  • You can use an argument* in General.Save() to instantly save the game without the player's knowledge
  • Added support for playerskipdocommand in both Event scripts and shop scripts
  • Made CreateSprite, CreateText and CreateLayer all usable in the Overworld, exactly the same as in battles
  • Misc.ResetCamera() resets the camera to the player's position in the Overworld instead of moving the camera to (0, 0)
  • The game now keeps track of your play time in the overworld instead of always saying 0:00
  • Retrocompatibility mode now gets forcefully disabled whenever you enter the Overworld, to keep things compatible
  • Added a more descriptive and helpful save file tester for CYF
    • If you have an incompatible Overworld save, you can now press "R" on the error screen to remove the save file without needing to remove it manually
Overworld Shops
  • You can now set items to be marked as "SOLD OUT" after buying - there's an example of this in Examples 2/Lua/Shops/Dummy.lua.
  • You can now mark items as unsellable in the engine's internal item database by setting their sell price to 0.
  • Changed the way FailSell works, because it now has 2 error cases, not just one.
  • Made shops play the proper sound effects that play in Undertale for buying, selling, and failing to sell items.
The Documentation
  • Added a new feature indicator that will appear when something has changed since the last version of CYF
  • Removed the "Create Your Frisk's new features" section and moved the items inside of it to more fitting sections
  • Replaced the "Wave scripts" page with "The Arena Object", and moved its singular function and variable to "Misc. Functions" and "Special Variables" where they belong

*(These features were already in the engine, but undocumented)


Removed Stinkies (bug fixes and minor improvements):

Engine
  • Fix missing Lua folders causing the Error scene to be disabled completely
  • Fixed a bug where entering fullscreen with a non-widescreen resolution (such as a square or portrait resolution) would incorrectly cut off the left and right sides of the screen
  • All textures now have mipmapping disabled. Up to now, sprites scaled down certain amounts would start to display with much less detail because of this
  • Fixed the famous "fullscreen bug", where upon entering blurless fullscreen, the player was able to see past the intended 640x480 area if they entered fullscreen at the exact same time as loading a mod. This behavior got moved to the new function Misc.SetWideFullscreen
  • Fixed the FPS counter becoming desynced from the debugger so at least one of the two would always be visible in some cases
Audio and Sounds
  • Fixed a bug causing a + character anywhere in the full path to a mod's Audio or Sound files preventing said files from loading
  • Fixed a bug where loading a song using NewAudio.PlayMusic with loop as false would force the song to not loop whenever played with Audio.LoadFile
Special Variables
  • Fixed a bug where the variable waves will be set to an empty table on encounter start and after a wave ends, and Wave is nil at encounter start. The intended behavior is that the variable Wave should be set to an empty table in these events, rather than waves.
...
Read more

You thought it was a regular CYF update...But it was me, IO!

16 May 00:55
Compare
Choose a tag to compare

OwO What's this? A new CYF release? And it adds file manipulation?! Oh boy oh boy!

Yeah, basically we decided to trust the users a bit more and added a way for modders to manipulate files, as long as they are contained within your mod! Aren't we generous? :D

And that's not all we added! This release comes with a couple of changes that'll make everyone's life easier (or make some more stuff possible!), including text scaling, modifiable player stats or even...erm...I guess that's it for the VERY big changes!

As usual, we'll give you the full changelog since CYF v0.6.2.2 so you can see how much time and love we poured into this new version of Create Your Frisk! Cheers!

IMPORTANT NOTE: If you're upgrading from v0.6.2.2, please copy the new Default folder over your current one.

Scroll to the bottom for downloads.


Major Changes:

  • The Misc. Object
    • Added Misc.OSType to tell which OS the user is on
    • Added Misc.OpenFile, which creates a new instance of The File Object (see below)
      • Added Misc.FileExists to check if a file exists before reading from it
      • Added Misc.ListDir which gives you the names of all files or folders in a given path
  • The File Object
    • Added the File object, which allows creating, reading from and writing to files!
    • Limited to ONLY your Mod folder
    • Can be found in "The Misc. Object" in the documentation
  • Battles
    • The hitbox debugger now only activates with "H" if the regular Debugger is already open (F9)
    • Added BattleDialogue as a shortcut to BattleDialog, so new users don't have to remember to use the "typo"
  • The Overworld
    • Added support for the Item Box menu from Undertale (see "Overworld - The Inventory Object")
      • Added this as an example event in the Overworld test map
    • Added Sprite Objects to the Overworld
    • Added Text Objects to the Overworld
  • The Player Object
    • Player.atk and Player.def can now be modified
    • Player.ResetStats has been added, which resets the player's Max HP, ATK and/or DEF to their original values
    • Player.SetMaxHPShift now takes an optional argument to prevent any sound from playing
  • The Sprite Object
    • Added sprite.xpivot and sprite.ypivot
  • Text Objects
    • Added Text.Scale, xscale and yscale!
    • Added 3 shortcut functions:
      • Text.SetTail --> Text.SetSpeechThingPositionAndSide
      • Text.SetWaitTime --> Text.SetAutoWaitTimeBetweenTexts
      • Text.Remove --> Text.DestroyText (we know you guys have been waiting for this one :P)
  • Enemy Scripts
    • Added isactive to monster scripts, which tells you if a monster is active
    • Removed the third argument in Move and MoveTo, as it was actually a leftover argument that did nothing

Bug Fixes:

  • Battles
    • Fixed a memory leak related to waves. You should no longer have increased memory usage as more and more waves are played!
    • The debugger and bullet hitbox displays are now properly "attached" to the camera, and will always stay in the same place on-screen, even during screen shakes and when moving the camera manually
    • Added error messages for many operations that would normally give you a big scary "send this code to the developers" screen
    • Fixed BattleDialog, encountertext, deathtext and Text Objects playing the text sound for the space character " "
  • The Overworld
    • Fixed a bug where an encounter entered from the Overworld would always ignore unescape
  • Enemies
    • Fixed a totally-blank error message that showed when a monster script failed to load a sprite
    • Fixed enemy speech bubbles having incorrect sizes in their XML files, which broke automatic line breaks.
      You can thank @CMD_God#0490 in the Discord server for this!
    • Fixed BindToArena doing nothing on encounter start
  • The Bullet Object
    • Fixed being unable to call bullet.sprite.Dust
    • Fixed a bug where calling bullet.sprite.SetAnimation on a bullet might make it incorrectly scaled in future waves
    • Calling bullet.sprite.Remove will now call bullet.Remove instead of erroring
    • Bullet hitboxes now account for bullet.sprite.rotation and bullet.sprite.SetPivot properly, for both pixel-perfect and non-pixel-perfect bullets
    • Fixed a pixel-perfect collision bug causing ppcollision hitboxes to be displaced on the first frame the bullet exists
    • Pixel-perfect collision detection no longer lags 1 frame behind where the bullet currently is
  • The Audio Object
    • Fixed the volume argument for Audio.PlaySound always being ignored
  • The Player Object
    • Fixed a bug where the player's hitbox would stay at the bottom-left corner of their image, when using an image bigger than 16x16 pixels
    • Fixed Player.SetMaxHPShift's third argument setting the player's max HP to weird values when Player.lv was > 1
  • The Inventory Object
    • Fixed a bug where calling Inventory.AddItem, rather than Inventory.SetInventory, would have the added items carry over to other mods
    • Fixed Inventory.AddItem giving an incorrect error message if you haven't called Inventory.AddCustomItems first
  • The Text Object
    • Fixed a major bug where [instant:stopall] and playerskipdocommand were completely ignored by text objects
    • Fixed a rare bug where the auto-line breaking feature of text objects would start to chop off the last few characters of text
  • The Documentation
    • Fixed some enormous misinformation about the pixel-perfect collision system, and re-wrote it to be understandable by everyone
  • Moonsharp
    • Made dofile give more precise errors

Downloads:

Count Me In!

11 Jan 21:12
Compare
Choose a tag to compare

Happy 2019 everyone!

Today we're bringing you a late Christmas gift with a ton of bug fixes and some new features! Most of this release's work has been done by @WD200019, so please don't forget to boop his nose to thank him for his devotion to the project!

Now comes the usual very long list of new features and bugfixes! Sorry, we weren't able to fetch the list of bugs this time, but we'll try again on the next release!

Bug Fixes

  • Engine:

    • Fixed fullscreen for Mac!
    • Fixed the Mods folder not working properly for Mac
  • Battle / Mods:

    • Fixed the hitbox debugger in fullscreen
    • Fixed SetButtonLayer not actually setting the layer of the buttons (lol)
    • Fixed not being able to change the player's properties before EncounterStarting
    • Moving Player.sprite will now update the Player's hitbox
    • Fixed an oddly specific error (from calling State("ITEMMENU") from a state in which the default text manager was inactive, like "DEFENDING" or "NONE")
  • Text Commands:

    • Fixed a bug where having a "[" without a matching "]" would crash CYF
    • [w:#] no longer ignores [instant]
    • Fixed a bug where setting playerskipdocommmand to true would completely disable text skipping
    • Fixed an oversight involving strings such as "Hello [func:DEBUG,hi][noskip]" executing "[noskip]" instantly
  • Text Objects:

    • Text.allLinesComplete no longer throws an error if the text object has been destroyed
  • The Input Object:

    • Fixed Input.MousePosX and Input.MousePosY being able to go past 640x480 in fullscreen
  • Bullets:

    • Fixed projectile layers being almost completely broken (returning the wrong name for the default layer, "messing up" the names of projectile layers, not letting you move a bullet back to the default layer)
    • Fixed the player being able to call bullet.sprite.Remove() or bullet.sprite.Dust(..., true)
    • Some optimizations to bullet hitboxes and calculations
  • The Inventory Object:

    • Fixed calling Inventory.AddCustomItems twice removing all items added the first time
    • Fixed the error message for calling Inventory.SetInventory without calling Inventory.AddCustomItems first: it described the wrong problem
  • Game Over screen:

    • Fixed the text in the Game Over screen being positioned incorrectly
    • Fixed a bug where using [func:x] in the Game Over screen would crash CYF
  • The Overworld:

    • Fixed some overworld functions crashing on call if used when entering a new map
    • Fixed General.GameOver crashing CYF instantly
    • Fixed General.GameOver causing the player to mysteriously vanish
    • Fixed inconsistencies between the Overworld's playing music track and the game over track
    • Fixed a bug where pressing C to open the menu just before a map fades in will push you back to the previous map

Changes

  • Engine:

    • Added a "window scale" option for users with large monitors
    • Playing in Retrocompatibility mode will now enable the DOGTEST items for compatibility with Unitale mods
    • The Player's hp now acts like an integer in retromode, so mods like Alphys NEO don't set the player's HP to numbers like 16.00035
    • Trying to move removed bullets in retromode no longer throws an error, as it "worked" in Unitale
  • Mod select screen:

    • You no longer have to restart CYF to update a mod's preview screen
    • The mod select screen now wraps going left and right
    • Rewrote some text in the options menu
  • Battles:

    • Fleeing now has a 50% chance to fail, as in Undertale
    • Added a new variable, fleesuccess, which allows you to force the player's attempts to flee to fail or succeed
  • Arena:

    • Added Arena.Hide() and Arena.Show(), which control the Arena's visibility, without actually removing it or its boundaries
  • Text Commands:

    • [speed:#] now works as intended, instead of typing N characters every 4 frames. See the documentation for details
    • Made [instant] able to be stopped, at which point the text will continue typing
    • Made [instant:allowcommand] work exactly the same as [instant], but without ignoring commands
      (this is what the Docs have always said this should do, but it never has done this)
    • Made [instant:stop] cancel [instant] and [instant:allowcommand] and resume typing
    • Made [instant:stopall] cancel [instant], [instant:allowcommand] and Player skips, and resume typing
  • Text Objects:

    • The first argument of Text.CreateText can now be a single string
    • Removed Text.SetPivot, as it was found to not work
  • The Overworld:

    • The UI will now automatically re-position itself to the top of the screen to avoid covering up the player (as it does in Undertale)
    • Added an optional argument to General.SetDialog and General.SetChoice, which lets you choose which side of the screen to have the text box on
  • Documentation:

    • Fixed some misinformation about Player.Hurt, Audio.PlaySound, script.Call, the Game Events and Special Variables pages, and some of the Overworld pages
  • Moonsharp (ADVANCED USERS ONLY):

    • Added debug.getinfo (not 100% perfect, but it didn't exist before now)

That's it for now! See you in a few months! (lol)

20/20 Vision Edition

20 Nov 18:11
Compare
Choose a tag to compare

And another one! CYF is on fire recently with a lot of new versions!

Thanks to @WD200019 and @Windblade-GR01, we were able to stop CYF's bluriness when it's used on fullscreen! We continued adding more content to CYF to make it even easier to use for modders and players following the "Quality of Life" vibe of the last update, alongside some notable fixes.

But for now, drumroll, here's the new stuff:

Changes:

  • Engine:
    • Added an option named "Blurless fullscreen"! It prevents CYF from displaying blurred sprites in fullscreen! (Done by @Windblade-GR01)
    • You can now use both Alt+Enter and F4 for fullscreen!
  • Mod Select screen:
    • Added an Options sub-menu to replace the 4 buttons on the bottom of the mod select screen
    • All option preferences are now AlMighty Globals!
  • Player:
    • Player.Hurt(0, 0) can now stop the player's invincibility frames!
  • Sprite Objects:
    • Sprite.SetAnimation now takes an optional third argument, that will let you avoid copying and pasting the same folder path for every sprite
    • Sprite.currenttime and Sprite.totaltime have been added, and they function the same as NewAudio.GetPlayTime/NewAudio.SetPlayTime and NewAudio.GetTotalTime
  • Mods:
    • arenasize can now be used to set the size of the arena during ENEMYDIALOGUE
    • NONE has become a state again. Now, to pause the engine, it's State("PAUSE")!

Fixes:

  • Engine:
    • Fixed "Mods folder not found" for Mac!
  • Text Objects:
    • Fixed text object positions for good! No whammies this time!
  • Sprite Objects:
    • Fixed Sprite.currentframe choosing the wrong frame index when being set
    • Fixed using Sprite.animcomplete on an active sprite with the "ONESHOTEMPTY" loop mode causing the animation to advance twice in a frame
  • Waves:
    • Fixed not being able to move the Player on the first frame of a wave
  • Overworld:
    • Fixed a major bug related to maps not being loaded properly

The Quality of Life Update

13 Nov 20:23
159948f
Compare
Choose a tag to compare

Who're you gonna QoL? CYF!

That's right, thanks to @WD200019 and only a tiny bit to me, CYF is now cleaner than ever, with a brand new mod selection UI, and a TON of Quality of Life changes! Because WD actually cares about making things easier while I don't! :D

MAIN CHANGES AND FEATURES

  • Important changes:

    • EXTREME performance increase!! CYF will no longer eat up all your memory when you play mods, and can run as smoothly as Unitale 0.2.1a!!! No more restarting CYF when it lags too much!
    • We've upgraded to Unity 2018.2.13f1, and with it comes better support for Mac and Linux!!
    • We have re-worked the main menu screens! The Mod Select screen now looks a lot nicer, it shows customizeable preview images of mods, it supports browsing with the keyboard, you can't accidentally wipe Real or AlMighty globals anymore, it remembers your most recently picked Mods and encounters...it's just so much nicer to work with!
    • Full-screen now works perfectly - it doesn't kick you out randomly anymore, F4 works for entering and exiting it, and on Windows, the game window no longer jumps around when you exit fullscreen!
    • Cleaned up the encounters included with the engine. Please copy the new Mods folder over your own if you're transferring mods from an older version, to replace the old engine-included mods. Then, you can proceed to delete the "Title" and "OverWorld Test" (not "@overworld Test") mods!
    • The documentation should now no longer have missing information or weird wording, and it now lists the Lua types for every variable and function!
  • New features:

    • Animated sprites now support skipping forward or backward, speeding up or down, and pausing and resuming with sprite.currentframe, sprite.animationspeed and sprite.animationpaused
    • New text command [alpha:xx] supports transparent text, and text objects can now be moved above or below each other with text.MoveAbove and text.MoveBelow
    • The Inventory object now supports Inventory.AddItem, Inventory.RemoveItem and Inventory.GetType, allowing for very easy adding, removing, and even swapping of items
    • The Misc object now supports Misc.cameraX and cameraY, Misc.MoveCamera and MoveCameraTo and Misc.ResetCamera, which let you move the game camera outside of its normal 640x480 restraints!

MAJOR FIXES AND IMPROVEMENTS

  • Engine:

    • Fixed enormous lag caused by old Mod scripts never being unloaded.
    • Better support for Mac and Linux, including importing the Arial font, and upgrading to a better version of Unity.
    • Fixed F4 not exiting fullscreen mode, and fixed fullscreen mode exiting upon changing scenes.
    • Fixed game window jumping to the top-left corner of the monitor when exiting fullscreen. (Unfortunately, this fix is Windows-only, as this is a workaround for a Unity bug)
  • Overworld:

    • Added support for slower framerates in the overworld. You should now move at the same speed no matter what! Also, the Player's walk animation and speed are now closer to Undertale's, so it won't feel really slow anymore.
    • Fixed a bug where dying in an encounter entered from the Overworld would crash your game with an error.
  • Bullets:

    • The pixel-perfect collision system has been MAJORLY optimized. It should now cause much less slowdown than it ever has before!

MINOR FIXES AND IMPROVEMENTS

  • Sprites:

    • Fixed a bug where using the ONESHOTEMPTY sprite animation mode created a 1x1 white pixel instead of an empty sprite, when an animation was done.
  • Text and Text Objects:

    • Fixed a bug where the second line of text and beyond would sometimes be positioned strangely. Text positioning is now 100% consistent!
    • Text objects should now properly allow using SetFont, color/color32, alpha/alpha32, SetEffect and SetVoice on the same frame the object is created.
    • Fixed a bug where [noskip] would not count on the very first frame a line of text was loaded, meaning that button mashing could skip text and potentially skip important text commands.
    • Fixed [next] and [finished] not working in text objects.
    • Fixed Text.DestroyText not actually destroying text objects, instead leaving them lingering around infinitely.
  • The Misc Object:

    • Fixed the engine choosing the wrong window to act as the game window. You no longer have to restart your computer to fix this, only CYF!!
    • Misc.FullScreen is no longer read-only!
  • Lua Encounters:

    • Using State("NONE") now fully pauses the engine. Useful if you want to add a pause button, or just totally disable certain parts of the engine! It even works during waves!
    • For those who like to toy with the engine: encountertext can now be set without going through DEFENDING! Just use State("ACTIONSELECT").
    • Replaced State's often-incorrect "The state X isn't a valid state" error message with a better, more descriptive one.
    • Fixed and cleaned the default encounters included with the engine, for good!