User Tools

Site Tools


crpl:docs:destroy

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
crpl:docs:destroy [2013/01/18 12:58] grauniadcrpl:docs:destroy [2021/02/05 11:43] (current) – Rmoved discussion tag Karsten75
Line 1: Line 1:
-~~DISCUSSION~~+
 <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#unit_commands|Unit Commands]] <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#unit_commands|Unit Commands]]
 =====  Destroy  ===== =====  Destroy  =====
  
-^Arguments^Result^Notation^ +^ Arguments ^ Result ^ Notation ^ 
-|Explosion Mode (0,1,2)| |''n1 -- ''|+|Unit UID to Destroy, Explosion Mode (0,1,2,3)| |''n1 n2 --''|
  
  
 === Description === === Description ===
-Destroys the current unit. +Destroys the specified unit. 
 WARNING: ENSURE YOU HAVE SAVED THE MAP BEFORE CALLING THIS!  WARNING: ENSURE YOU HAVE SAVED THE MAP BEFORE CALLING THIS! 
-This call will destroy the unit and your script along with it.  +This call will destroy the unit 
-This call pops an int from the stack as an argument and uses that to determine  +For the explosion mode argument,  0 means no explosion and no sound,  
-whether to create an explosion0 means no explosion,  +1 means a small soundless flash, 2 means a full explosion with sound, 3 means full explosion but no sound. 
-1 means a small soundless flash, 2 or higher means a full explosion with sound.+ 
 +**Note:** If Destroy is called on SELF, the script will stop at that line. Any code after won't be executed. 
 + 
 +<color #ed1c24>Bug warning:</color> 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 === === Examples ===
-<code>example goes here</code> +<code prpl> 
 +$targetX:
 +$targetY:
 +$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
 +</code> 
crpl/docs/destroy.1358531885.txt.gz · Last modified: 2014/10/01 15:02 (external edit)