How to use: add the wanted codes with their values on their own lines. Create a .txt file in the graphics folder for the level and name it after the NPC (if you want to apply codes to Goomba, name the .txt file as NPC-1). Example:
playerblocktop=0
nofireball=1
jumphurt=1
score=6
The player would be able to walk on the Goomba, the Goomba would be invulnerable to fireballs, the Player would get hurt on top of it and the Goomba would add 1000 points to the player's total points when killed.
Here's the list of possible NPC codes. When applying 1 or 0, 1 means yes and 0 means no.
gfxoffsetx=[+/- numbers] (moves the graphic in the x direction)
gfxoffsety=[+/- numbers] (moves the graphic in the y direction)
width=[+ numbers] (NPC's width)
height=[+ numbers] (NPC's height)
gfxwidth=[+ numbers] (graphics width)
gfxheight=[+ numbers] (graphics height)
score=[1-12] (score you get by killing: 10 100 200 400 800 1000 2000 4000 8000 1up 2up 5up)
playerblock=[1,0] (makes NPCs act like blocks to the players)
playerblocktop=[1,0] (makes the player able to stand on the NPC)
npcblock=[1,0] (makes the NPC act like a block to other NPCs)
npcblocktop=[1,0] (makes NPCs able to stand on the NPC)
grabside=[1,0] (gives the player the ability to grab NPCs from the side)
grabtop=[1,0] (gives Mario the ability to grab NPC's like shy guys)
jumphurt=[1,0] (if set to 1, the player gets hit from landing on the enemy)
nohurt=[1,0] (if true the NPC doesn't hurt you)
noblockcollision=[1,0] (if true the NPC doesn't interact with blocks)
cliffturn=[1,0] (if true enemy turn on a cliff)
noyoshi=[1,0] (if true you can't eat the NPC)
foreground=[1,0] (if true the NPC is in front of everything)
speed=[+/- numbers] - how fast the NPC moves (the number is what the speed is multiplied by: 0 = no speed, 1 = default, 2 = twice as fast as default, 3 = thrice as fast etc.* Negative values make it move backwards.)
nofireball=[1,0] (if true the NPC can't be killed by fireballs)
nogravity=[1,0] (if true the NPC walks in the air)
frames=[+ number] (sets the number of frames the NPC should have)
framespeed=# - how fast the NPC animates (0-7 are eighths of the default speed, 8 is the default speed and 9 and bigger are the default speeds multiplied**)
framestyle=[0,1,2] (names the style the frames should switch***)
noiceball=[1,0] (if true enemy can't freeze when an ice ball touches it)
*Speed value clarification:
- speed=0 - the NPC stands still. If the player is able to stand on this NPC (playerblocktop=1), the NPC acts like a conveyor belt to the player (and other NPCs).
speed=1 - does no change to the NPCs speed. It's like multiplying the speed by 1 which does nothing if you know maths at all.
speed=2 - makes the NPC twice as fast as the original speed.
speed=3 - makes the NPC thrice as fast as the original speed (and so on).
So, basically, the value you put to the speed= code is the number that the speed is multiplied by.
Also, some people like to use decimals (e.g. 1.5) in the speed= NPC code, because without them you can't change the NPCs speed to other than 200%, 300%, 400% etc. and, what's more important, you can't make the NPC slower. E.g. with the value 0.5 you can make the NPC two times slower, and with 1.5 you can make the NPCs speed one and half times higher. Decimals work on some people, but on a good portion of people, they make the level crash on load.
So, do not use decimals in NPC codes. It causes crashing on some people. Thank you.
**Frame speed value clarification:
- framespeed=1 - eight times faster than the original frame speed.
framespeed=2 - four times faster than the original speed.
...
framespeed=4 - two times faster than the original speed.
...
framespeed=8 - normal. No changes to the framespeed.
...
framespeed=16 - half as fast as the original framespeed.
So, if you're good at maths, you can see that the framespeed= values are eights of the original frame frequencies. 1 makes it 8 times faster, 8 does nothing and 16 makes it twice as slow. So, in percentage, the values would go like this:
- framespeed=1 - 800%
framespeed=2 - 400%
framespeed=3 - 267% (rounded)
framespeed=4 - 200%
framespeed=5 - 160%
framespeed=6 - 133% (rounded)
framespeed=7 - 114% (rounded)
framespeed=8 - 100%
framespeed=9 - 89% (rounded)
framespeed=10 - 80%
framespeed=11 - 73% (rounded)
framespeed=12 - 67% (rounded)
framespeed=13 - 62% (rounded)
framespeed=14 - 57% (rounded)
framespeed=15 - 53% (rounded)
framespeed=16 - 50%
***Framestyle number meanings:
- framestyle=0 - acts like a goomba, means, both left and right movement use the same sprite.
franestyle=1 - the NPC have sprites for both left and right, the first half of the sprite sheet is for left movement, the later half is for the right movement.
framestyle=2 - NPC has both left and right movement, and upside down movement for when the NPC is grabbed (such as the SMB2 enemies).
Also, the value 0 on the NPC codes with a "no" beginning won't do anything. EXCEPT:
- Most SMB2 enemies can be made vulnerable to fireballs by applying nofireball=0.
- The donut block and conveyor belt NPCs can be made hurtful by applying nohurt=0.