Maidens of the Kaleidoscope
~Hakurei Shrine~ => Rika and Nitori's Garage Experiments => Topic started by: Infy♫ on July 20, 2009, 08:59:44 PM
-
Hello there!
I made this thread because there was no place to post scripts for other people to test them. Everyone is allowed to post single scripts if he/she wonders if they're actually playable or could be adjusted, or if he/she just wants other people's opinion.
I have a certain script here and i would like you to test it. I suck at shooting games so i couldn't see if this is actually playable. and if it even fits an extra/phantasm stage.
#TouhouDanmakufu
#Title[Insanity in Danmaku "Dodge this you punk"]
#Text[what]
#Image[.\ss.jpg]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let frame = 0;
SetCommonData("Weight",0);
let deg = 22.5;
#include_function "lib\SHOT_REPLACE\shot_replace.dnh"
let rotvar = 0;
let frame2 = 0;
let frame3 = 0;
let frame4 = 0;
let deg2 = 0;
let deg3 = 0;
let deg4 = 0;
let mode = 1;
let BossImage = GetCurrentScriptDirectory ~ "huhu.gif";
let BossCutIn = GetCurrentScriptDirectory ~ "ss.jpg";
let Back = GetCurrentScriptDirectory ~ "Wormhole.jpg";
LoadSE(GetCurrentScriptDirectory ~ "tan01.wav");
LoadSE(GetCurrentScriptDirectory ~ "kira00.wav");
LoadSE(GetCurrentScriptDirectory ~ "enep01.wav");
@Initialize {
shotinit;
LoadGraphic(BossCutIn);
LoadGraphic(BossImage);
LoadGraphic(Back);
shotinit;
SetLife(1000);
SetDamageRate(7, 0);
SetTimer(80);
SetInvincibility(30);
CutIn(YOUMU, " Insanity in Danmaku "\""Dodge this you punk"\", BossCutIn, 0, 0, 200, 600);
SetScore(5000000);
SetEnemyMarker(true);
SetDurableSpellCard;
Concentration01(120);
Concentration02(60);
MagicCircle(true);
SetEffectForZeroLife(180, 100, 1);
SetX(GetCenterX());
SetY(200);
SetShotAutoDeleteClip(10,10,10,10);
}
task CreateShotSakuya(d,a,s) {
let randy = 0;
let obj = Obj_Create(OBJ_SHOT);
let bounced = 0;
Obj_SetPosition (obj, GetX, GetY);
Obj_SetSpeed (obj, s);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic(obj, a);
ObjShot_SetDelay (obj, 20);
while(! Obj_BeDeleted(obj) && bounced == 0){
if( bounced < 1){
if(Obj_GetX(obj) < GetClipMinX || Obj_GetX(obj) > GetClipMaxX){
Obj_SetAngle(obj, 2 * (90- Obj_GetAngle(obj)) + Obj_GetAngle(obj));
bounced++;
}
}
yield;
}
}
task CreateShotMaze(x,y,d,a) {
let obj = Obj_Create(OBJ_SHOT);
let timer = 0;
let boink = 0;
Obj_SetPosition (obj, x,y);
Obj_SetSpeed (obj, 1.5);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic (obj, a);
ObjShot_SetDelay (obj, 30);
Obj_SetAutoDelete(obj,false);
while(! Obj_BeDeleted(obj)){
timer++;
if(timer > 500){
Obj_Delete(obj);
}
yield;
}
}
function kunaishoot(d){
let dir = 0;
loop(30){
//CreateShot01(GetX,GetY, sec(dir) *4 ,d - dir,RED31,10);
CreateShot01(GetX,GetY, sec(dir) *4 ,d + dir,RED31,10);
dir += 2;
}
}
function sec (iii){
return(1/cos(iii));
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
frame++;
yield;
frame2++;
frame3++;
if(frame == 2){
deg2 += 10;
CreateShot01(GetX,GetY,2,deg2,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 +90,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 +180,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 +270,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 *-1,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 *-1+90,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 *-1+180,BLUE11,20);
CreateShot01(GetX,GetY,2,deg2 *-1+270,BLUE11,20);
frame = 0;
deg += 30.5;
loop(6){
deg += 15;
CreateShotMaze(GetX - sin(deg) *350,GetY + cos(deg) *350,deg -90,RED12);
}
deg -= 90;
}
}
@DrawLoop {
SetTexture(BossImage);
DrawGraphic(GetX, GetY);
}
@Finalize {
DeleteGraphic(BossImage);
DeleteGraphic(BossCutIn);
DeleteGraphic(Back);
}
@BackGround {
rotvar += 1;
SetGraphicAngle (0,0,rotvar);
SetTexture (Back);
SetGraphicRect (0,0,1024,768);
DrawGraphic (GetCenterX(), GetCenterY());
}
}
-
Well, two things...
1: Yes, it's playable! It creates a good bit of slowdown for me, though... It goes below 40 FPS...
2: The spell's actually kinda easy... Slight back-and-forth movement, even when the bullets return to you, will be easy. Usually. Here's a suggestion: Rotate it all a bit. That way, instead of just back-and-forth dodging, you also have to follow it or die! (Or squeeze through the gaps.)
-
thanks! the FPS doesn't go below 40 for me but it's still very laggy. besides that, i can't survive this pattern for longer than 5 seconds. I'll try to reduce the lag, too.
-
Hi, I have something new to test!
it requires the shot replace script.
#TouhouDanmakufu
#Title[Molten Brain "Collapsed Mind -Rumia-"]
#Text[yukari got pwnd]
#Image[.\ss.jpg]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let frame = 0;
let deg = 0;
#include_function "lib\SHOT_REPLACE\shot_replace.dnh"
let rotvar = 0;
let frame2 = 0;
let frame3 = 0;
let frame4 = 0;
let deg2 = 0;
let deg3 = 0;
let deg4 = 0;
let speed = 2;
let distance = 120;
let mode = 3;
let BossImage = GetCurrentScriptDirectory ~ "ExRumia.png";
let BossCutIn = GetCurrentScriptDirectory ~ "ss.jpg";
let Back = GetCurrentScriptDirectory ~ "Wormhole.jpg";
let Back2 = GetCurrentScriptDirectory ~ "sterren.jpg";
LoadSE(GetCurrentScriptDirectory ~ "tan01.wav");
LoadSE(GetCurrentScriptDirectory ~ "kira00.wav");
LoadSE(GetCurrentScriptDirectory ~ "enep01.wav");
@Initialize {
shotinit;
LoadGraphic(BossCutIn);
LoadGraphic(BossImage);
LoadGraphic(Back);
LoadGraphic(Back2);
SetLife(1000);
SetDamageRate(8, 0);
SetTimer(90);
SetInvincibility(30);
CutIn(YOUMU, "Molten Brain "\""Collapsed Mind -Rumia-"\", BossCutIn, 0, 0, 200, 600);
SetScore(5000000);
SetEnemyMarker(true);
SetDurableSpellCard;
Concentration01(120);
Concentration02(60);
MagicCircle(true);
SetEffectForZeroLife(180, 100, 1);
SetX(GetCenterX());
SetY(150);
}
task CreateShotSakuya(d,a,s) {
let randy = 0;
let obj = Obj_Create(OBJ_SHOT);
let bounced = 0;
Obj_SetPosition (obj, GetX, GetY);
Obj_SetSpeed (obj, s);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic(obj, a);
ObjShot_SetDelay (obj, 20);
while(! Obj_BeDeleted(obj)){
if( bounced < 2){
if(Obj_GetX(obj) < GetClipMinX || Obj_GetX(obj) > GetClipMaxX){
Obj_SetAngle(obj, 2 * (90- Obj_GetAngle(obj)) + Obj_GetAngle(obj));
bounced++;
}
if(Obj_GetY(obj) < GetClipMinY ){
Obj_SetAngle(obj, 2 * (180- Obj_GetAngle(obj)) + Obj_GetAngle(obj));
bounced++;
}
}
yield;
}
}
task CreateShotRound(d,a,s,i) {
let obj = Obj_Create(OBJ_SHOT);
let timer = 0;
let boink = 0;
Obj_SetPosition (obj, GetX,GetY);
Obj_SetSpeed (obj, s);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic (obj, a);
ObjShot_SetDelay (obj, 0);
while(! Obj_BeDeleted(obj)){
timer++;
if(timer == 20){
Obj_SetAngle(obj,Obj_GetAngle(obj) + 90);
}
if(timer > 20){
Obj_SetAngle(obj,Obj_GetAngle(obj) + i);
}
yield;
}
}
task CreateShot012(x,y,d,a,s) {
let obj = Obj_Create(OBJ_SHOT);
let timer = 0;
let boink = 0;
Obj_SetPosition (obj, x,y);
Obj_SetSpeed (obj, s);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic (obj, a);
ObjShot_SetDelay (obj, s *5);
while(! Obj_BeDeleted(obj)){
timer++;
if(Obj_GetY(obj) > GetClipMaxY){
if(boink == 0){
boink = 1;
CreateLaserA(1,Obj_GetX(obj),Obj_GetY(obj),550,80,BLUE60,10);
SetLaserDataA(1,0,-90,0,0,0,0);
SetShotKillTime(1,30);
FireShot(1);
}
}
yield;
}
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
frame++;
yield;
frame2++;
frame3++;
frame4++;
if(frame4 > 1100){
DeleteEnemyShot(CHILD);
distance = 120;
deg = 0;
frame4 = 0;
mode++;
if(mode == 5){
mode = 1;
}
}
if(mode == 1){
if(frame > 1){
frame = 0;
distance = sin(frame2/3) *120;
deg2+=4 + sin(frame2);
loop(6){
deg2 += 60;
CreateShot01(GetX + sin(deg2) * distance,GetY - cos(deg2) * distance,2.5,deg2 + frame2 +90,BLUE12,20);
}
deg2 = deg2 *-1;
loop(6){
deg2 += 60;
CreateShot01(GetX + sin(deg2) * distance,GetY - cos(deg2) * distance,2.5,deg2 - frame2 +90,BLUE12,20);
}
deg2 = deg2 *-1;
}
}
if(mode == 2){
if(frame2 > 1){
frame2 = 0;
deg2 += 61;
CreateShot01(GetX,GetY,3,deg2,RED12,10);
CreateShot01(GetX,GetY,3,deg2 +60,RED12,10);
CreateShot01(GetX,GetY,3,deg2 +120,RED12,10);
CreateShot01(GetX,GetY,3,deg2 +180,RED12,10);
deg2 = deg2 *-1;
CreateShot01(GetX,GetY,3,deg2,BLUE12,10);
CreateShot01(GetX,GetY,3,deg2 +60,BLUE12,10);
CreateShot01(GetX,GetY,3,deg2 +120,BLUE12,10);
CreateShot01(GetX,GetY,3,deg2 +180,BLUE12,10);
deg2 = deg2 *-1;
}
if(frame3 > 11 ){
frame3 = 0;
deg+=4;
loop(8){
deg += 45;
CreateShotRound(-1* deg,RED31,2.8,0.5);
CreateShotRound( deg,RED31,2.8,-0.5);
}
}
}
if(mode == 3){
deg = rand(1,360);
if(frame2 > 200){
speed = 1;
frame2 = 0;
loop(30){
speed+=0.18;
loop(16){
deg += 22.5;
CreateShot01(GetX,GetY,speed,GetAngleToPlayer + deg,RED31,speed *5);
}
}
loop(16){
deg += 22.5;
CreateShot012(GetX,GetY,deg + GetAngleToPlayer,RED31,speed);
}
}
if(frame > 65){
frame = 0;
loop(11){
deg+=360/11;
CreateShotSakuya(deg,RED03,3);
}
}
}
if(mode == 4){
if(frame2 > 180){
if(frame3 > 5){
frame3 = 0;
CreateLaserA(1,GetX,GetY,550,20,BLUE60,30);
SetLaserDataA(1,0,GetAngleToPlayer,0,0,0,0);
SetShotKillTime(1,50);
FireShot(1);
}
}
if(frame2 > 240){
frame2 = 0;
}
if(frame > 30){
frame = 0;
deg = rand(1,360);
loop(60){
deg += 360/60;
CreateShotPlanet(GetX,GetY,deg,1,1);
CreateShotPlanet(GetX,GetY,deg,1,-1);
}
}
}
}
@DrawLoop {
SetGraphicAngle (0,0,0);
SetColor(255,255,255);
SetAlpha(255);
SetRenderState(ALPHA);
SetTexture(BossImage);
if(GetSpeedX()==0){SetGraphicRect(64,1,127,64);}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
DrawGraphic(GetX(),GetY());
}
@Finalize {
DeleteGraphic(BossImage);
DeleteGraphic(BossCutIn);
DeleteGraphic(Back);
}
@BackGround {
SetTexture(Back2);
SetGraphicAngle (0,0,0);
SetGraphicRect (0,0,1024,768);
DrawGraphic (GetCenterX(), GetCenterY());
SetAlpha(100);
rotvar += 0.5;
SetGraphicAngle (0,0,rotvar);
SetTexture (Back);
SetGraphicRect (0,0,1024,768);
DrawGraphic (GetCenterX(), GetCenterY());
SetGraphicAngle (0,0,rotvar *-1);
DrawGraphic (GetCenterX(), GetCenterY());
SetAlpha(255);
}
task CreateShotPlanet(x,y,d,vv,i) {
let obj = Obj_Create(OBJ_SHOT);
let frame = 0;
let angle = d;
let oldangle = 0;
let jump = 0;
let frame2 = 0;
Obj_SetPosition (obj, x, y);
Obj_SetSpeed (obj, vv);
Obj_SetAngle (obj, d);
ObjShot_SetGraphic (obj,BLUEI12);
ObjShot_SetDelay (obj, 10);
while(! Obj_BeDeleted(obj)){
frame++;
if(frame > 79 && frame < 120){
angle+=4.3 * i;
Obj_SetAngle(obj,angle);
Obj_SetSpeed(obj,3);
}
if(frame == 120){
Obj_SetSpeed(obj,4);
}
yield;
}
}
}
-
#TouhouDanmakufu
#Title[Darkness "Blood Red Disaster"]
#Text[Test script]
#BackGround[User(.\black.png, 1, 1)]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let ImgBoss = "script\img\ExRumia.png";
let count = -70;
let fire = 0;
@Initialize {
SetLife(1200);
SetDamageRate(10, 0);
SetTimer(256);
SetScore(1000000);
SetInvincibility( 200 );
LoadGraphic(ImgBoss);
SetMovePosition02(GetCenterX, GetCenterY-120, 120);
CutIn(YOUMU, "Darkness "\""Blood Red Disaster"\", "", 0, 0, 0, 0);
LoadUserShotData("\script\extrabosses_mcxd\images\supershot.txt");
SetGraphicRect(0, 0, 64, 64);
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 16);
if ((count == 50)){
particle;
}
count++;
yield;
}
@DrawLoop {
SetTexture(ImgBoss);
DrawGraphic(GetX, GetY);
}
@Finalize {
DeleteGraphic(ImgBoss);
}
task particle{
let b = 0;
let bup = 0;
let reverse = 0;
let lrar = 0;
let kput = 4;
let krar = 360/kput;
let Length = 10;
let x = 2.3;
let n = 0;
let q = 0;
let RollerX;
let RollerY;
let RollerTwoX;
let RollerTwoY;
loop{
PlaySE(GetCurrentScriptDirectory~"SE\se_tan01.wav");
ascent(a in 0..kput){
RollerX = GetX + cos((a*krar+b)+1*(360/2));
RollerY = GetY + sin((a*krar+b)+1*(360/2));
RollerTwoX = RollerX + Length * cos((a*krar+b)+1*(360/2));
RollerTwoY = RollerY + Length * sin((a*krar+b)+1*(360/2));
TheshotUp(RollerTwoX, RollerTwoY, 3, (a*krar+b)+count, 172, 10);
TheshotDown(RollerTwoX, RollerTwoY, 3, (a*krar+b)+count, 172, 10);
TheshotLeft(RollerTwoX, RollerTwoY, 3, (a*krar+b)+count, 172, 10);
TheshotRight(RollerTwoX, RollerTwoY, 3, (a*krar+b)+count, 172, 10);
}
if (reverse == 0){
if (bup > -0.7){
bup += 0.1;
}
else{
reverse++;
}
}
else{
if (bup > 0){
bup -= 0;
}
else{
reverse--;
}
}
b += bup;
if (Length > -200){
Length -= 0;
}
loop(6){
yield;
}
}
}
task TheshotUp(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let a = 0;
let b = 0;
let dir = angle;
Obj_SetX(obj, x);
Obj_SetY(obj, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
Obj_SetAutoDelete(obj, false);
ObjShot_SetBombResist(obj, true);
while (!Obj_BeDeleted(obj)){
if (a == 50){
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, 230);
Obj_SetSpeed(obj, 1);
}
a++;
b++;
yield;
}
}
task TheshotDown(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let a = 0;
let b = 0;
let dir = angle;
Obj_SetX(obj, x);
Obj_SetY(obj, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
Obj_SetAutoDelete(obj, false);
ObjShot_SetBombResist(obj, true);
while (!Obj_BeDeleted(obj)){
if (a == 50){
Obj_SetAutoDelete(obj, true);
Obj_SetAngle(obj, angle+90);
ObjShot_SetGraphic(obj, 237);
Obj_SetSpeed(obj, 1);
}
a++;
b++;
yield;
}
}
task TheshotLeft(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let a = 0;
let b = 0;
let dir = angle;
Obj_SetX(obj, x);
Obj_SetY(obj, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
Obj_SetAutoDelete(obj, false);
ObjShot_SetBombResist(obj, true);
while (!Obj_BeDeleted(obj)){
if (a == 50){
Obj_SetAutoDelete(obj, true);
Obj_SetAngle(obj, angle+180);
ObjShot_SetGraphic(obj, 171);
Obj_SetSpeed(obj, 1);
}
a++;
b++;
yield;
}
}
task TheshotRight(x, y, v, angle, graphic, delay){
let obj = Obj_Create(OBJ_SHOT);
let a = 0;
let b = 0;
let dir = angle;
Obj_SetX(obj, x);
Obj_SetY(obj, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
Obj_SetAutoDelete(obj, false);
ObjShot_SetBombResist(obj, true);
while (!Obj_BeDeleted(obj)){
if (a == 50){
Obj_SetAutoDelete(obj, true);
Obj_SetAngle(obj, angle+270);
ObjShot_SetGraphic(obj, 66);
Obj_SetSpeed(obj, 1);
}
a++;
b++;
yield;
}
}
}
This one requires Helepolis' shot data.