Releases: KristalTeam/Kristal
v0.3.2
Changelog
Additions:
- Added
has_xact
to PartyMember
Changes:
- Made
Wave:spawnObject
set the object'swave
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.
v0.3.1
Changelog
Fixes:
- Fixed battles not ending correctly due to the new text system
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.0
A significant update to Kristal. This will break all existing mods due to data format changes, check the Kristal data folder for examples of the new data structure.
Changelog
Additions:
- Added Shops (no example mod shop yet)
- Filled out credits page
- Added lots of features to the in-game console, including colors and selection and multiline support
- Added
PartyMember.soul_color
for customizable soul color (in menus and battle) - Added
Fader
object, and added fading in on mod load - Added proper support for text font changing
- Added many getter functions to items
- Added
canEquip
andgetReaction
functions to items and party members - Added
Map:onEnter
callback - Added
BattleCutscene:choicer
, works the same asWorldCutscene:choicer
- Added
skip
andadvance
options to textboxes - Added
[func]
text command andfunctions
option (works like reactions) - Added more Noelle sprites to the engine
- Added
Character:getPartyMember
,Battle:openUI
,Battle:setSelectedParty
,Soul:shatter
,Sprite:set
Changes:
- Reformatted all data!
- Renamed
script
property in certain map objects toscene
- Second argument for
Class
is nowid
, which sets the id of the class for registry purposes - Removed datamod, extend and replace existing data to modify it
- Made non-function debug hotkeys require CTRL
- Added
super.super
(repeatable), to call the super function of a super function - Made
walkTo
andslideTo
move characters in a linear angle - Allow movement during fade-in from a room transition
- Added more characters to number fonts to render all numbers
- Added
Utils.lerpPoint
in place ofVector.lerp
and removed internal usages of the Vector library - Support for faceless dialogue reactions
- Allow DialogueText to take a list of text and advance through it, and a callback when done
- Better support for custom DarkMenu buttons
Fixes:
- Fixed corrupted images hardlocking Kristal
- Fixed issues with
Class("include_id")
- Fixed text processing before being added to the stage
- Fixed inputs not resetting on crash
- Fixed 0-width/height rectangle colliders not rendering
- Fixed
Draw.scissor
not functioning correctly - Fixed crash if a cutscene removes World
- Fixed dark transitions drawing doors wrong
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.2.0
Changelog
Additions:
- Added Libraries, for easily sharing code, data, and assets between mods
- Added mod favoriting on the main menu
- Added
Battle:powerAct
for ACTs that cast spells (DualHeal, Red Buster) - Added
face
andfacec
text commands, to change portrait mid-dialogue - Added
PartyBattler:removeHealth(amount)
- Added custom status icon support for the enemy display list in battles
- Added
registerTextCommands
mod callback - Added
Item:getDescription
for dynamic descriptions - Added
Game:getActLeader
, which returns the party member with the greatestsoul_priority
who can ACT - Added
Utils.getAnyCase(tbl, key)
utility function - Moved some cutscene functionality to other places:
World:getCharacter
,World:detachFollowers
,World:attachFollowers
,World:attachFollowersImmediate
Character:walkTo
,Character:slideTo
Follower:returnToFollowing
Changes:
- Renamed
LAYERS
toBATTLE_LAYERS
- Renamed old
face
text command toreact
(the small reaction popup text in dialogue - Added
keep_facing
argument toWorldCutscene:walkTo
,Character:move
,Character:moveTo
, andCharacter:walkTo
- Changed
layer
argument inWorld:spawnObject
to accept a number or map layer - Removed
Wave:getEnemyRatio
- Removed
World.layers["objects"]
andWorld.layers["tiles"]
- Removed
Character
"exact position" system - Added run timer reset grace period
- Added
facing
property totransition
events
Fixes:
- Fixed animations not accepting sprite tables
- Fixed misaligned battle fader
- Fixed issue hooking parent classes multiple times
- Fixed
DarkBox
not rendering alpha correctly - Fixed
Sprite:setFrame
mid-animation not affecting animation progress - Fixed
World.width
andWorld.height
not updating on map change - Fixed console inputs being affected by rebinding
- Improved load times a little bit
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.1.2-beta
Small update for Kristal. 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.
Additions:
- Added DrawFX, effects that can be applied to objects for various visual effects (replaces
Sprite.color_mask
) - Added spell tags, such as
rude
,ice
, andspare_tired
(replacesSpell.pacify
) - Added
Collider.invert
andCollider.inside
, to invert collision detection or check for collision fully inside the collider - Added
Solid
object for battles (WIP) - Added
TARGET_MOD
tovars.lua
, which, given a mod id, makes the engine focused around a single mod (no mod list) - Added
Encounter:getDialogueCutscene
, which can return arguments forstartCutscene
to start a cutscene at the end of a turn instead of showing enemy dialogue - Added
Soul:onDamage
callback - Added
Character.soul_offset
, to determine where a character's soul comes out from their sprite - Added various functions:
- Game:
addPartyMember
,removePartyMember
,movePartyMember
- World:
spawnNPC
,spawnObject
,stopCutscene
- WorldCutscene:
spawnNPC
,transition
,startEncounter
- Game:
Changes:
- Renamed all portrait sprites
- Changed
EnemyBattler:getAttackTension
to use 0-100 values - Renamed
World:addFollower
toWorld:spawnFollower
- Made ACT description accurate in Chapter 2
- Made holding down cancel at the start of a wave not slow you down
- Made glowshard use datamod for chapter differences
- Added
replace
argument toCutscene:after(func, replace)
Fixes:
- Adding 0 mercy now shows "Miss" instead of "+0%"
- Fixed party members reviving at 0 hp
- Fixed battle cutscenes resetting downed sprite
- Made
require
work correctly in mods - Fixed various crashes on cutscene ending
- Fixed
nil
target not getting checked byHealItem
- Fixed "Max" not displaying if healing was exactly enough to max a character out
- Fixed battle textbox portraits not clearing correctly
- Fixed shaky text (and other draw-every-frame text) drawing previous text from
setText
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
v0.1.1-beta
Small update for Kristal. 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.
Additions:
- Added
onFootstep
function toMod
,Map
, andCharacter
, which takes an argument for the character (only inMod
andMap
) and which step it is (1 or 2) - Added
Timer:everyInstant
, same asTimer:every
but calls the function once immediately - Added
World:spawnObject
to conveniently add an object to World - Added
Stage.timer
, easily accessible anywhere viaGame.stage.timer
- Added
EnemyBattler.encounter
variable - Added
Anchor(ox, oy)
object, whereox
andoy
are a percentage from 0-1, and theAnchor
object will stay anchored to that percentage of the parent's width and height. For example,Anchor(0.5, 0.5)
will always be centered on its parent.
Changes:
- Moved bullets' scale and origin to the bullet itself, instead of their sprite. This means bullet hitboxes are no longer centered, they are now relative to the bullet's topleft, and changing origins of the bullet itself works how you would expect. This may break your bullet if it defines a custom hitbox, scales/rotates its sprite directly, or adds a child to itself!
- Moved
EnemyBattler.tension_attack_divider
to a function,EnemyBattler:getAttackTension
- Renamed
EnemyBattler:fetchEncounterText
toEnemyBattler:getEncounterText
- Added "after" function argument to
Character:setAnimation
- Allow enemies to not have encounter text
- Made "height" argument of
Wave:setArenaSize
optional - Allow
ActorSprite
to be initialized with a string (actor ID) instead of anActor
directly - Allow
Utils.angle
to take objects as arguments. - Allow
Utils.clampMap
arguments to be passed in any order
Fixes:
- Fixed tile alpha blending
- Fixed
Object:setLayer
not properly updating children - Fixed hooks not applying to subclasses
- Fixed inconsistency with Deltarune for exiting certain battle menus
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
v0.1.0-beta
First beta release of Kristal. 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.
Todo:
- Shops
- Light world support
- Auto battlers (Chapter 1 Susie)
- Mod libraries
- Full menu customization
Known issues:
- Frequent Z-fighting in the overworld
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