User Tools

Site Tools


crpl:docs:setdigitalis

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:setdigitalis [2013/01/18 12:59] grauniadcrpl:docs:setdigitalis [2018/07/09 07:56] (current) – Clarified zero quirk and correct method. GoodMorning
Line 1: Line 1:
-~~DISCUSSION~~ 
 <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#digitalis_Commands|Digitalis Commands]] <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#digitalis_Commands|Digitalis Commands]]
 =====  SetDigitalis  ===== =====  SetDigitalis  =====
  
 ^Arguments^Result^Notation^ ^Arguments^Result^Notation^
-|X, Y, Amt| |''x1 y1 n1 -- ''|+|X, Y, Amt| |''x1 y1 f1 -- ''|
  
  
 === Description === === Description ===
 Sets Amt of Digitalis at coordinates.  Sets Amt of Digitalis at coordinates. 
-An Amt of 1 means fill health Digitalis, and 0 means no Digitalis.+An Amt of 1 means full health Digitalis, -1 means killed or not-yet-grown, and 0 means no Digitalis will grow until further modification. 
 + 
 +=== Zero quirk === 
 +FIXME This is based on experiment and observation, not source knowledge. 
 + 
 +Using this command to set the Digitalis level to zero results in never-regrowing Digitalis, even if there is Digitalis "growth" (pathway) present. Setting to -1 causes (seemingly) normal behaviour. Pressing "Delete Digitalis" in the editor returns cells to normal. 
 === Examples === === Examples ===
-<code>example goes here</code>  
  
 +^Weapon^Radius^Amount^
 +|Blaster|1|.52|
 +|Mortar|3|.52|
 +|Strafer|2|.35|
 +|Bertha|10|.7|
 +
 +  * ** Emulating the in game weapons **\\ %% %% \\ //
 +
 +Note: blasters will not injure digitalis that is uphill ever. //\\ %% %%\\ <code>
 +#This function takes four arguments, a centre, then a range, then an amount.
 +:damageDigitalis
 +  #Load up the arguments.
 +  ->amount ->r ->y0 ->x0
 +  #Optimization: precalculate r^2.
 +  <-r dup mul ->r2
 +  #Consider a radius shaped box about the origin.
 +  <-r 1 add 0 <-r sub do
 +    <-r 1 add 0 <-r sub do
 +      #Cull squares in the box not in the circle.
 +      I dup mul j dup mul add <-r2 lte if
 +        #Translate to our site of action.
 +        I <-x0 add J <-y0 add dup2
 +            #Make sure to not inadvertently set digitalis to 0, making it never regrow
 +            GetDigitalis ->DigiPresent
 +            <-DigiPresent <-amount gt if
 +                <-DigiPresent <-amount sub SetDigitalis
 +            else
 +                <-DigiPresent -1 SetDigitalis
 +            endif
 +      endif
 +    Loop
 +  Loop
 +</code>
 +
 +  * **Lay down Digitalis on 3x3 grid under a unit**\\ %% %% \\ //The reason for the 2 is that the limit is one more than the loop iterates through.  So, "3 0 do loop" goes through the values 0,1,2... but not three. Using these limits  will make your walker lay down a 3x3 grid of Digitalis. //\\ %% %%\\ <code>
 +CurrentY 2 add CurrentY 1 sub do
 +  CurrentX 2 add CurrentX 1 sub do
 +    I J true SetDigitalisGrowth
 +    I J 1 SetDigitalis
 +  Loop
 +Loop
 +
 +</code>
crpl/docs/setdigitalis.1358531995.txt.gz · Last modified: 2014/10/01 15:02 (external edit)