Author Topic: Touhou Spellcard Replica Thread  (Read 23105 times)

Drake

  • *
Re: Touhou Spellcard Replica Thread
« Reply #30 on: May 28, 2009, 02:51:04 AM »
Speaking of which, he has an interesting movement script.

Code: [Select]
function ExMove(length, height) {
if(GetPlayerX < GetX) {
if(GetX - length <= GetClipMinX) {
SetMovePosition03(GetX + length, rand(height, height + 60), 10, 6);
} else {
SetMovePosition03(GetX - length, rand(height, height + 60), 10, 6);
}
} else {
if(GetX + length >= GetClipMaxX) {
SetMovePosition03(GetX - length, rand(height, height + 60), 10, 6);
} else {
SetMovePosition03(GetX + length, rand(height, height + 60), 10, 6);
}
}
}

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

Re: Touhou Spellcard Replica Thread
« Reply #31 on: May 28, 2009, 03:00:37 AM »
That's around about what I'd like to use. Moves the boss above your position (roughly) so that even if you're using a forward shooting type, you can still hit the boss most of the time while still concentrating on dodging. The height parameter seems pretty useless though, I'd be using the same y area for any time I'd use this function, so I'm not entirely sure why he would make it a variable. I mean, anytime I'd want to call this function, I pretty much want the boss to be close to the top of the screen... So why declare "100" every time I want to move her?

Nothing in his script is incredibly complex, it's just a bit of a bitch to find when the tasks aren't really named well. The only thing I had trouble understanding was his Koishi attack, the rest of it is fairly straightforward (albeit needlessly timed in a complex manner, but it doesn't affect the understanding of the script very much).

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #32 on: June 07, 2009, 02:42:31 PM »
Oooohhh Yayz! I'll be here forever.

Hat

  • Just an unassuming chapeau.
  • I will never be ready.
Re: Touhou Spellcard Replica Thread
« Reply #33 on: June 25, 2009, 05:03:25 AM »
Y'know... what would be a really cool idea is if we managed to replicate every card from every game. I think that would be awesome. Like... a universal Spellcard Practice. That would be awesome, no?

And by that, I mean I'm just crazy enough to attempt it (with some help, of course, as that would be tantamount to suicide-induction).

Drake

  • *
Re: Touhou Spellcard Replica Thread
« Reply #34 on: June 25, 2009, 05:28:21 AM »
lol no

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

Hat

  • Just an unassuming chapeau.
  • I will never be ready.
Re: Touhou Spellcard Replica Thread
« Reply #35 on: June 25, 2009, 05:47:58 AM »
o.o I agree. In retrospect... that was a brilliantly retarded idea.

This is what I get for staying up late.

Stuffman

  • *
  • We're having a ball!
Re: Touhou Spellcard Replica Thread
« Reply #36 on: June 25, 2009, 06:01:44 AM »
They wouldn't be perfect reproductions, so its usefulness as a universal spell practice would be questionable...

Anyway, even if it's neat to be able to see how ZUN did some of his more famous patterns, I'd rather see new content!

Hat

  • Just an unassuming chapeau.
  • I will never be ready.
Re: Touhou Spellcard Replica Thread
« Reply #37 on: June 25, 2009, 12:34:52 PM »
True say. I really need to carry around a journal or something, though, because I always think of good ideas for spellcards, then forget them and end up making replicas anyway. XD

In any case, there is some weird voodoo going on with Double Black Death Butterfly. I think the angular velocity of the butterflies varies with the distance from Yukari... EDIT: No, wait, lies. I just don't know how all the bullets seem to converge to this one distance from her. It's like they all just graze by this invisible circle... but I have no idea how to make that work.
« Last Edit: June 25, 2009, 12:43:13 PM by Karfloozly »

Drake

  • *
Re: Touhou Spellcard Replica Thread
« Reply #38 on: June 25, 2009, 05:50:07 PM »
Something about having the angle to return at being directed towards Yukari plus a number. That should make all of them return at an angle right beside her and thus make a circle, no?

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

Hat

  • Just an unassuming chapeau.
  • I will never be ready.
Re: Touhou Spellcard Replica Thread
« Reply #39 on: July 01, 2009, 10:32:51 PM »
Yeah, that is what I was trying to emulate, but the problem is that there is angular velocity involved. I'm pretty good at math, but I seriously lack the energy to figure out how to get the angular velocity to give the angle of return plus a number as it varies with distance, in time (that was really convoluted, sorry). That's an algebraic clusterfuck, thank you. XD

Drake

  • *
Re: Touhou Spellcard Replica Thread
« Reply #40 on: July 01, 2009, 10:43:20 PM »
Make object bullets that start out as an originating angle (which escalates after each bullet) and have an internal variable go up each frame and the bullets decelerate. When it gets past a certain number, have the angles start increasing/decreasing and accelerate until either another frame number is hit or the angle they have is equal to the original angle plus 184 or 176 or something.

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

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #41 on: November 14, 2009, 10:49:55 PM »
Please improve:
Code: [Select]
#TouhouDanmakufu
#Title[Improvement Needed]
#Text[Um yeah.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let frame = -240;
let round = 0;
let a = 0;
let num = 11;
let graphic = [RED23, PURPLE23];
let Spell = true;
let Survival = false;
let Final = false;
let CutInGraphic = GetCurrentScriptDirectory~"Cut.png";
function ExMove(length, height) {
if(GetPlayerX < GetX) {
if(GetX - length <= GetClipMinX) { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); }
} else {
if(GetX + length >= GetClipMaxX) { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); }
}
}
@Initialize {
if(Spell) { SetLife(630); SetDamageRate(15, 5); } else { SetLife(2400); SetDamageRate(50, 20); }
SetTimer(60);
if(Survival) { SetDurableSpellCard; }
if(Spell) { if(Final) { SetScore(1000000); } else { SetScore(1200000); } SetEnemyMarker(true); MagicCircle(true); }
if(Spell) { SetInvincibility(24 0); } Concentration01(90); if(Final) { SetEffectForZeroLife(120, 255, 1); }
if(Spell) { CutIn(KOUMA, ""\""Curse"\", CutInGraphic, 0, 0, 182, 222); }
SetMovePosition03(GetCenterX, GetCenterY-80, 9, 10);
LoadGraphic(BossImage);
//AtMain(); //Expert;
}
@MainLoop {
if(frame >= -60) {
SetCollisionA(GetX, GetY, 32);
}
SetCollisionB(GetX, GetY, 24);
if(frame == -60) {
AddLife(-(GetEnemyLife/2));
Explosion01(GetX, GetY, 5, 1, 255);
}
if(frame < 600 && frame > 0 && frame % 9 == 0) {
loop(num) {
ascent(i in 0..5) {
CreateShot02(GetX, GetY, 7, a, -1/3, 2+i*0.125, graphic[rand_int(0, 1)], 0);
}
a+=360/num;
}
a+=7.25;
}
if(frame >= 600 && frame % 9 == 0) {
loop(num) {
ascent(i in 0..5) {
CreateShot02(GetX, GetY, 7, a+rand(-5, 5), -1/3, 2+i*0.125, graphic[rand_int(0, 1)], 0);
}
a+=360/num;
}
a+=7.25;
}
frame++;
}
let animation = 0;
@DrawLoop {
DrawText("Hina", 40, 36, 12, 255);
SetTexture(BossImage);
animation++;if(animation==600){animation=0;}
if(GetSpeedX()==0){if(animation<=300){SetGraphicRect(64,1,127,64);}else if(animation>300&&animation<=600){SetGraphicRect(0,1,63,64);}}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1, 1);
SetRenderState(ALPHA);
SetAlpha(255);
SetColor(255, 255, 255);
DrawGraphic(GetX, GetY);
}
@Finalize {
DeleteGraphic(BossImage);
}
}
...that thing. It should look like Wound Sign "Pain Flow".

Jaimers

  • You just did it because you're older than me.
Re: Touhou Spellcard Replica Thread
« Reply #42 on: November 18, 2009, 01:11:47 AM »
So I can request for any of ZUN's patterns to be remade in Danmakufu?
Hmm...

Gengetu Rape Time

Make it happen  :V

Re: Touhou Spellcard Replica Thread
« Reply #43 on: November 18, 2009, 01:22:17 AM »
So I can request for any of ZUN's patterns to be remade in Danmakufu?
Hmm...

Gengetu Rape Time

Make it happen  :V
Already been done

Although I don't remember the link, there's a vid on youtube of a hacked EoSD extra with Flandre using GRT as the last attack.

Drake

  • *
Re: Touhou Spellcard Replica Thread
« Reply #44 on: November 18, 2009, 01:33:53 AM »
Either way it wouldn't be hard. It's just superfast circles of bullets of different types at kind-of-random positions.

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

PeejsterM

Re: Touhou Spellcard Replica Thread
« Reply #45 on: November 18, 2009, 02:40:11 AM »
How about we get some Chen here?
Shikigami Sign 「Pentagram Flight」
Heaven Sign 「Immortal Sage's Rumbling」

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #46 on: November 19, 2009, 03:42:17 PM »
Working on some Chen card replications. But meanwhile, let's have a bit of Koishi. (Please improve.)
Code: [Select]
#TouhouDanmakufu
#Title[Ancestor Test]
#Text[This is a description.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let frame = -120;
let round = 0;
let x = 10;
let a = 0;
let b = 0;
let c = 0;
let num = 20;
let Spell = true;
let Survival = false;
let Final = false;
let CutInGraphic = GetCurrentScriptDirectory~"Cut.png";
function ExMove(length, height) {
if(GetPlayerX < GetX) {
if(GetX - length <= GetClipMinX) { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); }
} else {
if(GetX + length >= GetClipMaxX) { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); }
}
}
@Initialize {
if(Spell) { SetLife(630); SetDamageRate(20, 5); } else { SetLife(2400); SetDamageRate(100, 40); }
SetTimer(120);
if(Survival) { SetDurableSpellCard; }
if(Spell) { if(Final) { SetScore(1000000); } else { SetScore(1200000); } SetEnemyMarker(true); MagicCircle(true);
SetInvincibility(90); CutIn(KOUMA, "表象「夢枕にご先祖総立ち」", CutInGraphic, 0, 0, 182, 222); }
Concentration01(90); if(Final) { SetEffectForZeroLife(120, 255, 1); }
SetX(GetClipMinX-100); SetY(GetCenterY/2); SetMovePosition03(GetCenterX, GetCenterY-80, 9, 10);
LoadGraphic(BossImage);
//AtMain(); //Expert;
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
if(frame > 0 && frame < 120 && frame % 6 == 0) {
ascent(i in 0..15) {
ReflectBullet(GetClipMinX+x, GetClipMaxY, 8, a-90+5, AQUA02, i*2);
ReflectBullet(GetClipMaxX-x, GetClipMaxY, 8, -a-90-5, AQUA02, i*2);
}
x+=15;
a+=1;
}
if(frame > 120 && frame <= 240 && frame % 6 == 0) {
ascent(i in 0..15) {
ReflectBullet(GetClipMinX+x, GetClipMaxY, 8, a-90, AQUA02, i*2);
ReflectBullet(GetClipMaxX-x, GetClipMaxY, 8, -a-90, AQUA02, i*2);
}
x+=15;
a+=1;
}
if(frame > 300 && frame <= 540) {
if(frame % 20 == 0) {
loop(num) {
CreateShot01(GetX, GetY, 5, b, AQUA04, 30);
b+=360/num;
}
b+=3;
}
if(frame % 10 == 0) {
TurnBullet(GetX, GetY, 3, c, AQUA22, 30);
c+=9.25;
}
}
if(frame == 540) { frame = -60; a = 0; x = 10; }
if(x >= 150) { a = 0; x = 10; }
frame++;
yield;
}
let animation = 0;
@DrawLoop {
DrawText("Yuxii", 40, 36, 15, 255);
SetTexture(BossImage);
animation++;if(animation==600){animation=0;}
if(GetSpeedX()==0){if(animation<=300){SetGraphicRect(64,1,127,64);}else if(animation>300&&animation<=600){SetGraphicRect(0,1,63,64);}}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1, 1);
SetRenderState(ALPHA);
SetAlpha(255);
SetColor(255, 255, 255);
DrawGraphic(GetX, GetY);
}
@Finalize {
DeleteGraphic(BossImage);
}
task ReflectBullet(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let counter = 0;
Obj_SetPosition(obj, x, y);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetSpeed(obj, v);

while( !Obj_BeDeleted (obj) ) {
if(counter<=3){
if(Obj_GetX(obj) <= GetClipMinX || Obj_GetX(obj) >= GetClipMaxX) {
Obj_SetAngle(obj, 180-angle);
counter++;
}
if(Obj_GetY(obj) <= GetClipMinY) {
Obj_SetAngle(obj, -angle);
counter++;
}
}
yield;
}
}
task TurnBullet(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let counter = 0;
Obj_SetPosition(obj, x, y);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetSpeed(obj, v);

while( !Obj_BeDeleted (obj) ) {
counter++;
if(counter == 75) {
Obj_SetAngle(obj, atan2(GetPlayerY-Obj_GetY(obj), GetPlayerX-Obj_GetX(obj)));
}
yield;
}
}
}
Also, please disregard "Yuxii". Whatever that is.
EDIT: Made sort of harder.
« Last Edit: November 22, 2009, 08:19:17 PM by Always お⑨烏 »

Henry

  • The observer
  • Exploring to the new world of Danmaku
Re: Touhou Spellcard Replica Thread
« Reply #47 on: November 23, 2009, 03:01:51 PM »
Working on some Chen card replications. But meanwhile, let's have a bit of Koishi. (Please improve.)
Code: [Select]
#TouhouDanmakufu
#Title[Ancestor Test]
#Text[This is a description.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let frame = -120;
let round = 0;
let x = 10;
let a = 0;
let b = 0;
let c = 0;
let num = 20;
let Spell = true;
let Survival = false;
let Final = false;
let CutInGraphic = GetCurrentScriptDirectory~"Cut.png";
function ExMove(length, height) {
if(GetPlayerX < GetX) {
if(GetX - length <= GetClipMinX) { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); }
} else {
if(GetX + length >= GetClipMaxX) { SetMovePosition03(GetX - length, rand(height - 60, height + 60), 10, 6); } else { SetMovePosition03(GetX + length, rand(height - 60, height + 60), 10, 6); }
}
}
@Initialize {
if(Spell) { SetLife(630); SetDamageRate(20, 5); } else { SetLife(2400); SetDamageRate(100, 40); }
SetTimer(120);
if(Survival) { SetDurableSpellCard; }
if(Spell) { if(Final) { SetScore(1000000); } else { SetScore(1200000); } SetEnemyMarker(true); MagicCircle(true);
SetInvincibility(90); CutIn(KOUMA, "表象「夢枕にご先祖総立ち」", CutInGraphic, 0, 0, 182, 222); }
Concentration01(90); if(Final) { SetEffectForZeroLife(120, 255, 1); }
SetX(GetClipMinX-100); SetY(GetCenterY/2); SetMovePosition03(GetCenterX, GetCenterY-80, 9, 10);
LoadGraphic(BossImage);
//AtMain(); //Expert;
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
if(frame > 0 && frame < 120 && frame % 6 == 0) {
ascent(i in 0..15) {
ReflectBullet(GetClipMinX+x, GetClipMaxY, 8, a-90+5, AQUA02, i*2);
ReflectBullet(GetClipMaxX-x, GetClipMaxY, 8, -a-90-5, AQUA02, i*2);
}
x+=15;
a+=1;
}
if(frame > 120 && frame <= 240 && frame % 6 == 0) {
ascent(i in 0..15) {
ReflectBullet(GetClipMinX+x, GetClipMaxY, 8, a-90, AQUA02, i*2);
ReflectBullet(GetClipMaxX-x, GetClipMaxY, 8, -a-90, AQUA02, i*2);
}
x+=15;
a+=1;
}
if(frame > 300 && frame <= 540) {
if(frame % 20 == 0) {
loop(num) {
CreateShot01(GetX, GetY, 5, b, AQUA04, 30);
b+=360/num;
}
b+=3;
}
if(frame % 10 == 0) {
TurnBullet(GetX, GetY, 3, c, AQUA22, 30);
c+=9.25;
}
}
if(frame == 540) { frame = -60; a = 0; x = 10; }
if(x >= 150) { a = 0; x = 10; }
frame++;
yield;
}
let animation = 0;
@DrawLoop {
DrawText("Yuxii", 40, 36, 15, 255);
SetTexture(BossImage);
animation++;if(animation==600){animation=0;}
if(GetSpeedX()==0){if(animation<=300){SetGraphicRect(64,1,127,64);}else if(animation>300&&animation<=600){SetGraphicRect(0,1,63,64);}}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1, 1);
SetRenderState(ALPHA);
SetAlpha(255);
SetColor(255, 255, 255);
DrawGraphic(GetX, GetY);
}
@Finalize {
DeleteGraphic(BossImage);
}
task ReflectBullet(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let counter = 0;
Obj_SetPosition(obj, x, y);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetSpeed(obj, v);

while( !Obj_BeDeleted (obj) ) {
if(counter<=3){
if(Obj_GetX(obj) <= GetClipMinX || Obj_GetX(obj) >= GetClipMaxX) {
Obj_SetAngle(obj, 180-angle);
counter++;
}
if(Obj_GetY(obj) <= GetClipMinY) {
Obj_SetAngle(obj, -angle);
counter++;
}
}
yield;
}
}
task TurnBullet(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let counter = 0;
Obj_SetPosition(obj, x, y);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetSpeed(obj, v);

while( !Obj_BeDeleted (obj) ) {
counter++;
if(counter == 75) {
Obj_SetAngle(obj, atan2(GetPlayerY-Obj_GetY(obj), GetPlayerX-Obj_GetX(obj)));
}
yield;
}
}
}
Also, please disregard "Yuxii". Whatever that is.
EDIT: Made sort of harder.
This is simply too hard  :(, still I prefer laser instead of a stream of bullets
Old/Forgotten member.

Old Patchouli Project was outdated but new one is in progress.

Stuffman

  • *
  • We're having a ball!
Re: Touhou Spellcard Replica Thread
« Reply #48 on: December 05, 2009, 05:41:53 PM »
Hey Always, those scripts use resources that we wouldn't have just by copying them in notepad :V

Also, this thread should primarily be for trying to create exact replicas of touhou spellcards, rather than ones based on them and such.

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #49 on: December 05, 2009, 06:17:17 PM »
rather than ones based on them and such.
Er, yeah, I should really take another look at Royal Flare. (And update Missing Purple Power)
EDIT: updated MGP.
EDIT: The guy moved that post over my scripts topic, so if you're wondering where the Always Flare is , go to my scripts thread for it.
« Last Edit: December 06, 2009, 07:11:10 PM by Always お⑨烏 »

Re: Touhou Spellcard Replica Thread
« Reply #50 on: December 09, 2009, 12:21:07 AM »
Magic "Fragrance of Makai Butterfly" Byakuren's 2nd spell card, Normal

puremrz

  • Can't stop playing Minecraft!
Re: Touhou Spellcard Replica Thread
« Reply #51 on: December 12, 2009, 10:00:53 PM »
Oh yeah?
Here's Byakuren's last! http://www.youtube.com/watch?v=Hrh1Pnb2yrY
Full Danmakufu game "Juuni Jumon - Summer Interlude" is done!
By the same person who made Koishi Hell 1,2 (except this game is serious)
Topic: http://www.shrinemaiden.org/forum/index.php/topic,9647.0.html

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #52 on: December 13, 2009, 12:17:58 AM »
eh, I made something like that once, out of Naut's Aya-Satori card. you know, that?

Re: Touhou Spellcard Replica Thread
« Reply #53 on: December 15, 2009, 04:03:24 AM »

DgBarca

  • Umineko fuck yeah
  • Spoilers ?
Re: Touhou Spellcard Replica Thread
« Reply #54 on: December 27, 2009, 09:17:06 PM »
A special replica
Because it is based on a spell in SWR.
I made it Danmaku form...(!CAUTION! The card is not regular difficulty, it starts hard, become easier, and hard again, reach the timeout phase at your own risk !CAUTION!)

Download link

Edit : It have a bit too much life but meh. I and also forgot half of the card...in fact in SWR the red wave have to be "activated" by another blue one...but Blah it is not SWR
« Last Edit: December 27, 2009, 09:24:24 PM by DgBarca »
[21:16] <redacted> dgbarca makes great work
[21:16] <redacted> i hope he'll make a full game once

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Touhou Spellcard Replica Thread
« Reply #55 on: December 28, 2009, 12:30:12 AM »
A special replica
Because it is based on a spell in SWR.
I made it Danmaku form...(!CAUTION! The card is not regular difficulty, it starts hard, become easier, and hard again, reach the timeout phase at your own risk !CAUTION!)

Download link

Edit : It have a bit too much life but meh. I and also forgot half of the card...in fact in SWR the red wave have to be "activated" by another blue one...but Blah it is not SWR

DOPPLER. ARG HOW I HATED THAT ONE. Then I learned to graze. >_< This may be a hell lot easier than from SWR. :|

EDIT: ARG can't find a "enemyanim.dnh" file.

------------------------------------------------------------------------------------------------

EDIT: Please improve my copy of Gengetsu.
Code: [Select]
#TouhouDanmakufu
#Title[RAPEY TIME]
#Text[!!!!]
#Image[]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let frame = -300;
    let BossImage = "script\img\ExRumia.png";
    let CutInGraphic = GetCurrentScriptDirectory~"img\riorucut.png";
    let bossname = "海龍 爾夜知";
    let Spell = 0;
    let SpellName = "夢想画「画幻」";
@Initialize {
SetLife(630); SetDamageRate(15, 0); SetTimer(96);
SetEnemyMarker(true); MagicCircle(true); SetInvincibility(180);
LoadGraphic(BossImage);
CutIn(YOUMU, SpellName, "", 0, 0, 0, 0); SetScore(12000000);
LoadGraphic(BossImage);
TMain;
SetEffectForZeroLife(60, 55, 3); //LastSpell;
SetShotAutoDeleteClip(200, 200, 200, 200); //Slow(3);
}

@MainLoop {
if(OnBomb || GetTimeOfPlayerInvincibility > 0 || GetTimeOfSuperNaturalBorder > 0) { SetTimer(GetTimer+1); }
if(!OnBomb && GetTimeOfPlayerInvincibility == 0 && GetTimeOfSuperNaturalBorder == 0) {
if(Spell <= 1) {
SetCollisionA(GetX, GetY, 36); SetCollisionB(GetX, GetY, 10);
}
yield;
}
}

let animation = 0;
@DrawLoop {
SetFontColor(255, 255, 255, 255, 128, 0);
DrawText(bossname, 40, 36, 12, 255);
SetTexture(BossImage);
animation++; if(animation==600){animation=0;}
if(GetSpeedX()==0){
if(animation<=300){ SetGraphicRect(64,1,127,64); }
else if(animation>300 && animation<=600){ SetGraphicRect(0,1,63,64); }
}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1, 1);
SetRenderState(ALPHA);
SetAlpha(255);
SetColor(255, 255, 255);
if(!OnBomb) { DrawGraphic(GetX, GetY); }
}

@Finalize {
DeleteGraphic(BossImage);
}

task TMain {
SetMovePosition02(GetCenterX, GetClipMinY+100, 20);
loop(60){yield;}
Concentration01(120); PlaySE("se\se_ch00.wav");
loop(120){yield;}
attack1; attack2; attack3;
}
let xe = 60; let ye = 15;
task attack1 {
let num = 40; let a = 0;
loop {
PlaySE("se\se_tan01.wav");
let x = GetX+rand(-xe,xe); let y = GetY+rand(-ye,ye);
loop(num) { CreateShot01(x, y, 7, a, WHITE02, 10); a+=360/num; }
a+=14;
loop(5) { yield; }
}
}
task attack2 {
let num = 60; let a = 0;
loop {
PlaySE("se\se_tan00.wav");
let x = GetX+rand(-xe,xe); let y = GetY+rand(-ye,ye);
loop(num) { CreateShot01(x, y, 10, a, WHITE01, 10); a+=360/num; }
a-=17;
loop(6){ yield; }
}
}
task attack3 {
let num = 15; let a = 0;
loop {
PlaySE("se\se_tan02.wav");
let x = GetX+rand(-xe,xe); let y = GetY+rand(-ye,ye);
loop(num) { CreateShot01(x, y, 10, a, ORANGE03, 10); a+=360/num; }
a-=103;
loop(90){ yield; }
}
}
}
'cuz right now it doesn't look so much like Gengetsu.
« Last Edit: December 28, 2009, 01:01:30 AM by Always お⑨烏 »

DgBarca

  • Umineko fuck yeah
  • Spoilers ?
Re: Touhou Spellcard Replica Thread
« Reply #56 on: December 28, 2009, 11:28:18 AM »

EDIT: ARG can't find a "enemyanim.dnh" file.

Oh I forgot it was random fairy shooting all this... juste copy paste it in a enemyanim.dnh file
Code: [Select]
//#include_function "lib\ExpandedShotData\shot_replace.dnh"
let anim = 0;
let enemy = GetCurrentScriptDirectory~"img\enemy.png";
LoadGraphic(enemy);
let enemangle = 0;

sub bluedoll {

SetTexture(enemy);

enemangle+=5;
SetGraphicRect(96, 224, 128, 256);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle);
SetGraphicScale(1.25,1.25);
DrawGraphic(GetX, GetY);



SetAlpha(255);
SetGraphicAngle(0, 0, enemangle*4);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 5) * 32, 257, (floor(anim) % 5) * 32 +32, 288);




DrawGraphic(GetX, GetY);

SetGraphicRect(192, 224, 224, 256);
SetRenderState(ADD);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle/2);
SetGraphicScale(1,1);
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub bluefairyanim {

SetTexture(enemy);

enemangle+=5;
SetGraphicRect(64, 224, 96, 256);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle);
SetGraphicScale(1.25,1.25);
DrawGraphic(GetX, GetY);


if(GetSpeedX <= 0.1 && GetSpeedX >= -0.1){
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 5) * 32, 257, (floor(anim) % 5) * 32 +32, 288);
}

if(GetSpeedX < -0.2){
SetAlpha(255);
SetGraphicAngle(180, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 4) * 32 + 256, 257, (floor(anim) % 4) * 32 + 288, 288);
}else if(GetSpeedX > 0.2){
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 4) * 32 + 256, 257, (floor(anim) % 4) * 32 + 288, 288);
}
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub redfairyanim {

SetTexture(enemy);

enemangle+=5;
SetGraphicRect(0, 224, 32, 256);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle);
SetGraphicScale(1.25,1.25);
DrawGraphic(GetX, GetY);


if(GetSpeedX < 0.2 && GetSpeedX > -0.2){
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 5) * 32, 289, (floor(anim) % 5) * 32 +32, 320);
}
else{
if(GetSpeedX <= -0.2){
SetAlpha(255);
SetGraphicAngle(180, 0, 0);
SetGraphicScale(1,1);
} else {
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
}
SetGraphicRect((floor(anim)% 4) * 32 + 256, 289, (floor(anim) % 4) * 32 + 288, 320);
}
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub greenfairyanim {

SetTexture(enemy);

enemangle+=5;
SetGraphicRect(32, 224, 64, 256);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle);
SetGraphicScale(1.25,1.25);
DrawGraphic(GetX, GetY);



if(GetSpeedX < 0.2 && GetSpeedX > -0.2){
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 5) * 32, 321, (floor(anim) % 5) * 32 +32, 352);
}
else{
if(GetSpeedX <= -0.2){
SetAlpha(255);
SetGraphicAngle(180, 0, 0);
SetGraphicScale(1,1);
} else {
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
}
SetGraphicRect((floor(anim)% 4) * 32 + 256, 321, (floor(anim) % 4) * 32 + 288, 352);
}
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub yellowfairyanim {

SetTexture(enemy);

enemangle+=5;
SetGraphicRect(96, 224, 128, 256);
SetAlpha(100);
SetGraphicAngle(0, 0, enemangle);
SetGraphicScale(1.25,1.25);
DrawGraphic(GetX, GetY);



if(GetSpeedX < 0.2 && GetSpeedX > -0.2){
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
SetGraphicRect((floor(anim)% 5) * 32, 353, (floor(anim) % 5) * 32 + 32, 384);
}
else{
if(GetSpeedX <= -0.2){
SetAlpha(255);
SetGraphicAngle(180, 0, 0);
SetGraphicScale(1,1);
} else {
SetAlpha(255);
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1,1);
}
SetGraphicRect((floor(anim)% 4) * 32 + 256, 353, (floor(anim) % 4) * 32 + 288, 384);
}
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub smallredorb {

SetTexture(enemy);

SetGraphicAngle(0, 0, enemangle);
SetGraphicRect(128, 225, 160, 256);
DrawGraphic(GetX, GetY);
enemangle += 10;

SetGraphicAngle(0, 0, 0);
SetGraphicRect(128, 192, 160, 224);
DrawGraphic(GetX, GetY);
}

sub smallgreenorb {

SetTexture(enemy);

SetGraphicAngle(0, 0, enemangle);
SetGraphicRect(161, 225, 192, 256);
DrawGraphic(GetX, GetY);
enemangle += 10;

SetGraphicAngle(0, 0, 0);
SetGraphicRect(161, 192, 192, 224);
DrawGraphic(GetX, GetY);
}

sub smallblueorb {

SetTexture(enemy);

SetGraphicAngle(0, 0, enemangle);
SetGraphicRect(193, 225, 224, 256);
DrawGraphic(GetX, GetY);
enemangle += 10;

SetGraphicAngle(0, 0, 0);
SetGraphicRect(193, 192, 224, 224);
DrawGraphic(GetX, GetY);
}

sub smallpurpleorb {

SetTexture(enemy);

SetGraphicAngle(0, 0, enemangle);
SetGraphicRect(225, 225, 256, 256);
DrawGraphic(GetX, GetY);
enemangle += 10;

SetGraphicAngle(0, 0, 0);
SetGraphicRect(225, 192, 256, 224);
DrawGraphic(GetX, GetY);
}

sub bigfairy {

SetTexture(enemy);

if(GetSpeedX < 0.2 && GetSpeedX > -0.2){
SetGraphicAngle(0, 0, 0);
SetGraphicRect((floor(anim)% 5) * 64, 385, (floor(anim) % 5) * 64 + 64, 448);
}
else{
if(GetSpeedX <= -0.2){
SetGraphicAngle(180, 0, 0);
} else {
SetGraphicAngle(0, 0, 0);
}
if(anim % 4 < 1){
SetGraphicRect(385, 257, 448, 320);
} else if(anim % 4 < 2){
SetGraphicRect(385, 321, 448, 384);
} else if(anim % 4 < 3){
SetGraphicRect(449, 257, 512, 320);
} else {
SetGraphicRect(449, 321, 512, 384);
}
}
SetGraphicScale(1, 1);
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub bigpurplefairy {

SetTexture(enemy);

if(GetSpeedX < 0.2 && GetSpeedX > -0.2){
SetGraphicAngle(0, 0, 0);
SetGraphicRect((floor(anim)% 5) * 64, 0, (floor(anim) % 5) * 64 + 64, 64);
}
else{
if(GetSpeedX <= -0.2){
SetGraphicAngle(180, 0, 0);
} else {
SetGraphicAngle(0, 0, 0);
}

SetGraphicRect((floor(anim)% 4) * 64, 65, (floor(anim) % 4) * 64 + 64, 128);

}
DrawGraphic(GetX, GetY);
anim += 0.08;
}

sub FamCircle{
SetTexture(enemy);

let scaleM = 0.3;
let scaleB = 0.5;
enemangle += 7;

if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
SetGraphicAngle(0, 0, -enemangle/2);
SetGraphicRect(96, 224, 128, 256);
SetRenderState(ADD);
SetAlpha(155);
SetGraphicScale((scaleM*3)*2,(scaleM*3)*2);
SetColor(255,255,0);
DrawGraphic(GetX, GetY);

SetGraphicAngle(0, 0, enemangle/2);
SetGraphicRect(0, 128, 64, 192);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicScale(scaleB*2,scaleB*2);
DrawGraphic(GetX, GetY);
}

else{ SetGraphicAngle(0, 0, -enemangle);
SetGraphicRect(96, 224, 128, 256);
SetRenderState(ADD);
SetAlpha(155);
SetGraphicScale(scaleM*3,scaleM*3);
SetColor(255,255,0);
DrawGraphic(GetX, GetY);

SetGraphicAngle(0, 0, enemangle);
SetGraphicRect(0, 128, 64, 192);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicScale(scaleB,scaleB);
DrawGraphic(GetX, GetY);}

}
[21:16] <redacted> dgbarca makes great work
[21:16] <redacted> i hope he'll make a full game once