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;
}
}
}