Some new things: With these things, you can have the game execute a special when the player does something inside its containing sector. The special used is the thing's special. You can place multiple things inside a sector, and they will not cancel each other out. 9998 Player enters the sector 9997 Player leaves the sector 9999 Player hits the floor (or walks onto it from a neigboring sector) 9996 Player hits the ceiling 9995 Player presses +use inside the sector, and there is no wall in range with a special 9994 Player presses +use on a wall, and the wall doesn't have its own special If you set the thing's ambush/deaf bit, monsters can also trigger the thing. If you set the thing's dormant bit, projectiles can also trigger the thing. One use for these is with thing 9999, you can create a teleporter pad that only activates when the player is actually on the pad. Some new internal functions: setmusic (str song, opt int pattern); localsetmusic (str song, opt int pattern); Setmusic changes the music in the game. Localsetmusic works the same, but only effects the player who activated the script. If song is a MOD, then pattern specifies the pattern in the song to start playing at. Otherwise pattern is ignored. Pattern is optional, so you don't need to specify it if you aren't using a MOD. hudmessage (text; int type, int id, int color, fixed x, fixed y, fixed holdTime, ...); hudmessagebold (text; int type, int id, int color, fixed x, fixed y, fixed holdTime, ...); Hudmessage and hudmessagebold both work like print and printbold, except they offer more flexibility. Text is a normal print specification, as used with print(bold). A semicolon separates it from the rest of the function's parameters, because a print specification can build a big string from littler comma-separated parts. Type is the type of message to create; currently, there are 3. ID is an identifier for the message. If id is non-zero, then if a message with that id is already on screen, it will be removed before displaying this message. Color is the color of text to print the message in. X and y specify the location of the message on the screen. Values for x are in the ranges: [ 0.0, 1.0]: Position between left and right edge valid box locations [-1.0, 0.0): Position between left and right edge of screen ( 1.0, 2.0]: Same as [0.0,1.0], but center each line inside box [-2.0, 1.0): Same as [-1.0,0.0), but center each line inside box Valid values for y are: [ 0.0, 1.0]: Position between top and bottom of valid box locations [-1.0, 0.0): Position between top and bottom edge of screen You can think of each message being inside a box. The difference between positive and negative values for these parameters is that positive values position the box the message is in on the screen, and negative values position the left/top edge of the box the message is in. I know that's rather vague, sorry. Here are some examples that will hopefully help. (0.5,0.0) positions the message box in the middle of the screen at the top edge. (0.0,0.5) positions it in the middle along the left edge of the screen. (-0.25,0.0) positions the left edge of the message box 1/4 of the way in from the left side of the screen at the top. (1.5,0.5) centers the box on the screen, and also centers each line inside the box. HoldTime is how long the message stays on screen, in seconds. Note that x, y, and holdtime are all fixed point values, not ints. If you use a decimal point, acc will automatically convert the number to fixed point for you. (Meaning that if you use a value such as 1.0, acc will treat it as if you had used 65536.) You can use FixedDiv and FixedMul to divide and multiply fixed point numbers, just like with the source code. Messages types other than 0 also take additional parameters. For type 1: ..., fixed fadetime); Fadetime is the time, in seconds, that the message takes to fade out after its holdtime is up. For type 2: ..., fixed typetime, fixed fadetime); Typetime is the time, in seconds, that it takes each character of the message to appear on the screen. After every character has been "typed," the message waits for holdtime seconds and then fades out for fadetime seconds. If you want to use these two internal functions, here are some useful #defines: #define CR_UNTRANSLATED -1 #define CR_BRICK 0 #define CR_TAN 1 #define CR_GRAY 2 #define CR_GREY 2 #define CR_GREEN 3 #define CR_BROWN 4 #define CR_GOLD 5 #define CR_RED 6 #define CR_BLUE 7 #define CR_ORANGE 8 #define CR_WHITE 9 #define CR_YELLOW 10 #define HUDMSG_NORMAL 0 #define HUDMSG_FADEOUT 1 #define HUDMSG_TYPEONFADEOUT 2