Skip to content

Releases: KristalTeam/Kristal

v0.8.1

09 Sep 19:25
Compare
Choose a tag to compare

Changelog

  • Many Deltarune accuracy fixes
  • Added text choicers (undertale-style choicers, seen at the start of Chapter 1)
  • Added ability to use spells from the Power menu in the overworld (requires both keepTensionAfterBattle and overworldSpells config options enabled)
  • Added UT Accurate Save Menu for Light World by @DiamondBor in #29
  • Added Sprite event for maps
  • Added option for save points to not heal (heals boolean property)
  • Made gear ability icon color in the equip menu customizable (bonus_color item variable)
  • Added basic flag viewer/editor in the debug menu
  • Added Hot Chocolate and Bouquet light world items
  • Added missing Chapter 1 Ralsei sprites by @DiamondBor in #25
  • Added more LW sprites for kris, susie and noelle, added missing key items by @DiamondBor in #26
  • Added Box of Heart Candy & Cards LW items by @DiamondBor in #28
  • Removed dark transition option for mods, along with Kristal.stageTransitionExists function
  • Added Event interaction buffer by @MrOinky in #32
  • Improve some stuff regarding standalone builds by @Dobby233Liu in #31
    • Moved TARGET_MOD to src/engine/vendcust.lua
  • Added git finder for showing the commit hash on the main menu when running the engine with git
  • Various tweaks by @Dobby233Liu in #30
  • Added 2nd page to credits menu by @DiamondBor in #27
  • World music continues into shop if shop_music is nil by @Simbel0 in #24
  • Error handler tweaks by @MrOinky in #33
  • Fixed soulshine animation speed by @Idunno1 in #34
  • Added callbacks
    • Mod:
      onMapMusic, onActionSelect, onBattleMenuSelect,
      onBattleAction, onBattleActionBegin, onBattleActionEnd, onBattleActionEndAnimation,
      onBattleActionCommit, onBattleActionUndo
    • Encounters:
      onActionSelect, onMenuSelect, getSoulSpawnLocation,
      getVictoryMoney, getVictoryXP, getVictoryText
    • Items:
      onMenuOpen, onMenuClose, onMenuUpdate, onMenuDraw

Full Changelog: v0.8.0...v0.8.1

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.8.0

10 Apr 00:16
Compare
Choose a tag to compare

A months-overdue release of changes, additions, and fixes to Kristal.

Breaking changes

  • fadeTo and fadeOutAndRemove now take 'time' arguments instead of 'speed'
  • Added fadeToSpeed and fadeOutSpeedAndRemove
  • Removed getSpeed, added getSpeedDir and getSpeedXY
  • Removed setRelativePos bc honestly who was using that
  • Map load now happens after Mod:load
  • Timer:everyInstant() now calls its function exactly 'count' number of times, instead of one extra time
  • Change arguments for SpeechBubble from text, x, y, speaker, right, style to text, x, y, options, speaker
  • Change arguments for Battler:spawnSpeechBubble() from text, right, style to text, options
  • Renamed dialogue text line_advance_callback to line_callback, made it get called on first line, and made it receive the line index
  • Renamed resetGraphicsTransform to resetGraphics
  • Made Cutscene:fadeOut/fadeIn not automatically wait
  • Renamed Utils.padSpacing to Utils.padString
  • Reaction data tables are now formatted like {text, x, y, face, actor} (changed from the previous arrangement of {actor, face, x, y, text})
    • Textbox:addReaction(id, text, x, y, face, actor) and SmallFaceText(text, x, y, face, actor) have been similarly changed
  • Removed shake_x and shake_y variables from Objects
  • Added Object:shake(x, y, friction, delay) and Object:stopShake()

There are many additions and changes that are hard to list here in a release!
Check the commits for a full changelog: v0.7.1...v0.8.0

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.7.1

15 Sep 22:11
Compare
Choose a tag to compare

A small update to Kristal that includes some important fixes.

Changelog

Additions:

  • Tiled 1.9 feature support
    • Tilesets can be defined to scale up to the map grid size, allowing unresized 20x20 tilesets
    • Image Collection tilesets can now define sub-images
  • New debug menus
    • Portrait selector, for viewing and copying portrait paths
    • Wave selector, for testing waves in battles
    • Sound test, for previewing sound effects
  • Added darkfountain and fountainfloor events, and a fountainshadow controller
  • Added a few sounds and sprites
  • Added some more palette options
  • Mod:getPaletteColor(index), Mod:getUISkin() callbacks

Changes:

  • color and highlight options for choicers
  • Disable NPC turn option by default
  • More Chapter 1 UI accuracy
    • New Chapter 1 TP bar config option (boxes it)
    • Drop Dog stat change to 2% in Chapter 1, sorry dog hunters
  • Portraits can now animate while talking
  • Lots of fixes

Full Changelog: v0.7.0...v0.7.1

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.7.0

01 Sep 18:15
Compare
Choose a tag to compare

An update to Kristal that includes controller support, screen borders, warp doors, and some various changes.

Changelog

Additions:

  • Added controller support and rebinding
  • Added screen borders, which can be enabled in the options menu
    • Mods can change the dynamic border using Game:setBorder() or the border map property
    • Custom drawing can be added using the Mod:onBorderDraw callback
  • Added warp door event
  • Added indent customization for text (the * at the start of text)
    • Settable for an actor via the indent_string actor variable
    • Settable per-text with the [indent] text modifier
  • Added disable_mercy variable to enemies
  • Added built-in last_x and last_y variables to Objects
  • Miscellaneous functions:
    • Cutscene:during(func) to add an update function to the current cutscene
    • Game:setPartyMembers(...), Cutscene:playSound(), Music:setPitch(), BattleCutscene:closeText(),
      Utils.wave(), Event:addFlag()
  • Many useful callbacks:
    • Encounter:onCharacterTurn(battler, from_undo), PartyMember:onActionSelect(battler, undo),
      Encounter:onReturnToWorld(events), Encounter:getPartyPosition(index),
      PartyMember:onActionBox(box, overworld), Encounter:onGameOver(), Map:onGameOver()
      Mod:getConfig(key), Spell:onSelect(user, target), Spell:onDeselect(user, target),
      Actor:createSprite()

Changes:

  • Tension bar colors are now customizeable via the PALETTES table
  • Moved face/noelle_lw sprites to face/noelle folder
  • Added death argument to Wave:onEnd
  • World music now plays in encounters with music set to nil
  • Renamed EnemyTextbox class to SpeechBubble
    • Removed Battle:spawnEnemyTextbox(), replaced with [Party|Enemy]Battler:spawnSpeechBubble()
    • Renamed onTextboxSpawn(), onTextboxRemove() to onBubbleSpawn(), onBubbleRemove()
  • Renamed BattleCutscene:enemyText() to BattleCutscene:battlerText()
  • Return encounter after cutscene:startEncounter()
  • Removed love.graphics.drawCanvas, replaced with Draw.drawCanvas
  • Renamed Draw.drawCutout to Draw.drawPart (also added Draw.drawCanvasPart)
  • Fixed some floor/ceil issues
  • Fixed shader issues on some platforms, thanks to @Dobby233Liu

New Contributors:

..and more I likely missed in this list! See the full changelog: v0.6.0...v0.7.0

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.6.0

23 Jun 22:59
Compare
Choose a tag to compare

A long overdue update to Kristal. This update includes a lot of various small changes.

Changelog

Additions:

  • Added "Create a new mod" button to the mod menu, which easily creates an example mod template
  • Added fixed FPS options (default 60)
  • Added right-click context menu to debug selection
  • Added copying and pasting objects to debug selection
  • Added support for the Tiled features Tile Objects, and Image Collection Tilesets (also tile rotation/flipping)
  • Added video assets folder & Video object

Changes:

  • Significantly changed camera behaviour
    • Camera will now always snap to its follow target while attached
    • Make sure to run cutscene:detachCamera at the start of your cutscenes, and cutscene:attachCamera at the end
  • The functions which modify TP have been moved to Game
    • The default max tension has been lowered to 100, from 250. Because of this, the "exact" versions of the tension modification functions have been removed, and the normal ones no longer multiply by 2.5.
  • Ctrl+Shift+R now reloads from last save, Ctrl+Alt+R full reloads
  • Merged Ralsei actor into one actor (just ralsei, no more ralsei_ch1)
  • require no longer works inside mods to load mod scripts, use modRequire(path) or libRequire(lib_id, path)
  • Renamed onStart callback from spawning things via wave to onWaveSpawn
  • Swapped the id and name arguments of DebugSystem:registerMenu
  • Renamed Object:isDebugSelectable to Object:canDebugSelect
  • Renamed Object:getDebugInformation to Object:getDebugInfo
  • Changed wait argument of WorldCutscene:startEncounter to an options table argument (pass in {wait = false} to avoid waiting)
  • Use Player auto_moving variable to determine whether followers should keep moving on their own, for the SLIDE state
  • Renamed Event:postLoad to onLoad, added postLoad for later

... and much more! See the full changelog: v0.5.1...v0.6.0

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.5.1

07 May 19:35
Compare
Choose a tag to compare

Changelog

Changes:

  • Renamed WorldCutscene:switchMap to WorldCutscene:loadMap

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.5.0

07 May 19:19
Compare
Choose a tag to compare

A significant update to Kristal. This update includes a lot of various small changes, as well as the start of a big debug system.

Changelog

Additions:

  • Added Debug Menu (ctrl+`, bindable), for easier mod debugging!
  • Added Object Selection (ctrl+o or middle-click), to look at object information and drag them around
  • Added equipment mod option, to easily adjust starting equipment
  • Added custom mouse cursor and some mouse-related config options
  • Added enemy speech bubble customization
  • Added config options for most chapter-specific game differences
  • Added [image], [offset], and [sound] text modifiers
  • Added text alignment option
  • Added fast-forward debug key (F5)
  • Added Object.timescale variable
  • Added controllers layer, and ToggleController (toggle), which shows/hides objects with a flag
  • Added events:
    • cameratarget: locks your camera at a position inside this region (subject to change)
    • hideparty: fades out followers when inside this region
    • cybertrash: same as chest but Cyber City styled
    • forcefield: block the player from going somewhere for vague plot reasons👍
    • pushblock: it wants to be pushed around (but not into a certified blockcollision layer shape)
    • tilebutton: it wants to be stepped on
  • Added callbacks:
    • Object:onStart whenever spawned by a Wave
    • Object:getDebugInformation, Object:isDebugSelectable, Object:getDebugRectangle for debug selection
    • Too many to list for Actor
  • Added various functions:
    • Object:slideTo, Object:slideToSpeed, Object:slidePath
    • Character:walkPath, Character:convertToEnemy
    • Camera:panTo
    • WorldCutscene:getEvent, WorldCutscene:getEvents, WorldCutscene:slidePath, WorldCutscene:walkPath
    • World:getEvent, World:getEvents
    • Map:getEvent, Map:getEvents, Map:getImageLayer
    • Game:addFollower, Game:removeFollower
    • Utils.shuffle, Utils.mergeMultiple, Utils.reverse, Utils.roundToZero, Utils.roundFromZero
    • Input.getMousePosition

Changes:

  • Removed all dt arguments, use global DT or DTMULT instead
  • Removed snd_ prefix from all built-in sounds
  • Script events are now only removed if once is true, set temp to not perma-remove
  • Replaced interactscript and readable events with interactable
  • World transition function has been renamed to mapTransition
    • transitionImmediate renamed to switchMap in cutscenes, loadMap in World
  • Made battle name sprites optional
  • GameOver has been moved into an Object
  • Accurate Light World death screen and save menu
  • Use Kristal.getTime() or global RUNTIME instead of love.timer.getTime()
  • aura property for enemies, to disable the glowing red effect
  • mapflag property for setflag event, to set a map flag instead of a game flag
  • Item check variable to quickly define check text (LW only)
  • Item light variable to define whether the item goes into your light or dark world inventory
  • Image fonts are now scalable with font size in text
  • Allow binding modifiers to keys (like ctrl+shift+a)
  • Console is now accessible anywhere in the engine, and console key is rebindable
  • Many adjustments to console text input

... And a lot more I certainly missed because it's been too long since the last release!
Full Changelog: v0.4.1...v0.5.0

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.4.1

21 Apr 03:34
Compare
Choose a tag to compare

Changelog

Fixes:

  • Fixed setActSprite offsets being incorrect with the new offsets

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.4.0

21 Apr 00:31
Compare
Choose a tag to compare

A significant update to Kristal. Most notably this update adds a nearly-complete Light World, as well as all Deltarune items.

Changelog

Additions:

  • Light world
    • Added light world textbox style (using a UIBox (formerly DarkBox) skin)
    • Added light world menu, including items, stats, and the cellphone
    • Added systems for converting between light world and dark world items
    • Party members have light world stats/LV
  • Added almost all Deltarune items to the engine
    • Added more values to HealItem, added TensionItem class
  • Added mini shop menu
  • Added Storage menu
  • Added enemy transitioning out of battle
    • Supported multiple enemies transitioning in
  • Added 'auto_spare' option for enemies
  • Added lots of getter functions for data classes
  • Added item flags, as well as Item:save and Item:load functions
  • Added globals and drawfx scripts folders (basically same as objects, just renamed)
  • Added talk sprite support

Changes:

  • Inverted all Actor offsets
  • Moved Dark Transition into an Object (WIP)
  • Autowrapping text!!!!!!!
  • Changed item and spell target values
  • Removed EnemyBattler.defeat_type, added EnemyBattler.exit_on_defeat boolean instead
  • Replaced keepFollowerPositions with interpolateFollowers
  • wait argument for WorldCutscene:startEncounter
  • Various changes to most Inventory functions, as well as inventory storage ids
  • shop setting for mod.json to start game in shop
  • Textboxes now automatically move to the top of the screen
  • Renamed scene property to cutscene
  • Renamed Map:unload to Map:onExit

Fixes:

  • Fixed inputting marker into WorldCutscene:panTo
  • Fixed shop backgrounds
  • Fixed master volume not saving
  • Fixed Sprite screen wrapping
  • ...and more

Full Changelog: v0.3.2...v0.4.0

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.

v0.3.2

14 Apr 22:10
Compare
Choose a tag to compare

Changelog

Additions:

  • Added has_xact to PartyMember

Changes:

  • Made Wave:spawnObject set the object's wave variable

Fixes:

  • Fixed ACTs not chaining together correctly
  • Fixed starting a cutscene during Wave:onEnd

Instructions

Windows: Download and extract the .zip, and run kristal.exe to play
Others: Download and install Love2D, and run the .love with Love2D 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.