Skip to content

v0.9.0

Latest
Compare
Choose a tag to compare
@SylviBlossom SylviBlossom released this 22 Dec 00:06
· 19 commits to main since this release

A very big update to Kristal, over a year since the previous release. Thanks to all our contributors for continuing to maintain the project. Merry Christmas!

Changelog

  • Update to LÖVE 11.5
  • LTS Parity
    • Add hours to file select menu and save menus
    • Remove single pixel from susie hurt sprite (!!!!!!)
  • Recruit system
  • Border registry in scripts/borders for dynamic borders
  • Shader asset registry in assets/shaders for better organization
  • Legend cutscenes
    • Registered in scripts/legends
    • Activated with Game:fadeIntoLegend or Game:startLegend
  • New UI component system
  • Dark Inventory is no longer attached to the Ball of Junk
  • Add Chapter 1 Game Over screen
  • Add per-battle party stat buffs
  • Discord Rich Presence support
  • Add support for BMFont fonts
  • Add dependencies and optionalDependencies settings to libraries
  • Main Menu restructuring
    • Rename Menu to MainMenu
    • Extract all menu states to standalone classes
    • Move Menu:printShadow to Draw.printShadow
  • Dynamic Dark Transition 🎉
  • Increase Noelle HP cap to 999 (theoretical Deltarune limit) from 166 (achievable Deltarune limit)
  • Add alternate animations/sprites to Noelle actor triggered by setting the Noelle party member's weird flag
  • Say hi to our new example mod shopkeeper Amelia :3 (only accessible with debug for now...)
  • Add mouse input functions
    • Input.mouseDown, Input.mousePressed, Input.mouseReleased, Object:clicked
  • Change enemies to dodge ("miss" message) when taking 0 damage or less
    • Add damageUnderflowFix engine setting which can be disabled to make enemies heal from negative damage instead
  • Adjust enemy conditional status text behaviour
    • Add tired_text
    • Add low_health_percentage used to determine whether to display low_health_text
    • Add prioritySpareableText engine setting to determine priority between tired / low-health text and spareable text
  • Change default Object:shake params to match most Deltarune shaking
  • Implement some Lua operators (+, *, []) for strings
  • Add Actor.soul_offset and Actor:getSoulOffset for overworld soul placement
  • Add weapon attack stat comparison to the Equip menu
  • Add onWheelMoved mod callback
  • Change left/up player movement to override right/down movement for Deltarune accuracy
  • Add usetile property to interactables to conveniently display a Tile Object
  • Add getDamage function to all relevant Deltarune spells for easy hooking
  • Add restart engine hotkey (Ctrl+Shift+Alt+R)
  • Add toggle noclip debug hotkey (Ctrl+N)
  • Add character alert function to characters, battlers, and cutscenes
  • Add previewMusicLoop mod option
  • Add Music:setLooping function
  • Remove Input.getText return_sprite argument
    • Add Input.getTexture function for this behaviour
  • Add engine debug option for verbose asset loading
  • Add EnemyBattler:removeAct function
  • Change file select to skip save select if mod setting useSaves is set to has_saves
  • Add nameLimit mod setting to define save file character limits
  • Better light world item implementation
  • Add mod and encounter callbacks for battle menus
    • Mod:onBattleMenuCancel/Encounter:onMenuCancel
    • Mod:onBattleEnemySelect/Encounter:onEnemySelect
    • Mod:onBattleEnemyCancel/Encounter:onEnemyCancel
    • Mod:onBattlePartySelect/Encounter:onPartySelect
    • Mod:onBattlePartyCancel/Encounter:onPartyCancel
  • Tweak logic for default overworld object layer
  • Add Actor.font and Actor:getFont to specify default speech font
    • speech_bubble_font_size and getSpeechBubbleFontSize for speech bubbles
  • More Utils functions
    • isNaN to check if a number is NaN
    • xor returns an XOR boolean result on an arbitrary number of inputs
    • squishAndTrunc for fitting text on-screen with squishing (horizontal scaling)
  • Add fade parameter to Game:enter
  • Add onMapBorder mod callback to customize which border is set by a map
  • Add a keyboard with lowercase alphabet
  • Allow negative amount in EnemyBattler:addMercy
  • Overhaul DarkMenu to make it easier to add buttons via events
  • Add debug option to change party
  • Add argument to onDodge which checks whether you attacked or not
  • Add sound and pitch properties to map transition event
    • Replaces stairs property (used "escaped" sound)
  • Add custom keybinds for mods (using the keybinds mod setting)
  • Add Wave.arena_rotation and Wave:setArenaRotation
  • Add Shop:removeTalk function
  • Add PartyMember:replaceSpell function
  • Move all mod callback strings to KRISTAL_EVENT table
  • Add setWindowTitleAndIcon mod setting
  • Add Draw.printAlign function
  • Add more overworld enemy settings for chasing and pacing
  • Chapter 1 equipment inventory accuracy (12 slots instead of 48)
  • Add ChaserEnemy:onAlerted callback
  • Add Kristal.fetch for HTTPS requests using https library
  • Add EnemyBattler.dmg_sprite_offset variable
  • Add BrokenCake, Lancer, Rouxls Kaard and Starwalker key items
  • Add Character.party variable
  • Add stronger_absent and getStrongerAbsent to Party Members to determine which characters "get stronger" while not in the party
  • Add hotkey to save screenshot (F9)
  • Add argument to wavy text for speed
  • Add Soul:onGraze callback
  • Add getDialogueTextStyle mod callback

Congratulations! You reached the end of the cherry-picked changelog only listing the additions! There are also countless fixes and more small changes/additions, but...

Full Commit History: v0.8.1...v0.9.0

Instructions

Windows: Download and extract kristal-x.x.x-win.zip, and run kristal.exe to play
Others: Download and extract kristal-x.x.x-love.zip, and run kristal.love with LÖVE to play

Check out the documentation for how to use this engine, and download example-mod.zip for mod structure, as well as overworld and battle examples.