ADOFAI String Curse Effects
by Yangsy56302

Main Game

"1-X" A Dance of Fire and Ice but the judgement limits are changing
no more pure perfect for you lol
Extra parameters:
{disallowed}
The judgements that's not allowed, recolored in red -- you will be killed instantly by the curse.
"1-X'1" A Dance of Fire and Ice but bends bends straights
turns out tracks aren't made of shape memory materials
Replace each straight line that starts right after a bend with the repeated version of that bend which have the same tile count.
"2-X" Offbeats but it is in another type of rhythm
this level was actually the last one that get string cursed from 1-X to 12-X
Extra parameters:
{rhythm} (default: 3/4)
The type of rhythm. can also be 7/8, 4/5, etc.
"2-X'1" Offbeats but the corners are folded
i might get banned by some libraries because of this curse i made
Replace each 180°, θ, 180° pattern with θ, 360° - θ, θ in order.
"3-X" THE WIND-UP but each straight line makes you more laggy
omg even the lagtrain would be smoother than this
Extra parameters:
{n} (default: 0)
The initial value for extra 180° tile counts.
Every time you reached the end of a chain of 180° tiles,
the tile right after the chain needs to hit {n} extra times;
After that, {n} increases by 1.
"4-X" Love Letters but short
half-waited
Remove segments at any scale.
"4-X'1" Love Letters but you can only move on 1 axis for each step
you are at axi
Split each diagonal tile with a horizontal tile and a vertical tile, in the order which can make sure that the 1st tile comes later than the diagonal tile was.
"5-X" The Midnight Train but the april fools has come true
max bpm: 850
The planets are in the wrong orientation, yet the chart plays the exact same as it did before.

For each angle θ that θ % 90° ≠ 0° ,
it can be expressed in the form of x + a * 90° + b * 180° ,
which 0° < x < 90° , a ∈ {0, 1} , b ∈ {0, 1} .

"5-X'1" The Midnight Train but internal→acute, external→obtuse
For each tile, if its angle meets the condition above, set the value of a with the value of b .
"5-X'2" The Midnight Train but acute→internal, obtuse→external
For each tile, if its angle meets the condition above, set the value of b with the value of a .
"5-X'3" The Midnight Train but acute, obtuse ⇄ internal, external
For each tile, if its angle meets the condition above, swap the value of a and the value of b .
For more information about the level that includes those 3 curse effects above, see The Midnight Train but it includes 3 new curse effects .

"6-X" PULSE but there is a 1 beat PAUSE on every tile
yep its a bad pun
Doubling the BPM and increasing paused beat counts by 1.
"6-X'1" PULSE but your dream is to become a HORSE
or knight, whatev- wait did i just said "night"? well that reminds me, *insert magic pattern here*
Planets would prefer to land on 3 tile after instead of 1, if and only if the distance to that tile is sqrt(5) .
"B-X" Thanks For Playing My Game but every tile is doubled
OOooppss............
This level has its own curse effect which uses the same ID.
For another level without that, see Thanks For Watching String Curses.
Both ends of the track are excluded.
"7-X" Spin 2 Win but each reflex angled tile will speed you up & vice versa
spin 2 win is 2 slow
Extra parameters:
{reflex}
A BPM-to-BPM function that would be used on tiles which its angle is >180°.
THE OUTPUT MUST BE BIGGER FOR ANY INPUT.
{inferior}
A BPM-to-BPM function that would be used on tiles which its angle is <180°.
THE OUTPUT MUST BE SMALLER FOR ANY INPUT.
"8-X" Jungle City but every successive same-angled tile segments has 1 additional tile
this cliff is made of living wood
(0° and 360° may also counts, it depends)
(this effect can also adding or removing twirls without changing the rhythm for better readability)
"9-X" Classic Pursuit but every tile that its angle isn't τθ/4 (θ∈ℤ) has a twirl on it
did anyone actually go to tauday.com ?
τ = 360° , and τ/4 = 90° .
"10-X" Butterfly Planet but no more reflex angles for you
someone give me this idea and i made it... 11-X remake need this level as template and i remade it... some of the old string cursed levels were just decorated by me so i also decorated it...
Twirls will be added on tiles thats its angle is >180°, therefore as result, all the tiles should now be <180°.
(this effect can also adding or removing twirls without changing the rhythm for better readability)
"11-X" Heracles but the twirls can change the speed
but there is no heracles lol

Updated at 2025.08.20:
This level now includes the MN-X? crab curse effect by Firestix (Workshop ID: 2719493511). Difference part of its sprite was drew by myself.
Also, you should't be worried about those prompts, since there will be a day that you can finally understand them. ;)
For the list of curses that took effects on this level, see here.
Extra parameters:
{red}
A BPM-to-BPM function that would be used on tiles with red twirl.
THE OUTPUT MUST BE BIGGER FOR ANY INPUT.
{blue}
A BPM-to-BPM function that would be used on tiles with blue twirl.
THE OUTPUT MUST BE SMALLER FOR ANY INPUT.
(twirls can change the speed even if it wasn't displayed)
"12-X" Artificial Chariot but the acute angles and the obtuse angles are swapped
oh and there's also extra twirls for better track shape but that's just a minor detail :3
This level has its own curse effect which uses the same ID.
For another level without that, see Arbitrary Character.
The angle of each tile is now its supplementary angle.
(integer multiples of 180° will bypass this curse)
(angles >180° will be moduled by 180° when processing)
(this effect can also adding or removing twirls without changing the rhythm for better readability)

Xtra Island

"XF-X" Third Wave Flip-Flop but you found the shortcuts
there are no shortcuts in real life, but in game thats okay i guess
If the center of two (or more) tiles was overlapped with each other, The planet could choose any path that's shorter (in time, not in tile count) than the current state to walk on.
"XC-X" Credits but it's tutorial exclusive
Funding for this project was made possible by viewers like you.
Extra parameters:
{section}
The level section for replacing. FROM TUTORIAL LEVEL ONLY.
Replace the affected section (the length can be 0) with {section}.
"XH-X" Final Hope but this is a DLC level
?
Add DLC contents.
Additionally, Hold can replace 180° tiles by extra loops, and midspins cannot be created out of nothing.
"PA-X" Distance but the midspins are taking over this level
*high-pitched water drop sound*
This level has its own curse effect which uses the same ID.
For another level without that, see D is isinstance.
Replace some non-midspin tiles with midspin, without changing the rhythm.
"XS-X" Party of spirits but each gameplay event is delayed by 1 tile
WARNING: This level is more complex than it seems to be.
This level has its own curse effect which uses the same ID.
For another level without that, see Party of stiripS.
For the list of curses that took effects on this level, see here.
This curse effect can only affects these type of events below:
  • Set Speed, Twirl, Checkpoint
  • Hold, Multi Planet
  • Paused Beats, Timing Window Scale
  • Hide Judgement/Floor Icons, AutoPlay tiles (if as a part of gameplay)
  • Set Conditional Events, Set Input Event (if as a part of gameplay)
"XR-X" Rose Garden but each 90° tile belongs to a triangle
triangular, inconsistent, complicated, difficult and cute rabbits
If and only if, any 90° tile wasn't a part of a right triangle, give it one.
"RJ-X" Fear Grows but the multitaps has been changed to midspins
the most fake doubletaps in adofai
(any angle for the midspin is acceptable, including for those that cause the planet to spin extra loops)
"RJ-X'1" Fear Grows but the multitaps and the twirls are swapped
camera shake yes
hotfix: it should be TWIRLS, not midspins
For each tile be affected, swap the value of its twirl event count T and its extra tap count M .

Although editor cannot put multiple twirl events on a single tile, editing *.adofai file directly can.

Multitwirl works as intended: odd number of twirls changes the rotation direction of the planet rotation, even number of twirls doesn't.

For situations that don't want to stack twirl events (for example the latter curses' definition aren't well-defined to deal with stacked twirls), change odd number of twirls to 1 twirl, even number of twirls to no twirls.

"XN-X" Trans-Neptunian Object but it's a three-body problem
the 99th civilization at Proxima Centauri b was doomed because 3 planets appeared in the sky on their planet at the same time
For another level that its curse effect was the same with "XN-X", but made by Xiaojun4412, see 6-X* .
Change the planet counts to 3, without changing the shape of the chart, and the duration for 180° tiles.
"XM-X" Miko Skip but i swapped the u-turns and the midspins
Assuming there's a virtual singer form of XM-X... oh wait there was 1 named "Ouka Miko"? welp, she's now the unofficial form of that level then :D
Continuously midspins is possible, and they will follow ADOFAI's default behavior.
"AR-X" Libertas but closed bends ends at where they bends to π
Didn't see any cats. Just TVs. And a dog. And a cyber shark. And a * None cannon.

Challenge Worlds

"XO-X" One Forgotten Night but its curse effect is defined as the combination of "XO-1" and "XO-2"
Since we already had tutorial for curses , why don't we try to make curses for tutorial?
This level has its own curse effect which uses the same ID.
For other levels without that, see 1 4 Got 10 →, None For Got 10 Right, or Non-Explosive Memes.
For the list of curses that took effects on this level, see here.
"XO-1" U-turn Road but all the existence states of swirls on u-turns are inverted
For each 360° tiles, if there is no swirl on it, add one; otherwise remove the swirl.
"XO-2" Back-to-back Loops but all the existence states of swirls on 180° tiles are inverted
Same as XO-1, but it's for 180° (instead of 360°).
"XI-X" It Go but the planet would pause for 2 extra beats for each tile with icon on it, iff possible
PAUSE: Limited Edition
This level has its own curse effect which uses the same ID.
For other levels without that, see Git0, It Is Curse, or It Does.
Add 2 extra paused beats to each tile with icon, except hold starts (the game refused to do that) and portal (no perceptible changes for that).
"XT-X" Options but all the straight tiles are missing
According to what XH-1 said: "This level is definitely hopeless."
This level has its own curse effect which uses the same ID.
For another level without that, see Actions.
Planet will skip them, rather than waiting.

Muse Dash Collaboration

"MN-X" Night Wander (cnsouka Remix) but it is in the "midspin not found" state
...why those hitsounds still exists?
Replace each midspin with non-midspin tile, without changing the rhythm.
"MN-X'1" Night Wander (cnsouka Remix) but each midspin cancel out an later tile facing the same direction
WARNING: After completing this level, you will be in debt.
Each midspin will remove an later tile that facing the same direction as the midspin faces, if such a tile exists.
"ML-X" La nuit de vif but the time of notes in each beat is equalized
no need for decoration quality if you're a cursed level producer
(notes that span multiple parts belongs to the first part)
(it's possible to have no notes in a part)
("beats" can also be section, 2 beats, etc.)
"MO-X" EMOMOMO but after you meet a tile thats >180° the speed should be doubled compared to tiles <180°
please also check out the nerfed MO-X chart map i made if you have spare time QwQ
This level has its own curse effect which uses the same ID.
For other levels without that, see EEEEVEN MOMOMORE CURSED LED LEVELS or EMOMOMORE CURSED LEVELS.
For the list of curses that took effects on this level, see here.
When you hit a tile which its angle is >180°, your current speed will be doubled for once,
until you hit a tile which its angle is <180°, which will halved your current speed for once,
until you hit a tile which its angle is >180°, which will doubled your current speed for once,
until you hit a tile which its angle is <180°... okay i'll shut up.
(your current speed can also be doubled or halved when curse effect starts for difficulty balancing)

NEO COSMOS DLC

ID format like "T4-EX" or "T3-E12" is also valid.
IDs shown here are based on {World ID}-{Level #} format.
"T1-X" NEW LIFE but every hold is now with 0 extra loops
b- bu- but the middle part is literally the same!
Add holds if there is no holds, then changes every hold to have 0 extra loops.
"T1EX-X" NEW LIFE but every hold is now 1 loop longer
wait thats not what i meant- nevermind...
Add holds if there is no holds, then add 1 extra loops to every hold.
"T2-X" sing sing red indigo but the special midspins can change the speed
I made it! I refreshed the T2-X curse!! And again!!! And yet again!!!!
Extra parameters:
{fire} (default: lambda f: f + originalBPM * 0.1)
A BPM-to-BPM function that would be used on fire tiles.
THE OUTPUT MUST BE BIGGER FOR ANY INPUT.
{ice} (default: lambda f: max(f - originalBPM * 0.1, originalBPM * 0.1))
A BPM-to-BPM function that would be used on ice tiles.
THE OUTPUT MUST BE SMALLER FOR ANY INPUT.
{wind} (default: lambda f: f)
A BPM-to-BPM function that would be used on midspins that's right at the middle.
"T2EX-X" sing sing red indigo but the special midspins can change the planet count
p.s. yellow midspins will change the planet counts to the other
Fire Midspin = Triple Planets,
Ice Midspin = Double Planets,
"Yellow" Midspin = Swap To Another Count For Planets.
"T3-X" No Hints Here! but the ending is destined (aka Hints Here!)
This level also includes Firestix's crabs, Xiaojun4412's landmines, Grafrustix's Miss Qing curses, MaxDudeIguess's blocks, GGGGGrass's xxx curses, and BaiLe's carrots.
This level has its own curse effect which uses the same ID.
For another level without that, see Nothing Here!.
For the list of curses that took effects on this level, see here.
For the explanations by Anjeez929 at his GitHub page, see Hints Here: Explained.
Remove uncertain factors, such as free roam, in any way.
"T3EX-X" No Hints Here! but the affected sections are separated to multiple levels
Current progress: notation update & zh_CN translation
This world also introduced curses by 严豆不严了, Kokomi_D_0g, lunar_flared, KirbyCreep, YKJyb, and 小绿君.
This level has its own curse effect which uses the same ID.
For another level without that, see No Crabs Here!.
For the list of curses that took effects on this level, see here.
For the explanations by Anjeez929 at his GitHub page, see More Curses Here: Explained.
"T3EX-1" Warm Up!! but the given curse effects are halved
Parameters:
{curses}
curse effect(s) to be halved.
Each curse effect should be halved individually, even for those with repeations.
(affection from this curse effect should be equalized as much as possible)
"T3EX-2" Holds & midspins!! but the 1st one makes your speed slower & the 2nd one faster
Extra parameters:
{holds}
A BPM-to-BPM function that would be used when hold starts.
THE OUTPUT MUST BE SMALLER FOR ANY INPUT.
{midspins}
A BPM-to-BPM function that would be used when hitting the midspin tile.
THE OUTPUT MUST BE BIGGER FOR ANY INPUT.
"T3EX-3" Don't miss a shot!! but i failed to figure out of the length of the straight segments
Choose an arbitrary number as the new tile count (it can be the same as before) for each of the continuous 180° tiles.
"T3EX-4" Tricky Triangles!! but it reverses the order for tiles in each loop
Have a list of tiles in each loop, with additional informations including relative angles and gameplay events, then reverse it.
"T3EX-5" High Fives!! but the midspins are mirrored
(the order should also be mirrored)
"T3EX-6" Collect 3!! but the freeroam isn't free anymore
Unlike "T3-X", skipping the music isn't allowed for this curse. Please make an actual chart, or leave it by using paused beats for delay.
"T3EX-7" Remember This!! but you should have remembered this a long time ago
Hide all the charts until this point.
It does not change the default chart opacity though, means that every brand-new-created tiles after this effect should still be shown as the same as that this effect never takes place.
"T3EX-8" Warp Tiles!! but there's a hard limit to the value in minimum for angle of tiles
Extra parameters:
{angle}
minimum value for tile's angle.
Every tile that its angle is <{angle} is now ={angle}.
"T3EX-9" Answer!! but the pauses has stopped functioning
Remove all the pauses.
"T3EX-10" Speedy Floors!! but there's a hidden twirl behind every setspeed with icon
(this includes the lack of icons due to multiple events on a single tile that's in conflict with each other, but not due to the minor changes of BPM)
"T3EX-11" Drifting Floors!! but it reverses the order for tiles between horizonal segments
"T3EX-12" Drunk Rhythms!! but the amount of precision for tiles is π/4 (rounds up)
"T3EX-13" Defend the Castle!! but the title can tell you what's going on here
Parameters:
{curse}
The curse effect that will be displayed on the title.
Append the but statement of {curse} to the current level title, according to the order of priority.
"T3EX-14" Fog!! but there's an extra 180° tile for each amount of tile passed
Extra parameters:
{gap}
The gap length between extra 180° tiles.
"T3EX-15" Disappearing Floor!! but the planet would step on the 1st tile on its orbit as long as that tile is located after the tile it stays on
"T3EX-16" Answer!! Again!! but each pause beat generates an 180° tile after it
This curse wouldn't remove the pause itself -- please use "T3EX-9" for that.
"T3EX-17" Avoid Being Spotted!! but each continuous turnarounds repeats the section until the next turnaround for each of turnarounds here
(turnarounds themselves wouldn't be repeated)
Also, this curse uses the absolute angle as the reference system, that means the section being repeated must keep their rotation unchanged, therefore the angle of the tile at the end of the section could be changed caused by this rule.
(just realized that i used way too many "the", but whatever)
"T3EX-18" Tricky Triangles... Two!! but the 1st numerical value would be incresed by 1
Parameters:
{obj}
The object to be affected.
If it's a level (or a level section), both of the world ID and level ID would be considered as numerical values, but not if it's a curse.
Every number inside the but statement, even in other forms ("5Five", "6Sixth", "3Triple Planets", "1a 2pair of"), DOES COUNTS.
(one of the exception is 0; it depends. same as 1, but it's more certainly to be counted)
"T3EX-19" Almost there!! Don't get distracted!! but all the angles are multiplied by a number
Extra parameters:
{multiplier}
The multiplier to the angles.
Angles should be modded by 360° to have more flexibility.
(integer multiples of 360° should be transformed into turnarounds rather than midspins)
"T4-X" Third Sun but it's a midspin party
midspin 2 win
Add special midspins, and also change some of the midspins to special variants.
"T4EX-X" Third Sun but the midspins are from australia
midspin 4 win...?
For the list of curses that took effects on this level, see here.
For every tile with midspins, flip the midspins to another side, in the original (not reversed) order and the same ratio (for example, a midspin that divided the angle equally, should also divide the angle equally on the other side).
"T5-X" Divine Intervention but its curse can change the description of any curse effect
the string-curses' parameters
This level has its own curse effect which uses the same ID.
For other levels without that, see Divide By Infinity, Tier 9V: init on dev, or Define Interaction.
For the list of curses that took effects on this level, see here.
Remember when I said Curse effects is a section-to-section mapping?
This one is special: It's a curse-to-curse mapping!
As a result, T5-X adofai cannot be applied to level sections. It can only be applied to curses.
More specifically, T5-X takes 3...
Parameters:
{old}
The old substring (it basically means text clip) to be replaced;
{new}
The new substring to be used for replacement;
{curse}
The curse effect that will be modified.
and return a new (and temporary) curse effect based on {curse}, with the but statement that all the {old} are replaced to {new}.
Current curse: "T5-X"( "judgement limits are", "title is", "1-X" )
# "1-X" A Dance of Fire and Ice but the title is changing
The actual effect of the return value is based on the reanalysis of the keyword-replaced but statement, and must be different between {curse} (even when they have the same but statement).