Author Topic: If China was an Extra boss, this would be her Final Spell.  (Read 14495 times)

KomeijiKoishi

Code: [Select]
#TouhouDanmakufu
#Title[Chi-Eiki "Rainbow Reflection"]
#Text[THIS - IS - BULLET HELL!]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {

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

    let count = -70;

let fire = 0;

    @Initialize {
        SetLife(3000);
        SetDamageRate(20, 0);
        SetTimer(180);
        SetScore(1000000);
        SetInvincibility( 200 );
        LoadGraphic(ImgBoss);
LoadUserShotData("\script\extrabosses_mcxd\images\shot_All.txt");
        SetMovePosition02(GetCenterX, GetCenterY, 120);
        CutIn(YOUMU, "Chi-Eiki "\""Rainbow Reflection"\", "", 0, 0, 0, 0);

        SetGraphicRect(0, 0, 64, 64);
    }

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

    if ((count == 100)){
    particle;
    }

    count++;
    yield;
    }

    @DrawLoop {
SetTexture(ImgBoss);
DrawGraphic(GetX, GetY);
    }

    @Finalize {
DeleteGraphic(ImgBoss);
    }

task particle{
let b = 0;
let bup = 5.1;
let reverse = 0;
let lrar = 0;
let kput = 1;
let krar = 72;


let Length = 0;

let n = 0;

let q = 0;

let RollerX;
let RollerY;

loop{

PlaySE(GetCurrentScriptDirectory~"SFX\Shot1.wav");
    ascent(a in 0..kput){
    RollerX = GetX + Length * cos((180+a*krar+b)+1*(360/2));
    RollerY = GetY + Length * sin((180+a*krar+b)+1*(360/2));
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b), 49, 8);
if (GetLife<2625 || GetTimer<140){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+45, 50, 8);}
if (GetLife<2250 || GetTimer<120){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+90, 51, 8);}
if (GetLife<1875 || GetTimer<100){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+135, 52, 8);}
if (GetLife<1500 || GetTimer<80){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+180, 53, 8);}
if (GetLife<1125 || GetTimer<60){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+225, 54, 8);}
if (GetLife<750 || GetTimer<40){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+270, 55, 8);}
if (GetLife<375 || GetTimer<20){
Reflection(RollerX, RollerY, 2.4, (360+a*krar+b)+315, 56, 8);}
    }
if (reverse == 0){
if (bup < 0){
bup += 0;
}
else{
reverse++;
}
}
else{
if (bup > -0){
bup -= 0;
}
else{
reverse--;
}
}
b += bup;
if (Length > 0){
Length -= 0;
}

loop(4.5){
yield;
}
}
}


    task Reflection(x, y, spe, dir, graph, delay){
      let obj = Obj_Create(OBJ_SHOT);
      let b = 0;

      Obj_SetPosition   (obj, x, y);
      Obj_SetSpeed      (obj, spe);
      Obj_SetAngle      (obj, dir);
      ObjShot_SetGraphic(obj, graph);
      ObjShot_SetDelay  (obj, delay);

      while(! Obj_BeDeleted(obj)) {
           if (Obj_GetX(obj)<GetClipMinX && b==0) {Obj_SetAngle(obj, -dir+180); b=1;}
           if (Obj_GetX(obj)>GetClipMaxX && b==0) {Obj_SetAngle(obj, -dir+180); b=1;}
           if (Obj_GetY(obj)<GetClipMinY && b==0) {Obj_SetAngle(obj, -dir); b=1;}
          yield;
           }
    }


}

CK Crash

  • boozer
Re: If China was an Extra boss, this would be her Final Spell.
« Reply #1 on: May 10, 2009, 03:00:01 PM »
Not exactly Extra Stage material when you forget the external scripts necessary for the attack to work  :P

All it's doing for me is making ExRumia look like she's about to shoot white bullets.

KomeijiKoishi

Re: If China was an Extra boss, this would be her Final Spell.
« Reply #2 on: May 10, 2009, 03:20:32 PM »
White bullets?
It should look like that:
http://www.youtube.com/watch?v=1uFJ_JiKGV0&fmt=18

Drake

  • *
Re: If China was an Extra boss, this would be her Final Spell.
« Reply #3 on: May 10, 2009, 04:54:27 PM »
Ack. It's nice, but far too difficult to be practical in any way.

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

KomeijiKoishi

Re: If China was an Extra boss, this would be her Final Spell.
« Reply #4 on: May 10, 2009, 05:00:51 PM »
Ack. It's nice, but far too difficult to be practical in any way.
I knew that this was coming.

Re: If China was an Extra boss, this would be her Final Spell.
« Reply #5 on: May 10, 2009, 05:20:35 PM »
Don't listen to Drake's wussy statements. The spellcard is awesome!

To OnTheNet -- delete "LoadUserShotData" in @Initialize and it should work correctly.

KomeijiKoishi

Re: If China was an Extra boss, this would be her Final Spell.
« Reply #6 on: May 10, 2009, 05:23:44 PM »
I know, I know, but I have to agree that this version is REALLY a little bit too hard.

A "playable" version that I could capture with a hittable character here:

Code: [Select]
#TouhouDanmakufu
#Title[Nightmare "Boundary of Wave and Particle"]
#Text[THIS - IS - BULLET HELL!]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {

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

    let count = -70;

let fire = 0;

    @Initialize {
        SetLife(3000);
        SetDamageRate(20, 0);
        SetTimer(180);
        SetScore(1000000);
        SetInvincibility( 200 );
        LoadGraphic(ImgBoss);
LoadUserShotData("\script\extrabosses_mcxd\images\shot_All.txt");
        SetMovePosition02(GetCenterX, GetCenterY-120, 120);
        CutIn(YOUMU, "Chi-Eiki "\""Rainbow Reflection"\", "", 0, 0, 0, 0);

        SetGraphicRect(0, 0, 64, 64);
    }

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

    if ((count == 100)){
    particle;
    }

    count++;
    yield;
    }

    @DrawLoop {
SetTexture(ImgBoss);
DrawGraphic(GetX, GetY);
    }

    @Finalize {
DeleteGraphic(ImgBoss);
    }

task particle{
let b = 0;
let bup = 7.3;
let reverse = 0;
let lrar = 0;
let kput = 1;
let krar = 72;


let Length = 0;

let n = 0;

let q = 0;

let RollerX;
let RollerY;

loop{

PlaySE(GetCurrentScriptDirectory~"SFX\Shot1.wav");
    ascent(a in 0..kput){
    RollerX = GetX + Length * cos((180+a*krar+b)+1*(360/2));
    RollerY = GetY + Length * sin((180+a*krar+b)+1*(360/2));
Reflection(RollerX, RollerY, 0.7, (360+a*krar+b), 49, 8);
if (GetLife<2625 || GetTimer<140){
Reflection(RollerX, RollerY, 0.8, (360+a*krar+b)+45, 50, 8);}
if (GetLife<2250 || GetTimer<120){
Reflection(RollerX, RollerY, 0.9, (360+a*krar+b)+90, 51, 8);}
if (GetLife<1875 || GetTimer<100){
Reflection(RollerX, RollerY, 1, (360+a*krar+b)+135, 52, 8);}
if (GetLife<1500 || GetTimer<80){
Reflection(RollerX, RollerY, 1.1, (360+a*krar+b)+180, 53, 8);}
if (GetLife<1125 || GetTimer<60){
Reflection(RollerX, RollerY, 1.2, (360+a*krar+b)+225, 54, 8);}
if (GetLife<750 || GetTimer<40){
Reflection(RollerX, RollerY, 1.3, (360+a*krar+b)+270, 55, 8);}
if (GetLife<375 || GetTimer<20){
Reflection(RollerX, RollerY, 1.4, (360+a*krar+b)+315, 56, 8);}
    }
if (reverse == 0){
if (bup < 0){
bup += 0;
}
else{
reverse++;
}
}
else{
if (bup > -0){
bup -= 0;
}
else{
reverse--;
}
}
b += bup;
if (Length > 0){
Length -= 0;
}

loop(5){
yield;
}
}
}


    task Reflection(x, y, spe, dir, graph, delay){
      let obj = Obj_Create(OBJ_SHOT);
      let b = 0;

      Obj_SetPosition   (obj, x, y);
      Obj_SetSpeed      (obj, spe);
      Obj_SetAngle      (obj, dir);
      ObjShot_SetGraphic(obj, graph);
      ObjShot_SetDelay  (obj, delay);

      while(! Obj_BeDeleted(obj)) {
           if (Obj_GetX(obj)<GetClipMinX && b==0) {Obj_SetAngle(obj, -dir+180); b=1;}
           if (Obj_GetX(obj)>GetClipMaxX && b==0) {Obj_SetAngle(obj, -dir+180); b=1;}
           if (Obj_GetY(obj)<GetClipMinY && b==0) {Obj_SetAngle(obj, -dir); b=1;}
          yield;
           }
    }


}