Author Topic: Show off your best Danmakufu patterns!  (Read 40697 times)

Show off your best Danmakufu patterns!
« on: July 16, 2009, 06:37:05 AM »
Actually, I'm not sure if this is supposed to go in this board, but I'd assume it is, seeing as this seems to be the place for danmakufu stuff

Here, you basically take the best danmaku patterns you've ever made in danmakufu, and show
them off here.

Rules
-It may not be a remake of one of ZUN's patterns

-Preferably (not required), this should be a single script.

-This danmaku pattern shouldn't cause much slowdown, and will be able to be run on most computers with an FPS of above 40.

-If you are using any scripts not included in the file of the danmaku pattern (such as the shot replace script), you must mention it in the post with the file.

-You must make these patterns from scratch. However, you are allowed to use the same method of coding something as another script does, and you are allowed to use image files from other things (just make sure to give credit)

-If you wish, you are allowed to post feedback on the danmaku patterns.


puremrz

  • Can't stop playing Minecraft!
Re: Show off your best Danmakufu patterns!
« Reply #1 on: July 16, 2009, 10:45:55 AM »
Sounds like a great idea. And coincidentally I happened to make a few not too long ago.

I have three patterns here:

1- Burst Sign "Implosion"
My first. A circle shoots from the center, but it quickly starts moving inward again, as if it is imploding. This creates a delayed path depending on your location,which is followed by a barrage of random bullets, and bigger bullets.
(Current avatar at 16 july)

2 - Domination "Chained to the floor"
Inspired by one of Sanae's attacks in SA, but a bit harder than that. The laser field alternates, so there's no real safe spot. As you try to find the safe spot, circles shoot at you from the center, with increasing frequency. Then it's silent for a while, until...

3 - Confusion Sign "Inside, inverse, reverse, outside"
It looks so simple, but these 12 rings leave you puzzling to find a way in, and then out again.
I'm working on another Confusion Sign, one with walls between the circles, making it even more confusing. >=D

Video link: http://www.youtube.com/watch?v=ldWAqM57ZeA&feature=channel_page
Download link: http://www.mediafire.com/download.php?yjlmltgnlmz

Simple, it's a plural file with all three spellcards on lunatic (as in the video), but I included Hard, Normal and Easy as well for the first 2.
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

Re: Show off your best Danmakufu patterns!
« Reply #2 on: July 16, 2009, 06:39:20 PM »
Unfortunately my best pattern so far is probably this... http://www.mediafire.com/?h12hnmmnczn

:genuflect:

Or this but I doubt it counts for anything :V

DgBarca

  • Umineko fuck yeah
  • Spoilers ?
Re: Show off your best Danmakufu patterns!
« Reply #3 on: July 18, 2009, 12:59:21 AM »
My Best...and only card...

Vid?o : http://www.youtube.com/watch?v=tX6DGp8_k0g&fmt=18

Script :
Code: [Select]
#TouhouDanmakufu
#Title[Bubble Fest]
#Text[Test script]
#PlayLevel[Hi]
#Image[.\img\Scarletsign.png]
#Player[FREE]
#ScriptVersion[2]
#BackGround[User(.\img\image.png, 0, 2)]


script_enemy_main {

let ImgBoss = "script\img\ExRumia.png";

let count = 0;
let count2 = 0;
let n = 20;
let speed = 1.5;
let c = 0;
let d = 0;
let e = 0;
let rand = 80;
let music = GetCurrentScriptDirectory~"bgm\17-砕月.mp3";
#include_function "lib\SHOT_REPLACE\shot_replace.dnh";

@Initialize {
LoadMusic(music);
SetLife(4000);
SetDamageRate(50, 10);
SetTimer(99);
shotinit;
MagicCircle(true);
SetScore(1584269474);
SetMovePosition02(225, 120, 60);
CutIn(YOUMU, "Watermelon "\""Bubble Fest"\", "", 0, 0, 0, 0);
LoadGraphic(ImgBoss);
SetTexture(ImgBoss);
SetGraphicRect(0, 0, 64, 64);


PlayMusic(music);
}

@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 16);

SetShotAutoDeleteClip(200, 200, 200, 200);

if(count2 == 0){
Concentration01(90);
n = 20;
PlaySE(GetCurrentScriptDirectory~"sound\Charge.wav")}
if(count == n){
loop(3){
CreateShotA(4, GetX, GetY, 0);
SetShotDataA(4, 0, speed, d+d, 0, 0, 0, RED03);
SetShotDataA(4, 20, speed, d+d, 0, 0, 0, RED03);
SetShotDataA(4, 40, speed, d+d, 0, 0, 0, RED03);
SetShotDataA(4, 60, speed, d+d+d, 0, 0, 0, PURPLE03);
SetShotDataA(4, 80, speed, d+d+d+d, 0, 0, 0, BLUE03);
SetShotDataA(4, 100, speed, d+d+d+d+d, 0, 0, 0, AQUA03);
SetShotDataA(4, 120, speed, d+d+d+d+d+d, 0, 0, 0, GREEN03);
SetShotDataA(4, 140, speed, d+d+d+d+d+d+d, 0, 0, 0, YELLOW03);
SetShotDataA(4, 160, speed, d+d+d+d+d+d+d+d, 0, 0, 0, ORANGE03);
SetShotDataA(4, 180, speed, d+d+d+d+d+d+d+d+d, 0, 0, 0, RED03);
SetShotDataA(4, 200, speed, d+d+d+d+d+d+d+d+d+d, 0, 0, 0, PURPLE03);
SetShotDataA(4, 220, speed, d+d+d+d+d+d+d+d+d+d+d, 0, 0, 0, BLUE03);
SetShotDataA(4, 240, speed, d+d+d+d+d+d+d+d+d+d+d+d, 0, 0, 0, AQUA03);
SetShotDataA(4, 260, speed, NULL, 0, 0, 0, GREEN03);
SetShotDataA(4, 280, speed, NULL, 0, 0, 0, YELLOW03);
SetShotDataA(4, 300, speed, NULL, 0, 0, 0, ORANGE03);
SetShotDataA(4, 320, speed, NULL, 0, 0, 0, RED03);
SetShotDataA(4, 340, speed, NULL, 0, 0, 0, PURPLE03);
SetShotDataA(4, 360, speed, NULL, 0, 0, 0, BLUE03);
SetShotDataA(4, 380, speed, NULL, 0, 0, 0, AQUA03);
SetShotDataA(4, 400, speed, NULL, 0, 0, 0, GREEN03);
SetShotDataA(4, 420, speed, NULL, 0, 0, 0, YELLOW03);
SetShotDataA(4, 440, speed, NULL, 0, 0, 0, ORANGE03);
SetShotDataA(4, 460, speed, NULL, 0, 0, 0, RED03);
SetShotDataA(4, 480, speed, NULL, 0, 0, 0, PURPLE03);
SetShotDataA(4, 500, speed, NULL, 0, 0, 0, BLUE03);
SetShotDataA(4, 520, speed+1, NULL, 0, 0, 0, WHITE03);
d += 22.4+e;
e += 0.01;
}
FireShot(4);
count = 0;
PlaySE(GetCurrentScriptDirectory~"sound\Po.wav")
}

if(count2 == 360){
Concentration01(90);
n = 10;
PlaySE(GetCurrentScriptDirectory~"sound\Charge.wav")
}

if(count2 == 540){

Concentration01(90);
n = 5;
PlaySE(GetCurrentScriptDirectory~"sound\Charge.wav")
}

if(count2 == 720){

Concentration01(90);
n = 3;
PlaySE(GetCurrentScriptDirectory~"sound\Charge.wav")
}

if(count2 == 900){
Concentration01(90);
n = 1;
PlaySE(GetCurrentScriptDirectory~"sound\Charge.wav")
}
count++;
count2++;
}


@DrawLoop {
DrawGraphic(GetX, GetY);
}


@Finalize {
DeleteGraphic(ImgBoss);
}
}

It use the shot replace script

EDIT : I was bored : http://www.youtube.com/watch?v=ApJUhu1Exq4&fmt=18 (score fail)
[21:16] <redacted> dgbarca makes great work
[21:16] <redacted> i hope he'll make a full game once

KomeijiKoishi


Stuffman

  • *
  • We're having a ball!
Re: Show off your best Danmakufu patterns!
« Reply #5 on: July 18, 2009, 05:51:54 PM »
Well, everything I've made is in PoSR. It's hard to say which is the best though.

Edna's Grand Chandelier is probably the best instance of a neat visual effect coming out exactly how I wanted. Ginny's Glitter Bomb is probably the prettiest, and I also think it's rather hectic and fun given the constant pressure and short reaction time.

puremrz

  • Can't stop playing Minecraft!
Re: Show off your best Danmakufu patterns!
« Reply #6 on: July 18, 2009, 07:24:38 PM »
3 more!
Download: http://www.mediafire.com/download.php?omoqmnbznm1
Video: http://www.youtube.com/watch?v=LVBU_kHl6CM&feature=channel_page

Spellcard 3 Lunatic - Maze Sign "Endless Loops"
I took the third one from my last post and made it worse, much worse. A bit slower, but it's much harder!

Spellcard 4 Lunatic - Torrent Sign "Washingmachine"
Whose spellcards aren't the result of messing with shots?
I figured out (finally) how to make a boss appear without the game crashing, so I used a picture of my own armpit character Kurumi as a dummy. ^^;

Spellcard 5 Lunatic - Torrent Sign "The End of the Rainbow"
More messing with shots led to this baby. I love increasing the speed between shots as time goes by. Don't get killed as often as I do, or it'll get pretty tough after while.
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

Hat

  • Just an unassuming chapeau.
  • I will never be ready.
Re: Show off your best Danmakufu patterns!
« Reply #7 on: July 19, 2009, 04:00:06 AM »
lol, I would, if I had the wherewithal to make a single damn spellcard. The trouble is every time I think of a neat idea, I think of how I would code it... and once I do, I get bored, and do something else. o-o I'm far too ADD to be cut out for coding, I think.

Re: Show off your best Danmakufu patterns!
« Reply #8 on: July 20, 2009, 01:50:32 AM »
Not mine but this guy's scripts are too amazing to miss out on http://www.youtube.com/user/andomahoro

If only he posted them :V

KomeijiKoishi

Re: Show off your best Danmakufu patterns!
« Reply #9 on: July 20, 2009, 10:59:37 AM »
Not mine but this guy's scripts are too amazing to miss out on http://www.youtube.com/user/andomahoro

If only he posted them :V
That's the fangame "Phantasm Romance". I think there's a topic on MotK where you can download the entire game. Fairuzons once had a playthrough through the entire game, but it isn't available anymore because they erased his account.

Iryan

  • Ph?nglui mglw?nafh
  • Cat R?lyeh wgah?nagl fhtagn.
Re: Show off your best Danmakufu patterns!
« Reply #10 on: July 20, 2009, 03:04:32 PM »
How nice.

My own best one is probably either Eclipse or Death "Embraced by Shadows", both can be found in my Sariel script.

The first one was designed to give a gameplay feeling similar to my (and many other people's) favorite spell card, VoWG, albeit with a different flavor and means of creating the pattern. It worked out quite nicely if I dare say so myself, save for maybe some pixilation regarding the moon. Timing it out provides an extra challenge, and the card is the most fun either with the whole boss fight or if you play it to "Voyage 1970".

The second one... well, just look at it.  :V
That one requires the shot replacement script.

Sadly I cannot provide a video of them. My computer is not capable of recording videos in a framerate that is anywhere close to decent.  :-X
Old Danmakufu stuff can be found here!

"As the size of an explosion increases, the numbers of social situations it is incapable of solving approaches zero."

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Show off your best Danmakufu patterns!
« Reply #11 on: July 20, 2009, 08:41:54 PM »
Well, there's ONE... But in one way copied off of Koishi's Danmaku Paranoia.
Can I post it?

Kracht-Shukun

Re: Show off your best Danmakufu patterns!
« Reply #12 on: July 24, 2009, 09:00:48 PM »
My first, quite narrow spellcard:

弾幕の天誅
(Barrage of Heaven's Well-Deserved Punishment)

HD Video of the spellcard(PACIFIST MODE FTW):
http://www.youtube.com/watch?v=-S7U8HbaVrQ&hd=1

Download(Includes a Metal Remix of Yukari's Theme, hence the 5MB):
http://ifile.it/n756zjo

puremrz

  • Can't stop playing Minecraft!
Re: Show off your best Danmakufu patterns!
« Reply #13 on: July 24, 2009, 10:04:08 PM »
3 more!
Download link: http://www.youtube.com/watch?v=2GP1r_Y-xyc&feature=channel_page
Video link: http://www.youtube.com/watch?v=2GP1r_Y-xyc&feature=channel_page

Spellcard 6 Lunatic - Domination Sign "Soul Crush"
It's so simple, it only consists of one single shot (4 layers of bullets at max), but it's so challenging at the same time! So far, this one gives me most troubles playing. ^^;

Spellcard 7 Lunatic - Pyro Sign "Hanabi"
In my attempts to work with SetShotDataA and AddShot (which took me forever to learn), I created this monster. Random explosions are fun :3

Spellcard 8 Lunatic - Explosion Sign "Blindspot"
Using the DeleteEnemyShotInCircle function, I made this spellcard. For a few seconds after a new green circle appears, it's safe to be in the core. Since the bullets move so slow, with each circle it becomes tougher to get safely to the next. They used to be the butterfly bullet, but those have the most annoying hitbox in Danmakufu. srsly
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

Re: Show off your best Danmakufu patterns!
« Reply #14 on: July 28, 2009, 10:26:58 AM »
I could not even tell myself which one of the spellcards I have made so far are the best, but I have a few favorites.



Trickster Sign "Indecisive Guide"
Difficulty: Normal
Code: [Select]
#TouhouDanmakufu
#Title[Trickster Sign "Indecisive Guide ~ Normal"]
#Text[Not even the guide knows what to do when lost. It is most likely to stray from the true path.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let ImgBoss = "script\img\ExRumia.png";

let count = -60;
let a = 0;
let b = 0;
let c = 0;
let d = 0;

@Initialize {
SetLife(4000);
SetTimer(60);
SetScore(10000000);
SetInvincibility(120);

SetMovePosition01(GetCenterX, GetClipMinY + 120, 5);
CutIn(YOUMU, "Trickster Sign"\""Indecisive Guide"\", "", 0, 0, 0, 0);

LoadGraphic(ImgBoss);
SetTexture(ImgBoss);
SetGraphicRect(0, 0, 64, 64);
}

@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 16);
SetShotAutoDeleteClip(500, 500, 500, 500);

if(count == 1) {
ascent( i in 1..34)
{
                CreateShotA(i, GetX, GetY, 10);
                SetShotDataA(i, 0, 3, i+a, 0, -0.05, 0, GREEN12);
                SetShotDataA(i, 60, 3, i+a-80, 0, -0.01, 0, GREEN12);
                SetShotDataA(i, 280, 2, i+a+100, -0.25, 0, 2, GREEN12);
                SetShotDirectionType(ABSOLUTE);
                FireShot(i);

a += 10;

}



ascent( j in 1..34)
{
                CreateShotA(j, GetX, GetY, 10);
                SetShotDataA(j, 0, 3, j+a, 0, -0.05, 0, GREEN12);
                SetShotDataA(j, 60, 3, j+a+80, 0, -0.01, 0, GREEN12);
                SetShotDataA(j, 280, 2, j+a-100, 0.25, 0, 2, GREEN12);
                SetShotDirectionType(ABSOLUTE);
                FireShot(j);

a += 10;

}



ascent( k in 1..98)
{
                CreateShotA(k, GetX, GetY, 10);
                SetShotDataA(k, 0, 3, k+c, 0, -0.05, 0, BLUE12);
                SetShotDataA(k, 60, 4.5, NULL, 0, -0.05, 0, BLUE12);
                SetShotDataA(k, 150+k, 3, NULL, 0, -0.05, 1, BLUE12);
                SetShotDirectionType(ABSOLUTE);
                FireShot(k);


c += 187;

}
}


if(count >= 90 && count <= 220){
loop(2){
CreateShot01(GetX, GetY, 3, b, PURPLE12, 10);

b += 360/2;
b += 13.2;
}
}



if(count == 220){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);
d += 360/3.57443
}
}

if(count == 230){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 240){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 250){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 260){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 270){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 280){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 290){
SetMovePosition02(rand(50, 350), rand(50, 200), 10);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}

if(count == 300){
SetMovePosition03(GetCenterX, GetClipMinY + 120, 10, 5);
loop(4){
CreateLaser01(GetX, GetY, 5, d, 1500, 10, RED11, 0);

d += 360/3.57443
}
}



if(count == 360){

count=0;
}
count++;
}

@DrawLoop {
DrawGraphic(GetX, GetY);
}

@Finalize {
DeleteGraphic(ImgBoss);
}
}

Basic Pattern: The boss will originally spawn two waves of decelerating bullets simultaneously: a ring of blue needles, and a ring of green needles. Shortly after being fired, the blue bullets will jet forward, while the green bullets will begin to move as well, but in intersecting ways, however they gradually decelerate and barely leave the screen. Right after both rings of bullets begin moving, the boss begins to throw out violet needles in a spiral shape. About 2 seconds later, the boss will randomly move about the field and fire multiple lasers that linger around the screen for the next wave.

Strategy: There is not much here besides luck from the way the lasers are fired. Try to stay in a wide open spot so that you can more easily dodge the bullets from the first wave.




Frostbite "Ribbon of a Wondrous Child"
Difficulty: Normal
Code: [Select]
#TouhouDanmakufu
#Title[Frostbite "Ribbon of a Wondrous Child"]
#Text[Test script]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let ImgBoss = "script\img\ExRumia.png";

let count = 300;
let a=0;
let color=BLUE03;
let color2=BLUE04;

@Initialize {
SetLife(4000);
SetTimer(60);
SetScore(10000000);
SetInvincibility(120);

SetEnemyMarker(true);

SetMovePosition01(GetCenterX, GetClipMinY + 120, 5);
CutIn(YOUMU, "Frostbite"\""Ribbon of a Wondrous Child"\", "", 0, 0, 0, 0);

LoadGraphic(ImgBoss);
SetTexture(ImgBoss);
SetGraphicRect(0, 0, 64, 64);
}

@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 16);
SetShotAutoDeleteClip(200, 200, 200, 200);

if(count == 360) {
CreateShotA(1, GetClipMinX-50, rand(GetClipMinY, GetClipMaxY - 50), 0);
SetShotDataA(1, 0, 3, 0, 0.5, 0, 3, color);

ascent(i in 1..75){
      CreateShotA(2, 0, 0, 0);
      SetShotDataA(2, 0, 2, a, 0, -0.01, 0, color2);
      SetShotDataA(2, 300, NULL, a, 0, -0.03, -3, color2);

      a += 11;

      AddShot(i*5, 1, 2, 0);
}
FireShot(1);
}



if(count == 420) {
CreateShotA(1, GetClipMaxX+50, rand(GetClipMinY + 50, GetClipMaxY), 0);
SetShotDataA(1, 0, 3, 180, 0.5, 0, 3, color);

ascent(i in 1..75){
      CreateShotA(2, 0, 0, 0);
      SetShotDataA(2, 0, 2, a, 0, -0.01, 0, color2);
      SetShotDataA(2, 300, NULL, a, 0, -0.03, -3, color2);

      a += 11;

      AddShot(i*5, 1, 2, 0);
}
FireShot(1);
}



if(count == 480) {
CreateShotA(1, rand(GetClipMinX + 50, GetClipMaxX), GetClipMinY-50, 0);
SetShotDataA(1, 0, 3, 90, 0.5, 0, 3, color);

ascent(i in 1..75){
      CreateShotA(2, 0, 0, 0);
      SetShotDataA(2, 0, 2, a, 0, -0.01, 0, color2);
      SetShotDataA(2, 300, NULL, a, 0, -0.03, -3, color2);

      a += 11;

      AddShot(i*5, 1, 2, 0);
}
FireShot(1);
}



if(count == 540) {
CreateShotA(1, rand(GetClipMinX, GetClipMaxX - 50), GetClipMaxY+50, 0);
SetShotDataA(1, 0, 3, 270, 0.5, 0, 3, color);

ascent(i in 1..75){
      CreateShotA(2, 0, 0, 0);
      SetShotDataA(2, 0, 2, a, 0, -0.01, 0, color2);
      SetShotDataA(2, 300, NULL, a, 0, -0.03, -3, color2);

      a += 11;

      AddShot(i*5, 1, 2, 0);
}
FireShot(1);



count=0
}
count++;
}

@DrawLoop {
DrawGraphic(GetX, GetY);
}

@Finalize {
DeleteGraphic(ImgBoss);
}
}

Basic Pattern: Four blue bubbles will appear, one from each edge of the screen, and gradually curve, leaving behind smaller blue bullets and eventually leaving the screen. These smaller bullets will gradually decelerate, then a few seconds later, one by one move in the reverse direction from which they were fired. The pattern then repeats. The name comes from the way the smaller bullets move when traveling in reverse.

Strategy: Try to stay out of the center of each circle of bullets, because they move quickly when going in reverse, and you will not have much other room to squeeze through if you do.




Dreadnought "The Faring Assault"
Difficulty: Unknown
Code: [Select]
#TouhouDanmakufu
#Title[Dreadnought "The Faring Assault"]
#Text[Test script]
#Image[.\img\Dreadnought.bmp]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let ImgBoss = "script\img\ExRumia.png";

let count = 0;
let time = 0;
let a = 135;

@Initialize {
SetLife(1);
SetTimer(50);
SetScore(1000000);
SetDamageRate(0, 0);
SetDurableSpellCard;

SetMovePosition02(225, 200, 60);
CutIn(YOUMU, "Dreadnought "\""The Faring Assault"\", "", 0, 0, 0, 0);

LoadGraphic(ImgBoss);
SetTexture(ImgBoss);
SetGraphicRect(0, 0, 128, 128);
}

@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 16);

if(count == 120){
PlaySE("lib\THCCL\SE\lazer01.wav");
CreateLaserB(1, 1, 20, RED02, 0);
SetLaserDataB(1, 0, 6, 0, 0, 0, 0, 45, 0);
SetLaserDataB(1, 60, 0, 0, 0, 0, 0, 45, 0);
SetLaserDataB(1, 120, 0, NULL, 0, NULL, 0, NULL, -2);
SetLaserDataB(1, 180, 0, NULL, 0, NULL, 0, NULL, 4);
SetLaserDataB(1, 210, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 400, 0, NULL, 0, NULL, 0, NULL, 0.7);
SetLaserDataB(1, 915, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 960, 0, NULL, 0, NULL, 0, NULL, -2);
SetLaserDataB(1, 1020, 0, NULL, 0, NULL, 0, NULL, 4);
SetLaserDataB(1, 1060, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 1100, 0, NULL, 0, NULL, 0, NULL, -0.5);
SetLaserDataB(1, 1130, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 1330, 0, NULL, 0, NULL, 0, NULL, -0.5);
SetLaserDataB(1, 1380, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 1600, 0, NULL, 0, NULL, 0, NULL, -0.7);
SetLaserDataB(1, 2115, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 2180, 0, NULL, 0, NULL, 0, NULL, -3);
SetLaserDataB(1, 2240, 0, NULL, 0, NULL, 0, NULL, 4);
SetLaserDataB(1, 2285, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(1, 2315, 0, NULL, 0, NULL, 0, NULL, -0.5);

CreateLaserB(3, 1, 20, RED02, 0);
SetLaserDataB(3, 0, 6, 0, 0, 0, 0, 135, 0);
SetLaserDataB(3, 60, 0, 0, 0, 0, 0, 135, 0);
SetLaserDataB(3, 270, 0, NULL, 0, NULL, 0, NULL, 2);
SetLaserDataB(3, 330, 0, NULL, 0, NULL, 0, NULL, -4);
SetLaserDataB(3, 360, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 400, 0, NULL, 0, NULL, 0, NULL, 0.7);
SetLaserDataB(3, 915, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 960, 0, NULL, 0, NULL, 0, NULL, 2);
SetLaserDataB(3, 1020, 0, NULL, 0, NULL, 0, NULL, -4);
SetLaserDataB(3, 1060, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 1100, 0, NULL, 0, NULL, 0, NULL, 0.5);
SetLaserDataB(3, 1130, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 1330, 0, NULL, 0, NULL, 0, NULL, 0.5);
SetLaserDataB(3, 1380, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 1600, 0, NULL, 0, NULL, 0, NULL, -0.7);
SetLaserDataB(3, 2115, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 2180, 0, NULL, 0, NULL, 0, NULL, 3);
SetLaserDataB(3, 2240, 0, NULL, 0, NULL, 0, NULL, -4);
SetLaserDataB(3, 2285, 0, NULL, 0, NULL, 0, NULL, 0);
SetLaserDataB(3, 2315, 0, NULL, 0, NULL, 0, NULL, 0.5);

ascent(i in 1..10){
    CreateShotA(2, 0, 0, 10);
    SetShotDataA(2, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(4, 0, 0, 10);
    SetShotDataA(4, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(5, 0, 0, 10);
    SetShotDataA(5, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(9, 0, 0, 10);
    SetShotDataA(9, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(10, 0, 0, 10);
    SetShotDataA(10, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(11, 0, 0, 10);
    SetShotDataA(11, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(15, 0, 0, 10);
    SetShotDataA(15, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(16, 0, 0, 10);
    SetShotDataA(16, 0, 3, 90, 0, 0, 3, RED11);
    CreateShotA(17, 0, 0, 10);
    SetShotDataA(17, 0, 3, 90, 0, 0, 3, RED11);

    CreateShotA(6, 0, 0, 10);
    SetShotDataA(6, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(7, 0, 0, 10);
    SetShotDataA(7, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(8, 0, 0, 10);
    SetShotDataA(8, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(12, 0, 0, 10);
    SetShotDataA(12, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(13, 0, 0, 10);
    SetShotDataA(13, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(14, 0, 0, 10);
    SetShotDataA(14, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(18, 0, 0, 10);
    SetShotDataA(18, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(19, 0, 0, 10);
    SetShotDataA(19, 0, 3, -90, 0, 0, 3, RED11);
    CreateShotA(20, 0, 0, 10);
    SetShotDataA(20, 0, 3, -90, 0, 0, 3, RED11);

    AddShot(i*3+180, 1, 2, 20);
    AddShot(i*3+180, 1, 4, 100);
    AddShot(i*3+180, 1, 5, 180);
    AddShot(i*3+1020, 1, 9, 20);
    AddShot(i*3+1020, 1, 10, 100);
    AddShot(i*3+1020, 1, 11, 180);

    AddShot(i*3+330, 3, 6, 20);
    AddShot(i*3+330, 3, 7, 100);
    AddShot(i*3+330, 3, 8, 180);
    AddShot(i*3+1020, 3, 12, 20);
    AddShot(i*3+1020, 3, 13, 100);
    AddShot(i*3+1020, 3, 14, 180);
}

ascent(i in 1..100){
    CreateShotA(15, 0, 0, 10);
    SetShotDataA(15, 0, 3, 90, 0, 0, 3, RED12);
    CreateShotA(16, 0, 0, 10);
    SetShotDataA(16, 0, 3, 90, 0, 0, 3, RED12);
    CreateShotA(17, 0, 0, 10);
    SetShotDataA(17, 0, 3, 90, 0, 0, 3, RED12);
    CreateShotA(18, 0, 0, 10);
    SetShotDataA(18, 0, 3, 270, 0, 0, 3, RED12);
    CreateShotA(19, 0, 0, 10);
    SetShotDataA(19, 0, 3, 270, 0, 0, 3, RED12);
    CreateShotA(20, 0, 0, 10);
    SetShotDataA(20, 0, 3, 270, 0, 0, 3, RED12);

    CreateShotA(21, 0, 0, 10);
    SetShotDataA(21, 0, 3, -90, 0, 0, 3, RED12);
    CreateShotA(22, 0, 0, 10);
    SetShotDataA(22, 0, 3, -90, 0, 0, 3, RED12);
    CreateShotA(23, 0, 0, 10);
    SetShotDataA(23, 0, 3, -90, 0, 0, 3, RED12);
    CreateShotA(24, 0, 0, 10);
    SetShotDataA(24, 0, 3, -270, 0, 0, 3, RED12);
    CreateShotA(25, 0, 0, 10);
    SetShotDataA(25, 0, 3, -270, 0, 0, 3, RED12);
    CreateShotA(26, 0, 0, 10);
    SetShotDataA(26, 0, 3, -270, 0, 0, 3, RED12);

    AddShot(i*7+2240, 1, 15, 20);
    AddShot(i*7+2240, 1, 16, 100);
    AddShot(i*7+2240, 1, 17, 180);
    AddShot(i*7+2240, 1, 18, 20);
    AddShot(i*7+2240, 1, 19, 140);
    AddShot(i*7+2240, 1, 20, 280);

    AddShot(i*7+2240, 3, 21, 20);
    AddShot(i*7+2240, 3, 22, 100);
    AddShot(i*7+2240, 3, 23, 180);
    AddShot(i*7+2240, 3, 24, 20);
    AddShot(i*7+2240, 3, 25, 140);
    AddShot(i*7+2240, 3, 26, 280);
}

FireShot(1);
FireShot(3);
}



if(count == 180 || count == 340 || count == 960){
loop(90){
CreateShot01(GetX, GetY, 6, a, RED02, 10);

a += 3;
}

a = 135;
}


if(count == 1220){
SetShotDirectionType(PLAYER);
    CreateShot01(GetX, GetY, 8, 0, RED02, 0);

count=1215;
}


if(time==1290){
count=1221;
}


if(count == 1250){
SetShotDirectionType(PLAYER);
    CreateShot01(GetX, GetY, 8, 0, RED02, 0);

count=1245;
}


if(time==1380){
count=1251;
}


if(count == 1280){
SetShotDirectionType(PLAYER);
    CreateShot01(GetX, GetY, 8, 10, RED02, 0);
    CreateShot01(GetX, GetY, 8, -10, RED02, 0);
    CreateShot01(GetX, GetY, 8, 0, RED01, 0);

count=1275;
}


if(time==1501){
count=1281;
}


if(count==1380){
SetShotDirectionType(PLAYER);
    CreateShot01(GetX, GetY, 8, 30, RED02, 0);
    CreateShot01(GetX, GetY, 8, -30, RED02, 0);
    CreateShot01(GetX, GetY, 8, 0, RED01, 0);

count=1375;
}


if(time==2181){
count=1381;
}
count++;
time++;
}

@DrawLoop {
DrawGraphic(GetX, GetY);
}

@Finalize {
DeleteGraphic(ImgBoss);
}
}

Basic Pattern: The boss moves to the center of the screen for the rest of the attack, and uses two sword-like lasers. Initially, the boss swings twice, bullets released from each sword, then they move clockwise until back to the original position. The boss then swings both swords downward in a very close position, then open up slightly while shooting bullets in your direction, and finally opening up completely. The boss pauses, then fires more bullets in your direction while the swords are moving counterclockwise, back to original position. One final swing with both swords, and bullets will continuously leak from each sword for the last few seconds.

Strategy: The halfway point and final swings are the most difficult to avoid. On the halfway point, stay in the center until the boss moves the swords apart, then position yourself a little bit away from where you were to get between the needles that linger. On the final wave, stay on one of the sides, then squeeze between the bullets as they come.

Henry

  • The observer
  • Exploring to the new world of Danmaku
Re: Show off your best Danmakufu patterns!
« Reply #15 on: July 29, 2009, 01:09:29 PM »
I had been making several spellcards, some are beautiful, some are hard but less beautiful. However, I have some favourites:
1. Fire Sign "Agni's Pyrolysis" (Difficulty: Can be very hard, but after tries it will become less difficult)

This card is actually based on Yukari's "Border of Wave and Particles". However, the bullets are MUCH denser but MUCH slower and the twisting pattern is not the original one.

Bullet pattern: 3 sets of bullet pointing somewhere near the boss at 6 points (that is 18 sets of bullets), the pattern is quite similar to BoWaP.

Code: [Select]
#TouhouDanmakufu
#Title[Fire Sign "Agni's Pyrolysis"]
#Text[Fire burns not very vigorously because of the lask of air. Have you notced that the room becomes hot and stuffy? (though the stuffiness is still the same)]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let frame = -120;
    let bg = GetCurrentScriptDirectory~"images\Bossbgred.jpg";
    let angle=0;
    let i;
    let j;
    let max1=6;
    let max2=3;
    #include_function "..\drawing.txt"
    @Initialize {
       SetLife(2000);
       SetTimer(60);
       SetScore(1000000);
       SetDamageRate(25,0);
       SetMovePosition02(GetCenterX, GetClipMinY+120, 120);
       SetInvincibility(120);
       Concentration01(120);
       PlaySE(GetCurrentScriptDirectory~"SFX\Charge.wav");
       CutIn(YOUMU, "Fire Sign "\""Agni's Pyrolysis"\", "", 0, 0, 0, 0);
       LoadGraphic(ImgBoss);
       SetTexture(ImgBoss);
       SetGraphicRect(0, 0, 64, 64);
       SetShotDirectionType(ABSOLUTE);
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 16);
        if(frame>0){
           if(frame%4==0){
              SetShotDirectionType(ABSOLUTE);
              ascent(i in 0..max1){
                 ascent(j in 0..max2){
                    CreateShot01(GetX+cos(angle+i*360/max1)*60, GetY+sin(angle+i*360/max1)*60, 1.5, angle+i*360/max1+j*360/max2, 241+(i+j)%3, 30);
                 }
                 CreateShot01(GetX+cos(angle+i*360/max1)*60, GetY+sin(angle+i*360/max1)*60, 1.5, angle+i*360/max1-180, 241+i%3, 30);
              }
           }
           angle=(frame/16)%120;
           angle=(angle-120)^2/100*(angle-105)/30*(angle-80)/10*(angle-50)/50*(angle-45)/40*(angle-30)/60*angle^2/100;
        }
        frame++;
        DeleteEnemyShotInCircle(ALL, GetX, GetY, 1);
    }

    @DrawLoop {
       bossSC;
    }
   
    @BackGround{
        backgroundSC;
    }
    @Finalize {
        DeleteGraphic(ImgBoss);
    }
}
Use this zipped file for playing :)
Old/Forgotten member.

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

DgBarca

  • Umineko fuck yeah
  • Spoilers ?
Re: Show off your best Danmakufu patterns!
« Reply #16 on: August 01, 2009, 07:33:24 PM »
New Sun is now my best card...I think...It use the New Shot Replace Script. There is 2 version.

Video
The video of the V.2 is comming soon.
Video V.2
« Last Edit: August 01, 2009, 07:46:01 PM by DgBarca »
[21:16] <redacted> dgbarca makes great work
[21:16] <redacted> i hope he'll make a full game once

puremrz

  • Can't stop playing Minecraft!
Re: Show off your best Danmakufu patterns!
« Reply #17 on: August 02, 2009, 08:42:29 PM »
Another 3 More!
Video: http://www.youtube.com/watch?v=dzcJaOhcsec&feature=channel_page
No download yet D:

Spellcard 9 Lunatic - A survival card. The yellow in the center prevents you from getting too close to the core. The red lasers spin just fast enough so that if you hit the brake too much, you die. :P

Spellcard 10 Lunatic - These kinda look like wings, and they keep getting bigger and bigger. Every shot is aimed at you, so you'll have to plan forward and misdirect the wings so the big ones in the center won't lock you in. I made a warninglaser show where the safe spot is. It's just too hard without those ^^;

Spellcard 11 Lunatic - An Utsuho themed card. The beginning seems familiar to Utsuho's last attack, but that quickly changes. Once all the white bullets have been absorbed, the core destabilizes.
If you use a bomb here, you'll regret that. The bomb destabilizes it even more, firing the bullets at max speed instantly. :P
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: Show off your best Danmakufu patterns!
« Reply #18 on: August 24, 2009, 04:43:41 AM »
Anyways, screw my last post, here's ANOTHER script I made. When I went :yukkuri:!

For when you're fricking bored and have nothing to do.
Code: [Select]
#TouhouDanmakufu
#Title[RPS]
#Text[Try it out, Rock Paper Scissors with Danmakufu, version 01]
#Player[FREE]
#BGM[\bgm\Voyage 1970.mp3]
#Background[User(.\Test.png, 25, 0)]
#ScriptVersion[2]

script_enemy_main {
    let number = 0;
    let number2 = rand_int(0,2);
    let showopponentchoice = false;
    @Initialize {
        LoadCommonData;
        SetLife(1000);
        Expert;
    }

    @MainLoop {
    //////////////////////////////////
    ForbidBomb(true); ForbidShot(true); SetPlayerX(GetCenterX); SetPlayerY(GetClipMaxY-((75+50)/2));
    ///////////////////////////////////
    if(number < 0) {
    number = 0;
    }
    if(number > 2) {
    number = 2;
    }
    if(GetKeyState(VK_UP) == KEY_PUSH) {
    number++;
    }
    if(GetKeyState(VK_DOWN) == KEY_PUSH) {
    number--;
    }
    //////////////////////////////////
    if(GetKeyState(VK_SHOT)==KEY_PUSH) {
showopponentchoice = true;
    if(number == 0 && number2 == 2) {
SetCommonData("lastbattleresult", "Won");
AddLife(-1000);
    }
    if(number == 1 && number2 == 0) {
SetCommonData("lastbattleresult", "Won");
AddLife(-1000);
    }
    if(number == 2 && number2 == 1) {
SetCommonData("lastbattleresult", "Won");
AddLife(-1000);
    }
    if(number == 2 && number2 == 0) {
SetCommonData("lastbattleresult", "Lost");
ExtendPlayer(-100); ShootDownPlayer;
    }
    if(number == 0 && number2 == 1) {
SetCommonData("lastbattleresult", "Lost");
ExtendPlayer(-100); ShootDownPlayer;
    }
    if(number == 1 && number2 == 2) {
SetCommonData("lastbattleresult", "Lost");
ExtendPlayer(-100); ShootDownPlayer;
    }
    if(number == number2) {
showopponentchoice = false; number2 = rand_int(0,2);
    }
    }
    }

    @DrawLoop {
               SetFontColor(255, 142, 78, 255, 142, 78);
DrawText("Up or down arrow keys to choose, then press shot button", 40, 35, 10, 255);
DrawText("Result of Last Round: ", 40, 135, 12, 255);
if(GetCommonData("lastbattleresult") == "NoData") {
DrawText("Not Yet Played", 200, 135, 12, 255);
} else {
DrawText(GetCommonData("lastbattleresult"), 200, 135, 12, 255);
}
               SetFontColor(255, 255, 255, 255, 255, 255);
if(number == 0){
DrawText("Rock", 40, 45, 20, 255);
}
if(number == 1){
DrawText("Paper", 40, 45, 20, 255);
}
if(number == 2){
DrawText("Scissors", 40, 45, 20, 255);
}
if(showopponentchoice == true){
if(number2 == 0) {
DrawText("Rock", 240, 45, 20, 255);
}
if(number2 == 1) {
DrawText("Paper", 240, 45, 20, 255);
}
if(number2 == 2) {
DrawText("Scissors", 240, 45, 20, 255);
}
}
    }

    @Finalize {
SaveCommonData;
    }
}

Then again, that's not a pattern... O_o
« Last Edit: August 25, 2009, 05:13:30 AM by Alwaysnew »

CK Crash

  • boozer
Re: Show off your best Danmakufu patterns!
« Reply #19 on: August 26, 2009, 09:19:48 AM »
I'm making my own random danmaku generator, inspired by NTSD.









As you can see, each "sign" has its own set of bullets (and although unseen, they have their own color lasers and object shots). Next up is making the patterns, so it won't be Random Sign "Vomiting Bullets Everywhere".

Re: Show off your best Danmakufu patterns!
« Reply #20 on: August 27, 2009, 02:15:48 AM »
STAY AWAY FORM MY SATORI!!!!:3 jk heres mine..uhh box thingy:
Code: [Select]
#TouhouDanmakufu
#Title[Et]
#Text[Et]
#Player[FREE]
#ScriptVersion[2]
#BackGround[User(.\bg.png, 0, 0)]

script_enemy_main {
let shot = GetCurrentScriptDirectory~"shot.wav";
let frame = 0;
let shot2 = GetCurrentScriptDirectory~"oll.wav";
    let BossImage = "script\Satorin!\Satorin.png";
    let BossCutIn = "script\Satorin!\Satorin2.png";
    let frame = 0;
    let spritey = 0;
    let spritex = 0;
    @Initialize {
LoadSE(shot2);
        LoadGraphic(BossImage);
SetMovePosition02(GetCenterX, GetCenterY - 100, 120);
        SetLife(1000);
        SetDamageRate(100, 150);
        CutIn(KOUMA, "Etek", BossCutIn, 0, 0, 186, 442);
        SetScore(500000);
        SetEnemyMarker(true);
        Concentration01(60);
        Concentration02(60);
        MagicCircle(true);
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 24);
        if(frame%15==0){
CreateShot01(GetX, GetY, 3, 90, RED02, 10);
CreateShot01(GetX, GetY, 3, 90+90, RED02, 10);
CreateShot01(GetX, GetY, 3, 90-90, RED02, 10);   
}
if(frame%10==0){
CreateShotA(1, GetX, GetY, 10);
CreateShotA(2, GetX, GetY, 10);
CreateShotA(3, GetX, GetY, 10);
CreateShotA(4, GetX, GetY, 10);
SetShotDataA(1, 0, 0.01, rand(0, 360), 0, 0.001, 0.02, BLUE11);
SetShotDataA(2, 0, 0.01, rand(0, 360), 0, 0.001, 0.02, BLUE11);
SetShotDataA(3, 0, 0.01, rand(0, 360), 0, 0.001, 0.02, BLUE11);
SetShotDataA(4, 0, 0.01, rand(0, 360), 0, 0.001, 0.02, BLUE11);
PlaySE(shot2);
SetShotKillTime(1, 2400);
SetShotKillTime(2, 2400);
SetShotKillTime(3, 2400);
SetShotKillTime(4, 2400);
}
if(frame%55==0){
CreateShot01(GetX, GetY, 8, rand(0, 360), YELLOW03, 10);
CreateShot01(GetX, GetY, 8, rand(0, 360), YELLOW03, 10);
CreateShot01(GetX, GetY, 8, rand(0, 360), YELLOW03, 10);
CreateShot01(GetX, GetY, 8, rand(0, 360), YELLOW03, 10);
}
FireShot(1);
FireShot(2);
FireShot(3);
FireShot(4);
  frame++;
if(frame==60){
  SetMovePositionRandom01(rand(80, 80), rand(80, 80), 2, 32, 16, 416, 464);
  frame = 30;
}
}
@DrawLoop{
//All this foolishness pertains to drawing the boss. Ignore everything in @Drawloop unless you have read and understand Nuclear Cheese's Drawing Tutorial.
SetColor(255,255,255);
if (floor(spritey+0.1) == 4)
{
spritex = 0;
if (spritey == 0){spritey++;}
else{spritey = 0;}
}
else{spritex += 0.13;}
SetGraphicAngle(0,0,0);
SetAlpha(255);
SetTexture(BossImage);
SetGraphicRect(floor(spritex)*47.75,spritey*64,floor(spritex)*47.75+47.75,spritey*64+64);
DrawGraphic(GetX,GetY);
}

@Finalize{
DeleteGraphic(BossImage);
DeleteSE(shot2);
}
}

Tho its not finished :3EDIT: OMG I MADE TEH BOX THING :3
« Last Edit: August 27, 2009, 02:21:39 AM by Demonbman »

KomeijiKoishi

Re: Show off your best Danmakufu patterns!
« Reply #21 on: August 29, 2009, 07:40:35 AM »
http://www.youtube.com/watch?v=35GVXr4ZfZ8

If you want the script, just ask me.

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Show off your best Danmakufu patterns!
« Reply #22 on: October 05, 2009, 02:52:30 PM »
Code: [Select]
#TouhouDanmakufu
#Title[SAFESPOTS GALORE]
#Text[バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨
バーカ⑨バーカ⑨バーカ⑨バーカ⑨]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let BossImage = "script\img\ExRumia.png";
    let imgCutIn = "script\img\RumiaCutIn.png";
    let frame = -180;
    let a = 180+11.25;
    let b = -11.25;
    let c = 0;
    let spd = 2.5;
    let newspeed = 3;
    let graphic = [BLUE21, AQUA21, WHITE21];
    @Initialize {
        SetLife(2000);
        SetTimer(60);
        Concentration02(150);
        SetInvincibility(180);
        SetEnemyMarker(true);
        LoadGraphic(BossImage);
        SetTexture(BossImage);
        SetGraphicRect(0, 0, 64, 64);
CutIn(YOUMU, "Safespots Galore", imgCutIn, 0, 0, 350, 350);
SetScore(1000000);
SetDurableSpellCard;
SetMovePosition02(GetCenterX, GetClipMinY+100, 60);
    }

    @MainLoop {
SetShotAutoDeleteClip(200, 200, 200, 200);
        SetCollisionA(GetX, GetY, 16);
        SetCollisionB(GetX, GetY, 10);
        if(frame == 2) {
        spd = 2.5;
loop(5) {
shard1(spd, a, a-135, 1);
shard1(spd, b, b+135, 1);
shard1(spd, a, a+135, 1);
shard1(spd, b, b-135, 1);
spd += 1;
}
         a-=9.25;
         b+=9.25;
        frame = 0;
        c = 0;
        }
        if(a<225-15.25*6) { a= 180+45+c; frame=-30;}
        if(b>-45+15.25*6) { b= 0-45-c; }
        frame++;
    }
task shard1(speed, way, new, vel) {
            CreateShotA(1, GetX, GetY, 0);
            SetShotDataA(1, 0, speed, way, 0, 0, speed, graphic[rand_int(0, 2)]);
            SetShotDataA(1, 50, 0, NULL, 0, 0, 0, NULL);
            SetShotDataA(1, 120, newspeed, new, 0.25*vel, 0, newspeed, NULL);
            SetShotDataA(1, 180, newspeed, NULL, 0, 0, newspeed, NULL);
            FireShot(1);
            CreateShotA(1, GetX, GetY, 0);
            SetShotDataA(1, 0, speed, way, 0, 0, speed, graphic[rand_int(0, 2)]);
            SetShotDataA(1, 50, 0, NULL, 0, 0, 0, NULL);
            SetShotDataA(1, 120, newspeed, new, -0.25*vel, 0, newspeed, NULL);
            SetShotDataA(1, 180, newspeed, NULL, 0, 0, newspeed, NULL);
            FireShot(1);
}
    @DrawLoop {
        SetTexture(BossImage);
        DrawGraphic(GetX, GetY);
    }

    @Finalize {
    }
}
calling all idiots...

ChaoStar

  • Dark History Boy
Re: Show off your best Danmakufu patterns!
« Reply #23 on: November 13, 2009, 02:04:02 AM »
My second. Oh wow.
Code: [Select]
#TouhouDanmakufu
#Title[CS's second spell card]
#Text[number 2. hooray.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{

let CSD = GetCurrentScriptDirectory;

let imgBoss = CSD ~ "img\ExRumia.png";


@Initialize{
SetLife(5000);
SetTimer(600);
SetScore(100000);
SetMovePosition01(GetCenterX,GetCenterY,5);
LoadGraphic(imgBoss);


mainTask;
}

@MainLoop{
SetCollisionA(GetX,GetY,32);
SetCollisionB(GetX,GetY,16);
yield;
}

@DrawLoop{
SetTexture(imgBoss);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicRect(64,1,127,64);
SetGraphicScale(01,1);
SetGraphicAngle(0,0,0);
DrawGraphic(GetX,GetY);
}

@BackGround{
SetTexture(NULL);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicRect(0,0,500,500);
SetGraphicScale(1,1);
SetGraphicAngle(0,0,0);
DrawGraphic(GetCenterX,GetCenterY);
}

@Finalize{
DeleteGraphic(imgBoss);

}

task mainTask{
yield;
mainFire;
secondFire;
thirdFire;
homingFire;
movement;
}

task movement{
SetMovePosition01(GetCenterX,120,5);

yield;

}

task mainFire{
let count = 0;
loop{
CreateShot01(GetX,GetY,2,sin(count)*90+90,BLUE21,60);
count += 10;
loop(3){yield;}
}

}

task secondFire{
let count = 0;
loop{
CreateShot01(GetX,GetY,5,cos(count)*360+90,GREEN21,60);
count += 3;
loop(3){yield;}
}

}

task thirdFire{
let count = 0;
loop{
CreateShot01(GetX,GetY,2,sin(count)*90+90,PURPLE21,60);
count += 20;
loop(3){yield;}
}

}

task homingFire{
loop{
CreateShot01(GetX,GetY,4,GetAngleToPlayer,ORANGE03,10);
wait(80);
yield;
}
}


function wait(w){
loop(w){yield;}
}
}

And my first. Oh wow.

Code: [Select]
#TouhouDanmakufu
#Title[Walking the bright path]
#Text[number 1]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{

let CSD = GetCurrentScriptDirectory;

let imgBoss = CSD ~ "img\ExRumia.png";


@Initialize{
SetLife(10000);
SetTimer(600);
SetScore(100000);
SetMovePosition01(GetCenterX,GetCenterY,5);
LoadGraphic(imgBoss);

mainTask;
}

@MainLoop{
SetCollisionA(GetX,GetY,32);
SetCollisionB(GetX,GetY,16);
yield;
}

@DrawLoop{
SetTexture(imgBoss);
SetRenderState(ALPHA);
SetAlpha(255);
SetGraphicRect(64,1,127,64);
SetGraphicScale(0.7,0.7);
SetGraphicAngle(0,0,0);
DrawGraphic(GetX,GetY);
}

@BackGround{
SetTexture(NULL);
SetRenderState(ALPHA);
SetAlpha(0);
SetGraphicRect(0,0,512,512);
SetGraphicScale(1,1);
SetGraphicAngle(0,0,0);
DrawGraphic(GetCenterX,GetCenterY);
}

@Finalize{
DeleteGraphic(imgBoss);

}

task mainTask{
yield;
mainFire;
secondFire;
thirdFire;
movement;
}

task movement{
loop{
SetMovePosition01(GetCenterX-30,120,5);
wait(120);
SetMovePosition01(GetCenterX+30,120,5);
wait(120);
yield;
}
}

task mainFire{
loop{
CreateShot01(GetEnemyX,GetEnemyY,3,GetAngleToPlayer+10,PURPLE32,10);
CreateShot01(GetEnemyX,GetEnemyY,3,GetAngleToPlayer-10,PURPLE32,10);
wait(5);
yield;
}
}

task secondFire{
loop{
CreateShot01(GetEnemyX,GetEnemyY,3,GetAngleToPlayer,YELLOW03,10);
wait(60);
yield;
}
}

task thirdFire{
loop{
CreateLaser01(GetEnemyX,GetEnemyY,5,GetAngleToPlayer+30,300,30,ORANGE21,10);
CreateLaser01(GetEnemyX,GetEnemyY,5,GetAngleToPlayer-30,300,30,ORANGE21,10);
CreateLaser01(GetEnemyX,GetEnemyY,5,GetAngleToPlayer+20,300,30,RED21,10);
CreateLaser01(GetEnemyX,GetEnemyY,5,GetAngleToPlayer-20,300,30,RED21,10);
wait(20);
yield;
}
}


function wait(w){
loop(w){yield;}
}
}


Forgive me, master, for resurrecting. =<

Re: Show off your best Danmakufu patterns!
« Reply #24 on: November 13, 2009, 04:36:42 PM »
THIS IS HOW REAL MEN CODE.

Code: [Select]
#TouhouDanmakufu
#Title[Border Sign "Last Remote"]
#Text[Psuedo-syncronized with SA's Extra Mode stage theme.]
#Image[.\LR.png]
#BackGround[User(.\bg.png, 1, 1)]
#PlayLevel[Normal]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let yukari = GetCurrentScriptDirectory~"yukarinsprite.png";
let cx = GetCenterX;
let frame = -3;
let fury = 0;
let beta = 0;
let dicks = 61;
let LR = GetCurrentScriptDirectory~"LR.png";
let bgm = GetCurrentScriptDirectory~"ZUN - Last Remote.mp3";
function firea(a){
CreateShotA(1, GetX, GetY, 0);
SetShotDataA(1, 0, 3.7 - a*0.1, GetAngleToPlayer - 25 + rand_int(0, 10) + a*9, 0.7, 0, 2.5, RED23);
SetShotDataA(1, 90, 0.6, 130, 0, 0, 2.5, RED12);
FireShot(1);
}
function fireb(b){
CreateShotA(2, GetX, GetY, 0);
SetShotDataA(2, 0, 3.7 - b*0.1, GetAngleToPlayer + 25 - rand_int(0, 10) - b*9, -0.7, 0, 2.5, RED23);
SetShotDataA(2, 90, 0.6, 50, 0, 0, 2.5, RED12);
FireShot(2);
}
function firec(c){
CreateShotA(3, GetX, GetY, 0);
SetShotDataA(3, 0, 8 - c*0.4, GetAngleToPlayer - 25 + rand_int(-10, 10) + c*9, 0.9, 0, 5, BLUE01);
SetShotDataA(3, 34, 0.8, 120, 0, 0, 2.5, BLUE05);
FireShot(3);
}
function fired(d){
CreateShotA(4, GetX, GetY, 0);
SetShotDataA(4, 0, 8 - d*0.4, GetAngleToPlayer + 25 - rand_int(-10, 10) - d*9, -0.9, 0, 5, BLUE01);
SetShotDataA(4, 34, 0.8, 60, 0, 0, 2.5, BLUE05);
FireShot(4);
}
function firee(e){
CreateShotA(5, GetX, GetY, 0);
SetShotDataA(5, 0, 8 - e*0.8, GetAngleToPlayer - 40 + rand_int(-10, 10) + e*9, 2, 0, 15, RED02);
SetShotDataA(5, 35, 0.85, 105 + rand_int(-10, 10), 0, 0, 2.5, RED31);
FireShot(5);
}
function firef(f){
CreateShotA(6, GetX, GetY, 0);
SetShotDataA(6, 0, 8 - f*0.8, GetAngleToPlayer + 40 - rand_int(-10, 10) - f*9, -2, 0, 15, RED02);
SetShotDataA(6, 35, 0.85, 75 + rand_int(-10, 10), 0, 0, 2.5, RED31);
FireShot(6);
}
function fireg(g){
CreateShotA(7, rand_int(-10, 30) + g, 0, 0);
SetShotDataA(7, 0, 9, 90, 0, -0.15, 1.05, GREEN01);
FireShot(7);
}
function fireh(h){
CreateShotA(8, GetX, GetY, 0);
SetShotDataA(8, 0, 6, GetAngleToPlayer + h, 0, -0.055, 0.7, YELLOW21);
FireShot(8);
}
function firei(i){
CreateShotA(9, GetX, GetY, 0);
SetShotDataA(9, 0, 6, GetAngleToPlayer + i + 5, 0, -0.055, 0.7, YELLOW21);
FireShot(9);
}
function blue(a){
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 10, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 10, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 15, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 15, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 20, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 20, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 25, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 25, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 40, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 40, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 45, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 45, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 30, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 30, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 35, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 35, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 50, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 50, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 55, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 55, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 12.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 12.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 17.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 17.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 22.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 22.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 27.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 27.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 42.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 42.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 47.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 47.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 32.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 32.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 37.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 37.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 52.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 52.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 57.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 57.5, BLUE02, a);
}
    @Initialize {
        SetLife(10000);
        SetEnemyMarker(true);
SetDamageRate(100, 40);
SetInvincibility(2380);
SetTimer(40);
SetScore(900000);
CutIn(YOUMU, "Border Sign - Last Remote", LR, 0, 0, 0, 0);
SetEffectForZeroLife(150,60, 1);
LoadMusic(bgm);
SetDurableSpellCard;
SetGraphicRect(1,1,64,64);
LoadGraphic(yukari);
SetMovePosition02(cx+0,60,60);
    }
    @MainLoop {
beta++;
frame++;
fury++;
dicks++;
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
if(fury==380){
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 13 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 13 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 16 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 16 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 20 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 20 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 25 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 25 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 40 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 40 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 45 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 45 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 30 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 30 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 35 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 35 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 50 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 50 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 55 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 55 - rand_int(-3,5), PURPLE03, 0);
fury = 376;
}
if(frame==-2){
CreateShot02(GetX, GetY, 1, GetAngleToPlayer, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 18, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 18, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 24, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 24, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 6, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 6, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 12, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 12, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 36, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 30, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 30, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 36, 0.08, 9, PURPLE03, 0);
frame = 0;
    }
if(frame==10){
firea(1);
firea(2);
firea(3);
firea(4);
firea(5);
firea(6);
firea(7);
firea(8);
firea(9);
firea(10);
firea(-1);
firea(-2);
firea(-3);
firea(-4);
firea(-5);
}
if(frame==20){
fireb(1);
fireb(2);
fireb(3);
fireb(4);
fireb(5);
fireb(6);
fireb(7);
fireb(8);
fireb(9);
fireb(-1);
fireb(-2);
fireb(-3);
fireb(-4);
fireb(-5);
fireb(10);
frame = 0;
}
if(beta==840){
frame = 30;
}
if(frame==31){
firec(-6);
firec(-4);
firec(-2);
firec(0);
firec(2);
firec(4);
firec(6);
frame = 32;
}
if(frame==38){
fired(-6);
fired(-4);
fired(-2);
fired(0);
fired(2);
fired(4);
fired(6);
frame = 30;
}
if(beta==1740){
frame = 40;
}
if(frame==46){
firee(-2);
firee(1);
}
if(frame==53){
firef(-1);
firef(1);
}
if(frame==59){
firee(-2);
firee(1);
}
if(frame==65){
firef(-1);
firef(1);
fireg(20);
fireg(70);
fireg(120);
fireg(170);
fireg(220);
fireg(270);
fireg(320);
fireg(370);
firei(-70);
firei(-60);
firei(-50);
firei(-40);
firei(-30);
firei(-80);
firei(-20);
firei(-10);
firei(0);
firei(10);
firei(20);
firei(30);
firei(40);
firei(50);
firei(60);
firei(70);
firei(80);
firei(90);
fireh(-90);
firei(-170);
firei(-160);
firei(-150);
firei(-140);
firei(-130);
firei(-120);
firei(-110);
firei(110);
firei(120);
firei(130);
firei(140);
firei(150);
firei(160);
firei(170);
firei(100);
firei(-100);
}
if(frame==71){
firee(-2);
firee(1);
}
if(frame==77){
firef(-1);
firef(1);
}
if(frame==83){
firee(-2);
firee(1);
}
if(frame==89){
firef(-1);
firef(1);
fireg(20);
fireg(70);
fireg(120);
fireg(170);
fireg(220);
fireg(270);
fireg(320);
fireg(370);
fireh(-70);
fireh(-60);
fireh(-50);
fireh(-40);
fireh(-30);
fireh(-80);
fireh(-20);
fireh(-10);
fireh(0);
fireh(10);
fireh(20);
fireh(30);
fireh(40);
fireh(50);
fireh(60);
fireh(70);
fireh(80);
fireh(90);
fireh(-90);
fireh(-170);
fireh(-160);
fireh(-150);
fireh(-140);
fireh(-130);
fireh(-100);
fireh(-20);
fireh(-10);
fireh(110);
fireh(120);
fireh(130);
fireh(140);
fireh(150);
fireh(160);
fireh(170);
fireh(100);
frame = 39;
}
if(beta==1530){
dicks = 59;
}
if(dicks==60){
CreateShotA(10, 50, 450, 0);
SetShotDataA(10, 0, 0.6, 300, 0.24, 0, 0.6, BLUE03);
SetShotDataA(10, 420, 0.6, 82, 0, 0, 0.6, BLUE03);
FireShot(10);
CreateShotA(11, 400, 450, 0);
SetShotDataA(11, 0, 0.6, 240, -0.24, 0, 0.6, BLUE03);
SetShotDataA(11, 420, 0.6, 98, 0, 0, 0.6, BLUE03);
FireShot(11);
CreateShotA(12, 50, 450, 0);
SetShotDataA(12, 0, 0.6, 290, 0.68, 0, 0.6, BLUE03);
SetShotDataA(12, 300, 0.6, 82, 0, 0, 0.6, BLUE03);
FireShot(12);
CreateShotA(13, 400, 450, 0);
SetShotDataA(13, 0, 0.6, 250, -0.68, 0, 0.6, BLUE03);
SetShotDataA(13, 300, 0.6, 98, 0, 0, 0.6, BLUE03);
FireShot(13);
dicks = 0;
}
if(beta==150){
blue(0);
}
if(beta==380){
blue(0);
}
if(beta==610){
blue(0);
}
if(beta==840){
blue(0);
}
if(beta==1070){
blue(0);
}
if(beta==1300){
blue(0);
}
if(beta==1530){
blue(0);
}
if(beta==1760){
blue(0);
}
if(beta==1920){
blue(0);
}
if(beta==2080){
blue(0);
}
if(beta==2240){
blue(0);
}
if(beta==2380){
blue(0);
}
if(beta==2470){
blue(0);
}
}
    @DrawLoop {
SetColor(255,255,255);
SetRenderState(ALPHA);
SetTexture(yukari);   
DrawGraphic(GetX(),GetY());
SetGraphicRect(1, 1, 64, 64);
    }

    @Finalize {
DeleteGraphic(yukari);
    }

    @BackGround {
    }
}

I only got worse as time progressed. HNNNGHHHhhhhhhghhhnn

Drake

  • *
Re: Show off your best Danmakufu patterns!
« Reply #25 on: November 13, 2009, 04:41:55 PM »
what the shit is this tomfoolery

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

Re: Show off your best Danmakufu patterns!
« Reply #26 on: November 13, 2009, 04:48:45 PM »
My first script ever, ze.

Blargel

  • RAWR!
  • I'M AN ANGRY LOLI!
Re: Show off your best Danmakufu patterns!
« Reply #27 on: November 13, 2009, 05:49:13 PM »
THIS IS HOW REAL MEN CODE.

Code: [Select]
#TouhouDanmakufu
#Title[Border Sign "Last Remote"]
#Text[Psuedo-syncronized with SA's Extra Mode stage theme.]
#Image[.\LR.png]
#BackGround[User(.\bg.png, 1, 1)]
#PlayLevel[Normal]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let yukari = GetCurrentScriptDirectory~"yukarinsprite.png";
let cx = GetCenterX;
let frame = -3;
let fury = 0;
let beta = 0;
let dicks = 61;
let LR = GetCurrentScriptDirectory~"LR.png";
let bgm = GetCurrentScriptDirectory~"ZUN - Last Remote.mp3";
function firea(a){
CreateShotA(1, GetX, GetY, 0);
SetShotDataA(1, 0, 3.7 - a*0.1, GetAngleToPlayer - 25 + rand_int(0, 10) + a*9, 0.7, 0, 2.5, RED23);
SetShotDataA(1, 90, 0.6, 130, 0, 0, 2.5, RED12);
FireShot(1);
}
function fireb(b){
CreateShotA(2, GetX, GetY, 0);
SetShotDataA(2, 0, 3.7 - b*0.1, GetAngleToPlayer + 25 - rand_int(0, 10) - b*9, -0.7, 0, 2.5, RED23);
SetShotDataA(2, 90, 0.6, 50, 0, 0, 2.5, RED12);
FireShot(2);
}
function firec(c){
CreateShotA(3, GetX, GetY, 0);
SetShotDataA(3, 0, 8 - c*0.4, GetAngleToPlayer - 25 + rand_int(-10, 10) + c*9, 0.9, 0, 5, BLUE01);
SetShotDataA(3, 34, 0.8, 120, 0, 0, 2.5, BLUE05);
FireShot(3);
}
function fired(d){
CreateShotA(4, GetX, GetY, 0);
SetShotDataA(4, 0, 8 - d*0.4, GetAngleToPlayer + 25 - rand_int(-10, 10) - d*9, -0.9, 0, 5, BLUE01);
SetShotDataA(4, 34, 0.8, 60, 0, 0, 2.5, BLUE05);
FireShot(4);
}
function firee(e){
CreateShotA(5, GetX, GetY, 0);
SetShotDataA(5, 0, 8 - e*0.8, GetAngleToPlayer - 40 + rand_int(-10, 10) + e*9, 2, 0, 15, RED02);
SetShotDataA(5, 35, 0.85, 105 + rand_int(-10, 10), 0, 0, 2.5, RED31);
FireShot(5);
}
function firef(f){
CreateShotA(6, GetX, GetY, 0);
SetShotDataA(6, 0, 8 - f*0.8, GetAngleToPlayer + 40 - rand_int(-10, 10) - f*9, -2, 0, 15, RED02);
SetShotDataA(6, 35, 0.85, 75 + rand_int(-10, 10), 0, 0, 2.5, RED31);
FireShot(6);
}
function fireg(g){
CreateShotA(7, rand_int(-10, 30) + g, 0, 0);
SetShotDataA(7, 0, 9, 90, 0, -0.15, 1.05, GREEN01);
FireShot(7);
}
function fireh(h){
CreateShotA(8, GetX, GetY, 0);
SetShotDataA(8, 0, 6, GetAngleToPlayer + h, 0, -0.055, 0.7, YELLOW21);
FireShot(8);
}
function firei(i){
CreateShotA(9, GetX, GetY, 0);
SetShotDataA(9, 0, 6, GetAngleToPlayer + i + 5, 0, -0.055, 0.7, YELLOW21);
FireShot(9);
}
function blue(a){
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 10, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 10, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 15, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 15, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 20, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 20, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 25, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 25, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 40, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 40, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 45, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 45, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 30, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 30, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 35, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 35, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 50, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 50, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 55, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 55, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 12.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 12.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 17.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 17.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 22.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 22.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 27.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 27.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 42.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 42.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 47.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 47.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 32.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 32.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 37.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 37.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 52.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 52.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 57.5, BLUE02, a);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 57.5, BLUE02, a);
}
    @Initialize {
        SetLife(10000);
        SetEnemyMarker(true);
SetDamageRate(100, 40);
SetInvincibility(2380);
SetTimer(40);
SetScore(900000);
CutIn(YOUMU, "Border Sign - Last Remote", LR, 0, 0, 0, 0);
SetEffectForZeroLife(150,60, 1);
LoadMusic(bgm);
SetDurableSpellCard;
SetGraphicRect(1,1,64,64);
LoadGraphic(yukari);
SetMovePosition02(cx+0,60,60);
    }
    @MainLoop {
beta++;
frame++;
fury++;
dicks++;
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
if(fury==380){
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 13 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 13 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 16 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 16 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 20 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 20 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 25 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 25 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 40 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 40 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 45 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 45 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 30 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 30 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 35 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 35 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 50 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 50 - rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer + 55 + rand_int(-3,5), PURPLE03, 0);
CreateShot01(GetX, GetY, 12, GetAngleToPlayer - 55 - rand_int(-3,5), PURPLE03, 0);
fury = 376;
}
if(frame==-2){
CreateShot02(GetX, GetY, 1, GetAngleToPlayer, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 18, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 18, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 24, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 24, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 6, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 6, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 12, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 12, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 36, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 30, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer + 30, 0.08, 9, PURPLE03, 0);
CreateShot02(GetX, GetY, 1, GetAngleToPlayer - 36, 0.08, 9, PURPLE03, 0);
frame = 0;
    }
if(frame==10){
firea(1);
firea(2);
firea(3);
firea(4);
firea(5);
firea(6);
firea(7);
firea(8);
firea(9);
firea(10);
firea(-1);
firea(-2);
firea(-3);
firea(-4);
firea(-5);
}
if(frame==20){
fireb(1);
fireb(2);
fireb(3);
fireb(4);
fireb(5);
fireb(6);
fireb(7);
fireb(8);
fireb(9);
fireb(-1);
fireb(-2);
fireb(-3);
fireb(-4);
fireb(-5);
fireb(10);
frame = 0;
}
if(beta==840){
frame = 30;
}
if(frame==31){
firec(-6);
firec(-4);
firec(-2);
firec(0);
firec(2);
firec(4);
firec(6);
frame = 32;
}
if(frame==38){
fired(-6);
fired(-4);
fired(-2);
fired(0);
fired(2);
fired(4);
fired(6);
frame = 30;
}
if(beta==1740){
frame = 40;
}
if(frame==46){
firee(-2);
firee(1);
}
if(frame==53){
firef(-1);
firef(1);
}
if(frame==59){
firee(-2);
firee(1);
}
if(frame==65){
firef(-1);
firef(1);
fireg(20);
fireg(70);
fireg(120);
fireg(170);
fireg(220);
fireg(270);
fireg(320);
fireg(370);
firei(-70);
firei(-60);
firei(-50);
firei(-40);
firei(-30);
firei(-80);
firei(-20);
firei(-10);
firei(0);
firei(10);
firei(20);
firei(30);
firei(40);
firei(50);
firei(60);
firei(70);
firei(80);
firei(90);
fireh(-90);
firei(-170);
firei(-160);
firei(-150);
firei(-140);
firei(-130);
firei(-120);
firei(-110);
firei(110);
firei(120);
firei(130);
firei(140);
firei(150);
firei(160);
firei(170);
firei(100);
firei(-100);
}
if(frame==71){
firee(-2);
firee(1);
}
if(frame==77){
firef(-1);
firef(1);
}
if(frame==83){
firee(-2);
firee(1);
}
if(frame==89){
firef(-1);
firef(1);
fireg(20);
fireg(70);
fireg(120);
fireg(170);
fireg(220);
fireg(270);
fireg(320);
fireg(370);
fireh(-70);
fireh(-60);
fireh(-50);
fireh(-40);
fireh(-30);
fireh(-80);
fireh(-20);
fireh(-10);
fireh(0);
fireh(10);
fireh(20);
fireh(30);
fireh(40);
fireh(50);
fireh(60);
fireh(70);
fireh(80);
fireh(90);
fireh(-90);
fireh(-170);
fireh(-160);
fireh(-150);
fireh(-140);
fireh(-130);
fireh(-100);
fireh(-20);
fireh(-10);
fireh(110);
fireh(120);
fireh(130);
fireh(140);
fireh(150);
fireh(160);
fireh(170);
fireh(100);
frame = 39;
}
if(beta==1530){
dicks = 59;
}
if(dicks==60){
CreateShotA(10, 50, 450, 0);
SetShotDataA(10, 0, 0.6, 300, 0.24, 0, 0.6, BLUE03);
SetShotDataA(10, 420, 0.6, 82, 0, 0, 0.6, BLUE03);
FireShot(10);
CreateShotA(11, 400, 450, 0);
SetShotDataA(11, 0, 0.6, 240, -0.24, 0, 0.6, BLUE03);
SetShotDataA(11, 420, 0.6, 98, 0, 0, 0.6, BLUE03);
FireShot(11);
CreateShotA(12, 50, 450, 0);
SetShotDataA(12, 0, 0.6, 290, 0.68, 0, 0.6, BLUE03);
SetShotDataA(12, 300, 0.6, 82, 0, 0, 0.6, BLUE03);
FireShot(12);
CreateShotA(13, 400, 450, 0);
SetShotDataA(13, 0, 0.6, 250, -0.68, 0, 0.6, BLUE03);
SetShotDataA(13, 300, 0.6, 98, 0, 0, 0.6, BLUE03);
FireShot(13);
dicks = 0;
}
if(beta==150){
blue(0);
}
if(beta==380){
blue(0);
}
if(beta==610){
blue(0);
}
if(beta==840){
blue(0);
}
if(beta==1070){
blue(0);
}
if(beta==1300){
blue(0);
}
if(beta==1530){
blue(0);
}
if(beta==1760){
blue(0);
}
if(beta==1920){
blue(0);
}
if(beta==2080){
blue(0);
}
if(beta==2240){
blue(0);
}
if(beta==2380){
blue(0);
}
if(beta==2470){
blue(0);
}
}
    @DrawLoop {
SetColor(255,255,255);
SetRenderState(ALPHA);
SetTexture(yukari);   
DrawGraphic(GetX(),GetY());
SetGraphicRect(1, 1, 64, 64);
    }

    @Finalize {
DeleteGraphic(yukari);
    }

    @BackGround {
    }
}

I only got worse as time progressed. HNNNGHHHhhhhhhghhhnn

Oh god there are no loops, ascents, whiles, and all that stuff. AND WHY IS THERE NO TASK MANAGING THE WAIT TIMES WTH. Weren't we showing off best patterns, not worst practices!?
<WorkingKeine> when i get home i just go to the ps3 and beat people up in blazblue with a loli
<Azure> Keine: Danmakufu helper by day, violent loli by night.

Re: Show off your best Danmakufu patterns!
« Reply #28 on: November 13, 2009, 05:52:45 PM »
Nice variable names

As always :V

Re: Show off your best Danmakufu patterns!
« Reply #29 on: November 13, 2009, 05:53:38 PM »
REAL MEN.