ADOFAI String Curses by Yangsy56302

General Informations About Curses

In the following content, midspins will be considered as 0° angle.

Basics

Each ADOFAI level may correspond to an curse effect (theoretically).

Formats

The curses the player would experience, including the currents and the nexts, should be tipped by using text decorations on the bottom of the interface. (and that's why this cursed levels series is named string!) Here's an example in sequential format:
Current curse: "12-X"
Next curse: "XT-X"

In addition, if the curse effects are all from 1 single series:
Current curse by Yangsy56302: 12-X
Next curse by Yangsy56302: XT-X

As I said, these texts are HINTS, WHICH IS NOT CURSES ITSELF.
(those curses is more similar to some abstract existences)
And since they are tips, they shouldn't move or rotate with the camera, or they will not have a prompt effect.
There will be a countdown before updating the current curse effects:
The countdown starts with 3, decreases by 1 in equal interval time. The curse effects will be updated at the exact same time when the number (should be) counted down to -1.
The countdown usually is located at the end of the line before the colon, surrounded by brackets, with a extra space before the left bracket only:
Current curse: "ML-X"
Next curse (3): "5-X"

Current curse: "ML-X"
Next curse (2): "5-X"

Current curse: "ML-X"
Next curse (1): "5-X"

Current curse: "ML-X"
Next curse (0): "5-X"

Current curse: "5-X"
Next curse: "2-X"

Keywords

... stands for "please wait" for nexts, and infrequently, "need more info" for currents.
Current curse: ...
Next curse: ...
None literally stands for "no effects".
StopIteration stands for that was the last curse change, you can take a break now.
Current curse: None
Next curse: StopIteration

Functional Formatting Method

Let's take a look at an example first:
Current curse: "10-X" + "XS-X"
Current level: "XS-X"( "10-X"( XS-X ) )

Not hard to noticed that,
  1. This format also includes the level information;
  2. The writing order between these 2 formatting method are opposite.
The countdowns are still located before the colon even in functional formats:
Current level: "XR-X"( XT-X )
Next level (3): "B-X"( XT-X )

Current level: "XR-X"( XT-X )
Next level (2): "B-X"( XT-X )

Current level: "XR-X"( XT-X )
Next level (1): "B-X"( XT-X )

Current level: "XR-X"( XT-X )
Next level (0): "B-X"( XT-X )

Current level: "B-X"( XT-X )
Next level: "PA-X"( "12-X"( XT-X ) )
Some keywords are also different here:
...
Only keeps the please wait usage for now:
Next level: ...
None
Unused, since the level with no curses can be simply noted by the ID standalone:
Current level: XS-X
StopIteration
Unchanged.
Next level: StopIteration

Mechanisms

Basics

Curse effects is usually regarded as a section-to-section mapping at here, and this was why the sequential format works.
In sequential format, You can compose 2 curses by using a + sign between, similar to the function compositions:
Current curse: "XR-X" + "12-X"
Next curse: "12-X" + "XR-X"

In functional format, You should just nest curse functions by default:
Current level: "12-X"( "XR-X"( XC-X ) )
Next level: "XR-X"( "12-X"( XC-X ) )

And if there's actual needs for combining curses, Composition Operator Sign () would be a must:
Current level: "12-X""XR-X"( XC-X )
Next level: "XR-X""12-X"( XC-X )

Advanced

The affect order of curse effects in tips is from left to right.
For example, in sequential format:
"XR-X" + "12-X" will first add triangles, then try to change the angle of every tile, including those tiles that is a part of these new triangle, so now these triangles are probably not triangles anymore;
but "12-X" + "XR-X" will first try to change the angle of every tile, then add triangles which will not be modified by the angle change process thats already finished.
In functional format, the innermost function will take effect first, and the leftmost function will take effect last.

Metamechanisms

The time order of curse effects IS NOT the affect order of curse effects, and there's no direct relationship between them.
In sequential format, repeated curse effects are represented by the multiplication:
Current curse: "XS-X" + "XS-X" + "XS-X"
Next curse: "XS-X" * 3
(color isn't required but recommended for readability)
In functional format, they are represented by the power operation of functions:
Current level: "XS-X"( "XS-X"( "XS-X"( XS-X ) ) )
Next level: "XS-X"3( XS-X )
or Next level: "XS-X" ^ 3( XS-X )
Reverted Curses
Reverted / Inverted / Negated / Anti- Curses is basically a method to "revert" the effect of a curse:
the precondition is that part is possible to have an reverted version which is possible to form the current part if you use the original curse to it;
Otherwise, you can still use them, but it won't do anything when the preconditions no longer mets, until it mets again.
In sequential format,
Reverted curses WERE represented by changing the - sign to the + sign in the ID of the corresponding curse.
Current curse: "8+X"
Next curse: "9-X" + "9+X"
(color isn't required but recommended for readability)
This format is now DEPRECATED and should not be use for new curse creations anymore.
The more universal format for reverted curses is to insert the - sign at the beginning instead.
Current curse: -"Novel Feature"
Next curse: -DDLC+!
You can also abbreviate 2 opposite curses which are next to each other.
Current curse: "XC-X" - "XC-X"
Next curse: ± "XC-X"
Current curse: - "XC-X" + "XC-X"
Next curse: "XC-X"
(color isn't required but recommended for readability)
In functional format, reverted curses are represented by the power operation too:
Current level: -"XS-X"( -"XS-X"( -"XS-X"( XS-X ) ) )
Next level: "XS-X"-3( XS-X )
or Next level: ( -"XS-X" )3( XS-X )
Using a reverted curse may produces many possibilities of results which is totally different with the original section, or does not match expectations at all.