User Tools

Site Tools


crpl:docs:setdigitalis

<- 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, -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

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.txt · Last modified: 2018/07/09 07:56 by GoodMorning