Stabyourself.net Wiki
Advertisement

Below is a list of most every Custom Enemy property in Mari0: SE.

Properties are formatted in the manner below, though note that the values given are only examples, and not meant to be used in earnest.

"integer": 2 (Can be any whole number)
"decimal": 0.2 (Can be any number with a decimal point)
"boolean": true/false
"string": "text"
"array": [value, "value"]
"^_comment": "ignored by the game"

Although the properties are listed in camel-case, they are case insensitive when used in-game.

Graphics

  • "quadCount": integer Number of frames in enemy.png. Default: 1
  • "noSpriteSets": boolean Graphic will not be vertically split for the 4 spritesets. Default: false
  • "animationType": string Type of animation.
    • "frames"
      • "animationStart": integer First frame from the quads used in normal-state animation
      • "animationFrames": integer Number of frames used in normal-state animation
      • "animationSpeed": decimal (seconds/frame) Frame duration in seconds
    • "mirror"
      • "animationSpeed": decimal (seconds) Time between each mirror of the image
      • "quadNo": integer Frame to use. Default: 1
    • "none"
      • "quadNo": integer Frame to use. Default: 1
  • "dontMirror": boolean Graphic will not get mirrored when moving left
  • "facesPlayer": boolean Graphic will get mirrored to look at the player
  • *"rotateTowardsPlayer": boolean Faces player in all directions
  • doesntUnRotate: boolean The enemy will not rotate back to the default

Positioning

  • "spawnOffsetX": decimal (blocks) X-axis offset from in-editor spawn placement or center of ancestor
  • "spawnOffsetY": decimal (blocks) Y-axis offset from in-editor spawn placement or center of ancestor
  • "width": decimal (blocks) Collision width of the enemy
  • "height": decimal (blocks) Collision height of the enemy
  • "offsetX": decimal (pixels) X-axis offset for the image
  • "offsetY": decimal (pixels) Y-axis offset for the image
  • "quadCenterX": decimal (pixels) X-axis center of quads for rotation
  • "quadCenterY": decimal (pixels) Y-axis center of quads for rotation
  • "customScissor": array[decimal] (blocks) Only draw parts of an enemy. The coordinates are set from top-left of the enemy's block and in blocks.
    • [X start, Y start, width, height]
  • "invertedScissor": boolean The enemy can be seen anywhere but the scissor region

Interaction

  • "speedX": decimal (blocks/second) Initial horizontal speed
  • "speedY": decimal (blocks/second) Initial vertical speed
  • "gravity": decimal (blocks/second2) Negative vertical acceleration
  • "lifetime": decimal (seconds) Lifetime before this enemy is killed
  • "static": boolean Object won't move or be affected by gravity (better performance)
  • "active": boolean Object is updated and can collide (Usually true!)
  • "spawnSound": string Sound that gets played when this enemy is created
    • Filename of the in-game sound, minus file extension. Custom sounds are not supported
  • "autoDelete": boolean Enemy will be auto deleted if too low or behind the screen
  • *"customtimer": array[array] A time-based script to play while the enemy is alive. Main Article

Collisions

  • "category": integer ID used with Masks to determine which entities the enemy collides with
  • "mask": array[boolean] Array of categories masked with this enemy. If enemy.mask[otherenemy.category] is true, the two will not collide.
  • "noCollideStops": boolean Whether this enemy continues motion after collision (useful with bullets for example)
  • "portalable": boolean Whether the enemy goes through portals. Default: true
  • "emancipateCheck": boolean Whether this enemy is emancipated by emancipation grills
  • "ignoreFaithPlates": boolean The enemy will not get launched by Aerial Faith Plates.

Items and Powerups

  • "makesMarioStar": boolean Makes Mario starred on contact
  • "makesMarioGrow": boolean Makes Mario grow into Big or Fire Mario on contact
  • "removeOnMarioContact": boolean Will get removed when Mario touches it
  • *"giveCoinWhenStomped": boolean Gives a coin when stomped
  • *"giveCoinWhenShot": boolean Gives a coin when shot with a fireball

Kills

  • "kills": boolean Whether Mario dies upon any contact with this enemy
  • "killsOnSides": boolean Whether Mario dies upon contact with the sides of this enemy
  • "killsOnBottom": boolean Whether Mario dies upon contact with the bottom of this enemy
  • "killsOnTop": boolean Whether Mario dies upon contact with the top of this enemy
  • "killsEnemies": boolean Kills other enemies on contact
  • "killsEnemiesAfterPortal": boolean Turns on killsEnemies after going through a portal
  • *"breaksBlocks": boolean Whether the enemy will break break bricks
  • *"breakBlockSide": string What side to break
    • "global"
    • "sides"
    • "left"
    • "ceil"

Resistances

  • "laserResistant": boolean Makes this enemy immune to lasers
  • "resistsFire": boolean Makes this enemy immune to Mario's fireballs
  • "resistsStar": boolean Makes this enemy immune to starred Mario
  • "resistsSpikes": boolean Makes this enemy immune to spikes (tile property)
  • "notKilledFromBlocksBelow": boolean Will not die if on a block that gets hit by Mario from below
  • "jumpsFromBlocksBelow": boolean Will jump if on a block that is hit by Mario from below

Movement Modifiers

  • *"reflects": boolean Bounces off of tiles
  • *"staticIfSeen": boolean Becomes static when player faces the enemy
  • *"staticIfNotSeen": boolean Opposite of above

Bounces

  • "bounces": boolean Whether this enemy will bounce every time it hits the floor (like a Star)
  • "bounceForce": decimal (blocks/second) How strong each bounce will make the enemy fly up

Jumps

  • "jumps": boolean The enemy will leap to platforms above and below it, like a Hammer Bro.
  • "jumpTime": decimal How long to stay in the air
  • "jumpForce": decimal Force to jump up
  • "jumpForceDown": decimal Force to jump down

Shell

  • "shellAnimal": boolean Whether this enemy can retract into a shell:
    • "smallMovement": string When stomped and a ShellAnimal, enemy will change to this enemy type
    • "smallSpeed": decimal (blocks/second) Speed when getting kicked or changing directions

Chase

  • *"chaseTime": decimal Chase mario after a x seconds (like hammer bros in SMB)
  • *"chaseSpeed": decimal

Transforms

  • "transforms": boolean The enemy will transform under some condition
  • "transformsInto": string Name of the enemy to transform into
  • *"transformsIntoRandoms": array[string] List of enemies to transform into
  • "transformTrigger": string What condition the enemy will transform under
    • "floorcollide"
    • *"rightcollide"
    • *"leftcollide"
    • *"ceilcollide"
    • *"globalcollide"
    • *"collide"
    • *"death"
    • *"shot"
    • *"lifetime"
    • *"playernear"
    • *"playernotnear"
    • *"seen"
    • *"notSeen"
  • *"transformPassedParameters": array[string?] Parameters that get passed on once the enemy transforms
  • *"playerNearDist": integer Enemy will transform when player is this near (horizontal)
  • *"playerNearDist": array[decimal] Same as above, but as a region
    • [x, y, width, height]
  • *"transformTriggerObjectCollide": string Transforms when it collides with an object
  • *"transformTriggerEnemyCollide": string Transforms when it collides with an enemy

Death

  • "stompComboSuppressor": boolean These enemies won't add to the player's combo of jumping on top of many enemies in a row
  • "stompable": boolean Whether this enemy can be stomped
    • "stompAnimation": boolean Whether the enemy changes to stompedFrame when stomped
    • "stompAnimationTime": decimal Duration of stompedFrame
    • "stompedFrame": integer Frame used when stomped
    • *"fallsWhenStomped": boolean Falls when stomped, even if it has a stomped frame
  • "killedByBoxes": boolean Makes this enemy stompable by cubes (doesn't require Stompable to be true)
  • *"shotJumpForce": decimal Force applied when the enemy is killed with fireballs
  • *"shotSpeedX": decimal X-axis speed applied when the enemy is killed with fireballs

Health

  • *"health": integer How many hits the enemy can take
  • *"shotHealth": integer How many fireballs the enemy can take
  • *"stompHealth": integer How many blows to the head the enemy can take

Spawning

  • "spawnsEnemy": string Name of enemy to spawn.
  • *"spawnsEnemyRandoms": array[string] Spawns a random enemy
  • "spawnEnemyDelays": array[decimal] (seconds) A list of delays from which a random one is chosen every time
  • "throwQuadOffset": integer How much to add to the used quad (If your usual cycle is 1-2-1-2 and you want it to be 3-4-3-4 for the throwing, this is 2!) - this means the throw animation is of the same format as the normal animation
  • "throwPrepareTime": decimal Amount of time before the actual throw that the throwquad is used
  • "spawnEnemyOffsetX": decimal X-axis offset to spawn enemies
  • "spawnEnemyOffsetY": decimal Y-axis offset to spawn enemies

Possible ways to set the speed of spawned enemies

Simple speed

  • "spawnEnemySpeedX": decimal (blocks/second) X-Speed of spawned enemies
  • "spawnEnemySpeedY": decimal (blocks/second) Y-Speed of spawned enemies

Random speed

(Can be random for X and simple for Y for example)

  • "spawnEnemySpeedXRandomStart": decimal (blocks/second) Minimum value of horizontal speed range (negative for left)
  • "spawnEnemySpeedXRandomEnd": decimal (blocks/second) Maximum value of horizontal speed range
  • "spawnEnemySpeedYRandomStart": decimal (blocks/second) Minimum value of vertical speed range
  • "spawnEnemySpeedYRandomEnd": decimal (blocks/second) Maximum value of vertical speed range

Towards nearest player

  • "spawnEnemySpeedXTowardsPlayer": boolean Override child speed X only
  • "spawnEnemyTowardsPlayer": boolean Override child SpeedX and SpeedY
  • "spawnEnemySpeed": decimal (blocks/second) Set child SpeedX and SpeedY accordingly

Movement

  • "movement": string Movement type
  • "movementRandoms": array[string] List of movement types to randomly choose (Overrides Movement)
    • "none" Does not accelerate except by gravity. Use truffleshuffle at speed 0 if you want the enemy to slide to a stop.
    • "truffleshuffle" Moves left and right. Think Goombas or Koopas.
      • "truffleshuffleSpeed": decimal (blocks/second) Speed of horizontal movement
      • "truffleshuffleAcceleration": decimal (blocks/second2 ???) Acceleration of horizontal movement
      • "turnAroundOnCliff": boolean Whether horizontal speed is reversed upon arrival on cliff (like a Red Koopa)
    • "piston" Goes out and in and out and in. Think Piranha Plants.
      • "pistonDistX": decimal Horizontal distance of piston in blocks
      • "pistonDistY": decimal Vertical distance of piston in blocks
      • "pistonSpeedX": decimal Horizontal speed
      • "pistonSpeedY": decimal Vertical speed
      • "pistonExtendTime": decimal Duration of extension
      • "pistonRetractedTime": decimal Duration of retraction
      • "dontPistonNearPlayer": boolean Stay retracted when the player is near
        • "dontPistonDist": decimal Piston won't extend (but will retract) if player is this near
      • "inactiveOnRetracted": boolean Whether the enemy loses spawn and kill properties while retracted
    • "follow" Follows Mario. Think Lakitu.
      • "followSpace": decimal (blocks) The enemy will try to stay inside this many blocks from the player
      • "distanceTime": decimal Multiplied with the player speed to estimate where the player will be in this many seconds, that position is actually used then
      • *"followSpeed": decimal How fast the enemy will follow the Player
      • *"noFollowSpeedUp": boolean Will not speed up when the player is far
    • "shell" Slides all over the place. Think stomped Koopas.
      • "wakesUp": boolean Whether this enemy returns to its initial state
        • "resetTime": decimal (seconds) How long until this enemy wakes up from its shell
        • "wiggleTime": decimal (seconds) How long before waking up the enemy will wiggle
        • "wiggleDelay": decimal (seconds) Time between each wiggle
        • "chaseMarioOnWakeup": boolean Wake up facing the player
    • "squid" Moves down first, then towards player and up. Think Bloopers.
      • "squidFallSpeed": decimal Speed at which this enemy moves down (Phase 1)
      • "squidDownDistance": decimal (blocks) How far the enemy falls down
      • "squidXSpeed": decimal Speed at which this enemy moves right and left (Phase 2)
      • "squidUpSpeed": decimal Speed at which this enemy moves up (Phase 2)
      • "squidHorDistance": decimal (blocks) How far the enemy goes left/right
      • "squidAcceleration": decimal (blocks/second2) How fast the enemy accelerates
    • "rocket" Shoots up, falls down, repeat. Think Podoboos.
      • "rocketDistance": decimal (blocks) How high this enemy will get shot up every time
    • "wiggle" Jogs back and forth. Think Hammer Bros.
      • "wiggleDistance": decimal (blocks) How far to wiggle
      • "wiggleSpeed": decimal (blocks/second) How fast to wiggle
    • "verticalwiggle" Goes up and down within a margin. Think Cheep Cheeps.
      • "verticalWiggleDistance": decimal (blocks) How far this enemy will wiggle downwards
      • "verticalWiggleSpeed": decimal (blocks/second) How fast this enemy wiggles up and down
    • *"flyvertical" Flies up and down. Think Flying Red Koopas.
      • *"flyingTime": decimal Duration of flight
      • *"flyingDistance": decimal Distance of flight
    • *"flyhorizontal" Like above, but horizontally.
      • *"flyingTime": decimal Duration of flight
      • *"flyingDistance": decimal Distance of flight

Other Properties

Properties that don't seem very useful to basic enemy construction, but may be useful when edited using Custom Timers.

  • "customTimerStage": integer Current stage of the Custom Timer
  • "rotation": decimal (radians) Rotation of the enemy. Will rotate back to 0
  • "gravityDirection": decimal (radians) Sets the direction of gravity for the enemy, as with Purple Gel.
  • "shot": boolean Whether the enemy has been shot with a fireball; if set to true, the enemy will die instantly.
  • "kill": boolean Whether the enemy has been killed; if set to true, the enemy will dissappear instantly.
  • "outtable": array Used by Item Dispensers for respawning; can be set to an empty array to disable the respawn
  • "x": decimal The X-axis position of the enemy; immediately overwritten, but can be set with Custom Timers
  • "y": decimal The Y-axis position of the enemy; immediately overwritten, but can be set with Custom Timers
  • "spawnAllow": boolean Whether the enemy can throw enemies, uses throw quad; immediately overwritten, but can be set with Custom Timers


Properties to test

Undocumented properties found in the game code. May or may not actually work, or may just require further testing.

  • "startTowardsPlayerHorizontal"
  • "speedxtowardsplayer"
  • "kill" - Test with transforms
  • "shot" - Test with transforms
  • "spawnOnlyOnExtended" - Was in the blogpost, so it should work.
  • "direction" - nothing, test with customtimers
  • "animationdirection" - nothing, test with customtimers
More
  • "combo"
  • "falling"
  • "customtimertimer"
  • "currentcustomtimerstage"
  • "quad" - nothing, test with customtimers
  • "quadi"
  • "animationtimer"
  • "deathtimer"
  • -with shellanimal-
    • "upsidedown"
    • "resettimer"
    • "wiggletimer"
    • "wiggleleft"
  • "spawnedenemies"
  • "pistontimer"
  • "pistonstate"

Further Reading

Advertisement