Author Topic: ※ Danmakufu Q&A/Problem thread 3 ※  (Read 468456 times)

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #180 on: May 11, 2016, 07:10:24 PM »
It doesn't work. All it changed is that it now deletes the whole timer after the boss appears. Also, I specifically said it worked well with the midboss, but stopped working during the boss, meaning I'm making a Stage script, not a Single or Plural script. It works perfectly in Single.

Once a boss scene is created, objScene becomes equal to the id of the boss scene (via GetEnemyBossSceneObjectID). Once that happens, however, it can never become ID_INVALID again due to how you wrote the code. This is because the while loop never closes and the objScene = GetEnemyBossSceneObjectID(); line never gets run again. In fact, the way you have it set up makes the while(objScene != ID_INVALID) an infinite loop, which in turn is starting another infinite loop within the RenderTimer function.

If the GetEnemyBossSceneObjectID were to change, like when one boss dies and another one later on in the stage is created, then the objScene variable would still be stuck on the previous, now deleted, object scene id.

Because of this, Agent's solution should be working, but it isn't because there's nothing recreating the text object. By moving the let objNum = ObjText_Create; line inside the function, it can be made to work. The other problem with Agent's solution was that he changed the while loop in the function to one that looped for the specific amount of time the a spell would go until timeout, which doesn't work if the spell is ended early by damaging the boss. This is what I've come up with:

Code: [Select]
task BossTimer
{
let objScene;
loop{
objScene = GetEnemyBossSceneObjectID();
if(objScene != ID_INVALID){
RenderTimer;
}
yield;
}

function RenderTimer{
let objNum = ObjText_Create;
let timer = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER);
        ObjText_SetFontSize(objNum, 24);
        ObjText_SetText(objNum, rtos("00", min(timer,999)));
 
        ObjText_SetFontBold(objNum, true);
        ObjText_SetFontColorTop(objNum, 255, 255, 255);
        ObjText_SetFontColorBottom(objNum, 255, 255, 255);
        ObjText_SetFontBorderType(objNum, BORDER_FULL);
        ObjText_SetFontBorderColor(objNum, 0, 0, 0);
        ObjText_SetFontBorderWidth(objNum, 2);
        Obj_SetRenderPriority(objNum, 0.5);
ObjText_SetFontType(objNum, "Russell Square Regular");
        ObjRender_SetX(objNum, 395);
        ObjRender_SetY(objNum, 2);
        while(GetEnemyBossSceneObjectID() != ID_INVALID) { 
timer = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER);
ObjText_SetText(objNum, rtos("00", min(timer,999)));
yield;
}
Obj_Delete(objNum);
}
}
I have tested this in a stage setting and it indeed works. Hope my explanation make sense, I'll try to explain more if you're still unsure.

EDIT: Whoops, I forgot to change the X and Y coordinates of the timer back to their original values, I had moved them so I could make sure that I was seeing the timer. My bad, feel free to change them back.
EDIT2: I fixed it, hopefully I didn't miss anything else. In any case, the timer should at least be appearing during all bosses now.
« Last Edit: May 11, 2016, 07:16:56 PM by ExPorygon »

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #181 on: May 11, 2016, 08:21:12 PM »
Highly intelligent stuff.

Oh, I can see why it didn't work now. Thank you so much for helping me with the problem, your explanation was superb.
I seem to be remarkably good at making chains of accidental infinite loops :V
Lunatic 1CCs: PCB, IN, PoFV, HSiFS
Extra: All except PC-98.

Oh hey look I can do DNH scrips.

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #182 on: May 11, 2016, 10:12:06 PM »
Oh, I can see why it didn't work now. Thank you so much for helping me with the problem, your explanation was superb.
I seem to be remarkably good at making chains of accidental infinite loops :V
Don't sweat it, it was actually a fun problem to debug. Until my debug functions needed debugging...

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #183 on: May 12, 2016, 05:49:04 AM »
Don't sweat it, it was actually a fun problem to debug. Until my debug functions needed debugging...

I'll try, but I'm pretty much crap at debugging. That's why you see me so many times in this thread.
Lunatic 1CCs: PCB, IN, PoFV, HSiFS
Extra: All except PC-98.

Oh hey look I can do DNH scrips.

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #184 on: May 16, 2016, 08:34:22 AM »
Hi, I needed some help with my spell background.
I've been trying to replicate Junko's background but there are some (lots of) problems.

http://imgur.com/a/5JhDp (I don't know how to attach images...)

In the first picture there's a line where the bg originate out from, I want it to originate from a specific point, not from a line.
In the second picture, as the time passes on, the bg becomes stretched out and more uniformed, I don't want this to happen.
Hi, I had forgotten about this. I saw it and set it aside for later because I knew it'd be problematic and I didn't want to think about how to do it properly, and just never got back to it until recently.

As for why it becomes more stretched out, that's just because your U-values for v0 are moving while the U-values for v1 ... v52 are all staying at 0.

The main issue here is that you can't accomplish what you want using trianglefans. There's really no way to map the texture into a circle coming out from a point using a fan because there isn't just one origin point in the texture. Here is what you're currently doing (click):



This is at some point in time when your v1's U-value hits 512. The lines end at the left edge of the image (which repeats vertically) and the endpoints (i.e. the rest of the vertices) are evenly spaced vertically, if you can imagine that. These are the triangles that are wrapped around in the circular fan. You should be able to see that the two "edges" of the fan are never going to have the pattern match up, which creates that big line.

After rigorously examining Junko's actual background to see how ZUN does it, this is what I have:



This is an example of what would be the proper mapping. Each strip here is distorted into a triangular shape (each of the two vertices on the right are squished together) and arranged in a fan. One important difference is that the vertices that meet in the center are all different for each triangle. You can look at the whole mapped texture as if the entire right side of the UV rectangle is condensed into a point, and the rest is wrapped around that point. This way the two "edges" of the fan will match up (except not quite because the texture doesn't perfectly tile vertically, lol ZUN). Then, getting to background to scroll the way it does is just moving the whole UV rectangle to the right.

Now that I've explained how the background is supposed to work, there's still a big problem. Because it works by distorting rectangles, there is a problem where you won't get the results you'd expect. Because rectangles are rendered as just two triangles stuck together, what happens is that when you try to distort it they are distorted as separate shapes rather than one contiguous shape, and the overall texture barely looks like it's supposed to. This is a classical problem with a solution called perspective correct texture mapping (example), but implementing this doesn't seem to be very feasible in Danmakufu. You might be able to program a shader to do this, but I don't have much experience with it.

In any case, you can mostly work around it by increasing the number of vertices until it looks smooth enough. I don't particularly like this solution but it'll work. I've made the background myself, and this is what you get.



Code: https://gist.github.com/drakeirving/8283a5ed47061c19bc4cc4d26e849226

i spent way too long on this
« Last Edit: May 16, 2016, 08:38:14 AM by Drake »

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #185 on: May 16, 2016, 10:07:42 AM »
I thought no one noticed my question so I already went ahead and fixed it myself a little while ago...
Thanks anyway.... :getdown:
http://imgur.com/6Hixkz0

P.S. lol, that spell history cover-up :V.
« Last Edit: May 16, 2016, 11:10:32 AM by afkwtflol »

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #186 on: May 21, 2016, 07:28:19 AM »
Hello guys, I'm new here and in Danmakufu 0.12m.
can someone help me anim this sprite for danmakufu 0.12m?
https://www.mediafire.com/?5pdgyuentafdm4v <--- Flandre Scarlet sprite..
please guys help me! T_T

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #187 on: May 21, 2016, 04:27:21 PM »
Hello guys, I'm new here and in Danmakufu 0.12m.
can someone help me anim this sprite for danmakufu 0.12m?
https://www.mediafire.com/?5pdgyuentafdm4v <--- Flandre Scarlet sprite..
please guys help me! T_T
There are at least a couple tutorials for animation in 0.12m like this one. It's old, but so is 0.12m (I really recommend you learn ph3 instead).

More tutorials for both versions can also be found here.

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #188 on: May 25, 2016, 02:56:13 PM »
I've been searching the wiki and the official documentation, and I've been wondering, how does danmakufu handle dictionaries / associative arrays (if at all)?

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #189 on: May 25, 2016, 03:10:33 PM »
I've been searching the wiki and the official documentation, and I've been wondering, how does danmakufu handle dictionaries / associative arrays (if at all)?

As of now, there is no native support for any form of mapping except for the standard arrays.

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #190 on: May 25, 2016, 03:16:16 PM »
You can use common data instead, or you can implement hashtables yourself.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #191 on: May 25, 2016, 04:27:47 PM »
You can use common data instead, or you can implement hashtables yourself.
Common data seems to be a rough fit for what I'm looking to do, thanks

Mеа

  • catnapping
  • three dots connect to rectangles
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #192 on: May 25, 2016, 04:46:48 PM »
Common data is apparently tricky since it's shared across scripts, totally global, and can (I think sometimes) get corrupted or screwed up on replays. Doesn't sound too reliable. You're probably better off with that hash table suggestion, it's not too hard to do it yourself.
Naked expression; purple raspberry flavour

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #193 on: May 25, 2016, 08:22:55 PM »
MKM appears to have problems with null pointers when it comes to loading common data. Just avoid empty arrays and strings like the plague for areas you want to save to replays or files.

Of course, if you need to manage multiple hash tables, then implementing them yourself is the way to go.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #194 on: May 26, 2016, 02:50:30 AM »
You can very much use the exact same functionality as CommonData without messing around with global scope clutter by using Obj_SetValue and GetValue. It's probably a sort of hashing implementation under the hood anyways; the main barrier is that they need an object to be attached to and there isn't any kind of truly generic object. You can effectively work around this by just using an Enemy object and never registering it.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #195 on: May 26, 2016, 11:19:01 AM »
You can very much use the exact same functionality as CommonData without messing around with global scope clutter by using Obj_SetValue and GetValue. It's probably a sort of hashing implementation under the hood anyways; the main barrier is that they need an object to be attached to and there isn't any kind of truly generic object. You can effectively work around this by just using an Enemy object and never registering it.
This seems to be a much better fit, can't believe I missed this, thanks.

Random Sphere

  • It's been 3 years...
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #196 on: June 01, 2016, 05:54:30 PM »
How do I take the texture of the stage BEFORE it finishes (I?m talking about packages), so I wouldn?t have a black background?

http://pastebin.com/BaAFBkfw
« Last Edit: June 01, 2016, 08:25:06 PM by Helepolis »
Normal 1CCs : PCB, IN, PoFV, MoF, UFO, TD, DDC, HSiFS, WBaWC.
Extra Clears: IN, MoF, HSiFS, WBaWC.

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #197 on: June 02, 2016, 05:33:29 AM »
I don't really understand the question. You don't seem to do anything on the finish state besides call other functions and I don't know what they do. I'm assuming TilteScreen goes to the title screen and Stage restarts the stage; does ClearScene launch another script and return a script result? I'm not sure what you're doing at all.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #198 on: June 02, 2016, 11:16:42 AM »
*an another overly complex question arrives...
I'm currently experimenting with hlsl's, but I found out that it can somehow screw up the alpha of the spell background.
It also apparently affects the stage background too, but the change isn't much noticeable.
what it looks like:
http://imgur.com/a/zcgw2 (still don't know image attaching)
I tried fixing it for quite sometime now, but I can't find what causes the darkening.
Here's both the code for hlsl and the task that calls it:
http://pastebin.com/aardDBgg

EDIT: The issue has been resolved.
« Last Edit: June 11, 2016, 12:11:04 PM by afkwtflol »

Random Sphere

  • It's been 3 years...
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #199 on: June 02, 2016, 06:42:22 PM »
How do I take the texture of the stage BEFORE it finishes (I?m talking about packages), so I wouldn?t have a black background?

http://pastebin.com/BaAFBkfw


Nevermind, I fixed my problem.
Normal 1CCs : PCB, IN, PoFV, MoF, UFO, TD, DDC, HSiFS, WBaWC.
Extra Clears: IN, MoF, HSiFS, WBaWC.

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #200 on: June 06, 2016, 07:21:23 PM »
Hi!

I'm searching how I can change the alpha value of an OBJ_SPRITE_LIST_2D object.
I try to use ObjRender_SetAlpha but it does nothing.
I found ObjSpriteList2D_CloseVertex that's supposed to allow to transform all rectance of the list with ObjRender_ but it still not work.

I'd pastebin a part of the script here: http://pastebin.com/raw/zGkurXzh

I need help  :ohdear:

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #201 on: June 07, 2016, 10:54:00 AM »
Before you use CloseVertex, using coordinate transforms like SetPosition/Angle/Scale are applied only to the next sprite added. After you use CloseVertex, it affects the whole object together, taking (0,0) as object center.
So ObjSpriteList2D_SetDestRect maps the texture relative to a sprite's position, ObjRender_SetPosition sets the sprite's position relative to the object's position, and using ObjSpriteList2D_CloseVertex and then ObjRender_SetPosition sets the object's position. So depending on how you use these all together you can get some interesting results with how you map sprites.

For example, if you position sprites at (0,0), (10,0), (20,0), close the list, then position the object at (100,100), the sprites will end up at actual positions (100,100), (110,100), (120,100).
(But you already know this given how you're moving the dialogue box.)


ObjRender_SetAlpha works fine as long as you use it per-sprite, but it doesn't work on the whole thing. And like other render functions, it also applies to every sprite added afterwards without needing to call it again. But considering you want to use it on the whole object post-construction, you're going to have to do it differently by using ObjPrim_SetVertexAlpha instead (since 2D Sprite List objects are still Primitive objects).

Code: [Select]
function ObjSpriteList2D_SetAlpha(obj, a){
ascent(v in 0..ObjPrim_GetVertexCount(obj)){
ObjPrim_SetVertexAlpha(obj, v, a);
}
}

Considering some of this confusion is due to the wiki's pretty crappy documentation on it, I changed it a bit to hopefully make it clearer how the sprite lists work.
« Last Edit: June 07, 2016, 11:40:12 AM by Drake »

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #202 on: June 07, 2016, 03:49:25 PM »
I think about using ObjPrim_SetVertexAlpha but I didn't know how. Now, I know. Thanks a lot :D.
I think it's the same thing for changing the color right?

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #203 on: June 08, 2016, 07:07:13 AM »
Yeah it'd be the same way to set color over the whole object.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Pruns

  • Dearest wish, hide this stupid nickname set below
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #204 on: June 08, 2016, 06:57:29 PM »
Hello everyone !
I'm trying to write a little script and I have a little problem.
I explain :

The boss fires some bullets,
Just before she dies, I want all bullets spawned since the beginning of the spell come back to the boss, here is my code :

Code: [Select]
task Bullet(x, y, v, angle,delaie) {
    let papillon=ObjShot_Create(OBJ_SHOT);
    ObjShot_Regist(papillon);

    ObjMove_SetX(papillon, x);
    ObjMove_SetY(papillon, y);
    ObjMove_SetAngle(papillon, angle);
    ObjMove_SetSpeed(papillon, v);
    ObjShot_SetGraphic(papillon, 107);
    ObjShot_SetDelay(papillon, delaie);
    ObjShot_SetSpellResist(papillon, true);
    ObjShot_SetAutoDelete(papillon,false);
    change(papillon);
}

task change(papillon){
while(ObjEnemy_GetInfo(objEnemy, INFO_LIFE)>=500){
yield;
}
ObjMove_SetSpeed(papillon, -3 );
}

When I reach 500 hp
instead of modify speed of every bullets fired,
she fires new bullets with -3 speed from her.

I looked at some tutorials about using yield but It's still blur in my mind.
After a bullet reach the boss, I want to delete it, but I firstly would like to solve this problem.

Can anyone helps me please ?
Thanks for helping !

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #205 on: June 08, 2016, 07:13:42 PM »
First of all, there's always CreateShotA1 for firing a bullet with presets.

Second, it's better to use

Code: [Select]
ObjMove_SetSpeed(papillon, 3);
ObjMove_SetAngle(papillon, ObjMove_GetAngle(papillon) + 180);

unless you don't mind your bullets facing the same direction when the reverse.

And third, new bullets are going to have a speed of -3 when the boss has less than 500 HP. You can stop shooting bullets at that point by checking if the boss has at least 500 HP before shooting.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Pruns

  • Dearest wish, hide this stupid nickname set below
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #206 on: June 08, 2016, 07:32:36 PM »
Thanks for replying

I've made all modifications you told me,so I get :

Code: [Select]
task Bullet(x, y, v, angle,delaie) {
    let papillon=CreateShotA1(x,y,v,angle,107,delaie);
    ObjShot_SetSpellResist(papillon, true);
    ObjShot_SetAutoDelete(papillon,false);
    change(papillon);
}

task change(papillon){
while(ObjEnemy_GetInfo(objEnemy, INFO_LIFE)>=500){
yield;
}
ObjMove_SetSpeed(papillon, 3);
ObjMove_SetAngle(papillon, ObjMove_GetAngle(papillon) + 180);
}

The boss stops shooting when she reaches 500 hp.
but still no change, bullets don't come back
It seems the task "change" doesn't affect the bullet that she musts affect.
« Last Edit: June 08, 2016, 07:37:07 PM by Pruns »

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #207 on: June 08, 2016, 08:24:58 PM »
What do you have in your @MainLoop?
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Pruns

  • Dearest wish, hide this stupid nickname set below
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #208 on: June 08, 2016, 08:33:08 PM »
What do you have in your @MainLoop?

http://pastebin.com/a5ED2QDT

Please don't blame me about the optimization, It's my first script

Won't blame for that, but will blame for not putting this in pastebin. :V It is too much code to show here directly. -Helepolis
« Last Edit: June 09, 2016, 05:18:27 AM by Helepolis »

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #209 on: June 08, 2016, 08:49:53 PM »
You forgot to yield in your @MainLoop.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200