Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Player]
- #Menu[Marisa ZE type]
- #Text[Danmakufu is all about power!
- Bomb:"Magic Cannon - Star Explosion" (Doesn´t work)]
- #ReplayName[MarisaZE]
- #Image[.\system\sl_pl01.png]
- #ScriptVersion[2]
- script_player_main {
- let CSD = GetCurrentScriptDirectory;
- let maritex = CSD ~ "system\MariPlayer.png";
- let f = 0;
- let f2 = 0;
- let count = -1;
- @Initialize {
- SetSpeed(5,2);
- SetPlayerLifeImage(maritex,0,0,32,48);
- LoadGraphic(maritex);
- LoadPlayerShotData(CSD ~ "ZEshot.txt");
- }
- @DrawLoop {
- SetTexture(maritex);
- SetRenderState(ALPHA);
- SetAlpha(255);
- SetGraphicScale(1,1);
- if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD){
- SetGraphicAngle(0,0,0);
- if(f2<5){SetGraphicRect(0,48,32,96);}
- if(f2>=5 && f2<10){SetGraphicRect(32,48,64,96);}
- if(f2>=10 && f2<15){SetGraphicRect(64,48,96,96);}
- if(f2>=15 && f2<20){SetGraphicRect(96,48,128,96);}
- f2++;
- }
- else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD){
- SetGraphicAngle(180,0,0);
- if(f2<5){SetGraphicRect(0,48,32,96);}
- if(f2>=5 && f2<10){SetGraphicRect(32,48,64,96);}
- if(f2>=10 && f2<15){SetGraphicRect(64,48,96,96);}
- if(f2>=15 && f2<20){SetGraphicRect(96,48,128,96);}
- f2++;
- }
- else{
- if(f<15){SetGraphicRect(0,0,32,48);}
- if(f>=15 && f<30){SetGraphicRect(32,0,64,48);}
- if(f>=30 && f<45){SetGraphicRect(64,0,96,48);}
- if(f>=45 && f<60){SetGraphicRect(96,0,128,48);}
- f2 = 0;
- }
- DrawGraphic(GetPlayerX(), GetPlayerY());
- f+=3;
- f2+=3;
- if(f==60){f=0;}
- }
- @Missed{
- yield;
- }
- @Spellcard{
- UseSpellCard("bombSC",NULL);
- }
- @Finalize {
- }
- @MainLoop{
- // when Z is pressed, set count to 0.
- if((GetKeyState(VK_SHOT)==KEY_PUSH || GetKeyState(VK_SHOT)==KEY_HOLD) && count == -1){
- count = 0;
- }
- // when focussing
- if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
- if(count == 5){
- marishot(GetPlayerX,GetPlayerY-20,20,270,1,4);
- marishot(GetPlayerX,GetPlayerY-20,20,250,1,4);
- marishot(GetPlayerX,GetPlayerY-20,20,290,1,4);
- PlaySE(CSD ~ "system\SFX\PlayerShot.wav");
- count = -1;
- }
- }
- // when regular
- else {
- if(count == 5){
- marishot(GetPlayerX,GetPlayerY-20,20,270,1,4);
- PlaySE(CSD ~ "system\SFX\PlayerShot.wav");
- count = -1;
- }
- }
- // if count is 0 or greater, start counting for each frame.
- if(count >=0){count++;}
- SetIntersectionCircle(GetPlayerX,GetPlayerY,0);
- yield;
- }
- // ZE bullet
- task marishot(x,y,speed,dir,graphic,dmg){
- let obj = Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetSpeed(obj,speed);
- Obj_SetAngle(obj,dir);
- Obj_SetAlpha(obj,155);
- ObjShot_SetGraphic(obj,graphic);
- ObjShot_SetDamage(obj,dmg);
- ObjShot_SetPenetration(obj,1);
- yield;
- }
- function wait(w){loop(w){yield;}}
- }
- // spell card code.
- script_spell bombSC{
- let CSD = GetCurrentScriptDirectory;
- let startex = CSD ~"system\startex.png";
- let cut = CSD ~ "mariCut.png";
- @Initialize{
- SetSpeed(2,2);
- LoadGraphic(startex);
- LoadGraphic(cut);
- CutIn(KOUMA,"Magic Cannon - Star Explosion",cut);
- SetPlayerInvincibility(240);
- // main task for our SC.
- spellTask;
- }
- @MainLoop{
- yield;
- collectItems;
- }
- @Finalize{
- }
- task spellTask{
- PlaySE(CSD ~ "system\SFX\SPELLCARD.wav");
- wait(60);
- // sometask.
- starBomb(GetPlayerX,GetPlayerY);
- wait(180);
- End;
- }
- // bomb projectile, spinning star.
- task starBomb(x,y){
- let obj = Obj_Create(OBJ_SPELL);
- let starspin = 0;
- let c = 0;
- let scale = 1.0;
- Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
- Obj_SetAngle(obj,0);
- ObjEffect_SetTexture(obj,startex);
- ObjEffect_SetRenderState(obj,ADD);
- ObjEffect_SetLayer(obj,3);
- ObjEffect_SetPrimitiveType(Obj, PRIMITIVE_TRIANGLESTRIP);
- ObjEffect_CreateVertex(obj,4);
- ObjEffect_SetVertexXY(obj,0,-32,-32);
- ObjEffect_SetVertexUV(obj,0,0,0);
- ObjEffect_SetVertexXY(obj,1,32,-32);
- ObjEffect_SetVertexUV(obj,1,64,0);
- ObjEffect_SetVertexXY(obj,2,-32,32);
- ObjEffect_SetVertexUV(obj,2,0,64);
- ObjEffect_SetVertexXY(obj,3,32,32);
- ObjEffect_SetVertexUV(obj,3,64,64);
- while(!Obj_BeDeleted(obj)){
- // animation effect.
- ObjEffect_SetAngle(obj,0,0,starspin);
- ObjEffect_SetScale(obj,scale,scale);
- Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
- // set the colour ObjEffect_SetVertexColor([var],vertex,alpha,red,green,blue);
- ascent(x in 0..4){ObjEffect_SetVertexColor(obj,x,255,255,255,255);}
- ObjSpell_SetIntersecrionCircle(obj,obj_GetX(obj),obj_GetY(obj),scale*16,2,true);
- // if c > 120.
- if(c>120){
- PlaySE(CSD ~ "system\SFX\DEFEATED.wav");
- // do massive damage and disappear. ObjSpell_SetIntersecrionCircle([objvar],x,y,radius,damage,true/false remove bullets on screen);
- ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),512,700,true);
- Obj_Delete(obj);
- }
- starspin+=10;
- scale+=0.05;
- c++;
- yield;
- }
- }
- Function wait(w){loop(w){yield;}}
- }
Advertisement
Add Comment
Please, Sign In to add comment