Spellcrafting

**Spellcrafting** is the branch of magic dedicated to the creation of radioconductive effects through vocalisation. It is different to spellcasting and enchanting in that effects are entirely created from the usage of Vista's unique voice over command protocol, and do not require specific or specialised radioconsitutive elements to create a desired effect (although a supply of energy is still required, and the effect in question scales its power usage with its effect potency.) A specialist in spellcrafting is referred to as a *spellcrafter*.

## History

The source as to the discovery of spellcrafting is historically uncertain, but it can be determined that it was first learned from texts originating from one of the Illuminator's Tombs, where it later propagated as a form of magic. Spellcrafting became one of the three major branches of magic practise, the other two being spellcasting and spellworking, with several sub-branches splitting from it.

Vistans believe spellcrafting to be magic made material through knowledge, and as such place heavy emphasis on learning and the archival of information while practising spellcraft. Notes, reminders, and even entire strings that can be used as spells are often written down on "tomes", which are most commonly printed from pulped ravenwood, a material that is capable of storing energy inside itself. This makes spellcrafting tomes perfect for both storing information as well as storing the energy required to cast spells. More expensive tomes can be printed through a combination of more potent ingredients, such as carmot, which is usually blended into ravenwood pulp.

The Librarians of Eversail categorise and store a vast amount of informations and spell tomes written by Vistan spellcrafters.

## Method

Spellcrafting is made possible by exploiting the abilities of the planet's core, which is made up of a vast amount of radioconsitutive elements kept separate through centrifugal force. When a mage utters a spell, it is detected by the planet's AI, Watchdog; a request is queued, and the earliest request is then processed by Watchdog, at which point a radioconductive effect created by the precise injection of energy into the planet's core is sent through a teleportation core at the requested location. The custom scripting language used in creating the code that is responsible for spellcasting is called SenScript. Senscript is a top-down scripting language, and so class importing must be done at the beginning, and variable declarations must be done before the variable is used.

Spellcrafting is different to spellworking or spellcasting - for one, a specific kind of material is not required to cast a specific kind of spell (Though the material a tome can be printed with will affect how much energy it can hold.) Only knowledge of how to cast the spell, as well as a source of energy, is required.

Crafted spells are categorised into two types; vocal (where the code for a spell is said aloud) or written (the code for a spell is written onto the source of energy, often called a *glyph*). In either variation, the syntax for casting a spell is static, and any error in the parsing of a spell will cause it to fail.

Crafted spells can fail in two ways:

* Parsing error: the syntax of the spell is incorrect. Nothing happens.
* Declaration error: the syntax of the spell is correct, but either by human error or because the user does not know how to structure the spell, a completely different spell than what is actually desired is requested.

### Spellcrafting Grammar

#### Import

When a spell is requested, resources are put aside for every package that is imported to the request. A certain affect, such as generating heat, cannot be requested if the spell does not import the relevant package (in this example it would be the package:

```
rc.Exothermic

```

#### Entity Values

Magic is hard-coded into senscript, but the declaration of entities (which can be potentially infinite) must be manually specified if a spell affects certain people/objects and nothing else.

The caster of the spell is always referred to as the *user*, and objects the spell will affect referred to as target. Anything the spell is specifically supposed to ignore is referred to as a *blank*.

A spell can be specified to start at a certain place - for example, if the user wants the spell to start at their position and travel outwards, they would declare the user as the IOrigin.

#### Portal Values

A portal value is a value that can be declared to substitute for a large amount of code that would otherwise be extremely time-consuming to manually request. For example, the following request:

```
start request;

import package.rc.Exothermic;

import package.rc.Potential;

import package.request.IOrigin;

import package.request.Target;

val user = [user as IOrigin];

val fire = effect.[(rc:exothermic)[80],(rc:potential)[20] if IOrigin];

val cast = [

Target.addRequestTarget{

	“shape”: MASS,

	“declaration”: “fire”

	“direction”: FORWARD

		}];

cast.cast();

```

could be condensed to a much simpler and less time-consuming:

```
start request;

import pvalue.Fire;

val cast = [

Target.addRequestTarget{

	“shape”: MASS,

	“declaration”: “fire”,

	“direction”: FORWARD

		}];

cast.cast();

```

#### Substitutions

When verbally making a request, certain aspects of code can be left out (as long as the syntax of anything declared still parses afterwards.) Things that can be left out are:

* Value declarations (*val*, not the actual declaration)
* Most package prefixes (for example, rc.Exothermic can be declared instead of package.rc.Exothermic.)
* Brackets, semicolons, and equal signs (however, the request will assume any of these signs when the request is made, and when it is important to have certain symbols in certain places they can be manually placed back into the code.)