Primordial Magic Extensions
Primordial Magic Extensions Anonymous (not verified) Thu, 14-05-2015 21:06Not For First Release
Not For First Release Anonymous (not verified) Thu, 02-04-2015 21:42"Should" and "Could" and "would" things for this release.
"Should" and "Could" and "would" things for this release.Must
ALL DONE.
Should
ALL DONE.
Could
= Skill | Sacrifice Flesh |
= Requires | Automata Crafting |
You can use the sacrifice flesh component to power automata. |
= Skill | Component Focus |
= Requires | Automata Crafting |
One single component type provides twice the amount of power. |
= Skill | Specialised Glyph |
= Requires | Automata Crafting |
You gain one(?) specialised glyph. |
= Skill | Trigger Mastery |
= Requires | Automata Crafting |
The fixed cost of a trigger glyph type is reduced by 100. | |
The waiting cost of a trigger glyph type is reduced by 1. |
Glyph Crafting
= Skill | Glyph Crafting |
= Requires | Automata Crafting |
You have the ability to craft new glyphs. | |
You can decode existing automata. |
= Skill | Register Saving |
= Requires | Glyph Crafting |
The glyph multiplier for using registers is one lower, with a minimum of one. |
= Skill | Loop Optimisation |
= Requires | Glyph Crafting |
The N term for looping glyphs becomes 3/4 N. |
System Crafting
= Skill | System Crafting |
= Requires | Automata Crafting |
You have the ability to craft systems. |
= Skill | Power Transfer |
= Requires | System Crafting |
The cost of each automata in the system is reduced by 100. |
Countering
CounteringCountering
- Two types: Dampen and scramble.
- Dampen lowers field excitations in a specific area and causes modifying effects to be harder.
- Scramble causes random spikes in the fields in a specific area and causes creation effects to be harder.
- Both have a value attached. Each 1 increase increases power cost for that type of automata with 100.
Glyph Crafting
Glyph CraftingGlyphs are the building blocks of automata, but each glyph itself consists of smaller instructions that modify reality in some small way. These instructions are provided by the spark.
Glyph crafting is the ability to create new glyphs built from the base instructions.
Creating a Glyph
Creating Dominant Glyphs
During glyph creation, you can mark a glyph as a dominant glyph of a certain element. There are two drawbacks to this. First, you are not allowed to manipulate the element's opposite type. If you do, either directly or through inputs, the glyph's code in the automata will fall apart and the flow will be interrupted, causing all stored intermediaries to be released at random. The second drawback of making a dominant glyph is that you are only allowed to use constant values of the dominant type.
Deciphering
A mage that knows how the internals of most automata work can use this knowledge to decipher automata and glyphs. However, a mage with this knowledge can only see the raw instruction chain of the automata, not the actual glyphs. This raw chain contains additional code used for handling IN/OUT parameters of glyphs and does not contain any label definitions. Jump instructions have their label destination replaced with a four dimensional coordinate that is relative to the surface of the device the automata is inscribed on and is generally impossible for mortals to figure out.
Anonymous (not verified) Wed, 08-10-2014 14:53Glyph Language
Glyph LanguageGlyph Language Rules:
- Expressions are the basic element.
- Expressions are separated by whitespace. Additional whitespace is ignored. Whitespace includes space, tab and newlines.
- Comments are written using #
Expressions
-
Type:Value => Register
Defines a constant value and stores it in Register. -
Register1 => Register2
Retrieves the value from Register1 and stores it in Register2. -
processing_operation(parameter1 .. parameterN) => Register
Performs operation with parameter1 to parameterN and stores the result in Register. -
-> label
Label declaration. Provides a point where jump instructions can jump to. -
when comparison_operation(parameter1 .. parameterN) jump label
If the comparison operation returns true, perform a jump to the named label. Otherwise, normal program flow continues. -
jump label
Jump unconditionally to the specified label.
Processing Operations
-
combine(param1, param2)
Combines param1 with param2 and returns the result.
The following happens when combining:- type(param1) == type(param2) > param1 + param2
- type(param1) == inv(param2) > param1 - param2
- else > param1
-
append(param1, param2)
Creates an aggregate from param1 and param2.
The following happens with an aggregate:- If param1 and param2 are particles, the result becomes an atom.
- If param1 or param2 are atoms the result becomes a molecule.,
Comparison Operations
-
empty(param1)
Returns true if param1 is empty, false if not. -
notempty(param1)
Returns true if param1 is not empty. -
equals(param1, param2)
Returns true if param1 equals param2, both in number and type. Will always return false if either param1 or param2 is empty. -
greater(param1, param2)
Returns true if param1 is the same type as param2 and param1 is greater than param2. Will return false if either param1 or param2 is empty or if the types do not match. -
less(param1, param2)
Returns true if param1 is the same type as param2 and param1 is less than param2. Will return false if either param1 or param2 is empty or if the types do not match. -
same_type(param1, param2)
Returns true if the type of param1 is the same as the type of param2.
Implementation Details
Implementation DetailsThese pages contain details about how the system is implemented.
Anonymous (not verified) Wed, 08-10-2014 14:44Primordial Magic DSL Example
Primordial Magic DSL ExampleAn example automaton that creates a small burst of fire.
# Program start
start -> # 0;
# Gather energy
set R1 => 2 : Fire # 3;
set R2 => 1 : Water # 5;
# Wait until a target is chosen then execute the rest, this sets TARGET register
on target jump target # 10;
target -> # 10;
# Combine Fire and Water to get Fire and Energy
set R1, R2 => R1 + R2 # 15;
# Combine Energy with Direction to get Force
set R2 => R2 + TARGET # 19;
# Apply force to fire to gain a missile
set R1 => R1 + R2 # 23;
# Release the energy of the missile to finish the spell
release R1 # 24;
Anonymous (not verified)
Mon, 25-03-2013 21:21
Primordial Magic DSL Grammar
Primordial Magic DSL GrammarWIP Grammar for a DSL that can be used to represent the Primordial Magic Automata
Tokens
$identifier ::= [a-z][a-zA-Z0-9_]*
$number ::= [0-9]+
$comment ::= #.*\n
$typeID ::= [A-Z][a-z]*
$register ::= R[0-7] | TARGET
$eventID ::= touch | target
Grammar
@label ::= $identifier
@label_def ::= @label ->
@jump ::= jump @label
@event ::= on $eventType jump @label;
# Blocking, sets TARGET when activated
@branch ::= branch @expr jump @label;
| branch @expr jump @label else @label;
@expr ::= $register
| @constant
| @comparison
| @expr + @expr
| !@expr
| isnull @expr
@comparison ::= @expr < @expr
| @expr <= @expr
| @expr = @expr
| @expr > @expr
| @expr >= @expr
@constant ::= $number : $typeID
@set ::= set $register(, $register)* => @expr
@release ::= release $register
Anonymous (not verified)
Mon, 25-03-2013 21:14
Specialised Glyphs
Specialised GlyphsGlyph | Send |
---|---|
= Special | Pick a number from 1 to 10. This glyph creates a numbered "output port" for systems to use. |
= Special | When activated, the message as defined by the system is sent. IN1 is passed along as value. |
Glyph | Receive |
---|---|
= Special | Pick a number from 1 to 10. This glyph creates a numbered "input port" for systems to use. |
= Special | Will block until a message is received. |
= Return | The value from the message, if any |
Glyph | Area Trigger |
---|---|
= Special | Pick a radius. A circle with that radius is used as area for this trigger. |
= Special | Blocks until someone enters the area. |
Glyph | Create Living Tissue |
---|---|
= Special | Pick an amount in grams. This glyph will create that amount of living tissue. |
= Return | The chosen amount of living tissue. |
= Note | The tissue is moldable for a few seconds after creation. |
Glyph | Loop control |
---|---|
= Special | Can be used to create loops in automata. One side only allows flow from the loop control to the adjacent glyph, not the other way around. This prevents ambiguities in the flow. |
System Crafting
System CraftingSystems are combinations of automata that together form a larger whole.
System crafting is the ability to create systems from a number of automata.
Anonymous (not verified) Wed, 08-10-2014 14:54Todo
TodoFirst Release:
- Skills
- Automata Creation
- 50(?) Glyphs
- Several example automata
- Touch. Word, Gesture Trigger
Later:
- Counterspelling
- Specialised Glyphs
- Other Triggers
- Glyph Creation
- System Creation
- Rituals