- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#unit_commands|Unit Commands]]
===== Destroy =====
^ Arguments ^ Result ^ Notation ^
|Unit UID to Destroy, Explosion Mode (0,1,2,3)| |''n1 n2 --''|
=== Description ===
Destroys the specified unit.
WARNING: ENSURE YOU HAVE SAVED THE MAP BEFORE CALLING THIS!
This call will destroy the unit!
For the explosion mode argument, 0 means no explosion and no sound,
1 means a small soundless flash, 2 means a full explosion with sound, 3 means full explosion but no sound.
**Note:** If Destroy is called on SELF, the script will stop at that line. Any code after won't be executed.
Bug warning: There is some issue when deleting a docked guppy or a guppy base, the Destroy function is called again on the next pair of numbers on the stack and can potentially destroy another unit! I recommend using the SafeDestroy function from the example when deleting guppies, strafers or bobmers just to be safe.
=== Examples ===
$targetX:0
$targetY:0
$speed:7.0
$payload:20
once
SetUnitAttribute(self CONST_CREATEPZ false)
QueueMove(<-targetX <-targetY <-speed)
endonce
if (GetQueuedMoveCount eq0)
#Done
Destroy(self 2)
SetCreeper(CurrentCoords <-payload)
endif
# Gets around the bug with guppies and works for other units as well
:SafeDestroy # uid mode -
->SD_Mode
->SD_Uid
StackSize ->SD_Size # stack size without the arguments
-1 -1 # extra pair of arguments to be consumed if needed
<-SD_Uid <-SD_Mode Destroy # this may or may not consume the additinal arguments
StackSize <-SD_Size do # remove extra arguments if not consumed by Destroy
pop
loop