-- == "ggsign.lua" by TehRealSalt: GG, Sign. == -- == Reusable as long as you give credit. == freeslot("S_SIGN_RINGDUMMY") states[S_SIGN_RINGDUMMY] = {SPR_RING, A, 1, nil, 0, 27, S_SIGN_RINGDUMMY} function A_SignPlayer(actor) if not (actor.target or actor.target.player) return end local player = actor.target.player local overlay = P_SpawnMobj(actor.x, actor.y, actor.z, MT_OVERLAY) overlay.target = actor local bg,f if not player.gothit if modeattacking P_AddPlayerScore(player, 50000) S_StartSound(actor.target, sfx_token, player) else P_GivePlayerLives(player, 1) P_PlayLivesJingle(player) end bg,f = ColorOpposite(player.skincolor) overlay.color = player.skincolor overlay.skin = actor.target.skin overlay.state = actor.info.seestate elseif player.health - 1 >= 50 if multiplayer P_AddPlayerScore(player, 10000) S_StartSound(actor.target, sfx_token, player) else player.continues = $ + 1 S_StartSound(actor.target, sfx_flgcap, player) end local s = P_RandomRange(0, #skins-1) while skins[s].name == actor.target.skin s = $ + 1 if s >= #skins s = 0 end end s = skins[$] bg,f = ColorOpposite(s.prefcolor) overlay.color = s.prefcolor overlay.skin = s.name overlay.state = actor.info.seestate elseif ((player.health - 1) % 10 == 0 and player.health - 1 > 0) P_GivePlayerRings(player, 10) S_StartSound(actor.target, sfx_itemup, player) bg,f = ColorOpposite(SKINCOLOR_ORANGE) -- Use SKINCOLOR_GOLD if that ever gets an opposite color overlay.state = S_SIGN_RINGDUMMY else S_StartSound(actor.target, sfx_lose, player) bg = SKINCOLOR_NONE actor.frame = D end actor.color = bg if f then actor.frame = $ + f end end local function playerGotHit(mo) if not mo.player return end local player = mo.player if player.timeshit player.gothit = true elseif (player.gothit == nil) or not (player.starpostnum) player.gothit = false end local soundlist = (sfx_flgcap or sfx_token or sfx_itemup or sfx_lose) if ((player.exiting > 0 and player.exiting <= 3) and (S_SoundPlaying(mo, soundlist) or player.powers[pw_extralife])) player.exiting = $ + 1 end end addHook("MobjThinker", playerGotHit, MT_PLAYER)