actor Magnetman : VCBaseClass
{
Player.ScoreIcon "MAGNMUGS"
player.startitem "BaseFlagPack", 1
player.soundclass "magnetmanc"
Player.ViewHeight 47
Player.JumpZ 14
player.forwardmove 0.85, 0.85
player.sidemove 0.83, 0.83
player.displayname "Magnetman"
player.startitem "MagnetMissileBoss"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "CanThirdFire"
player.startitem "UltimateAttackItem2", 1
player.startitem "UltSoundWatcherSpawn2"
player.startitem "MagnetEntrance"
player.startitem "IsFromMM3"
States
{
Spawn:
MAGM A 0
MAGM B 1 A_JumpIf(z-floorz>0, "Jumping")
MAGM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
MAGM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn

Jumping:
MAGM I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Missile:
MAGM A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Animation1")

Animation2:
Missile2:
MAGM FFF 1 A_JumpIf(z-floorz>0, "JumpingMissile2")

Missile3:
MAGM GGGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile3")
Goto Spawn+1

JumpingMissile2:
MAGM JJJ 1 A_JumpIf(z-floorz<=0, "Missile2")

JumpingMissile3:
MAGM KKKKKK 1 A_JumpIf(z-floorz<=0, "Missile3")
Goto Jumping

Animation1:
MAGM NONONO 2
goto Spawn+1

Animation3:
MAGM L 7
MAGM M 5

A3Loop:
MAGM NONONO 1
MAGM NO 1 A_JumpIfInventory("BaseCustomFlag1",1,"A3Loop")
goto Spawn+1

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
MAGM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
//FLSM H 0 A_TakeInventory("TimeStoppedFlag",999)
MAGM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
MAGM H 0 A_JumpIfInventory("BaseCustomFlag1",1,"A3Loop")
Goto Spawn+1
ClassDeath:
MAGM ] 20 ACS_ExecuteAlways(999,0,0)
MAGM ] 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
MAGM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("MagnetMissileWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("MagnetMissileWepM")
goto ClassDeath
}
}

actor MagnetEntrance : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("MagnetDome")
stop
}
}

actor MagnetDome : VCIntroActor
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
M3DO A 1 A_PlaySoundEx("weapon/magnetentry","Body")
TNT1 A 1
M3DO B 1
TNT1 A 1
M3DO C 1
TNT1 A 1
M3DO D 1
TNT1 A 1
M3DO E 1
TNT1 A 1
M3DO F 1
TNT1 A 1
M3DO G 1
TNT1 A 1
M3DO H 1
TNT1 A 1
stop
Death:
TNT1 A 0
stop
}
}

actor MagnetMissileBoss : VCBaseWeapon 
{
+WEAPON.NOAUTOAIM
Obituary "$OB_MAGNETMAN1"
weapon.ammotype1 "Base28Ammo"
weapon.ammouse1 3
weapon.Ammotype2 "BaseAltfireAmmo"
States
{
Ready:
TNT1 A 0
MAGH A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.TF")
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MAGH A 0 A_GiveInventory("Base28Ammo",1)
MAGH A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready

Ready.TF:
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") MAGH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") MAGH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
MAGH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) MAGH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") MAGH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
MAGH A 0 A_GiveInventory("Base28Ammo",1)
MAGH A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
MAGH A 1 A_Lower
Loop

Select:
TNT1 A 0 A_SpawnItemEx("MagnetSkinWatcher")
TNT1 A 0 ACS_ExecuteAlways(991,0,3761)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
MAGH A 1 A_Raise
Loop

Fire:
MAGH A 0 A_JumpIfInventory("Base28Ammo",28,"Fire.Charging")
goto Fire1

Fire.Charging:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
MAGH A 1 Offset(0,40) A_GiveInventory("MagnetManCharge",2)
MAGH A 0 A_JumpIfInventory("MagnetManCharge",60,"Fire.Charged")
MAGH A 0 A_Refire("Fire.Charging")
goto Fire1

Fire.Charged:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
MAGH A 0 A_GiveInventory("RightClickFlag")
MAGH G 1 A_WeaponReady(WRF_NOPRIMARY)
MAGH A 0 A_Refire("Fire.Charged")
goto Fire2

Fire1:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
MAGH B 0 ACS_NamedExecute("VC_SetState",0,2)
MAGH B 3 A_WeaponReady(WRF_NOFIRE)
//MAGH C 0 A_FireCustomMissile("MagnetManMissile",0,1,1,8)
MAGH C 0 A_GiveInventory("MagnetHomingHandler")
MAGH C 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
MAGH C 0 A_TakeInventory("MagnetManCharge",15)
MAGH CCCBBA 1
MAGH C 0 A_JumpIfInventory("MagnetManCharge",15,"Fire1")

Fire.Cooldown:
MAGH A 12 A_TakeInventory("MagnetManCharge",99)
MAGH A 0 A_ClearRefire
goto Ready

Fire2:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
MAGH C 0 A_TakeInventory("RightClickFlag")
MAGH B 3 A_WeaponReady(WRF_NOFIRE)
MAGH B 0 A_TakeInventory("MagnetManCharge",99)
MAGH B 0 A_TakeInventory("Base28Ammo",14)
MAGH C 0 A_FireCustomMissile("MagnetManMissile2",-21,1,0,8)
MAGH C 0 A_FireCustomMissile("MagnetManMissile2",-7,1,0,8)
MAGH C 0 A_FireCustomMissile("MagnetManMissile2",7,1,0,8)
MAGH C 0 A_FireCustomMissile("MagnetManMissile2",21,1,0,8)
MAGH C 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
MAGH C 0 A_PlaySoundEx("weapon/cshot","Body")
MAGH D 1 Offset(4,30) A_PlaySoundEx("weapon/magnetmissile","Weapon")
MAGH D 1 Offset(1,33) A_PlaySoundEx("weapon/magnetmissile","Weapon")
MAGH D 1 Offset(4,36) A_PlaySoundEx("weapon/magnetmissile","Weapon")
MAGH D 1 Offset(2,31)
MAGH D 1 Offset(1,33)
MAGH D 1 Offset(2,32)
MAGH DDBA 2 A_WeaponReady(WRF_NOFIRE)
goto Ready

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
MAGH A 0 A_JumpIfInventory("MagnetManCharge",60,"Altfire2")
MAGH B 0 ACS_NamedExecute("VC_SetState",0,1)
MAGH B 0 A_GiveInventory("BaseCustomFlag1")

Altfire1:
MAGH A 0 A_JumpIfInventory("BaseAltfireAmmo",4,1)
goto Altfire.Cooldown
MAGH A 0 A_GiveInventory("MagnetPullSlow")
MAGH A 0 A_PlaySoundEx("weapon/magnetpull","Weapon")
MAGH AAAAA 0 A_FireCustomMissile("MagAttractFXSpawner",random(0,359),0,random(-10,10),random(30,40),0,random(-90,90))
MAGH E 1 A_SpawnItemEx("MagnetPullHitboxA")
MAGH AAAAA 0 A_FireCustomMissile("MagAttractFXSpawner",random(0,359),0,random(-10,10),random(30,40),0,random(-90,90))
MAGH E 1 A_SpawnItemEx("MagnetPullHitboxB")
MAGH AAAAA 0 A_FireCustomMissile("MagAttractFXSpawner",random(0,359),0,random(-10,10),random(30,40),0,random(-90,90))
MAGH F 1 A_SpawnItemEx("MagnetPullHitboxA")
MAGH AAAAA 0 A_FireCustomMissile("MagAttractFXSpawner",random(0,359),0,random(-10,10),random(30,40),0,random(-90,90))
MAGH F 1 A_SpawnItemEx("MagnetPullHitboxB")
MAGH A 0 A_TakeInventory("BaseAltfireAmmo",4)
MAGH A 0 A_Refire("Altfire1")

Altfire.Cooldown:
MAGH A 0 A_TakeInventory("BaseCustomFlag1")
MAGH A 0 A_TakeInventory("MagnetPullSlow")
MAGH A 20 A_ClearRefire
goto Ready

Altfire2:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
MAGH C 0 A_TakeInventory("RightClickFlag")
CRYA A 0 A_PlaySoundEx("weapon/galaxywarp","Auto")
CRYA A 0 A_SpawnItemEx("MagnetFormFX",10,0,40)
MAGH D 2 Offset(6,38)
MAGH D 2 Offset(12,44)
MAGH D 2 Offset(18,50)
MAGH D 2 Offset(24,56)
MAGH D 2 Offset(30,62)
MAGH D 2 Offset(36,68)
MAGH D 0 A_TakeInventory("MagnetManCharge",99)
MAGH D 0 A_TakeInventory("Base28Ammo",14)
MAGH A 0 A_PlaySoundEx("weapon/coilexplode","Body")
MAGH A 0 A_PlaySoundEx("weapon/magnetore","Weapon")
MAGH A 0 A_FireCustomMissile("MagnetManOre",0,0,0,10)
MAGH D 1 Offset(4,30)
MAGH D 1 Offset(1,33)
MAGH D 1 Offset(4,36)
MAGH D 1 Offset(2,31)
MAGH D 1 Offset(1,33)
MAGH D 1 Offset(2,32)
MAGH D 1 Offset(2,31)
MAGH D 1 Offset(1,33)
MAGH D 1 Offset(2,32)
MAGH D 1 Offset(2,31)
MAGH D 1 Offset(1,33)
MAGH D 1 Offset(2,32) A_ClearRefire
MAGH BAAA 1 A_WeaponReady(WRF_NOFIRE)
goto Ready

User1:
MAGH B 0 ACS_NamedExecute("VC_SetState",0,2)
MAGH H 0 A_PlaySoundEx("weapon/magnetmine","Body")
MAGH HI 1
MAGH H 0 A_PlaySoundEx("weapon/coilfire1","Weapon")
MAGH A 0 A_TakeInventory("BaseAltfireAmmo",56)
MAGH A 0 A_SpawnItemEx("MagneticMine",120,0,50,0,0,0,-60)
MAGH A 0 A_SpawnItemEx("MagneticMine",120,0,50,0,0,0,0)
MAGH A 0 A_SpawnItemEx("MagneticMine",120,0,50,0,0,0,60)
MAGH JKLM 1
TNT1 A 6
MAGH A 1 Offset(0,56)
MAGH A 1 Offset(0,48)
MAGH A 1 Offset(0,40)
goto Ready

UltimateAttack:
MAGH B 0 ACS_NamedExecute("VC_SetState",0,3)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,23)
NEDR A 0 A_GiveInventory("UltBuildCooldownGiver",1)
SPAA K 0 A_GiveInventory("BaseCustomFlag1")
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
CUTA A 0 A_GiveInventory("HalfHalfDamageProtection")
MAGH E 0 A_Stop
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
MAGH E 0 SetPlayerProperty(0,1,0)
MAGH E 2 Offset(0,27)
MAGH E 2 Offset(0,22)
MAGH E 2 Offset(0,17)
MAGH E 8 Offset(0,12)
MAGH E 0 A_WeaponReady(WRF_NOFIRE)

UltLoop:
MAGH E 0 A_PlaySoundEx("weapon/gigamagnet","Body")
MAGH E 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
MAGH E 0 A_SpawnItemEx("MagnetUltFX",-1,0,0,momx,momy,momz)
MAGH E 0 A_Quake(4,4,0,300)
MAGH E 0 SetPlayerProperty(0,1,0)
MAGH E 0 A_GiveInventory("Repulsion")
MAGH E 1 A_SpawnItemEx("MagnetPullHitbox2")
MAGH F 0 A_GiveInventory("Repulsion")
MAGH F 1 A_SpawnItemEx("MagnetPullHitbox2")
MAGH E 0 A_GiveInventory("Repulsion")
MAGH E 1 A_SpawnItemEx("MagnetPullHitbox2")
MAGH F 0 A_GiveInventory("Repulsion")
MAGH F 1 A_SpawnItemEx("MagnetPullHitbox2")
MAGH E 0 A_TakeInventory("MediumShortUltimateAmmo",6)
MAGH E 0 A_JumpIfInventory("MediumShortUltimateAmmo",1,"UltLoop")

UltFinish:
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
MAGH E 0 A_TakeInventory("BaseCustomFlag1")
CUTA A 0 A_TakeInventory("HalfHalfDamageProtection")
MAGH EF 5 SetPlayerProperty(0,0,0)
NEDR A 0 A_TakeInventory("PowerUltBuildCooldown",1)
NEDR A 0 A_TakeInventory("UltAttackFlag")
goto Ready
}
}

actor MagnetPullSlow : PowerSpeed
{
	+POWERSPEED.NOTRAIL
	Powerup.Duration 999
	Speed  0.2
}

actor MagnetManCharge : Ammo
{
	inventory.amount 1
	inventory.maxamount 60
	+INVENTORY.IGNORESKILL
}

actor MagnetHomingHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfTargetInLOS("Homing")
TNT1 A 0 A_FireCustomMissile("MagnetManMissile",0,1,1,8)
stop

Homing:
TNT1 A 0 A_PlaySoundEx("weapon/magnethomingshot","Auto")
TNT1 A 0 A_FireCustomMissile("MagnetManMissile3",0,1,1,8)
stop
}
}

actor MagnetManMissile
{
PROJECTILE
Radius 12
Height 12
scale 2.5
damagetype "Magnetman"
species "MagnetAttackType"
+THRUSPECIES
Obituary "$OB_MAGNETMAN1"
Translation "87:87=4:4", "227:227=41:41"
damage (10)
speed 50
+SEEKERMISSILE
-EXTREMEDEATH
+SCREENSEEKER
reactiontime 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAGG A 0 A_JumpIfInventory("MagnetAltDamage",1,"Ored",AAPTR_TRACER)
MAGG A 2 A_SeekerMissile (2, 2, SMF_LOOK|SMF_PRECISE|SMF_CURSPEED, 80, 10)
MAGG A 0 A_CountDown
goto Spawn+2
Ored:
MAGG A 0 A_SpawnItemEx("MagnetMissileEcho")
MAGG A 1 A_SeekerMissile (12, 12, SMF_LOOK|SMF_PRECISE|SMF_CURSPEED, 256, 10)
MAGG A 0 A_CountDown
loop
Death:
MMFX BCDE 2
stop
}
}

actor MagnetManMissile2 : MagnetManMissile
{
//damagetype "MagnetmanOre"
damage (6)
+HEXENBOUNCE
speed 60
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAGG FAFAFA 1
MAGG GAGAGAFAFA 1 A_Stop
MAGG A 0 A_ChangeFlag("HEXENBOUNCE",0)
MAGG AAAAAAA 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_PRECISE, 256, 10)
TERS A 0 A_CountDown
TERS A 0 A_Recoil(-5)
TERS A 0 A_PlaySoundEx("weapon/magnettrack","Body",1)
loopit:
MAGG FAGAGAGAFAFA 1
loop
}
}

actor MagnetManMissile3 : MagnetManMissile
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAGG A 0 A_PlaySoundEx("weapon/magnetbeep","Body",1)
loopit:
MAGG A 0 A_JumpIfInventory("MagnetAltDamage",1,"Ored",AAPTR_TRACER)
MAGG A 0 A_SpawnItemEx("MagnetManFX",random(-16,16),random(-16,16),random(-16,16),random(0,-4),random(-3,3),random(-3,3),random(0,359))
MAGG A 1 A_SeekerMissile (6, 6, SMF_LOOK|SMF_PRECISE|SMF_CURSPEED, 120, 10)
MAGG A 0 A_CountDown
loop
Ored:
MAGG A 0 A_SpawnItemEx("MagnetMissileEcho")
MAGG A 0 A_SpawnItemEx("MagnetManFX",random(-16,16),random(-16,16),random(-16,16),random(0,-4),random(-3,3),random(-3,3),random(0,359))
MAGG A 1 A_SeekerMissile (24, 24, SMF_LOOK|SMF_PRECISE|SMF_CURSPEED, 256, 10)
MAGG A 0 A_CountDown
loop
Death:
MMFX B 0 A_StopSound(CHAN_BODY)
MMFX BCDE 2
stop
}
}

actor MagnetManFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
TNT1 A 0 A_Jump(256,"S_1","S_2")
S_1:
MGF9 AAAAA 1
goto End
S_2:
MGF9 BBBBB 1
goto End
End:
MGF9 "#" 1 A_FadeOut(0.2)
wait
}
}

actor MagnetMissileEcho : BasicClientSide
{
Translation "87:87=4:4", "227:227=41:41"
renderstyle add
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
MAGG A 1 A_FadeOut(0.04)
MAGG A 0 A_SetScale(scalex-0.104,scaley-0.104)
goto Spawn+2
}
}


Actor MagAttractFXSpawner : FastProjectile
{
	PROJECTILE
	+SKYEXPLODE
	-DONTBLAST
	+DONTSPLASH
	+DONTREFLECT
	Speed 200
	Damage (0)
	radius 12
	height 12
		States
		{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		TNT1 A 1
		goto Death
		Crash:
		XDeath:
		Death:
		TNT1 A 0 A_Stop
		TNT1 A 1 A_CustomMissile("MagAttractFX", 0, 0, 0, 0)
		stop
	}
}

Actor MagAttractFX
{
	PROJECTILE
	+CLIENTSIDEONLY
	+DONTSPLASH
	-DONTBLAST
	//+NOINTERACTION
	-SOLID
	+NOGRAVITY
	height 5
	radius 5
	Scale 2.5
	Speed 32
	reactiontime 12
		States
		{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
		TNT1 A 0 A_Jump(256,"S_1","S_2")
		
		S_1:
		MGF9 A 1 A_JumpIfCloser(32,"Death")
		MGF9 A 0 A_Countdown
		loop
		
		S_2:
		MGF9 B 1 A_JumpIfCloser(32,"Death")
		MGF9 B 0 A_Countdown
		loop
		
		Death:
		TNT1 A 1
		stop
	}
}

actor MagnetFormFX
{
renderstyle translucent
alpha 0.4
scale 2.5
PROJECTILE
+NOINTERACTION
+NOCLIP
damage(0)
radius 5
height 5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MAPJ A 0 A_Warp(AAPTR_TARGET,30,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
MAPJ AABBCCDDEEFF 1 A_Warp(AAPTR_TARGET,30,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor MagnetManOre
{
species "MagnetAttackType"
+THRUSPECIES
Obituary "$OB_MAGNETMAN2"
scale 2.5
damagetype "MagnetmanOre"
PROJECTILE
damage (32)
radius 16
height 16
speed 70
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MAPJ F 1
goto Spawn+2
Death:
TNT1 A 0 A_PlaySoundEx("weapon/powerstone","Body")
TNT1 A 0 A_SpawnItemEx("MagnetOreBit1",0,0,0,10,0,4,-90)
TNT1 A 2 A_SpawnItemEx("MagnetOreBit2",0,0,0,10,0,4,90)
stop
}
}

actor MagnetOreBit1 : BaseDecorativeActor
{
reactiontime 35
+HEXENBOUNCE
-NOINTERACTION
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAPJ G 1 A_Countdown
goto Spawn+2
Death:
TNT1 A 0
stop
}
}

actor MagnetOreBit2 : MagnetOreBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAPJ H 1 A_Countdown
goto Spawn+2
}
}

actor MagnetPullHitboxA : BasicExplosion
{
Obituary "$OB_MAGNETMAN3"
Damagetype "MagnetmanPull"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(20,64,0,0,64)
TNT1 A 1 ACS_ExecuteAlways(247, 0, 2, 256)
stop
}
}

actor MagnetPullHitboxB : MagnetPullHitboxA
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(20,64,0,0,64)
TNT1 A 1 ACS_ExecuteAlways(247, 0, 2, 220)
stop
}
}

actor MagnetPullHitbox2 : BasicExplosion
{
Obituary "$OB_MAGNETMAN5"
Damagetype "MagnetmanUlt"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(4,96,0,0,96)
TNT1 A 1 ACS_ExecuteAlways(247, 0, 7, 300)
stop
}
}

actor MagnetmanPullProtect : PowerProtection
{
	powerup.duration 25
	DamageFactor "MagnetmanPull", 0.0
}

actor MagneticMine
{
species "MagnetAttackType"
+MISSILE
+THRUSPECIES
+NOGRAVITY
Obituary "$OB_MAGNETMAN4"
+FLOATBOB
+SHOOTABLE
+CANTSEEK
+NOTARGETSWITCH
+SEEKERMISSILE
+LOOKALLAROUND
+QUICKTORETALIATE
+FLOATBOB
+SCREENSEEKER
+AMBUSH
+DONTREFLECT
+NOPAIN
+BOUNCEONWALLS
+BOUNCEONFLOORS
+BOUNCEONCEILINGS
health 1
painchance 256
mass 999999
FloatBobPhase 31
damagefactor "Magnetman", 0.0
damagefactor "MagnetmanPull", 0.0
damagefactor "MagnetmanUlt", 0.0
Radius 16
Height 16
scale 2.5
speed 6
damage (0)
reactiontime 175
Damagetype "Magnetman"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAPJ IJK 2
MAPJ L 0 A_Stop
Goto Start
Start:
MAPJ L 0 A_JumpIfTargetInLOS("See", 0, 1)
MAPJ L 1 A_SeekerMissile (70, 45, SMF_LOOK, 256, 4)
MAPJ L 0 A_Countdown
loop
See:
MAPJ A 0 A_PlaySoundEx("weapon/magnetminefly","Body",1)
loopit:
MAPJ MMLLLLL 1 A_SeekerMissile (75, 90, SMF_LOOK, 50, 10)
MAPJ LLLLLLL 0 A_Countdown
loop
Death:
NAPA E 0 A_ChangeFlag("FLOATBOB",0)
NAPA E 0 A_Stop
NAPA E 0 A_PlaySoundEx("misc/mm3explosion", "Body")
NAPA E 0 A_Explode(12, 96, 0, 0, 16)
NAPA EFGHIJKLMNOPQRS 1
stop
}
}

actor MagnetUltFX : BasicClientSide
{
renderstyle translucent
alpha 0.8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
MAPJ NOPQ 1
stop
}
}

actor MagnetAltDamage : PowerProtection
{
	powerup.duration 350
	DamageFactor "MagnetmanPull", 1.5
}

actor MagnetDebuffWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 350
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("MagnetManFX", random(8, 40), 0, random(0, 24), 0, 0, random(1,4), random(0, 359))
TNT1 A 0 A_Countdown
TNT1 A 0 A_JumpIfInTargetInventory("MagnetAltDamage",1,"Spawn")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("MagnetManFX", random(8, 40), 0, random(0, 24), 0, 0, random(1,4), random(0, 359))
TNT1 A 0 A_Countdown
TNT1 A 0 A_JumpIfInTargetInventory("MagnetAltDamage",1,"Spawn")
goto Death
Death:
TNT1 A 0 A_TakeFromTarget("MagnetAltDamage")
stop
}
}

actor MagnetSkinWatcher
{
Height 0
Radius 0
+NOINTERACTION
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("MagnetSkinCheck")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor MagnetSkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==257,"AltSkin1")
goto NormalSkin
}
}