actor bigspider : spidermastermind replaces spidermastermind
{
	+DOHARMSPECIES
	
    DeathSound "bigspider/death1"
	var int user_bossexplosiontimer;
	states
	{
	Missile:
		TNT1 A 0
		SPID A 20 Bright A_FaceTarget
		TNT1 A 0 a_custommissile ("rinka",40,0, frandom(2,-2), CMF_OFFSETPITCH, frandom(1,-1))
		SPID G 2 Bright a_custommissile ("rinka",40,0, frandom(2,-2), CMF_OFFSETPITCH, frandom(1,-1))
		SPID G 3 Bright a_playsound ("monsters/rinkashot",5,1,0,0.6)
		TNT1 A 0 a_custommissile ("rinka",40,0, frandom(3,-3), CMF_OFFSETPITCH, frandom(2,-2))
		SPID H 2 Bright a_custommissile ("rinka",40,0, frandom(2,-2), CMF_OFFSETPITCH, frandom(1,-1))
		SPID H 5 Bright a_playsound ("monsters/rinkashot",5,1,0,0.6)
		TNT1 A 0 a_custommissile ("rinka",40,0, frandom(4,-4), CMF_OFFSETPITCH, frandom(3,-3))
		SPID H 1 Bright A_SpidRefire
		Goto Missile+3
	Pain:
		SPID I 1 a_playsound ("monsters/bosshurt",0)
		"####" "#" 1 bright Thing_SetTranslation(0, 4242)
		"####" "#" 2 bright A_Pain
		"####" "#" 1 bright 
		"####" "#" 1 Thing_SetTranslation(0, 0)
		"####" "#" 1 
		goto see
	pain.zelda:
		TNT1 A 0
		SPID I 1 a_playsound ("monsters/zeldahurt",0)
		SPID I 1 bright Thing_SetTranslation(0, 4242)
		TNT1 A 0 a_playsound ("zelda/boss",0,1,0,0.7)
		SPID I 2 bright A_Pain
		SPID I 1 bright Thing_SetTranslation(0, 0)
		SPID I 1 bright Thing_SetTranslation(0, 4242)
		SPID I 1 bright Thing_SetTranslation(0, 0)
		SPID I 1 bright Thing_SetTranslation(0, 4242)
		SPID I 1 Thing_SetTranslation(0, 0)
		Goto See
	death:
		TNT1 A 0
		SPID J 2 A_BossDeath
		SPID J 2 A_NoBlocking
		TNT1 A 0 Thing_SetTranslation(0, 0)
		TNT1 A 0 A_SetUserVar("user_bossexplosiontimer", 20)
	DeathExplosionLoop:
		TNT1 A 0 A_JumpIf (user_bossexplosiontimer <= 0, "DeathFinish")
		TNT1 A 0 A_Quake(3, 4, 0, 768, "")
		SPID J 1 Bright 
		TNT1 A 0 A_Jump (10, 3)
		TNT1 A 0 A_SpawnItemEx ("BossExplosion", frandom(-56,56),frandom(-56,56),frandom(4,90), 0,0,0, 0, SXF_NOCHECKPOSITION)
		TNT1 A 1
		TNT1 A 0 a_playsound ("monsters/bossexplode",7,1,0,0.5)
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		SPID J 1 Bright
		TNT1 A 1
		TNT1 A 0 A_SetUserVar("user_bossexplosiontimer", user_bossexplosiontimer - 1)
		Goto DeathExplosionLoop
	Deathfinish:
		SPID J 2 A_Scream
		SPID K 15 A_NoBlocking
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		SPID LMN 6
		TNT1 A 0 A_playsound ("bigspider/death2",0,1,0,0)
		TNT1 A 0 a_spawnitemex("bigspidergib5",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		TNT1 A 0 a_spawnitemex("bigspidergib1",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib2",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib2",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib3",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib3",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib4",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 A 0 a_spawnitemex("bigspidergib4",0,0,0,frandom(-20,20),frandom(-20,20),frandom(13,15))
		TNT1 AAAAA 0 a_spawnitemex("bigmissilepack",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		SPID OPQR 6 A_Quake(2, 4, 0, 768, "")
		SPID S 30
		TNT1 AAAAAAAAAAA 0 a_spawnitemex ("droppeditemspawner",frandom(-20,20),frandom(-35,30),frandom(20,35))
		SPID S -1 A_Bossdeath
		Stop
	death.zelda:
		TNT1 A 0
		TNT1 A 0 a_noblocking
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1 a_scream
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		SPID J 1 bright
		TNT1 A 1
		TNT1 AAAAA 0 a_spawnitemex("bigmissilepack",0,0,20,frandom(-15,15),frandom(-15,15),frandom(5,10))
		TNT1 A 0 a_playsound ("zelda/boss",0)
		TNT1 A 1 a_spawnitemex ("zeldabossdie",0,0,35)
		TNT1 A -1 a_bossdeath
	}
}

actor rinka
{
	projectile
	Health 30
	Radius 10
	Height 12
	speed 25
	+SHOOTABLE
	-SOLID
	+NOBLOOD
	+DONTGIB
	+NOICEDEATH
	+thruspecies
	+BRIGHT
	-noblockmap
	species "rinka"
	mass 1200
	painchance 255
	damage 3
	
	var int user_prevVelX;
	var int user_prevVelY;
	var int user_prevVelZ;
	states
	{
	spawn:
		RNKA ABC 2 
	flying:
		RNKA C 1
		loop
    pain:
        TNT1 A 0
        TNT1 A 0 A_JumpIf(abs(user_prevVelX) || abs(user_prevVelY) || abs(user_prevVelZ), "Pain1")
        TNT1 A 0 A_SetUserVar(user_prevVelX, velx * 32767.0)
        TNT1 A 0 A_SetUserVar(user_prevVelY, vely * 32767.0)
        TNT1 A 0 A_SetUserVar(user_prevVelZ, velz * 32767.0)
    Pain1:
        TNT1 A 0 A_Stop
        RNKA B 1 Thing_SetTranslation(0, 4242)
 		TNT1 A 0 a_playsound ("monsters/weakhurt",0)
		RNKA B 4
        RNKA B 1 Thing_SetTranslation(0, 0)
        RNKA C 0 A_ChangeVelocity (user_prevVelX / 32767.0, user_prevVelY / 32767.0, user_prevVelZ / 32767.0, CVF_REPLACE)        
        RNKA C 0 A_SetUserVar(user_prevVelX, 0)
        RNKA C 0 A_SetUserVar(user_prevVelY, 0)
        RNKA C 0 A_SetUserVar(user_prevVelZ, 0)
        RNKA C 2
        goto flying
	death:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("icetoken", 1, "shatter")
		TNT1 A 1 a_spawnitemex ("monsterdie",0,0,0)
		stop
	xdeath:
		TNT1 A 0
		PUFF BCD 2
		stop
	pain.beamice:
		TNT1 A 0 
		TNT1 A 0 a_changeflag ("shootable", 0)
		RNKA D 4 a_stop
		TNT1 A 0 a_giveinventory ("icetoken",1)
		RNKA D 1 a_changeflag ("nogravity", 0)
	falling:
		RNKA D 1 bright
		loop
	shatter:
		TNT1 A 0
		TNT1 A 0 a_playsound ("monsters/weakhurt",0)
		TNT1 A 1 a_spawnitemex ("monsterdie",0,0,0)
		stop
	}
}


ACTOR BossExplosion
{
	Radius 4
	Height 4
	Scale 1
	+NOCLIP
	+NOGRAVITY
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0
		MBOM CDE 3 Bright
		Stop
	}
}

actor bigspidergib1 : zombiegib1
{
	states
	{
	spawn:
		MGB1 ABCD 1
		loop
	death:
		TNT1 A 1
		stop
	}
}

actor bigspidergib2 : zombiegib1
{
	states
	{
	spawn:
		MGB2 ABCD 1
		loop
	}
}

actor bigspidergib3 : zombiegib1
{
	states
	{
	spawn:
		MGB3 ABCD 1
		loop
	}
}

actor bigspidergib4 : zombiegib1
{
	states
	{
	spawn:
		MGB4 ABCD 1
		loop
	}
}

actor bigspidergib5 : zombiegib1
{
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_jump (40, "flightloop2")
		TNT1 A 0 a_jump (40, "flightloop3")
		TNT1 A 1 a_jump (40, "flightloop4")
	flightloop1:
		MGB5 ABCD 1
		loop
	flightloop2:
		MGB6 ABCD 1
		loop
	flightloop3:
		MGB7 ABCD 1
		loop
	flightloop4:
		MGB8 ABCD 1
		loop
	death:
		TNT1 A 1
		stop
	}
}

actor icetoken : inventory
{inventory.maxamount 1}