actor RLRandomGib
{
    +NotOnAutomap
    +NOCLIP
    +NOSECTOR
    +NOBLOCKMAP
    +NOINTERACTION
    Radius 0
    Height 0
    States
    {
    Spawn:
        TNT1 A 0 NoDelay A_Jump (256, 1,2,3,4,5,6,7,8,9,10,11,12,13)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib1", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib2", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib3", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib4", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib5", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib6", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib7", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib8", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib9", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib10", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib11", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib12", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
        TNT1 A 0 A_SpawnItemEx ("RLGib13", 0,0,0, VelX,VelY,VelZ, 0,
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
    }
}

actor RLTheHungryGibber : RLRandomGib
{
    States
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib1", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib2", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib2B", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib3", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib4", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib4B", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib5", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx ("RLTheHungryGib6", FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
				 VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3), FRandom(0,360),
            SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
        Stop
    }
}

actor RLGibber
{
    +NotOnAutomap
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", 20)
        TNT1 A 0 A_Jump (24, "Overload")
        TNT1 A 0 A_PlaySound ("gibbage/xsplat")
        TNT1 A 0 A_CheckSight ("Underload")
        Goto MainLoop
    Overload:
        TNT1 A 0 A_SetUserVar ("user_maxcount", 50)
        Goto MainLoop
    Underload:
        TNT1 A 0 A_SetUserVar ("user_maxcount", 10)
        Goto MainLoop
    MainLoop:
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 AAA 0 A_SpawnItemEx ("RLRandomGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 1 A_SpawnItemEx ("RLRandomGib", 
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

actor RLGibber2
{
    +NotOnAutomap
    radius 4
    height 8
    states
    {
    Spawn:
        TNT1 AAAAA 0 NoDelay A_SpawnItemEx ("RLRandomGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX,VelY,VelZ, FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION, 64)
        Stop
    }
}

actor RLSpectreGibber
{
    RenderStyle OptFuzzy
    Alpha 0.5
    +NotOnAutomap
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", 20)
        TNT1 A 0 A_Jump (24, "Overload")
        TNT1 A 0 A_PlaySound ("gibbage/xsplat")
        TNT1 A 0 A_CheckSight ("Underload")
        Goto MainLoop
    Overload:
        TNT1 A 0 A_SetUserVar ("user_maxcount", 50)
        Goto MainLoop
    Underload:
        TNT1 A 0 A_SetUserVar ("user_maxcount", 10)
        Goto MainLoop
    MainLoop:
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 AAA 0 A_SpawnItemEx ("RLRandomGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 1 A_SpawnItemEx ("RLRandomGib", 
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

actor RLDuke2Gibber
{
    +NOTONAUTOMAP
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", random(6,9))
        Goto MainLoop
    MainLoop:
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 A 0 A_SpawnItemEx ("RLDuke2Gib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION, 24)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

actor RLDuke2RedGibber
{
    +NOTONAUTOMAP
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", random(6,9))
        Goto MainLoop
    MainLoop:
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 A 0 A_SpawnItemEx ("RLDuke2RedGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION, 24)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

actor RLDuke2BlueGibber
{
    +NOTONAUTOMAP
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", random(6,9))
        Goto MainLoop
    MainLoop:
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 A 0 A_SpawnItemEx ("RLDuke2BlueGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION, 24)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

// Reduced Kibbles
actor RLReducedGibber
{
    +NOTONAUTOMAP
    radius 4
    height 8
    var int user_maxcount;
    states
    {
    Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CallACS("DRLA_Gibs"), 1)
		stop
        TNT1 A 0 A_SetUserVar ("user_maxcount", 10)
        TNT1 A 0 A_PlaySound ("gibbage/xsplat")
    MainLoop:
        TNT1 A 0 A_CheckSight ("Death")
        TNT1 A 0 A_JumpIf (user_maxcount <= 0, "Death")
        TNT1 AAA 0 A_SpawnItemEx ("RLRandomGib",
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 1 A_SpawnItemEx ("RLRandomGib", 
            FRandom(-16,16),FRandom(-16,16),FRandom(0,56),
            VelX+FRandom(-3,3),VelY+FRandom(-3,3),VelZ+FRandom(-3,3),
            FRandom(0,360), SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERALPHA | SXF_TRANSFERRENDERSTYLE | SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION, 64)
        TNT1 A 0 A_SetUserVar ("user_maxcount", user_maxcount - 1)
        Loop
    Death:
        TNT1 A 3
        Stop
    }
}

// Crush effect
/*
actor OhSnap replaces RealGibs
{
    radius 20
    height 56
    +NOCLIP
    states
    {
    Spawn:
        TNT1 A 0
        // TNT1 A 0 ACS_ExecuteAlways(998)
        TNT1 A 0 A_PlaySound("gibbage/xsplat")
        TNT1 A 1 A_CustomMissile ("GIB2", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB2", 30, 0, random(0,360), 2, 12)
        TNT1 A 0 A_CustomMissile ("GIB2", 34, 0, random(0,360), 2, 64)
        TNT1 A 0 A_CustomMissile ("GIB3", 25, 0, random(0,360), 2, 50)
        TNT1 A 1 A_CustomMissile ("GIB3", 36, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB1", 40, 0, random(0,360), 2, 24)
        TNT1 A 0 A_CustomMissile ("GIB1", 38, 0, random(0,360), 2, 48)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 32)
        TNT1 A 1 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 12)
        TNT1 A 0 A_CustomMissile ("GIB4", 32, 0, random(0,360), 2, 36)
        TNT1 A 0 A_CustomMissile ("GIB4", 40, 0, random(0,360), 2, 21)
        TNT1 A 1 A_CustomMissile ("GIB4", 20, 0, random(0,360), 2, 55)
        TNT1 A 0 A_CustomMissile ("GIB5", 32, 0, random(0,360), 2, 66)
        TNT1 A 0 A_CustomMissile ("GIB2", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB3", 30, 0, random(0,360), 2, 12)
        TNT1 A 1 A_CustomMissile ("GIB2", 34, 0, random(0,360), 2, 64)
        TNT1 A 0 A_CustomMissile ("GIB3", 25, 0, random(0,360), 2, 42)
        TNT1 A 0 A_CustomMissile ("GIB2", 36, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB2", 40, 0, random(0,360), 2, 24)
        TNT1 A 1 A_CustomMissile ("GIB2", 38, 0, random(0,360), 2, 48)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 25)
        TNT1 A 0 A_CustomMissile ("GIB4", 32, 0, random(0,360), 2, 36)
        TNT1 A 0 A_CustomMissile ("GIB4", 40, 0, random(0,360), 2, 21)
        TNT1 A 0 A_CustomMissile ("GIB4", 20, 0, random(0,360), 2, 40)
        TNT1 A 0 A_CustomMissile ("GIB5", 32, 0, random(0,360), 2, 66)
        TNT1 A 1 A_CustomMissile ("GIB2", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB2", 30, 0, random(0,360), 2, 12)
        TNT1 A 0 A_CustomMissile ("GIB2", 34, 0, random(0,360), 2, 64)
        TNT1 A 0 A_CustomMissile ("GIB3", 25, 0, random(0,360), 2, 50)
        TNT1 A 1 A_CustomMissile ("GIB3", 36, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB3", 40, 0, random(0,360), 2, 24)
        TNT1 A 0 A_CustomMissile ("GIB2", 38, 0, random(0,360), 2, 48)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 32)
        TNT1 A 1 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB4", 32, 0, random(0,360), 2, 36)
        TNT1 A 0 A_CustomMissile ("GIB4", 11, 0, random(0,360), 2, 47)
        TNT1 A 0 A_CustomMissile ("GIB4", 40, 0, random(0,360), 2, 31)
        TNT1 A 1 A_CustomMissile ("GIB4", 20, 0, random(0,360), 2, 50)
        TNT1 A 0 A_CustomMissile ("GIB5", 32, 0, random(0,360), 2, 66)
        TNT1 A 0 A_CustomMissile ("GIB2", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB3", 30, 0, random(0,360), 2, 12)
        TNT1 A 1 A_CustomMissile ("GIB2", 34, 0, random(0,360), 2, 64)
        TNT1 A 0 A_CustomMissile ("GIB3", 25, 0, random(0,360), 2, 50)
        TNT1 A 0 A_CustomMissile ("GIB2", 36, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB2", 40, 0, random(0,360), 2, 24)
        TNT1 A 1 A_CustomMissile ("GIB2", 38, 0, random(0,360), 2, 48)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 32)
        TNT1 A 0 A_CustomMissile ("GIB3", 32, 0, random(0,360), 2, 22)
        TNT1 A 0 A_CustomMissile ("GIB4", 32, 0, random(0,360), 2, 36)
        TNT1 A 1 A_CustomMissile ("GIB4", 11, 0, random(0,360), 2, 37)
        TNT1 A 0 A_CustomMissile ("GIB4", 40, 0, random(0,360), 2, 21)
        TNT1 A 0 A_CustomMissile ("GIB4", 20, 0, random(0,360), 2, 50)
        TNT1 A 1 A_CustomMissile ("GIB5", 32, 0, random(0,360), 2, 66)
        Stop
    }
}
*/
