let bSpell = false; let current = GetCurrentScriptDirectory(); @Initialize { SetCameraFocusX(0); SetCameraFocusY(0); SetCameraFocusZ(0); SetCameraRadius(550); SetCameraElevationAngle(35); SetCameraAzimuthAngle(90); SetFogParam(0, 1000, 32, 32, 32); ascent(let pos in 0..3) { TNormalBackground(pos); } TSpellBackground(); } @MainLoop { let objScene = GetEnemyBossSceneObjectID(); if(objScene != ID_INVALID && ObjEnemyBossScene_GetInfo(objScene, INFO_IS_SPELL)) { bSpell = true; } else { bSpell = false; } yield; } task TNormalBackground(pos) { let pz = (pos-1) * 1000; let path = current ~ "img/Default_Background_IceMountain.mqo"; let obj = ObjMesh_Create(); ObjMesh_Load(obj, path); Obj_SetRenderPriorityI(obj, 20); let frameInvisible = 0; loop { if(bSpell) { frameInvisible++; if(frameInvisible >= 60) { Obj_SetVisible(obj, false); } } else { frameInvisible = 0; Obj_SetVisible(obj, true); } ObjRender_SetZ(obj, pz); pz++; if(pz > 1000){pz -= 3000;} yield; } } task TSpellBackground { let path1 = current ~ "img/Default_Background_IceMountain_Spell01.png"; let obj1 = ObjPrim_Create(OBJ_SPRITE_2D); ObjRender_SetBlendType(obj1, BLEND_ALPHA); Obj_SetRenderPriority(obj1, 0.21); ObjPrim_SetTexture(obj1, path1); ObjSprite2D_SetDestRect(obj1, 0, 0, 384, 448); let path2 = current ~ "img/Default_Background_IceMountain_Spell02.png"; let obj2 = ObjPrim_Create(OBJ_SPRITE_2D); ObjRender_SetBlendType(obj2, BLEND_ADD_RGB); Obj_SetRenderPriority(obj2, 0.21); ObjPrim_SetTexture(obj2, path2); ObjSprite2D_SetDestRect(obj2, 0, 0, 384, 448); let u1 = 0; let v1 = 0; let u2 = 0; let v2 = 0; let su2 = rand(0.25, 1); let sv2 = rand(0.25, 1); let alpha = 0; let frame = 0; loop { if(bSpell) { alpha += 4; } else { alpha = 0; } v1 -= 1; if(v1 < 256){v1+=256;} u2 += su2; if((su2 > 0 && u2 > 256) || (su2 < 0 && u2 < -256)) { u2=0; su2 = rand(0.25, 1); if(rand(0, 1) < 0.5){su2 *= -1;} } v2 += sv2; if((sv2 > 0 && v2 > 256) || (sv2 < 0 && v2 < -256)) { v2 = 0; sv2 = rand(0.25, 1); if(rand(0, 1) < 0.5){sv2 *= -1;} } ObjRender_SetAlpha(obj1, alpha); Obj_SetVisible(obj1, alpha > 0); ObjSprite2D_SetSourceRect(obj1, u1, v1, u1 + 255, v1 + 255); ObjRender_SetColor(obj2, alpha, alpha, alpha); Obj_SetVisible(obj2, alpha > 0); ObjSprite2D_SetSourceRect(obj2, u2, v2, u2 + 255, v2 + 255); frame++; yield; } }