OPENTYRIAN2000 / ENHANCED WIKI Site EN · wiki in English Download
Wiki / Modding / Level events
Modding

Tyrian modding: level events

A mod can add events to an original level or replace its whole event list. Events are written by name; the map itself (the tiles) cannot be changed yet.

The level file

Each level file is levels/epN_NN.json in the mod, where N is the episode (1 to 5) and NN the level file number. Every level on the episode pages shows its file name; for example the first level of episode 1, TYRIAN, is ep1_09.

{ "episode": 1, "lvl_file_num": 9,
  "add_events": [ { "time": 300, "spawn": "my_drone", "x": 130 },
                  { "time": 300, "spawn": "tech_corridor_32", "x": "random", "link": 3 } ] }
KeyMeaning
eventsReplaces the original event list.
add_eventsInserted into the original list, each one after the original events of the same time.
random_enemies (40 at most)Replaces the level's random enemies (enemy names).

Writing an event

The level editor's Export to the mod button writes this same format, and every original level exported and read back plays identically.

Spawning enemies

Most mods only need the spawn events. They differ by the layer the enemy belongs to:

All take x (a position, "random" or "none"), y_speed, link, y and fixed_move_y. The link number groups enemies so that later events (move_enemies, set_armor, boss_bar…) can act on them together.

All event types

Type keyMain valueOther parameters
nothingtrue
starfield_speedspeed
scroll_speedbackback2, back3
scroll_slowtrue
stop_maplayers
load_banksbank1 (bank NAME or null)bank2 (bank NAME or null), bank3 (bank NAME or null), bank4 (bank NAME or null)
spawn_groundenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
spawn_topenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
stars_offtrue
stars_ontrue
spawn_ground2enemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
end_levelimmediate
spawn_2x2enemy (enemy NAME)x ("random", "none"), y_speed, link, y, layer ("ground", "sky", "top", "ground2")
random_enemies_offtrue
random_enemies_ontrue
spawnenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
textmessage
spawn_ground_bottomenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
spawn_bottomenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
move_enemiesx_speed ("keep")y_speed ("keep"), targets ("ground", "sky", "top", "all", { "picked": n }), link, cycle, fixed_move_y ("zero")
accelerate_enemiesx ("keep")y ("keep"), targets ({ "picked": n }), link, cycle, animation
background3_overtrue
background3_undertrue
spawn_top_bottomenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
animate_enemiesanimationcycle, mode, link
set_armorarmorlink
small_enemy_adjuston
reverse_enemiesx ("keep")y ("keep"), color ({ "picked": n }), link
top_enemies_undertrue
top_enemies_overtrue
scroll_speed_keep_stopbackback2, back3
fire_raterate1rate2, rate3, link ("all"), launch_rate
spawn_top_lowenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
drop_on_deathenemy (enemy NAME)link
music_fadetrue
musicsong
end_level_when_cleartrue
random_enemy_raterate
jump_totime
relinkfromto
continual_damagetrue
clear_enemiessky_only
background3_mode2true
background2_overmode
color_filtermodecolor, brightness, new_color, brightness_change, fade_start
drop_on_death_multiplayerenemy (enemy NAME)link
difficultychangecondition, damage_rate
set_armor_plainarmorlink
background2_opaquetrue
custom_enemy_groundimagex ("random", "none"), bank (bank NAME or null), link, y, armor
custom_enemyimagex ("random", "none"), bank (bank NAME or null), link, y, armor
custom_enemy_topimagex ("random", "none"), bank (bank NAME or null), link, y, armor
custom_enemy_ground2imagex ("random", "none"), bank (bank NAME or null), link, y, armor
force_eventsmode ("off")
jumptime ("return")
set_accelerationx ("keep")y ("keep"), targets ({ "picked": n }), link
spawn_ground2_lowenemy (enemy NAME)x ("random", "none"), y_speed, link, y, fixed_move_y
jump_on_boss_deathtime
set_launchenemy (enemy NAME)link ("all")
replace_enemiesenemy (enemy NAME)link
special_enemyflagset, link
skip_if_flagflagvalue, skip
soundsound
skip_if_one_playerskip
smoothieeffecton, data
background3_1x1mode
skip_by_difficultydifficultyskip
level_timerontarget, seconds
invulnerableticks
jump_if_clearedtimelink1, link2, link3
jump_if_map_beforetimeposition
background3_variant_bon
sky_enemies_over_allon
bouncex_max ("keep")y_max ("keep"), link, x_min ("keep"), y_min ("keep")
pick_random_linkfromto, slot (0..9), skip
return_when_cleartrue
set_map_positionyy2
galaga_fire_ratetrue
boss_barlinklink2
skip_if_two_playersskip
wrap_background2fromto
give_specialspecial (special NAME)
timed_battle_timerontarget, seconds
timed_battle_dropenemy (enemy NAME)link
random_explosionson

85 event types.

Limits

A level file holds at most 2500 events and 40 random enemies, and a mod at most 64 level files.