~~DISCUSSION:off~~
<- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#script_commands|Script Commands]]
===== SetScriptVar =====
^Arguments^Result^Notation^
|Unit UID, script name, var name, var value| |''i1 s1 s2 d1 -- ''|
=== Description ===
Sets the named variable on the specified unit script to a value.
Can also set the variables of built-in units like spore towers and emitters.
You can check the names of built-in variable for units on the [[crpl:docs:getscriptvar|GetScriptVar]] page or at the bottom of this page.
**Payload** and **Amt** values for Emitters, Inhibitors, Spores and Runners are internal integers, not the floats you would use in the map editor dialog. For example, 1.5 Creeper in-game should be set as 1500000.
**Interval** values for Emitters, Inhibitors, Spore Towers, Runner Nests should be set as the number of frames, rather than seconds. For example, 2 second interval as shown in-game should be set as 60 frames.
This is what setting an Emitter with 32.5 power and 2.5 second interval would look like:
SetScriptVar(<-unit 0 "productionAmt" 32.5 1000000 mul)
SetScriptVar(<-unit 0 "productionInterval" 2.5 30 mul)
The **"startTime"** variable of Emitters and Spore Towers works based off of the start of the game, not the time of unit creation.
If you're procedurally generating a unit, and you want to give it a delay, you need to add the current time elapsed to it.
This is what setting a delay of 10 seconds would look like:
SetScriptVar(<-unit 0 "startTime" 300 GetGameTimeFrames add)
=== Examples ===
@CreateBullet
:CreateBullet
CreateUnit("CRPLCore" CurrentCoords) ->unit
AddScriptToUnit(<-unit "CRBullet.crpl")
SetScriptVar(<-unit "CRBullet.crpl" "targetX" <-targetX)
SetScriptVar(<-unit "CRBullet.crpl" "targetY" <-targetY)
SetScriptVar(<-unit "CRBullet.crpl" "payload" <-payload)
SetImage(<-unit "main" "Custom2")
SetImagePositionZ(<-unit "main" -0.01)
SetImageRotation(<-unit "main" self "barrel" GetImageRotation)
CreateUnit("SPORETOWER" 0 0) ->sporeTowerUID
SetScriptVar(<-sporeTowerUID 0 "startTime" 3600) # The number of frames before the tower commences firing.
SetScriptVar(<-sporeTowerUID 0 "waveInterval" 3600) # The number of frames between each volley of spores.
SetScriptVar(<-sporeTowerUID 0 "waveCount" 1)
SetScriptVar(<-sporeTowerUID 0 "sporePayload" 25000000)
CreateUnit("EMITTER" 31 8) ->unit
SetScriptVar(<-unit 0 "productionInterval" 45)
SetScriptVar(<-unit 0 "productionAmt" 800000)
SetScriptVar(<-unit 0 "startTime" 45)
CreateUnit("RUNNERNEST" <-spawnX <-spawnY) ->uid
SetScriptVar(<-uid 0 "moveSpeed" 1)
SetScriptVar(<-uid 0 "spawnInterval" 150)
SetScriptVar(<-uid 0 "maxPopulation" 5)
SetScriptVar(<-uid 0 "runnerMaxHealth" 5)
SetScriptVar(<-uid 0 "creeperPayload" 75000000)
# Added in 1.66
CreateUnit("RESOURCEPACK" <-spawnX <-spawnY) ->uid
SetScriptVar(<-uid 0 "resourceType" "ORE") # Can be ORE, ENERGY or AETHER
SetScriptVar(<-uid 0 "amt" 150)
=== List of vars ===
Emitter
Script: 0
STARTTIME
Number of frames before emitter starts production.
FINISHTIME
Number of frames before emitter halts production. Defaults to 2147483647 (the maximum signed 32 bit integer).
PRODUCTIONINTERVAL
Number of frames between each creeper production.
PRODUCTIONAMT
The amount of creeper produced per production, multiplied by 1000000.
SporeTower
Script: 0
STARTTIME
The number of frames before the tower starts producing spores.
WAVEINTERVAL
The number of frames between each wave of spores.
WAVECOUNT
The number of spores in each wave.
SPOREPAYLOAD
The amount of creeper that each spores dumps on the map when it lands, multiplied by 1000000.
AETower
Script: 0
RANGE
The size of the exclusion zone.
RunnerNest
Script: 0
SPAWNINTERVAL
The number of frames between the production of each runner
MAXPOPULATION
The maximum number of runners produced by this nest on the map at any given time.
MOVESPEED
The movement speed in pixels per second of each runner.
RUNNERMAXHEALTH
The maximum health and starting health of each runner.
CREEPERPAYLOAD
The amount of creeper that each runner dumps to the map when it dies or is killed, multiplied by 1000000.
Inhibitor
Script: 0
STARTTIME
The number of frames before the inhibitor starts producing creeper.
PRODUCTIONINTERVAL
The number of frames between each production of creeper.
PRODUCTIONAMT
The amount of creeper produced.
RANGE
The range of the aerial exclusion zone. Set to 0 for none.
ResourcePack
Script: 0
AMT
The starting amount that the pack carries. Must be less than MAXAMT.
MAXAMT
The maximum amount that the pack carries.
RESOURCETYPE
The type of resource that the pack carries. Either ENERGY, ORE or AETHER.
Guppy Pad (added in 1.68)
Script: ""
MODE
The type of cargo that the guppy ferries. Either PACKET, ORE or AC.
Artifact of Odin (AOO)
Script: 0
TYPE
The type of AoO. Either FREEZE, MASS or CONVERT.
Tech Artifact (Added in 1.83)
Script: 0
COUNT
The number of items the tech artifact should unlock.