Cirno2022/script/sample/SampleB04.txt

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