For clarity, I've left out the pickup/use states. This is when the item's out in the world.
Code: Select all
Actor DMSoulFragment : CustomInventory
{
var int user_count;
var int user_scale;
var int user_gs;
var int user_tid;
+INVENTORY.ALWAYSPICKUP
//+FLOATBOB
+NOGRAVITY
+BRIGHT
+NOTELESTOMP
-TELESTOMP
-COUNTITEM
+DONTGIB
Species "Permanent"
Scale 0.0
RenderStyle Add
Inventory.PickupSound "reilsss/health/soul"
Inventory.MaxAmount 0
States
{
Spawn:
TNT1 A 0 NoDelay A_SetUserVar(user_tid,tid)
TNT1 A 0 Thing_ChangeTID(0,0)
TNT1 A 10 A_Stop
X099 A 0 A_SpawnItemEx("DMSoulTarget",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER|SXF_ORIGINATOR|SXF_TRANSFERTRANSLATION,0,tid)
"####" "#" 0 A_JumpIf(z-floorz <= 10.0,"MoveUp")
"####" "#" 0 A_CheckFloor("MoveUp")
Goto ScalingUp
MoveUp:
"####" "#" 0 A_Warp(AAPTR_DEFAULT,0,0,10,0,WARPF_NOCHECKPOSITION|WARPF_TOFLOOR)
ScalingUp:
"####" "#" 1 A_SetScale((cos(user_scale-90)+1)*0.05)
"####" "#" 0 A_SetUserVar("user_scale",user_scale+5)
"####" "#" 0 A_JumpIf(user_scale >= 180, "Scale2")
"####" "#" 0 A_JumpIf((user_count >= 35*15) && (ScaleX <= 0.0),"End")
"####" "#" 0 A_JumpIf((user_count >= 35*15),2)
"####" "#" 0 A_SetUserVar("user_count",user_count+1)
"####" "#" 0 A_JumpIf(user_scale >= 359,1)
Loop
Scale2:
"####" "#" 1 A_SetScale(((cos(user_scale-90)+1)*0.01)+0.05)
"####" "#" 0 A_SetUserVar("user_scale",user_scale+5)
"####" "#" 0 A_JumpIf((user_count >= (35*15)) && (ScaleX <= 0.0),"End")
"####" "#" 0 A_JumpIf((user_count >= (35*15)),"L2")
"####" "#" 0 A_SetUserVar("user_count",user_count+1)
"####" "#" 0 A_JumpIf(user_scale >= 359,1)
Loop
"####" "#" 0 A_SetUserVar("user_scale",user_scale-359)
"####" "#" 0 A_JumpIf(user_count < (35*15),"Scale2")
L2:
"####" "#" 1 A_JumpIf(ScaleX <= 0.0,"End")
"####" "#" 0 A_SetScale(ScaleX-0.005)
Loop
End:
"####" "#" 1 A_RemoveChildren(1,RMVF_EVERYTHING)
Stop
}
}