Event
┗> Object > Class
Events are used as the base class for objects in the Overworld (in most cases)
Custom events should be defined in scripts/world/events
and extend from this class. They will receive an id based on their filepath from this location.
Custom events only ever recieve a data
argument in their init()
function that contains all of the data about the object in the map.
Included in the data
table is the properties
table, which contains every property in the object's Custom Properties
in Tiled.
Events can be placed in maps by placing a shape on any objects
layer and setting its name to the id of the event that should be created.
Constructor
Event(x: number?, y: number?, width: number?, height: number?)
@param shape
— Shape data for this event. First two indexes are the width and height of the object. The third (optional) index is polygon data.
Arguments:
x: number? | |
y: number? | |
width: number? | |
height: number? |
Methods
Event:addFlag(flag: string, amt: number?)
Adds amount
to a numeric flag named flag
(or defines it if it does not exist)
This variant of Game:addFlag()
interacts with flags specific to this event's unique id
@param flag
— The name of the flag to add to
@param amt
— (Defaults to 1
)
Arguments:
flag: string | The name of the flag to add to |
amt: number? | (Defaults to |
Returns:
new_value: number |
Event:flash(sprite: Sprite?, offset_x: number?, offset_y: number?, layer: number?)
Causes this event to flash once
@param sprite
— An optional sprite to use for the flash instead of the event's default sprite.
Arguments:
sprite: Sprite? | An optional sprite to use for the flash instead of the event's default sprite. |
offset_x: number? | |
offset_y: number? | |
layer: number? |
Returns:
1: FlashFade |
Event:getFlag(flag: string, default: any)
Gets the value of the flag named flag
, returning default
if the flag does not exist
This variant of Game:getFlag()
interacts with flags specific to this event's unique id
Arguments:
flag: string | |
default: any |
Returns:
1: unknown |
Event:getUniqueID()
Gets this Event
instance's unique id within the whole mod
The returned id follows the format #[map.id](file:///vercel/path0/tmp/kristal/luadoc_meta/class.lua#26)#[object_id](file:///vercel/path0/tmp/kristal/src/engine/game/world/event.lua#11)
if a custom unique_id
is not defined
Returns:
id: string? |
Event:onAdd(parent: Object)
Called when the event is added as the child of another object
Arguments:
parent: Object | The base class of all objects in Kristal. |
Event:onCollide(player: Player, DT: number)
(Override) Called every frame the player and event are colliding with each other
Arguments:
player: Player | The character controlled by the player when in the Overworld. |
DT: number |
Event:onEnter(player: Player)
(Override) Called whenever the player enters this event
Arguments:
player: Player | The character controlled by the player when in the Overworld. |
Event:onExit(player: Player)
(Override) Called whenever the player leaves this event
Arguments:
player: Player | The character controlled by the player when in the Overworld. |
Event:onInteract(player: Player, dir: string)
(Override) Called whenever the player interacts with this event
@param player
— The interacting Player
@param dir
— The direction the player is facing
@return blocking
— Whether this interaction should prevent other events in the interaction region activating with this frame
Arguments:
player: Player | The interacting |
dir: string | The direction the player is facing |
Returns:
blocking: boolean | Whether this interaction should prevent other events in the interaction region activating with this frame |
Event:onLoad()
Runs once the map has finished loading
Event:onRemove(parent: Object)
Called when the event is removed
Arguments:
parent: Object | The base class of all objects in Kristal. |
Event:postLoad()
Runs once the entire world has finished loading
Event:setFlag(flag: string, value: any)
Sets the value of the flag named flag
to value
This variant of Game:setFlag()
interacts with flags specific to this event's unique id
Arguments:
flag: string | |
value: any |
Event:setSprite(texture: string?, speed: number?, use_size: boolean?)
Changes the object's sprite
@param texture
— The name of the new texture to set, removes the object's sprite if nil
@param speed
— The speed at which the new sprite should animate if it has multiple frames
@param use_size
— Whether to use the sprite's size for the event's size (defaults to true
)
Arguments:
texture: string? | The name of the new texture to set, removes the object's sprite if |
speed: number? | The speed at which the new sprite should animate if it has multiple frames |
use_size: boolean? | Whether to use the sprite's size for the event's size (defaults to |
Event:shake(x: number?, y: number?, friction: number?, delay: number?)
Shakes this Event
by the specified amount, shaking the sprite instead if it exists
@param x
— The amount of shake in the x
direction. (Defaults to 4
)
@param y
— The amount of shake in the y
direction. (Defaults to 0
)
@param friction
— The amount that the shake should decrease by, per frame at 30FPS. (Defaults to 1
)
@param delay
— The time it takes for the object to invert its shake direction, in seconds. (Defaults to 1/30
)
Arguments:
x: number? | The amount of shake in the |
y: number? | The amount of shake in the |
friction: number? | The amount that the shake should decrease by, per frame at 30FPS. (Defaults to |
delay: number? | The time it takes for the object to invert its shake direction, in seconds. (Defaults to |
Event:shakeSelf(x: number?, y: number?, friction: number?, delay: number?)
Shakes this event by the specified amount
@param x
— The amount of shake in the x
direction. (Defaults to 4
)
@param y
— The amount of shake in the y
direction. (Defaults to 0
)
@param friction
— The amount that the shake should decrease by, per frame at 30FPS. (Defaults to 1
)
@param delay
— The time it takes for the object to invert its shake direction, in seconds. (Defaults to 1/30
)
Arguments:
x: number? | The amount of shake in the |
y: number? | The amount of shake in the |
friction: number? | The amount that the shake should decrease by, per frame at 30FPS. (Defaults to |
delay: number? | The time it takes for the object to invert its shake direction, in seconds. (Defaults to |
Event:stopShake()
Stops this event or its sprite from shaking
Event:stopShakeSelf()
Stops a shake applied directly to this event
Fields
Event.sprite: Sprite?
A simple object that renders a texture.
This texture must be placed inside assets/sprites/
.
Event.world: World
The world that this event is contained in