freeslot("MT_MYSELFMOBJ", "MT_MYSELFFOLLOWMOBJ") mobjinfo[MT_MYSELFMOBJ] = { doomednum = -1, spawnstate = S_INVISIBLE, spawnhealth = 1000, reactiontime = 8, radius = 32*FRACUNIT, height = 64*FRACUNIT, mass = 16, dispoffset = 1, flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY } mobjinfo[MT_MYSELFFOLLOWMOBJ] = { doomednum = -1, spawnstate = S_INVISIBLE, spawnhealth = 1000, reactiontime = 8, radius = 32*FRACUNIT, height = 64*FRACUNIT, mass = 16, dispoffset = 1, flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY } addHook("MobjThinker", function(ysifp) for player in players.iterate if player.bot < 1 ysifp.target = player.mo end end ysifp.tracer = ysifp.target ysifp.skin = ysifp.target.skin ysifp.sprite = ysifp.target.sprite ysifp.sprite2 = ysifp.target.sprite2 ysifp.frame = ysifp.target.frame ysifp.color = ysifp.target.color ysifp.colorized = ysifp.target.colorized ysifp.drawangle = ysifp.target.player.drawangle ysifp.rollangle = ysifp.target.rollangle ysifp.destscale = ysifp.target.destscale ysifp.spritexscale = ysifp.target.spritexscale ysifp.spriteyscale = ysifp.target.spriteyscale ysifp.spritexoffset = ysifp.target.spritexoffset ysifp.spriteyoffset = ysifp.target.spriteyoffset if ysifp.target.player.powers[pw_flashing] or camera.chase == true or player.mo.sprite2 == SPR2_ROLL or ((player.mo.sprite2 == SPR2_SPIN) and (player.mo.skin != "mario") and (player.mo.skin != "luigi")) if (leveltime % 2) or camera.chase == true or player.mo.sprite2 == SPR2_ROLL or ((player.mo.sprite2 == SPR2_SPIN) and (player.mo.skin != "mario") and (player.mo.skin != "luigi")) ysifp.flags2 = $|MF2_DONTDRAW else ysifp.flags2 = $ & ~MF2_DONTDRAW end else ysifp.flags2 = $ & ~MF2_DONTDRAW end if ysifp.target.player.playerstate == PST_LIVE A_CapeChase(ysifp) else ysifp.state = S_NULL end end, MT_MYSELFMOBJ) addHook("MobjThinker", function(ysifp) for player in players.iterate if player.bot < 1 ysifp.target = player.followmobj end end ysifp.tracer = ysifp.target for player in players.iterate ysifp.skin = player.mo.skin end ysifp.sprite = ysifp.target.sprite ysifp.sprite2 = ysifp.target.sprite2 ysifp.frame = ysifp.target.frame ysifp.color = ysifp.target.color ysifp.colorized = ysifp.target.colorized ysifp.drawangle = ysifp.target.drawangle ysifp.rollangle = ysifp.target.rollangle ysifp.destscale = ysifp.target.destscale ysifp.spritexscale = ysifp.target.spritexscale ysifp.spriteyscale = ysifp.target.spriteyscale ysifp.spritexoffset = ysifp.target.spritexoffset ysifp.spriteyoffset = ysifp.target.spriteyoffset if ysifp.target.player.powers[pw_flashing] or camera.chase == true or player.mo.sprite2 == SPR2_ROLL or ((player.mo.sprite2 == SPR2_SPIN) and (player.mo.skin != "mario") and (player.mo.skin != "luigi")) if (leveltime % 2) or camera.chase == true or player.mo.sprite2 == SPR2_ROLL or ((player.mo.sprite2 == SPR2_SPIN) and (player.mo.skin != "mario") and (player.mo.skin != "luigi")) ysifp.flags2 = $|MF2_DONTDRAW else ysifp.flags2 = $ & ~MF2_DONTDRAW end else ysifp.flags2 = $ & ~MF2_DONTDRAW end for player in players.iterate if player.playerstate == PST_LIVE A_CapeChase(ysifp) else ysifp.state = S_NULL end end end, MT_MYSELFFOLLOWMOBJ) addHook("PlayerSpawn", function(player) P_SpawnMobjFromMobj(player.mo, 0,0,0, MT_MYSELFMOBJ) if player.followmobj P_SpawnMobjFromMobj(player.mo, 0,0,0, MT_MYSELFFOLLOWMOBJ) end end) addHook("PlayerThink", function(player) if player.mo and player.mo.valid if camera.chase != true if player.mo.sprite2 == SPR2_ROLL or ((player.mo.sprite2 == SPR2_SPIN) and (player.mo.skin != "mario") and (player.mo.skin != "luigi")) camera.z = player.mo.z + (player.mo.height/2) else camera.z = player.mo.z + (player.mo.height-FRACUNIT/4) end player.drawangle = player.mo.angle player.viewrollangle = -player.mo.rollangle end end end)