Releases: tweenko/tldr-engine
v1.13.3+1
Accuracy Improvements 3: Bugfixes & Cleanup (v1.13.3)
by @tweenko
encounter changes:
- act enemy selection now returns to the button selection instead of the enemy selection
- clicking the item button in an encounter with no items now plays
snd_ui_selectinstead ofsnd_ui_cant_selectfor better deltarune accuracy - adjusted the battle (damage) messages animations further
- a miss' color will now be dependent on the party member that missed the attack
- added the special action mode to enemy selector
- added an example of a special action for killer car
- added actual support for custom party actions
misc chnages:
- added support for border animation being instant and having configurable border crossfade animation length
- switching borders will now be instant
- you can no longer enter a climbing state when not moveable
- fixed second sanctuary fog
- you can now interact with items from further away (15 pixels) for better DR accuracy
- window size is now accurate to DR
v1.13.2+1
Accuracy Improvements 2: Electric Boogaloo (v1.13.2+1)
damage display tweaks:
- changed damage animation to be more accurate
- removed align from the damage display entirely
- improved the damage writer's ability to stretch
misc changes:
- implemented pity spare percentage turning enemies yellow
v1.13.2
Accuracy Improvements (v1.13.2)
by @tweenko, @ReiRingo and @krisgrant
climbing tweaks: (by @ReiRingo)
- implemented dash boosting (the climbing dash now applies an instantaneous forward boost when acting as the leader. this fixes the static post-dash speed issue from the previous build)
- cleaned up
o_dev_climb_controller
LW menu tweaks: (by @krisgrant)
- changed the logic behind when
snd_ui_moveis played - changed how option selections function
- removed
snd_ui_cant_selectwhen pressing select on the item option if it's disabled - changed how having no phone numbers is handled
- read explanations here (#39)
running changes: (by @tweenko)
- change base LW speed to 3 for better accuracy
- removed run speed due to the way deltarune handles it
- changed run speed logic to accumulate like in deltarune instead of increasing by 0.2 every frame
v1.13.1+2
Bullet Improvements (v1.13.1+2)
by @tweenko
- change grazing behavior completely to be more accurate to DR (i call it "lingering" grazing)
- added enum BULLET_COLOR which contains three options: SOLID, BLUE and ORANGE
- adjusted grazing points for bullets
- implemented individual time points system for bullets
- added comments in
o_enc_bulletto better explain all variables
v1.13.1+1
Ripple (v1.13.1)
by @tweenko
ripple effects library:
- library by techncolour with some polish by me
- added Clean Shapes by Juju Adams and others as an external library
- new function
lb_ripple_createthat creates a ripple wherever you'd like with lots of customization - new functions
lb_ripple_vision_onandlb_ripple_vision_offthat enable/disable ripple vision - new object
o_lb_ripple - new object
o_lb_ripple_visionfor making dark rooms - when under ripple vision, leader actor now emits ripples every other footstep
lighting system modifications:
o_eff_lighting_controllerhas three new variables:shadows,darkenandhighlightsthat determine whether actors have these drawn when under lighting globally
bugfixes:
- soul sprite was changed to be accurate with DR
Climbing Adjustments (v1.13.1+1)
by @Notrealb
Tweaks to climbing:
- Climb camera moves faster.
- Multi-Key direction behavior: Holding multiple keys in a general direction will alternate between the two directions, allowing diagonal-like movement. You'll also no longer constantly bump while holding multiple keys against the climbable boundaries.
- Charge animation sync.
- Allowed some support for jump_reach_max values above 50 by clamping it where needed.
v1.13.0
Climbing and More (v1.13.0)
IDE Version: v2024.14.4.222
Runtime Version: v2024.14.4.268
climbing system:
- added a climbing system. you can add tiles on a layer with a name that starts with
climb, and the system will register them. aside from tiles, you can simply addo_dev_climb_tileobjects as well - you can see an example of its usage in
room_test_climbing - camera switches into a smoother following mode when climbing to look like deltarune
actor changes:
- a slight touch-up of the actor mover system (it still sucks though)
- new
actor_movement_jump_intothat is just a jump movement without the landing animation - added an optional argument to
actor_movementandactor_movement_jumpcalled_play_sfxthat determines whether corresponding sfx should be played (if applicable) - added an optional argument to
actor_movement_jumpcalled_timethat determines the time the jump animation will take - new
o_actorvariableoverride_blendthat, if not set to undefined, will override the actor blending. for internal usage - new
o_actorvariablealpha_modthat can modify the actor alpha
test zone changes:
- connected
room_test_climbingandroom_test_loopback - added some more decor to
room_test_loopback
misc changes:
marker_find_closestwas moved to deprecated and renamed tomarker_find_closest_idmarker_find_closest_instwas renamed tomarker_find_closestandmarker_find_closest_instis now deprecatedo_eff_genericnow hasstart_alphaandend_alphao_eff_generic'sstart_scalewas changed to 1o_afterimagenow has ascale_modvariableo_cameranow resets most variables when changing rooms- extended game over screen light transition by 10 frames
- game overs now can happen outside dodge events
- added support for
o_text_typermini text not having any faces associated with it via using not a valid face (e.g. -1 or nil) - removed
o_ui_fuse - added a new argument to
audio_playandcutscene_audio_playcalledoffsetthat offsets the sound by an x amount of frames cutscene_audio_playnow has a new argument calledsound_typethat determines the target emitter of the sound you want to play- added JSDoc for
cutscene_audio_play - new function
audio_get_target_emitterthat returns an audio emitter based on the sound type provided - added a new argument to
item_containscalleditem_type - implemented magical glass from deltarune as
o_ow_magicalglass
bugfixes:
party_contains's usage was adjusted in the party selector to account for passive party members (above limit)enc_set'swin_conditionnow actually works and the behavior linked too_enc'swin_conditionwas changed to now be linked toenc_set's method- fixed the
item_containsfunction to work correctly (it didn’t work before)
v1.12.2+1
v1.12.2+1 (Dev Tools, QOL & Bugfixes)
IDE Version: v2024.14.4.222
Runtime Version: v2024.14.4.268
dev tool changes:
- revamped dev tool UI
- removed save deletion logic from
o_worldand simply made it spawno_dev_savewipe_promptinstead - added support for dev tools to react to different game widths and heights
turn changes:
o_turn's user event 0 is now called once all the turns were spawned in, not 1 frame after its creation- fixed logic for
__support_init_defaultand__support_destroy_checkthat now ignores the support turns
save changes:
- added a new macro called
SAVE_ENCODEin thesavescript that controls whether to encode a player's save data when saving. set tofalseby default, but encouraged to be set to true when finishing the game - two new functions:
save_to_stringandsave_from_stringthat convert save data to/from strings - added JSDoc for
save_reload - saves are no longer saved as .json files, instead saved with no format at all
misc changes:
- the game's width and height is now controlled by four new macros:
GAME_W,GAME_HandGAME_W_GUIandGAME_H_GUI(the normal draw scale and the gui draw scale respectively) - added a new function called
draw_text_highlightedthat's used in most dev tools now - all main party member collision boxes are identical to kris' one for consistent gameplay among the main party members
- text typers now have a new
fonthash that determines the font that their text will use. can be a loc ID for a font or a reference to an asset (undefined will just not change the font) o_ex_turn_complex_boxwas extended from 120 frames to 300o_ex_turn_dentosis now a support turno_ex_turn_dentosnow appropriately usescutscene_stopinstead ofinstance_destroyo_ex_turn_dentosturn's logic was changed so that it works if its index is higher than 1- made spawn bullets animated
- updated
cutscene_lb_music_pitchto work the new cutscene system - added enum for
SOUL_COLORinstead of real numbers - added the documeation link in the setup note
- removed unused variables in
o_world
bugfixes:
- fixed a bug where previously, i accidentally made local
cutscene_player_canmovealways set the player instance'smoveablevariable tofalseinstead of the desired choice enc_enemy_isfightingnow correctly checks for whether an enemy is still fighting and can be hurt- fixed a bug where shadow guys shoot act would crash the game if any of the enemies was not fighting anymore
v1.12.1+1
v1.12.1+1 (Cutscene Updates, Bugfixes)
IDE Version: v2024.14.4.222
Runtime Version: v2024.14.4.268
- added a new function called
cutscene_stop - added a new property for cutscenes called
localthat determines whether to destroy the cutscene when leaving the room cutscene_player_canmovenow has a new argument called_globalthat determines whether to make the movement rule global (persists through rooms) or local (only for this room)falseby default- fixed errors when equipping/unequipping items
- removed cutscene logic for unique_ids
v1.12.1
v1.12.1 (More Localized Sprites)
by @Leftory and @tweenko
update tutorial
IDE Version: v2024.14.4.222
Runtime Version: v2024.14.4.268
localization changes:
- localized Damage text in battle (and added Japanese variant of RECRUIT text)
- localized TP caption in battle and overworld power menu
- localized "PRESS" hint when fighting in battle
- localized "HP" text in battle and overworld menu
- localized "GAMEOVER" text
Target box in battle - added a new loc file called "damage.json" that contains all damage localization IDs
- changed logic for localizing damage sprites
- applied the
TEXT_HPCHANGE_MODEenumerator in source code when possible - added support for light world menu localization
misc changes:
- added the "bandage" armor
- the default weapon & armor are now the bandage and pencil instead of being undefined
v1.12.0
v1.12.0 (Saves, Memories and Localization Overhaul)
IDE Version: v2024.14.4.222
Runtime Version: v2024.14.4.268
be careful when updating your project! this update changes a lot of things!
save system changes:
- the whole save system was rewritten from the ground up
- the new save system is a lot more reliable and fixes lots of issues and bugs related to saving/loading that the engine had before
- settings now support
save_entries - all save_entry related things were moved to their own script called
save_entries savesscript renamed to simplysave- all functions in the save system now follow a more concrete naming pattern, thus lots of functions were renamed
- renamed
global.savestoglobal.save_filesto reduce confusion between it andglobal.save - empty save files are now marked by being empty structs (
{}) instead of-1 - new function
save_entry_reset_defaultthat resets the default value of a save entry to its original definition. could be useful in certain scenarios
memory changes:
- if you remember anything about states, please feel free to forget about everything you've known. now they're called memories and they're completely different
- the memory' predecessor, states, is now considered deprecated and is simply imitating a behavior simillar to the one achieved by the new memories. their use of id is also a bit broken due to some things not having an id. if you want to keep using states, which i don't recommend you do, you must add an identificator to all of them!
memory_get(_category, _identificator)returns a certain memory identifier in a certain memory categorymemory_set(_category, _identificator, _value, _locked = false)sets a certain memory identificator to a value. returns whether the target memory was changed or notmemory_flick(_category, _identificator, _locked = false)flicks a memory. if the memory doesn't exist, it will be flicked to true. returns the new value of the memorymemory_remove(_category, _identificator)flicks a memory. if the memory doesn't exist, it will be flicked to true. returns the new value of the memory- example of how you'd use memories:
var evil = memory_get("choices", "test_evil"); // first, we get a memory from an arbitrary category. if the memory doesn't exist, undefined will be returned
if !evil && choose("A", "B") == "A" // if we aren't evil yet, we choose between "A" and "B" in a 50% chance to become evil
memory_flick("choices", "test_evil", true); // if fate so decides, the "test_evil" memory is flicked true. the last argument here locks the memory from changing back to false if it's true already.localization changes:
- new function
loc_stringthat does the same thing aslocdoes with the functionality of replacing bracketed numbers (e.g. {0}), just like base GML’sstringcommand - all uses of
locandstringtogether were adjusted to useloc_stringinstead - new function
input_verb_get_namethat returns the name of an input verb and localizes it. applied it where it’s applicable - fixed fallback languages to actually work by checking whether a localization entry exists with that name before adding it to the localization data
- added new localization IDs in the form of localized bind names (e.g. “menu_bind_down”). you may add your own bind names you’d like to localize if you want to! just make sure they fit the
menu_bind_{x}naming scheme (where the {x} is your bind name) - added a new function
loc_existsthat returns whether a localization entry exists or not
text_typer changes:
- first of all, don’t get too attached. i’ll probably rewrite it sometime later in 2026 in my unrelated project
- the effect command, while still accepting real numbers, now counts this behavior as deprecated and should instead use strings to refer to their target effect
- the effect command now has bonus arguments called
effect_argumentsthat will change the effects’ behavior - the command recognition system should recognize boolean statements more reliably now because all
bool(x)calls were replaced with the newstring_to_bool(x) - added a new “wave” effect
- added support for all
string_to_colorcolors to also understand colors without the “c_” prefix
misc changes:
emitter_musicwas renamed toemitter_bgmbus_musicwas renamed tobus_bgm- added a new function
struct_emptythat checks whether a given struct is empty - chapter select now uses the new
save_entry_set_defaultinstead of simply changing the empty save that the engine was using - rewrote diagonal collision logic that better accounts for possible interferences once landing into the target zone
- added a new command called
string_to_boolthat reliably converts strings into boolean, while also accounting for the possibility that the string may simply equal to “true” or “false”
bugfixes:
- collision bugs are a lot less likely to occur due to a few rewrites
- the save system is a lot more consistent thanks to the rewrite and eliminates most of the bugs that can be found in versions before v1.12.0
- fixed an issue where the
input_binding_intextfunction would add one too many slashes (“/”) - fixed an issue where the current save's room name wouldn't be localized when overwriting a save