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 if (leveltime % 2) or camera.chase == true ysifp.flags2 = $|MF2_DONTDRAW else ysifp.flags2 = $ & ~MF2_DONTDRAW end else ysifp.flags2 = $ & ~MF2_DONTDRAW end if ysifp.target.sprite2 == SPR2_ROLL or ysifp.target.sprite2 == SPR2_SPIN ysifp.flags2 = $|MF2_DONTDRAW end if ysifp.target.player.playerstate == PST_LIVE A_CapeChase(ysifp) P_InstaThrust(ysifp, ysifp.target.player.drawangle-ANG30-ANG30-ANG30-ANG30-ANG30-ANG30, 4*FRACUNIT) 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 if (leveltime % 2) or camera.chase == true 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) P_InstaThrust(ysifp, player.drawangle-ANG30-ANG30-ANG30-ANG30-ANG30-ANG30, 4*FRACUNIT) 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 COM_BufInsertText(player, "movebob 0") if camera.chase != true player.drawangle = player.mo.angle player.viewrollangle = -player.mo.rollangle end end end)