Block (class)

From PGE Wiki
Jump to: navigation, search

This class provides fields/functions for managing Blocks in the current level.

Block class
Type Function/Field Return values/Value type Description
Constructor myBlock = Block(int internalIndex) Block Construct a new Block-Object. Only use this constructor with caution. Use Block.get() or Block.getIntersecting() instead!
function Block:mem(int offset, int fieldtype, object value) nil Sets a value of the Block struct at a specific address-offset.
function Block:mem(int offset, int fieldtype) object Returns a value of the Block struct at a specific address-offset.
function Block:collidesWith(Player player) int Returns a number with the side of the collision.
0 = no collision,
1 = Player on top of block,
2 = Player touching right side,
3 = Player touching bottom,
4 = Player touching left side.
function Block:remove(boolean playEffectAndSound) nil Destroys/Removes a block. If playEffectAndSound is true, then the destroy sound and effect you normally only see in the level editor is played. (LunaLua ≥ v0.7.1)
function Block:remove() nil Same as Block:remove(false) (LunaLua ≥ v0.7.1)
function Block:hit(boolean fromUpperSide, Player player, number hittingCount) nil Simulates a hit on the block. If fromUpperSide is true, then the block will simulate a hit from the top side. The player argument is needed for blocks like the player-switch block. hittingCount is the number of repeating hits on the block (i.e. when toads hits the block). (LunaLua ≥ v0.7.2)
function Block:hit(boolean fromUpperSide, Player player) nil Simulates a hit on the block. If fromUpperSide is true, then the block will simulate a hit from the top side. The player argument is needed for blocks like the player-switch block. (LunaLua ≥ v0.7.1)
function Block:hit(boolean fromUpperSide) nil Same as Block:hit(fromUpperSide, Player(1)) (LunaLua ≥ v0.7.1)
function Block:hit() nil Same as Block:hit(false, Player(1)) (LunaLua ≥ v0.7.1)
Field Block.x double The x coordinate of the block.
Field Block.y double The y coordinate of the block.
Field Block.speedX double The x-speed of the block.
Field Block.speedY double The y-speed of the block.
Field Block.id number The block-id of the block.
Field Block.contentID number The contents of the block. 0-99 are coin values. 1XXX where XXX is the id of the npc. (i.e. 1099 is the npc with the id 99) (LunaLua ≥ v0.7.2)
Field Block.isHidden boolean Boolean flag if the block is invisible.
Field Block.invisible (Deprecated: Use the above) boolean Boolean flag if the block is invisible.
Field Block.slippery boolean Boolean flag if the block is slippery.
Field (ro) Block.layerName VBStr The layer name of the block.
Field (ro) Block.layerObj Layer The layer object of the block.

Offsets

This is the memory map for the Block struct. This struct is not fully analysed. Any help is appreciated!
Please note that the data is probably not 100% accurate. We'd have to check if the structure SMBX Block+(memory) is actually represented that way in-game.


Block Memory
Name Memory address Memory type Description
SMBX Block+0x00 0x00 FIELD_WORD Makes block slippery
SMBX Block+0x02 0x02 FIELD_WORD Unknown attribute in memory offset 02.
SMBX Block+0x04 0x04 FIELD_WORD How many times the block gets hitted (i.e. when Toad hits the block)
SMBX Block+0x06 0x06 FIELD_WORD Block type 2
SMBX Block+0x08 0x08 FIELD_WORD Content ID related
SMBX Block+0x0A 0x0A FIELD_WORD Unknown 0A
SMBX Block+0x0C 0x0C VB6StrPtr Event that triggers when block is hit.
SMBX Block+0x10 0x10 VB6StrPtr Event that triggers when block is destroyed.
SMBX Block+0x14 0x14 VB6StrPtr Event that triggers when there are no more objects in layer.
SMBX Block+0x18 0x18 VB6StrPtr Name of the layer the block belongs to.
SMBX Block+0x1C 0x1C FIELD_WORD Toggles block visibility. (Hidden layers or destroyed)
SMBX Block+0x1E 0x1E FIELD_WORD Registers block type.
SMBX Block+0x20 0x20 FIELD_DFLOAT Current x-position
SMBX Block+0x28 0x28 FIELD_DFLOAT Current y-position
SMBX Block+0x30 0x30 FIELD_DFLOAT Height
SMBX Block+0x38 0x38 FIELD_DFLOAT Width
SMBX Block+0x40 0x40 FIELD_DFLOAT Current x-speed
SMBX Block+0x48 0x48 FIELD_DFLOAT Current y-speed
SMBX Block+0x50 0x50 FIELD_WORD Registers ID of block contents.
SMBX Block+0x52 0x52 FIELD_WORD Counter for the first half of the bonk animation. Sum with 0x54 for the y offset of the bonk.
SMBX Block+0x54 0x54 FIELD_WORD Counter for the second half of the bonk animation. Sum with 0x52 for the y offset of the bonk.
SMBX Block+0x56 0x56 FIELD_WORD The y offset of the bonking animation. Should equal -(0x52 + 0x54).
SMBX Block+0x58 0x58 FIELD_WORD -1 on the frame after a block has been bonked, but only when bonked by the player.
SMBX Block+0x5A 0x5A FIELD_WORD Triggers block invisibility, type 2. (Invisible flag from the editor - will reappear when hit from below)
SMBX Block+0x5C 0x5C FIELD_WORD Triggers block invisibility, type 3.
SMBX Block+0x5E 0x5E FIELD_WORD Unknown attribute in memory offset 5E.
SMBX Block+0x60 0x60 FIELD_WORD Unknown attribute in memory offset 60.
SMBX Block+0x62 0x62 FIELD_WORD Unknown attribute in memory offset 62.
SMBX Block+0x64 0x64 FIELD_WORD Unknown attribute in memory offset 64.
SMBX Block+0x64 0x66 FIELD_WORD Unknown attribute in memory offset 66.