Changelog
- Folder and pack can be sorted using the Pause button (default Enter)
- Folders can be copied with
CTRL+Cwhile editing - Sea, Metal, and Sand TileStates added
- Sea boosts damage of Aqua cards used on them, doubles Elec damage taken while on one, and roots Entities that step on them
- Metal cannot be cracked or broken
- Sand roots Entities that step on them and doubles Wind damage taken while on one
- Charge times are recalculated even without flinching
Player.charge_time_funcandPlayerForm.charge_time_funccan be used reliably as a result
- Changed parameters and names of charge time functions, see Breaking Change: Charge Time
- Wood element Entities will heal over time while standing on a Grass Tile
- Fire element Entities will not take damage from Lava
- Elec damage is no longer doubled on Ice
- Grass Tiles are now removed by Fire, even if damage was not dealt to any Entities
- Holy Panel damage rounds up
- Bonus damage from weakness no longer combines multipicatively with other engine-handled sources of bonus damage
- E.g. a Fire attack on a Wood Entity standing on Grass used to do x4 damage, but now correctly does +200% damage (x3)
- This is accurate to later games in the series
- E.g. a Fire attack on a Wood Entity standing on Grass used to do x4 damage, but now correctly does +200% damage (x3)
- Movement no longer acts as if endlag is 1 frame when it's 0 frames
- Player animation for movement is 1f faster, which matches the actual move action
- This should fix cases where the move animation started looping during a time freeze action
- Drag lasts the correct amount of time now
Hit.Bubbleno longer crashes, applies Bubble for 150 frames by default- Pressing inputs during Stun, Freeze, and Bubble will cause them to end more quickly
- Status interactions with each other are overall more accurate
- Some may cancel others, and will do so correctly
- Form changing will cancel various statuses
- Flinching can no longer be cancelled by using a card
- TFC cannot be performed until 10 frames into time freeze
- Charge is no longer used up when performing TFC
- Anger/FullSync now only consumed by boostable cards
- Time freeze actions show damage and modifiers
- Health turns red at low HP
- Mugshots no longer bounce
- Freedom battles always send data to the server, and turns can no longer end while the last enemy is dying
- Freedom battles read input during time freeze
- Card long descriptions are prioritized over short descriptions in battle
- Time Freeze actions can be marked uncounterable
- Time Freeze actions now call action_end_func
Field.find_nearest_charactersreturns an ordered tableBattle.AlertSymbol.newis available- Access to
Left_ShoulderandRight_Shoulderinputs Hit.NoCounterhitflag, prevents attack from counteringHit.Confusehitflag, adds Confuse for 110 frames- All Entities can use
battle_start_funcandbattle_end_func - Access to
Character.can_attack - Access to
Entity.set_counter_frame_range - Access to Entity.
is_stunned,is_frozen,is_rooted,is_blind,is_confused,is_bubbled, andis_dragged - Access to
Player.is_charging - Default turn duration is now correctly 512 frames (~8.5 seconds, down from 10 seconds)
- Access to
Battle.get_turn_count, which returns the current turn number. 0.0 initially, then increases by 1.0 every Battle Start banner - Access to many functions related to Custom Gauge manipulation
- Form changing resets emotions
- New HitProps constructor and builder pattern
- HitProps builder pattern allows custom durations for Stun, Freeze, Bubble, Blind, Root, Confuse, and Flash
- HitProps can have a second element,
element2 - Mob can skip rewards screen with
Mob:no_rewards() - Obstacles are now deleted immediately when their health reaches 0, even during time freeze
- This may break a few mods. See Breaking Changes: Obstacles Delete At 0 Health
- Entity can register new
Battle.UIComponent, which acts as a SpriteNode- Add child nodes to draw to the screen in battle, anchored at 0,0 screen coordinates
- Position is absolute and does not get flipped by perspective flip
Escbehavior is now the Panic sequence, which is activated by pressingEscthree times- This means exiting battle is now three
Escpresses instead of one
- This means exiting battle is now three
- Panic can be used to disconnect from a server
- The engine can now play SFX when dealing damage
- DefenseFrameStateJudge can suggest whether or not to spawn hit GFX
- Hitbox/Spell
attack_funcandcollision_funcnow receive an optional last parameter DefenseFrameStateJudge object, mainly for use with the above two features - Obstacles can now be affected by Lava, but you must remove their FloatShoes, which are added by default
- Blocks are now sorted when loaded, which fixes a desync where the order of blocks could be wrong when sent to a remote player
- New
Hit.Cancelflag, which is for internal use- Adding to flags does nothing, but it can be reacted to or removed in callbacks
- Interally added during damage steps when certain flags are present
- FullSynchro is no longer removed accidentally in places it shouldn't be
ActionOrder.Immediatenow causes the last action added to go first, so queuing multiple actions withActionOrder.Immediatewill have reversed order now- PvP battles can end in draws
- Obstacles can no longer be Bubbled
- Player movement animation has 1 frame shaved off the start
- Blind animation displays more correctly
- Fixed crash with
Field.find_nearest_characterswhen pivotCharacterwas not spawned - ActionQueue now rejects a CardActions if it is already queued, as is proper
- AirShoes is no longer checked in places where only FloatShoes should have been checked instead
- Lava does not turn HP red
- Convenient
HitProps.has_flagsandHitProps.has_elementfor Lua,has_elementchecks both primary and secondaryElements at once - New
AudioPriority.Immediate, SFX replays if already playing and told to play with Immediate priority - Certain statuses will pause a voluntary movement instead of allowing it to continue
Hit.PierceGroundflag, used to read from scripted content to do things, typically for semi-invulnerability that should be beat by attacks that hit or travel along the ground- Added Lua bindings for AudioTypes that were missing bindings
- Music plays more consistently in SelectMobScene (it only played OnResume before, but now plays OnEnter as well)
- PlayerCustScene plays music
- Setting
Player.charge_time_funcorPlayerForm.charge_time_func(if a form is active) will also recalculate charge time - Setting skip_time_freeze_intro true on CardProperties has the following changes:
- No longer dims the screen
- No longer displays names
- Can no longer be used to counter a card in time freeze
- Can no longer be countered by other cards in time freeze
DefenseFrameStateJudge.block_impactand.is_impact_blockedare deprecated. They never did anything. Do not use them. Remove them if you have.DefenseFrameStateJudge.block_collision, prevents hitbox from colliding. Does nothing outside of aDefensePriority.AlwaysDefenseRule.DefenseFrameStateJudge.is_collision_blocked, returns true if collision was previously blocked by aDefenseRuleEngine.get_viewport_size(), returns vector containing width/height of game logic (480.0 X and 320.0 Y)Field:tile_from_pixels(px, py), returns a Tile on the Field found at pixel location px, py- Returns
nilif no Tile is at that location
- Returns
Player.get_flinch_count, returns number of times the Player has been "flinched"- Increments each time the player inflicted with Flinch, Stun, Freeze, Bubble, or Drag status
- Flinch duration adjusted slightly
- Fixed
Battle.BusterActionattachment animation - Reading email will let the server know you read the email
- Being stunned or frozen now plays the first flinch animation frame like Bubble does
PlayerForm.on_activate_funcand.on_deactivate_funcnow run after any pending movements finish- Reward Rank penalties around getting hit are more accurate
- Fixed a crash that could happen when removing Entities on the same frame that they are spawned
- Fixed a crash that could happen with certain inputs to
math.random- Cases that used to crash now provide a descriptive error message
- Hit.Confuse correctly adds the Confuse status when using default duration
- Music properly resumes when resuming certain scenes, such as the Mob Select scene
Entity.shake_camerano longer shakes the Custom bar- Homepages will respect background music path
- New title screen and startup sequence
There are also new server-related features.
- Battle rewards can be granted, with limited functionality around card rewards
- HUD can be swapped with the PET icon
- Can send email to clients
- Can play PET ring SFX
- New Sprite API lets servers draw sprites on the client's screen
- Can assert asset type when providing assets
- Card mod packages received by client are added to mod partition for the duration of the session
- Battle results no longer have
runawaybool, now usereasonenum - Tile custom property
shadowcan be set toNeverto never have that tile be drawn in shadow - Start and stop song functions