~Hakurei Shrine~ > Rika and Nitori's Garage Experiments
pikaguy900's Box of Stuff
(1/7) > >>
Nimono:
Anyone remember my Miracle Matter recreation in Danmakufu? I don't remember if I ever showed it around here, but I made one. It was fun to play, but kinda difficult for me! Still fun, though. Well, I recently had an idea...

Download it here

It's in that .zip. Miraculous Insanity is just a barely-modified ExRumia Stage script to change up the Enemy and Boss that appear. The "Enemy", by the way, is FOUR copies of my Miracle Matter script! If you can somehow pass my miraculous guards, you will face the true enemy: Miraculous Armageddon! He is pretty much a remixed Miracle Matter, just with different attacks. Some may be harder than the originals, some may be easier, but if you're lucky, you just may find a new Form! Blizzard, the Ice Form. Miraculous Armageddon will blast 3 small AQUA05 bullets at you while the REAL danger comes from the left- a whole bunch of BLUE11 bullets! They remind me of a snowstorm, but a blizzard would probably be faster. Though, a bit faster, and it might become absolutely UNBEATABLE. Well, without bombing the heck outta the form.

Also, Miraculous Armageddon is so crazy, he moves about randomly in all forms EXCEPT Heatwave, and not only can he be harmed in Normal form, which is Silvermine, he doesn't require you to break all his other forms to kill him! This is both helpful...and extremely dangerous. If you find you're having trouble with one form, you can't get rid of it like you can Miracle Matter- you can only hope it doesn't return! Oh yeah, speaking of Miracle Matter, I gave it an attack for its Normal form. Spin.

So uhh... Enjoy. Also, keep in mind that this wasn't meant to be BEATABLE or anything- I just made it for fun, and thought I'd share it with you all! ...and I cannot stress the "wasn't meant to be beatable" part enough...

Just try beating the four Miracle Matters without getting hit or bombing your way through them... I couldn't, but of course, I myself stink at Lunatic stuff... I'll give you some cookies if you can show me that you did it, though.


EDIT: I have a new script! This will (hopefully) be my Box of Stuff now... Anyways...

Pong...with a twist!!

Seriously, play it. Some things to keep in mind when you play:

1: Your Y position gets locked the minute Yukari pops up on-screen, and no matter what, you CAN'T move up and down. Fortunately for you, Yukari's fair enough to abide by the same rule- she only moves left and right, same as you.
2: What she WON'T abide by, though, is a straight game of Pong! Oh no, Yukari's got gaps at her disposal- why WOULDN'T she use them to her advantage?! To this end, she causes stars to pop up from below you while you play. Watch out for those stars!
3: Did I mention she plays with a rigged ball? Yeah, it's true! It's rigged in two ways. One, the ball ALWAYS goes towards her, NEVER you, and two, every time the ball hits the sides, 20 stars shoot out. Find a hole, and fast! You can't move vertically, so it's easy to get trapped!
4: Genuine warning here: The Collision_Obj_Obj thing is a little screwy, as it's easy to glitch up the ball. If you get it stuck to your paddle, get it off ASAP, or else it WILL shoot behind you and make you die. (That is what happens when you miss the ball, you die.) However, this can be used to your advantage! Yukari's cheating- why not cheat yourself, too? The ball speeds up a very tiny bit every time it bounces off both players' paddles. It's not very noticable until you either play for a while or get the ball stuck to your paddle. If this happens, release it towards Yukari ASAP- if you let it stick on long enough, she can't get to the ball fast enough to avoid missing it! (I tried making code to fix this, but it didn't do ANYTHING...)

That said, enjoy my game of Pong.


Oops, I forgot one thing! When the timer gets below 30, or you have at least 2 points out of the required 4 to win, Yukari launches a BIGGER ball that starts off slightly faster. ...Not much faster, sadly, though the speed increase is VERY noticable to me... ...Still not much faster, just one point.

Okay, NOW enjoy. ;)


EDIT: Miracle Matter script updated, along with a few files in the MIRACULOUS INSANITY set. Download the update here.

If you only want the Miracle Matter script:


--- Code: ---#TouhouDanmakufu
#Title[Copy Sign "Miracle Matter"]
#Text[A unique spellcard created in the style of the final boss of Kirby 64, Miracle Matter. Invincible when not in an attack form, and each form has its own amount of life. Defeat them all to stop the spellcard!]
#BackGround[Default]
#Player[FREE]
#ScriptVersion[2]


script_enemy_main
{
//#include_function "lib\SHOT_REPLACE\shot_replace.dnh"
let BossImage = GetCurrentScriptDirectory ~ "miraclecube.PNG";
let BossCutIn = GetCurrentScriptDirectory ~ "miraclecubecutin.png";
let frame = -60;
let frame2 = 0;
let frame3 = -60;
let frame4 = 0;
let Angle = 0;
let Angle2 = 0;
let Move = -60;
let ShotSFX = GetCurrentScriptDirectory ~ "shot.wav";
let LaserSFX = GetCurrentScriptDirectory ~ "laser.wav";
let Form = 0;
let NdleLfe = 460;//460
let SprkLfe = 460;//460
let FireLfe = 320;//320
let CutrLfe = 460;//460
let IceLife = 100;
let Forms = [0, 1, 2, 3, 4];
let timeoffs = 0;
let laser = 0;
let laserlife = 0;
let lasermove = -22.5;
let shot = 1;
let specshot = [NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL];
let shotcreate = true;
let shotval = 0;
let CurForm = [" NORMAL", " NEEDLE", " SPARK", " FIRE", " CUTTER", " ICE"];
let InPosition = false;
let LaserExist = false;
let NextForm = 0;
let FormsAlive = 4;
let string = "Forms left: ";
let anim_frame = 0;
let Offset = 0;

task Spark(g, a, s, d, v)
{
shotcreate = false;
specshot[v] = Obj_Create(OBJ_SHOT);
ObjShot_SetGraphic(specshot[v], g);
Obj_SetAngle(specshot[v], a);
Obj_SetSpeed(specshot[v], s);
Obj_SetPosition(specshot[v], GetX, GetY);
Obj_SetCollisionToPlayer(specshot[v], true);
while(! Obj_BeDeleted(specshot[v]))
{
if(Obj_GetX(specshot[v]) <= GetClipMinX() || Obj_GetX(specshot[v]) >= GetClipMaxX())
{
Obj_SetAngle(specshot[v], 180-Obj_GetAngle(specshot[v]));
}
if(Obj_GetY(specshot[v]) <= GetClipMinY() || Obj_GetY(specshot[v]) >= GetClipMaxY())
{
Obj_SetAngle(specshot[v], 360-Obj_GetAngle(specshot[v]));
}
yield;
}
}

@Initialize
{
//shotinit;
LoadGraphic(BossImage);
SetTimer(350);
SetLife(300);
SetDamageRate(0,0);
SetInvincibility(30);
CutIn(YOUMU, "Copy Sign "\""Miracle Matter"\", BossCutIn, 5, 92, 324, 392);
SetScore(350000);
SetEnemyMarker(true);
SetMovePosition02(GetCenterX,GetCenterY,60);
}

@MainLoop
{
LoadGraphic(BossImage);
anim_frame++;
SetCollisionA(GetX(),GetY(),32);
SetCollisionB(GetX(),GetY(),24);
if(frame == 0)
{
if(Form == 0)
{
SetMovePosition02(GetCenterX,GetCenterY,20);
if(GetLife != 300)
{
SetLife(300);
}
SetDamageRate(0,0);
}
if(Form == 1)
{
SetLife(NdleLfe);
SetDamageRate(12,5);
}
if(Form == 2)
{
SetLife(SprkLfe);
SetDamageRate(10,10);
}
if(Form == 3)
{
SetLife(FireLfe);
SetDamageRate(10,10);
}
if(Form == 4)
{
SetLife(CutrLfe);
SetDamageRate(10,10);
}
if(Form == 5)
{
SetLife(IceLife);
SetDamageRate(10,10);
}
if(Form == 6)
{
SetLife(IceLife);
SetDamageRate(10,10);
}
if(Form == 7)
{
SetLife(IceLife);
SetDamageRate(10,10);
}
if(Form == 8)
{
SetLife(IceLife);
SetDamageRate(10,10);
}
}
if(frame > 0 && frame < 650)
{
if(Form == 0)
{
if(Forms[1] == 0 && Forms[2] == 0 && Forms[3] == 0 && Forms[4] == 0)
{
SetLife(0);
}
}
if(frame2 == 0)
{
if(Form == 0)
{
if(Forms[1] != 0 || Forms[2] != 0 || Forms[3] != 0 || Forms[4] != 0)
{
let a = 0;
loop(6)
{
CreateShotA(a, GetX, GetY, 5);
SetShotDataA(a, 0, 5, Angle+Offset, 0, 0, 0, PURPLE21);
SetShotDataA(a, 1, NULL, NULL, 1, 0, 0, PURPLE21);
FireShot(a);
a++;
Angle += 60;
Offset += 7;
}
frame2 = -5;
PlaySE(ShotSFX);
}
}
if(Form == 1)
{
if(laserlife <= 0)
{
laserlife = 60;
lasermove += 22.5;
}
if(laserlife > 0)
{
if(laserlife > 52)
{
CreateLaserB(laser, 300, 30, ORANGE01, 30);
SetLaserDataB(laser, 0, 0, 25, 0, Angle+lasermove, 0, Angle+lasermove, 0);
SetShotKillTime(laser, 180);
FireShot(laser);
PlaySE(LaserSFX);
Angle += 45;
}
laserlife--;
}
CreateShotA(shot, GetX, GetY, 10);
SetShotDataA(shot, 0, 5, Angle2, 0.5, 0, 0, ORANGE21);
SetShotDataA(shot, 50, 2, Angle2+180, 0, 0, 0, ORANGE21);
FireShot(shot);
shot++;
CreateShotA(shot, GetX, GetY, 10);
SetShotDataA(shot, 0, 5, Angle2+180, -0.5, 0, 0, ORANGE21);
SetShotDataA(shot, 50, 2, Angle2, 0, 0, 0, ORANGE21);
FireShot(shot);
shot--;
Angle2 += 13;
frame2 = -5;
PlaySE(ShotSFX);
if(GetLife <= 20)
{
if(GetLife <= 0)
{
SetLife = 10;
}
SetDamageRate(0,0);
Forms[1] = 0;
DeleteEnemyShot(ALL);
NextForm = 0;
Form = 0;
Concentration01(30);
frame = -1;
FormsAlive--;
}
}
if(Form == 2)
{
CreateLaser01(GetX, GetY, 3, Angle, 92, 10, YELLOW01, 0);
PlaySE(LaserSFX);
Angle += 34;
frame2 = -3;
if(GetLife <= 20)
{
if(GetLife <= 0)
{
SetLife = 10;
}
SetDamageRate(0,0);
Forms[2] = 0;
DeleteEnemyShot(ALL);
NextForm = 0;
Form = 0;
Concentration01(30);
frame = -1;
FormsAlive--;
}
}
if(Form == 3)
{
shot = 2;
if(InPosition)
{
Angle = GetAngleToPlayer;
CreateLaserB(laser, 300, 40, RED01, 20);
SetLaserDataB(laser, 0, 0, 15, 0, Angle, 0, Angle, 0);
SetShotKillTime(laser, 200);
CreateLaserB(laser+1, 300, 40, RED01, 20);
SetLaserDataB(laser+1, 0, 0, 15, 0, Angle+180, 0, Angle+180, 0);
SetShotKillTime(laser+1, 200);
FireShot(laser);
FireShot(laser+1);
PlaySE(LaserSFX);
InPosition = false;
}
CreateShot01(GetX, GetY, 4, Angle2, RED04, 5);
CreateShot01(GetX, GetY, 4, Angle2-10, RED04, 5);
CreateShot01(GetX, GetY, 4, Angle2+10, RED04, 5);
CreateShot01(GetX, GetY-20, 4, Angle2-5, RED04, 5);
CreateShot01(GetX, GetY-20, 4, Angle2+5, RED04, 5);
CreateShot01(GetX, GetY-40, 4, Angle2, RED04, 5);
Angle2 += 53;
frame2 = -5;
PlaySE(ShotSFX);
if(GetLife <= 20)
{
if(GetLife <= 0)
{
SetLife = 10;
}
SetDamageRate(0,0);
Forms[3] = 0;
DeleteEnemyShot(ALL);
NextForm = 0;
Form = 0;
Concentration01(30);
frame = -1;
FormsAlive--;
}
}
if(Form == 4)
{
shot = 0;
laser = 4;
if(Angle2 < 18)
{
CreateLaserB(laser, 150, 20, GREEN05, 0);
SetLaserDataB(laser, 0, 0, 0, 0, 0, 2, 0, 2);
PlaySE(LaserSFX);
Angle2++;
FireShot(laser);
}
if(frame4 >= 0)
{
if(Angle2 >= 18)
{
SetMovePosition01(GetPlayerX, GetPlayerY, 1);
}
frame4 = -1;
}
frame2 = -10;
if(GetLife <= 20)
{
if(GetLife <= 0)
{
SetLife = 10;
}
SetDamageRate(0,0);
Forms[4] = 0;
DeleteEnemyShot(ALL);
NextForm = 0;
Form = 0;
Concentration01(30);
frame = -1;
FormsAlive--;
}
}
if(Form == 5)
{
Angle += 13;
frame2 = -20;
if(GetLife <= 20)
{
if(GetLife <= 0)
{
SetLife = 10;
}
SetDamageRate(0,0);
Forms[1] = 0;
DeleteEnemyShot(ALL);
NextForm = 0;
Form = 0;
Concentration01(30);
frame = -1;
FormsAlive--;
}
}
}
if(frame3 >= 0)
{
if(Form == 2)
{
if(shotval < 12)
{
alternative(shotval)
case(1)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 1);
PlaySE(ShotSFX);
}
case(2)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 2);
PlaySE(ShotSFX);
}
case(3)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 3);
PlaySE(ShotSFX);
}
case(4)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 4);
PlaySE(ShotSFX);
}
case(5)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 5);
PlaySE(ShotSFX);
}
case(6)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 6);
PlaySE(ShotSFX);
}
case(7)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 7);
PlaySE(ShotSFX);
}
case(8)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 8);
PlaySE(ShotSFX);
}
case(9)
{
Spark(YELLOW02, GetAngleToPlayer, 5, 10, 9);
PlaySE(ShotSFX);
}
shotval++;
}
frame3 = -40;
}
if(Form == 3)
{
if(!InPosition && frame3 == 0)
{
SetMovePosition02(GetPlayerX, GetY, 15);
}
if(frame3 == 15)
{
InPosition = true;
}
if(frame3 == 240)
{
frame3 = -1;
}
}
if(Form == 4)
{
if(frame3 == 60)
{
PlaySE(ShotSFX);
loop(32)
{
CreateShot01(GetX, GetY, 3, Angle, GREEN32, 10);
Angle += 11.25;
}
Angle = 0;
loop(10)
{
CreateShot01(GetX, GetY, 4, Angle, PURPLE31, 10);
CreateShot01(GetX, GetY, 4, Angle+10, PURPLE31, 10);
CreateShot01(GetX, GetY, 4, Angle+20, PURPLE31, 10);
Angle += 36;
}
frame3 = -1;
}
}
}
frame2++;
frame3++;
frame4++;
}
if(frame == 600 || (Form == 0 && frame == 130))
{
Concentration01(50);
if(Form == 0)
{
NextForm = Forms[rand_int(1, 4)];
while(NextForm == 0)
{
NextForm = Forms[rand_int(1, 4)];
yield;
}
}
else{NextForm = 0;}
}
if(frame == 650 || (Form == 0 && frame == 180))
{
if(Form == 0)
{
Form = NextForm;
if(Form == 4)
{
SetMovePosition02(GetCenterX,GetCenterY-80,15);
frame = -20;
}
else{frame = -1;}
if(Form == 0)
{
frame = 179;
}
}
else if(Form == 1)
{
NdleLfe = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 2)
{
SprkLfe = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 3)
{
FireLfe = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 4)
{
CutrLfe = GetLife;
frame = -11;
Form = 0;
}
else if(Form == 5)
{
IceLife = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 6)
{
IceLife = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 7)
{
IceLife = GetLife;
frame = -1;
Form = 0;
}
else if(Form == 8)
{
IceLife = GetLife;
frame = -1;
Form = 0;
}
timeoffs = 0;
Angle = 0;
Angle2 = 0;
shot = 1;
laser = 0;
DeleteEnemyShot(ALL);
shotval = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
laser = 0;
laserlife = 0;
}
frame++;
Move++;
yield;
}

@DrawLoop
{
SetTexture(BossImage);
if(anim_frame >= 0 && anim_frame < 3)
{
SetGraphicRect(0,0,64,60);
}
if(anim_frame >= 3 && anim_frame < 6)
{
SetGraphicRect(64,0,127,60);
}
if(anim_frame >= 6 && anim_frame < 9)
{
SetGraphicRect(127,0,190,60);
}
if(anim_frame >= 9 && anim_frame < 12)
{
SetGraphicRect(190,0,253,60);
}
if(anim_frame == 12)
{
anim_frame = 0;
}
DrawGraphic(GetX, GetY);
DrawText("Current form:" ~ CurForm[NextForm], 50, 50, 17, 255);
DrawText(ToString(FormsAlive), 50, 70, 17, 255);
}

@Finalize
{
DeleteGraphic(BossImage);
}
}
--- End code ---

(Yes, I was using the Shot Replace script...though I hate its [X]21 bullets...)

The big difference here is the Cutter form. I FINALLY found a way to make it similar to the original Miracle Matter! No, it doesn't move in the same motion, but it DOES follow you with a laser shield while shooting out a lot of knives. Really, all I had to do was look at the original form again and I KNEW what to do with it: Change everything related to the laser to CreateLaserB stuff and have the boss follow you! :D

Let me know if the form is any better now, okay? ^_^
Naut:
Miracle Matter. You've got to be kidding me, I was actually in the middle of recreating that epic Kirby battle... No joke! I have to play this.
Nimono:

--- Quote from: Naut on May 20, 2009, 04:22:40 AM ---Miracle Matter. You've got to be kidding me, I was actually in the middle of recreating that epic Kirby battle... No joke! I have to play this.

--- End quote ---
Heh. Oh, I want to warn you, it's not EXACTLY like the battle, I left out some stuff due to lack of ideas at the time, such as the Ice, Stone, and Bomb forms. (So, all you get are Invincible, Fire, Spark, Cutter, and Needle.)

Needle, I feel is the most accurate. To make it more difficult, since sitting in one place the whole time would be BORING and too easy, I made the lasers shift positions every time they reappeared (they're my needle substitutes) and I created two sets of ORANGE23 bullets that spun out, each opposite the other, then they curved inward, turned around, and flew out. Surprisingly difficult if you don't pay attention to what you're doing!
Hint: When the bullets come for you, right left right left right left. Seriously, just keep moving back and forth in each wave, it becomes simple. ...then you have to worry about the lasers. Maybe. They move in degrees of 22.5.

Spark was greatly changed. It's more like Bomb now, minus the fact that the bubbles bounced off Miracle Matter, and I also have some yellow Laser01's coming at you!
Hint: Move as little as possible. Really, this is the easiest form for me to NOT get hit on.

Fire is absolutely fun for me to play, and it's also changed a bit. My original plan was to make the lasers hit the walls and create bullets that shot out, making a great threat to you. I couldn't figure out how to do it, so I went with the next best thing- LASER CHASER. Miracle Matter goes to your X position and fires two lasers- one is aimed DIRECTLY AT YOU. The other is aimed in the exact opposite direction. If you want to beat this form, you'd better learn to misdirect the lasers. The lasers fire about a second after the boss hits your X position, so use that time to lure the lasers into a position where you can safely get under the boss and shoot! (Homing shots need not worry about this...much...) Just be careful not to hit the red bullets flying all over the place, though.

Speaking of that, that is my least favorite part of the form. I just couldn't get the bullets to fly away in the EXACT same formation in EVERY direction at the time. However, I believe I have a way to do it now, but it may be a while before I even TRY to do it... XD

Cutter. How I despise you. This form is NOTHING like the original. I couldn't think of a single way to make it similar to it and be DIFFICULT. :( Also, it can be VERY annoying. Watch out for the knives flying at you. Stay still and they won't hurt you. But once the GREEN03 bullets start firing at places where they can hit you, you'll want to move away. I'd advise you NOT to try to go between the knives, or you might get cut. Don't try it on the sides, either- death for you no matter what, due to the size of the playing field...

So yeah. That's all I have to say for now. Man, I'm tired...
SONIC BHOCOLATE STRIKER:
Do you have a video preview on youtube?
Nimono:
Nope, I don't have any recording software or anything, so I can't show you anything. :/ Perhaps someone else can show how insane it is?
Navigation
Message Index
Next page

Go to full version