User Tools

Site Tools


crpl:docs:setdigitalis

This is an old revision of the document!


<- CRPL reference <- Digitalis Commands

SetDigitalis

ArgumentsResultNotation
X, Y, Amt x1 y1 f1 –

Description

Sets Amt of Digitalis at coordinates. An Amt of 1 means full health Digitalis, and 0 means no Digitalis.

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

WeaponRadiusAmount
Blaster1.52
Mortar3.52
Strafer2.35
Bertha10.7
  • Emulating the in game weapons

    Note: blasters will not injure digitalis that is uphill ever.

    #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
  • Lay down Digitalis on 3×3 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 3×3 grid of Digitalis.

    CurrentY 2 add CurrentY 1 sub do
      CurrentX 2 add CurrentX 1 sub do
        I J true SetDigitalisGrowth
        I J 1 SetDigitalis
      Loop
    Loop
    
crpl/docs/setdigitalis.1469453280.txt.gz · Last modified: 2016/07/25 09:28 by planetfall