Page 1 of 1

WOaH - WispOS at Home (Modular Wisp System)

Posted: Sat Sep 30, 2023 6:09 pm
by beholderface
This hex is designed to provide you the benefits of several permanent wisps while only taking up one wisp's execution and upkeep cost. It can cast just about anything a normal wisp can, though it's no good for keeping data between iterations without using external storage, and you need to be considerate of meta-eval usage.
To give it modules, place focal ports around it (you can also use item frames by just swapping out the embedded iota, but focal ports are less fragile and look nicer IMO) and insert foci containing a list formatted as [[patterns], num]. The number is how many ticks the wisp will wait between execution of that focus. It does not use the Delay Wisp pattern, so no need to worry about interfering with other executions with it.
You can have a module designate something to be executed after every other module executes by sticking a pattern list in the ravenmind.

You should always make sure to test your modules before giving them to the main wisp, because as with normal wisps, any mishap will kill it, likely wasting significant accumulated media.

The code for the main wisp:

Code: Select all

//wisp hex
{
    Flock's Reflection
    Flock's Gambit
    Bookkeeper's Gambit: v
    Vacant Reflection
    Huginn's Gambit
    //fetch list of focal ports
    {
        <Focal Port entitytype>
    }
    Flock's Disintegration
    Identity Reflection
    Compass' Purification
    Numerical Reflection: 2 //you may want to use a large number here if you anticipate using many modules
    Zone Exaltation: Type
    //thoth list
    {
        //check if focal port contains a readable item - assume all foci in ports are properly formatted ([[patterns], num])
        Gemini Decomposition
        Auditor's Purification
        {
            //to be extracted
            Bookkeeper's Gambit: -
            //add wisp reference to stack underneath pattern list
            Identity Reflection
            Jester's Gambit
            //check if the hex may be executed this tick
            Chronicler's Purification
            Flock's Disintegration
            Timekeeper's Reflection
            Jester's Gambit
            Modulus Distillation
            Numerical Reflection: 0
            Equality Distillation
            {
                Hermes' Gambit
                Bookkeeper's Gambit: -
            }
            Flock's Disintegration
            Augur's Exaltation
            Hermes' Gambit
        }
        Speaker's Decomposition
        Augur's Exaltation
        Hermes' Gambit
        Flock's Reflection
        Flock's Gambit
        Bookkeeper's Gambit: v
    }
    Jester's Gambit
    Thoth's Gambit
    Bookkeeper's Gambit: v
    //execute anything the modules said to execute last
    Muninn's Reflection
    Hermes' Gambit
}
Mind's Reflection
Compass' Purification II
Floor Purification
Numerical Reflection: 0.5
Additive Distillation
Vector Reflection -Y
Additive Distillation
Numerical Reflection: 100
Summon Cyclic Wisp
A simple slipway eater module so that the wisp can actually stay around indefinitely(optimal delay for this is around 295 ticks, and it will produce a little over two dust per second):

Code: Select all

#define Repeat N (SOUTH_WEST ewdqdweadaddadda) = Any, Num > [Many]
{
    <Wandering Wisp entitytype>
}
Flock's Disintegration
Jester's Gambit
Compass' Purification
Numerical Reflection: 3
Zone Exaltation: Type
Gemini Decomposition
Abacus Purification
//list to unroll
{
    Speaker's Decomposition
    Consume Wisp
}
Jester's Gambit
Gemini Decomposition
Numerical Reflection: 0
Maximus Distillation
{
    Bookkeeper's Gambit: v
    //you *should* be able to use any loop unrolling macro here, as long as it does [patterns], num -> [patterns num times over], and ideally leaves the ravenmind in the same state it was before
    Repeat N
    Hermes' Gambit
}
Speaker's Decomposition
Augur's Exaltation
Hermes' Gambit
A life support module that will apply ten seconds of regen 6 to you whenever it detects your health dropping below 21 (designed with Botania's Ring of Odin in mind, you can just change the numerical reflection 21 to something else if you like):

Code: Select all

Mind's Reflection
Nurse's Purification
Numerical Reflection: 21
Minimus Distillation
{
    Bookkeeper's Gambit: -
    Mind's Reflection
    Numerical Reflection: 10
    Numerical Reflection: 0
    White Sun's Zenith
    Mind's Reflection
    Numerical Reflection: 1
    Numerical Reflection: 20
    Division Distillation
    Numerical Reflection: 6
    White Sun's Zenith
}
Speaker's Decomposition
Augur's Exaltation
Hermes' Gambit