binding-of-isaac/README.md

102 lines
3.3 KiB
Markdown

# --| Controls |--
- in-game:
**WASD/ZQSD** (depends on keyboard, usually WASD) - movement
**QE/AE** (depends on keyboard, usually QE)- horizontal camera rotation
**PM** - vertical camera rotation
**R** - ***teleport to level_00***
**ESC** - exit application
- while in menus:
<!> when editing a value : **A** (add), **S** (subtract), **M** (multiply), **D** (divide), **ENTER/SPACE** (proceed)
# --| Syntax for level files |--
1) **General rules**
. each file must be named "room_k" where k is a positive integer
if "room_k" exists then all "room_u" where 0 <= u < k exists
. you can add text at the end of each line as comments
but *do not use caps*, *this might confuse the parser*
2) **Data structure**
below is a detailled list for all block types ;
each block type (Blocks, Teleporters, Entities) must have the corresponding word directly above it
not all three keywords have to be written
*Data-specific structure :*
```
blocks:
[x, y, z, w, h, d, rhz, rvt, r, g, b]
teleporters:
[x, y, z, w, h, d, rhz, rvt, r, g, b, dest_chx, dest_chy]
entities:
[x, y, z, w, h, d, rhz, rvt, r, g, b, hp, damage, entityType ..]
|> if entityType >= 4, use 1 for HP and 0 for damage <|
|> *Entity types are :* <|
-> 0 (coin) -> damage equals the coin's value
-> 1 (non-moving explosive)
-> 2 (damaging firebar/spinning platform (set damage to 0))
[.. hz_rps, vt_rps, x_offset, y_offset, z_offset, dps] with
{hz,vt}_rps = double
hz0, vt_0 = double
{x,y,z}_offset = double // if all is 0.0, the solid will rotate according to its center of mass, this shifts that center
dps = int[>0]
-> 3 (shooting, maybe moving explosive)
[.. proj_speed, shoot_speed, shot_freq, shot_ttl] with
{all} = double[>= 0.0]
-> 4 (moving platform)
[.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase] with *<- extra arguments at the end of []*
amplitude_{x,y,z} = double[>= 0.0]
{mult,divd} = int
{phase} = int[0, 360]
-> 5 (linear moving platform)
[.. amplitude_x, amplitude_y, amplitude_z, speed_x, speed_y, speed_z] with
amplitude_{x,y,z} = double[>= 0.0]
speed_{x,y,z} = double
-> 6 (text box)
[.. text, tred, tgreen, tblue] with
text = {char*}
-> 7 (warp text box)
[.. dest_folder, room_count, text, tred, tgreen, tblue] with
{dest_folder,text} = {char*} (length <= 50)
{r,g,b} = int[0-256]
-> 8 (lock box)
[.. cost, doPay, tred, tgreen, tblue] with
cost = int[> 0] (0 breaks)
doPay = {0, 1} (bool)
-> 9 (beat block)
[.. ontime, offtime, start] with
{ontime,offtime} = double[>0.0]
start = {0,1}
-> 10 UNUSED
-> 11 (button trigger)
[.. freq, dtime] with
freq = int[0 - 15]
dtime = double([>0.0] for time-limited press, or use -1.0 if no deactivation)
-> 12 (button block)
[.. freq, defaultState] with
freq = int[0 - 15]
defaultState = {0, 1}
-> 13 (math block)
[.. defaultState, timeOff] with
defaultState = {0, 1}
dtime = double([>0.0] for time-limited press, or use -1.0 if no deactivation)
```