local pals = {SKINCOLOR_CHERRY,SKINCOLOR_RED,SKINCOLOR_FLAME, SKINCOLOR_ORANGE,SKINCOLOR_TOPAZ,SKINCOLOR_GOLD,SKINCOLOR_YELLOW, SKINCOLOR_LIME,SKINCOLOR_PERIDOT,SKINCOLOR_GREEN,SKINCOLOR_AQUA, SKINCOLOR_OCEAN,SKINCOLOR_TEAL,SKINCOLOR_CYAN,SKINCOLOR_SKY, SKINCOLOR_CERULEAN,SKINCOLOR_BLUE,SKINCOLOR_GALAXY,SKINCOLOR_PURPLE, SKINCOLOR_SIBERITE,SKINCOLOR_MAGENTA,SKINCOLOR_ROSY,SKINCOLOR_RASPBERRY} local function spawn(mo) mo.colorized = true mo.frame = $|FF_FULLBRIGHT end local function colorEfx(mo) local pattern = fixint(P_AproxDistance(P_AproxDistance(mo.x,mo.y),mo.z)/10) pattern = $+leveltime/(TICRATE/6) mo.color = pals[(pattern%#pals)+1] end local function fullEfx(mo) colorEfx(mo) if mo.type != MT_SPARK and leveltime%2 == 0 and (mo.ghostpos == nil or mo.ghostpos != mo.x+mo.y+mo.z) local fuse = TICRATE/3 local t = P_SpawnMobjFromMobj(mo,0,0,0,MT_GHOST) mo.ghostpos = t.x+t.y+t.z t.fuse = fuse t.colorized = true t.color = mo.color t.state = mo.state t.tics = mo.tics t.alpha = t.fuse/fuse*FU t.frame = $|FF_FULLBRIGHT & ~FF_TRANSMASK t.blendmode = AST_ADD t.dispoffset = mo.dispoffset+1 end end addHook('MobjSpawn',spawn,MT_RING) addHook('MobjSpawn',spawn,MT_FLINGRING) addHook('MobjThinker',fullEfx,MT_RING) addHook('MobjThinker',fullEfx,MT_FLINGRING)