Programma (element)

## Programma

*Programma* is a modifer-class element. It allows the caster to manually program magic via words, gestures, and other means. This modifier element is the cornerstone of constructing spells. *Programma* depends on your creativity and imagination and is the element of discipline.

## Overview

*Programma* allows the caster to manipulate their cast. Created "programs" are called spells.

### Behavior

Programming needs to be done by the caster, mages cannot control other's casts. What can be programmed obviously depends on the class in question. For example, fire cannot be strictly programmed to turn into water or do anything with water. However *Programma* can involve multiple classes, this means that if the caster uses *Ignis* & *Aquae* they *could* turn fire into water.

*Programma* is mostly based on *flags*. Flags fire when something specific happens; for example, fire from *Ignis* touches something or water from *Aquae* is created. Settings flags is not strict in syntax meaning that a caster can program with simple language, however figurative language cannot be used because *Programma* is very literal.

*Programma* flags do not use kaph when active, however any invocations of classes does use the kaph that is required.

### Examples

Again, flags can be set with simple language. Here are a couple of examples:

* *"When my fire touches a wall, turn it into water."* - This is referring to an *Ignis* cast that is programmed to turn into water with *Aquae* when it touches a wall.
* *"If my water touches fire, turn all of my water into fire."* - This is a programmed *Aquae* cast that when touched by fire will "ignite" the rest of the water by replacing the water with fire from *Ignis*.
* *"If my rock goes more than 12 meters, return the rock to my hand."* - This is a programmed *Petra* cast that returns the rock that is propelled back to the mage if it goes more than a distance of 12 meters.
* *"Prevent any casting on A"* - Prevents any casting by the mage onto the person *A*
* *"Only target A" -* Redirects all targeting from the mage's casts onto the person *A*

More complex flags can be set with a little more complex language:

* *"Around a 10 meter distance, highlight all beings for 4 seconds."* - This shows every being around the caster in a 10 meter radius with *Umbra*.
* *"If my heartbeat goes over 110 BPM, cast Kinesi Tempo."* - This program automatically casts *Kinesi Tempo* when the caster's heartbeat is over 110 BPM. (note: casting *Kinesi Tempo* while panicking is not recommended, see *Tempo*)

Special instructions can also be given that can completely change what a skill can do:

* *"Shoot fire in all directions from my body."* - Literally shoots fire in all possible directions from the caster's body with *Ignis*
* *"When my rock hits something, explode it with Ignis Crepitus"* - Creates explosive rocks
* *"Tune my electricity to go completely straight"* - Electricity created by *Fulgur* will no longer branch out like it normally does.

### Creating Spells

Spells are created with *Programma* in order to automate the cast / make it interact with the outside world. *Programma* also allows automated conversions between classes when necessary; for example: water from *Aquae* turns into fire from *Ignis* when touched by a specific person.

When a spell is created, a binding name (or bind, for short) is required to save it. The bind can be created in multiple ways: gestures, eye movements, and speech are only some examples to possibly infinite binding names. The spell is only cast when the correct binding is used. However one can change the binding from it's original at any time.

Spells are usually recorded on a grimoire, but can be saved in memory. Mages that have really bad memory generally use grimoires to invoke spells during combat, which is recommended.

### Restrictions

*Programma* is a very versatile and useful element, but it is completely dependant on the caster. This means (but is not limited to):

* If the mage cannot cast a class / skill, they cannot cast the spell
* If the mage uses a class they are not well-experienced in, the resulting cast can be nonexistent, weak, or even uncontrollable
* Invoking other spells requires the mage's knowledge of those spells
* The ability of the cast relies on the mage's creativity and imagination
* The mage cannot use *Programma* on other mages

*Programma* is only as powerful as the mage's imagination and creativity is. The impossible could be made possible with *Programma* as long as the mage is creative.

### Civilian use

*Programma* is used regularly in civilian use for spells and there are no restrictions on this class.

## Skills

### Novus - New

Create a new spell. Requires a "binding name" and classes to use. Sequence is created by the caster.

### Terminare - Terminate

End an active spell. The binding name needs to be supplied.

### Textilis - Using different classes

Use multiple different classes in spells.

## Trivia

* If *Programma* were a real element, it would be considered the most used element
* Spells can be interfered with in multiple ways, including interfering with the mage themselves
* *Programma* is used to automatically alter the physical properties of casts to the mage. This allows the mage to have their own character in their casts
	+ The White Mirrors color all of their casts white and FOXTROT ROMEO colors all of theirs dark blue. They are the only two groups to do this
* *Programma* can be active infinitely as long as the mage is alive and conscious
* It has been shown that all mages are capable of casting *Programma*