Skip to content
UnderDragon edited this page Jun 11, 2026 · 7 revisions

Woo hoo, guys, here's UnderDragon.

Thanks to Yocto, the helper is fully expanded with some brand new stuffs!

If you wanna request a tooltip for certain tools or something (usually I'd provide them but sometimes I might forget), you can also tell me by addressing an issue or DM me on Discord @under__dragon

Triggers

Ambience Fade

Ambience

Axis Camera Offset (a.k.a. Camera Offset)

A simplified vanilla camera offset trigger, you are offered with the options to change only offset X or offset Y.

Basically it's vanilla camera offset trigger with the option of "X Only" and "Y Only" mode.

Bloom Fade

Bloom

Custom Timer Control

Fastfall Collider

The trigger will give the player a new ability : To narrow their hitbox when in fastfall state.

Flag Management

Flag Add

Flag Array

Setting up a flag array and activate them one-by-one when entering the trigger, kind of working as an easy version of trigger trigger chain

If position mode is enabled, then this could also be working as a ... flag fade trigger

Flag Carousel Manage

Flag Carousel

Once the player touches the trigger, the trigger will start cycling the flags set in the parameters, each step will have a certain delay.

Flag Choose

To adjust new flags according to the flags you have or don't have, works like multiple flag-if-flags.

Given format is {[if flags]: [add flags]}, ...

For example {a1: b1}, {a2: b2}, {a3: c1, c2}, {a4, a5: d1}

Flag Dictionary

Similar to Flag Choose Trigger, but supports global flags and more complicated logic gates.

Given syntax is flag1, !flag2 >> *flag3, !flag4, !*flag5

>> is the symbol that differentiate the requirements and effects

Flags begin with ! mean inverted flag (must be disabled to meet the requirements)

Flags begin with * mean global flag that will be kept across maps or in the save file, this symbol can only be used in effect flags (the flags on the right of >>)

Flag Clear

Yes, it wipes out all flags in-game.

Flag Date

This trigger is a trigger that interacts with IRL time, it will activate a flag when certain time conditions are met.

The time conditions look like this:

minute,30,60;hour,3;day,,25

minute,30,60 means the IRL minute should be greater than or equals to 30 while lower than 60

hour,3 means that the IRL hour should be greater than or equals to 3

day,,25 means that the IRL day should be lower than 25

Flag If

Flag List

It works similar to Flag Carousel, but this trigger only cycle the flags set for one step when people touches the trigger.

Flag Random

Each time you interact with the trigger, a flag will be chosen to activate randomly from the flags you set up.

Flag Remove

Flag Replace

Flag Serial

Setting up a flag serial list and activate them by inserting numbers as signals when entering the trigger, kind of working as an easy version of trigger trigger chain

If position mode is enabled, then this could also be working as a ... flag fade trigger

Flag State

The flags will be activated whenever the player step into the room you placed this trigger.

(No interaction needed)

Flag String

A trigger that operates flags, working similarly as Flag Replace, but on string-based operations.

Currently it supports: Adding Prefixes or Suffixes to the flags, Removing First or Last or All keywords in the flags, Replacing First or Last or All keywords in flags, and Deleting (from the beginning) or Backspacing (from the end) in flags

Flag Switch

When player interact with the trigger, it will switch between flag A and flag B.

Flag Timer

Allows mapper to setup multiple timed flags available across a room, within a map, or within the save file.

Keep Dash Speed

Kill Player

Lighting Fade

Lighting

Music

Random Counter / Random Slider

When player enters the trigger, a random slider or counter value is set.

SmoothToOffset Camera (a.k.a. Smooth Camera Offset)

A solution to those mappers who always find their camera not smooth enough, this trigger will read your current camera offset and smoothly change the offset as player move in the trigger.

In vanilla smooth offset trigger, you need to insert two sets of offset, one as start-point offset, one as end-point offset. And this trigger will use your current offset as the start-point offset, so what you set will be the end-point offset.

Stopclock Trigger

Create or modify a stopclock for time counting

Sub Pixel

Changes the player subpixel value. Can be set to trigger once when entered, or trigger once per frame when player's inside.

Teleportation

Target ID

Teleport Position

Teleport Target

Trigger Extension

So, this trigger is aimed for such situation:

Take Flag Trigger as example, there are sometimes, where you need to place the same flag triggers like C-Shape or S-Shape, of course, you can cover the whole area with a big trigger but that could also cover certain unnecessary areas. And if you place 3 triggers to form the C-Shape or 5 triggers to form the S-Shape, then something confusing may happen: When Players cross over the borderline, the trigger would be triggered again as if the player re-entered it.

Then this could be your solution, Trigger Extension will work in groups judging by its Extension Tag or target Trigger ID, and when the player cross over its borderline, it will detect if the player is colliding with other trigger members in the same group, avoiding the re-trigger situation.

Stylegrounds

Custom Rain

Customizable rain effect

Wind Rain

Customizable Rain effect that will be affected when the map contains certain wind pattern

Water Surface

Inspired by Dream Overdose from Esoterica Contest, now we introduce a particle styleground that's designed to imitate live water surface and making the particles scroll differently from near-side to far-side

Commands

chronia_fullcheat

Enable Variant Mode and Cheat Mode for a save

chronia_fullcheat

chronia_get_keyboard_password_hash

Try getting the encrypted password for PasswordKeyboard

chronia_get_keyboard_password_hash [string: keyboard tag] [string: password] (bool: caseSensitive)

chronia_get_password_hash

Try getting the encrypted keyboard-tag-combined password for PasswordKeyboard

chronia_get_password_hash [string: keyboard-tag-combined password] (bool: caseSensitive)

chronia_flag

Set up a ChroniaHelper flag

chronia_flag [string: flag] (bool: state) (bool: global) (bool: temporary)

chronia_flag_per_room

Set up a flag that only works in one room

chronia_flag_per_room [string: flag] (bool: state)

Migration from TeraHelper

TeraHelper is an excellent helper that gives some entities their tera types so players can interact with them as if they're in an RPG game, and the tera types are strictly based on Pokemon setups, which is pretty well-known.

However, not everyone gets familiar with the 18 tera types from Pokemon, and personally speaking I don't see a way a mapper can use most of the 18 tera types in one map unless it's a huge puzzle map. So that's why I made a duplicate and changed the tera type settings to make it more... I guess, generally simpler.

The entities are all from TeraHelper, very grateful to the source code the author provided, and they have a wiki about the mechanics they included in the helper.

The mechanics of the attacker and the defender are not changed, but the tera type system is re-written as follows:

Instead of the original 18 tera types, I only kept 5 of them, which is

Fire, Water, Grass, Normal and Ghost.

These attacks will be greatly effective:

Fire to Grass,

Water to Fire,

Grass to Water,

These attacks will be normal:

Any to Normal, vice versa

Fire to Fire,

Water to Water,

Grass to Grass,

These attacks will be not so effective:

Fire to Water,

Water to Grass,

Grass to Fire,

These attacks won't work:

Any to Ghost, vice versa

Decal Registry

Hello guys, Chronia Helper now provides several Decal Registries for the mappers to utilize.

To make it simple, I'll give the xml format here directly while introducing the features:

<chronia.color tag="tagName"/>

Chronia Helper session stores a built-in color system called Chronia Color in the Session, and it's defined through 3 counters and a slider, representing the R G B and alpha value of the color.

To define a ChroniaColor through session values, based on the same tag, the relative values are as below:

ChroniaHelper_ChroniaColor_tagName_R (counter ranging 0 to 255)

ChroniaHelper_ChroniaColor_tagName_G (counter ranging 0 to 255)

ChroniaHelper_ChroniaColor_tagName_B (counter ranging 0 to 255)

ChroniaHelper_ChroniaColor_tagName_A (slider ranging 0 to 255)

Do notice that not all these values need to be set, if the session values don't exist, they'll be set to default as Color White (RGBA = 255, 255, 255, 1)

After set, the decal will be tinted to the color

<chronia.sessioncolor r="counterName" g="counterName" b="counterName" a="sliderName"/>

Just like Chronia Color above, but instead, this uses counter and sliders, and the color does not store in the session.

<chronia.sessionposition x="sliderName" y="sliderName"/>

Sets the decal position through slider values

<chronia.sessionscale x="sliderName" y="sliderName"/>

Sets the decal scale through slider values

<chronia.frameIndexFlag indexes="integers" flags="flag names"/>

So, there is a basic Decal Registry from vanilla named frames, it'll set up the frames by its sequence like 0*20, 1-3, 4, 6.

This registry will set up a flag when certain frame is match.

Using the example mentioned above, the new animation sequence consists of 20 frames of texture 0, and texture 1 to texture 3, then texture 4 and texture 6, that'd be 25 frames in total.

So if I set up <chronia.frameIndexFlag indexes="3,4,5" flags="flagM"/>, flagM will be active when the animation is playing frame 3 (texture 0), frame 4 (texture 0) and frame 5 (texture 0).

<chronia.textureIndexFlag indexes="integers" flags="flag names"/>

This registry is similar to the one above, but instead, it reads the texture index.

Using the same example as above, you should know that no matter it's frame 0 or frame 19, they're all using the same texture, the Texture 0, because the frames are defined like this, the first 20 frames using the Texture 0, so 0 is the texture index of this decal.

Therefore, if I set up <chronia.frameIndexFlag indexes="3,4" flags="flagN"/>, flagN will be active when the animation is playing frame 22 (Texture 3) and frame 23 (Texture 4).

Clone this wiki locally