//General Base actors for inheriting or use

actor BasicExplosion
{//Easy way of managing every explosion such as topspin
+MISSILE
-SOLID
+DONTBLAST
+NOGRAVITY
+RIPPER
+SKYEXPLODE
+NOINTERACTION
+DONTSPLASH
+THRUGHOST
+THRUACTORS
+DONTREFLECT
Damage 0
radius 2
height 2
//Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(10,10,0)
stop
}
}

actor BasicPunch
{
translation "202:202=4:4", "199:199=210:210"
PROJECTILE
+DONTBLAST
+DONTREFLECT
+FORCEXYBILLBOARD
reactiontime 1
mass 50
damage (mass)
Radius 20
Height 20
speed 60
scale 2.5
States
{
Spawn:
UMFX C 0
UMFX C 1 A_CountDown
wait
Death:
UMFX C 0 A_Explode(mass-15,40,0)
UMFX C 0 A_SetDamageType("BasicPunch")
UMFX C 0 A_Explode(15,40,0,0,40)
UMFX C 2
UMFX A 2
UMFX BC 2
stop
XDeath:
UMFX C 0 A_Stop
UMFX C 2
UMFX B 2
UMFX AR 2
stop
}
}

actor BasicHelper
{//Used by things like PharaohFX
+MISSILE
-SOLID
+NOCLIP
+NOINTERACTION
+NOGRAVITY
+DONTBLAST
+DONTREFLECT
+THRUACTORS
+NOBLOCKMAP
renderstyle none
radius 2
height 2
States
{
Spawn:
TNT1 A 1
stop
Death:
TNT1 A 1
stop
}
}

actor ShieldWarper_CBM
{//Used for Warpers
+NOINTERACTION
+CLIENTSIDEONLY
-SOLID
+MISSILE
+THRUACTORS
+NOGRAVITY
+DONTBLAST
+DONTREFLECT
Height 2
Radius 2
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("cbm_clientwarper",0,1)
TNT1 A 0 A_Jump(256,"Shield")
Goto Shield
Shield:
STAR AABBCCDD 1 A_Warp(AAPTR_TARGET, 0, 0, 16, 0, 24)//WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION
loop
}
}


actor CBM_IsHiddenStart_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag",1,"Pick_0")
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag",1,"Pick_1")
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag",1,"Pick_2")
TNT1 A 0 A_JumpIfInventory("KingTeamFlag",1,"Pick_3")
//TNT1 A 0 A_JumpIf(CallACS("WheresTheCoopMode?"),"Pick_Coop")
TNT1 A 0 A_JumpIfInventory("IsInGame",1,"Pick_255")
stop

Pick_255:
TNT1 A 0
stop
Pick_Coop:
TNT1 A 0
stop
Pick_0:
TNT1 A 0
stop
Pick_1:
TNT1 A 0
stop
Pick_2:
TNT1 A 0
stop
Pick_3:
TNT1 A 0
stop

}
}

actor CBM_IsHiddenFX
{
+MISSILE
-SOLID
+NOGRAVITY
+NOCLIP
+NOINTERACTION
+THRUACTORS
+DONTBLAST
+DONTREFLECT
+CLIENTSIDEONLY
RenderStyle "Translucent"
Alpha 0.6
Height 2
Radius 2
speed 60
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("cbm_clientwarper_invis",0,2)
TNT1 A 0 A_Jump(256,"SpawnIcon")
Goto SpawnIcon
SpawnIcon:
CARY W 1 A_Warp(2,0,0,60,0,24)
wait
Death:
TNT1 A 0
stop
}
}

actor BasicClientSide
{//Works well for actors spawned from projectiles
+CLIENTSIDEONLY
+NOINTERACTION
+NOGRAVITY
-SOLID
radius 2
height 2
scale 2.5
}

actor BasicItemPickup : CustomInventory
{
+INVBAR
+COUNTITEM
Inventory.amount 1
Inventory.maxamount 1
Inventory.icon "NULLICON"
Inventory.PickupSound "item/1up"
Tag "No Tag Defined"
Scale 2.0
}

actor BasicPowerupGiver : PowerupGiver
{
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
Inventory.PickupSound ""
Inventory.MaxAmount 0
States
{
Spawn:
TNT1 A 1
stop
}
}



actor BasicClassItem : CustomInventory
{
Inventory.Amount 1
Inventory.Maxamount 1
Inventory.Icon "WHATICON"
Inventory.PickupMessage "YOU GOT PLACEHOLDER!"
Inventory.PickupSound "GNT/Treasure"
+INVBAR
//+COUNTITEM
Tag "You forgot the Tag"
Scale 2.0
States
{
Spawn:
CARY W 1
wait
No:
TNT1 A 0
fail
}
}

actor BasicCollideSlam : BasicExplosion
{
damagetype "GravityM_Dunked"
Obituary "$OB_GRAVITYBALL"
Mass 1
Meleerange 30
renderstyle none
states
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_LOG("Mass")
TNT1 A 0 //A_LOGINT(Mass)
TNT1 A 0 //A_LOG("Meleerange")
TNT1 A 0 //A_LOGINT(Meleerange)
TNT1 A 0 //A_LOG("ScaleX AND Dam Calc")
TNT1 A 0 //A_LOGINT(ScaleX)
TNT1 A 0 //A_LOG("Total")
TNT1 A 0 //A_LOGINT(Mass*(Meleerange*0.01)*ScaleX)
TNT1 A 0 A_Explode(Mass*(Meleerange*0.01)*ScaleX+1,15,0,0,15)
TNT1 A 3
stop
}
}

actor BasicHardQuakeFX : BasicClientSide
{
States
{
Spawn:
SMFX XYZ 3
stop
}
}

actor BasicSlideDashFX_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("BasicSlideDashFX",-1,-12,10,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BasicSlideDashFX",-1,12,10,0,0,0,0,1)
stop
}
}
actor BasicSlideDashFX : BasicClientSide
{
States
{
Spawn:
QMFX S 0
QMFX S 0 A_SetScale(ScaleX*(random(0,1)*2-1),ScaleY)
QMFX STU 5
stop
}
}

actor BasicBoomFX_CBM : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
}

actor BasicBoom1FX_X1 : BasicBoomFX_CBM
{// HyperBomb 192/198
States
{
Spawn:
X_1D A 0
X_1D BCDEFGHIJKLMN 1
stop
}
}
actor BasicBoom1FX_Y2 : BasicBoomFX_CBM
{// HyperBomb 4/202
States
{
Spawn:
Y_1D O 0
Y_1D "OPQRSTUVWXYZ[" 1
stop
}
}
actor BasicBoom4FX_X : BasicBoomFX_CBM
{// DrillBomb 192/198
States
{
Spawn:
X_4C E 0
X_4C EFGHIJKLMNOPQRSTUVWX 1
stop
}
}
actor BasicBoom5FX_Y : BasicBoomFX_CBM
{// NapalmBomb 4/202
States
{
Spawn:
Y_5G E 0
Y_5G EFGHIJKLMNOPQRSTUVWX 1
stop
}
}
actor BasicBoom6FX_X1 : BasicBoomFX_CBM
{// MM6 used quicker version of older boom FX
States// 192/198
{
Spawn:
X_6L A 0
X_6L ABCDEFGHI 1
stop
}
}
actor BasicBoom6FX_X2 : BasicBoomFX_CBM
{
States// 4/198
{
Spawn:
X_6L J 0
X_6L JKLMNOPQI 1
stop
}
}
actor BasicBoom6FX_X3 : BasicBoomFX_CBM
{
States// 4/192
{
Spawn:
X_6L J 0
X_6L JKRSTUVWXI 1
stop
}
}
actor BasicBoom6FX_Y3 : BasicBoomFX_CBM
{
States// 4/202
{
Spawn:
Y_6L J 0
Y_6L JKRSTUVWXI 1
stop
}
}
actor BasicBoom8FX_X : BasicBoomFX_CBM
{// AstroCrush 192/198
States
{
Spawn:
X_8B A 0
X_8B ABCDEF 1
stop
}
}
actor BasicBoom8FX_Y : BasicBoomFX_CBM
{// AstroCrush 202/199
States
{
Spawn:
Y_8B A 0
Y_8B ABCDEF 1
stop
}
}

actor YMFXBooster2_2
{
+MISSILE
+THRUACTORS
+CLIENTSIDEONLY
damage 0
Radius 2
Height 2
scale 2.5
States
{
Spawn:
VMFX IJK 1
XMFX D 1
stop
}
}