88 lines
2.4 KiB
Plaintext
88 lines
2.4 KiB
Plaintext
|
#TouhouDanmakufu[Single]
|
||
|
#ScriptVersion[3]
|
||
|
#Title["SampleB04"]
|
||
|
#Text["SampleB04: ObjPatternShot Transforms 3 : 14 Werewolves[r]Transformation"]
|
||
|
|
||
|
#include "script/default_system/Default_ShotConst.txt"
|
||
|
|
||
|
let objEnemy;
|
||
|
let frame = 0;
|
||
|
|
||
|
@Event {
|
||
|
alternative(GetEventType())
|
||
|
case(EV_REQUEST_LIFE) {
|
||
|
SetScriptResult(2500);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Initialize {
|
||
|
objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
|
||
|
ObjEnemy_Regist(objEnemy);
|
||
|
|
||
|
let imgExRumia = GetCurrentScriptDirectory ~ "ExRumia.png";
|
||
|
ObjPrim_SetTexture(objEnemy, imgExRumia);
|
||
|
ObjSprite2D_SetSourceRect(objEnemy, 64, 1, 127, 64);
|
||
|
ObjSprite2D_SetDestCenter(objEnemy);
|
||
|
|
||
|
SetPlayerInvincibilityFrame(6000000);
|
||
|
ObjMove_SetDestAtFrame(objEnemy, 192, 224, 60);
|
||
|
|
||
|
TShot();
|
||
|
}
|
||
|
|
||
|
@MainLoop {
|
||
|
let ex = ObjMove_GetX(objEnemy);
|
||
|
let ey = ObjMove_GetY(objEnemy);
|
||
|
|
||
|
ObjEnemy_SetIntersectionCircleToShot(objEnemy, ex, ey, 32);
|
||
|
ObjEnemy_SetIntersectionCircleToPlayer(objEnemy, ex, ey, 24);
|
||
|
|
||
|
yield;
|
||
|
|
||
|
if (ObjEnemy_GetInfo(objEnemy, INFO_LIFE) <= 0) {
|
||
|
Obj_Delete(objEnemy);
|
||
|
CloseScript(GetOwnScriptID());
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
task TShot() {
|
||
|
wait(90);
|
||
|
while (ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0) {
|
||
|
_TShot(1, DS_RICE_M_PURPLE);
|
||
|
wait(330);
|
||
|
_TShot(-1, DS_RICE_M_RED);
|
||
|
wait(330);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
task _TShot(dir, graphic) {
|
||
|
if (ObjEnemy_GetInfo(objEnemy, INFO_LIFE) <= 0) { return; }
|
||
|
|
||
|
let objPattern = ObjPatternShot_Create();
|
||
|
|
||
|
ObjPatternShot_SetParentObject(objPattern, objEnemy);
|
||
|
ObjPatternShot_SetPatternType(objPattern, PATTERN_RING);
|
||
|
ObjPatternShot_SetShotType(objPattern, OBJ_CURVE_LASER);
|
||
|
|
||
|
ObjPatternShot_SetDelay(objPattern, 0);
|
||
|
ObjPatternShot_SetGraphic(objPattern, graphic);
|
||
|
|
||
|
ObjPatternShot_SetAngle(objPattern, rand(0, 360), 0);
|
||
|
ObjPatternShot_SetSpeed(objPattern, 6, 6);
|
||
|
|
||
|
ObjPatternShot_SetShotCount(objPattern, 28, 1);
|
||
|
ObjPatternShot_SetLaserParameter(objPattern, 8, 128);
|
||
|
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 30, 0, 0, -8 * dir);
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 30, 30, 0, 8 * dir);
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 30, 60, -0.12, -4 * dir);
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 30, 90, 0, 4 * dir);
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 30, 120, 0, -8 * dir);
|
||
|
ObjPatternShot_AddTransform(objPattern, TRANSFORM_ADD_SPEED_ANGLE, 45, 150, 0, 7 * dir);
|
||
|
|
||
|
ObjPatternShot_Fire(objPattern);
|
||
|
|
||
|
Obj_Delete(objPattern);
|
||
|
}
|