Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Player]
- #ScriptVersion[2]
- #Menu[Reimu A]
- #Text[Reimu Hakurei - Spirit Sign
- Shot:
- Both: Homing Amulets (Homing Type)
- Spell Cards:
- Fantasy Seal
- Normal Speed: ********
- Slow Speed: ****]
- #Image[.\Reimu_Select.png]
- #ReplayName[ReimuA]
- script_player_main{
- let Img_Reimu = GetCurrentScriptDirectory()~"Reimu-Dot.png";
- let Img_Cutin = GetCurrentScriptDirectory()~"Reimu_Selection.png";
- let optionxpos = 16;
- let optionypos = 0;
- let count=-1;
- let i=0;
- let enemy_target=-1;
- let test_angle=0;
- task Option(position){
- let objoption=Obj_Create(OBJ_EFFECT);
- Obj_SetAlpha(objoption,200);
- ObjEffect_SetTexture(objoption,Img_Reimu); //uses ying-yang from spritesheet
- ObjEffect_SetRenderState(objoption,ALPHA);
- ObjEffect_SetPrimitiveType(objoption,PRIMITIVE_TRIANGLEFAN);
- ObjEffect_CreateVertex(objoption,4); // square object with 4 vertexes
- ObjEffect_SetVertexUV(objoption,0,127,17); // four coordinates of orb on spritesheet
- ObjEffect_SetVertexUV(objoption,1,142,17); // object is 15x15
- ObjEffect_SetVertexUV(objoption,2,142,32);
- ObjEffect_SetVertexUV(objoption,3,127,32);
- if(position=="LEFT"){
- while(!Obj_BeDeleted(objoption)){
- ObjEffect_SetVertexXY(objoption,0,GetPlayerX-optionxpos-8,GetPlayerY+optionypos-7);
- ObjEffect_SetVertexXY(objoption,1,GetPlayerX-optionxpos+6,GetPlayerY+optionypos-7);
- ObjEffect_SetVertexXY(objoption,2,GetPlayerX-optionxpos+6,GetPlayerY+optionypos+7);
- ObjEffect_SetVertexXY(objoption,3,GetPlayerX-optionxpos-8,GetPlayerY+optionypos+7);
- if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
- if(count%6 == 3){
- i=-2;
- while(i<=2){
- Amulets(GetPlayerX()-optionxpos-1, GetPlayerY()+optionypos-8, 245, 12);
- i++;
- }
- }
- }else{
- if(count%8 == 4){
- i=-2;
- while(i<=2){
- Amulets(GetPlayerX()-optionxpos-1, GetPlayerY()+optionypos-8, 245, 2);
- i++;
- }
- }
- }
- yield;
- }
- }else{
- while(!Obj_BeDeleted(objoption)){
- ObjEffect_SetVertexXY(objoption,0,GetPlayerX+optionxpos-7,GetPlayerY+optionypos-7);
- ObjEffect_SetVertexXY(objoption,1,GetPlayerX+optionxpos+7,GetPlayerY+optionypos-7);
- ObjEffect_SetVertexXY(objoption,2,GetPlayerX+optionxpos+7,GetPlayerY+optionypos+7);
- ObjEffect_SetVertexXY(objoption,3,GetPlayerX+optionxpos-7,GetPlayerY+optionypos+7);
- if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
- if(count%6 == 3){
- i=-2;
- while(i<=2){
- Amulets(GetPlayerX()+optionxpos, GetPlayerY()+optionypos-8, 295, 12);
- i++;
- }
- }
- }else{
- if(count%8 == 4){
- i=-2;
- while(i<=2){
- Amulets(GetPlayerX()+optionxpos, GetPlayerY()+optionypos-8, 295, 2);
- i++;
- }
- }
- }
- yield;
- }
- }
- }
- task Amulets(x,y,angl,graphic){
- let enemy_target=-1;
- let target_angle=270;
- let test_angle=0;
- ascent(i in EnumEnemyBegin..EnumEnemyEnd) {
- enemy_target=EnumEnemyGetID(i);
- test_angle=atan2(GetEnemyInfo(enemy_target,ENEMY_Y)+5, GetEnemyInfo(enemy_target,ENEMY_X)+20);
- i=EnumEnemyEnd;
- }
- if(enemy_target!=-1){
- let target_angle=atan2(GetEnemyInfo(enemy_target,ENEMY_Y)-y, GetEnemyInfo(enemy_target,ENEMY_X)-x);
- CreatePlayerShot01(x,y,10,target_angle,2,1,graphic);
- wait(20);
- }
- }
- @Initialize{
- LoadGraphic(Img_Reimu);
- LoadGraphic(Img_Cutin);
- LoadPlayerShotData(GetCurrentScriptDirectory()~"Shot.txt");
- SetPlayerLifeImage(Img_Reimu, 40, 0, 79, 49);
- SetInitialBombCount(2);
- SetRibirthFrame(20);
- SetSpeed(4,2);
- Option("LEFT");
- Option("RIGHT");
- }
- @MainLoop{
- if((GetKeyState(VK_SHOT)==KEY_PUSH || GetKeyState(VK_SHOT)==KEY_HOLD) && count==-1){
- count = 0;
- }
- if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
- if(count%6 == 0){
- i = -3;
- while(i<=3){
- CreatePlayerShot01(GetPlayerX()+8, GetPlayerY()+8, 30, 270, 1, 1, 13);
- CreatePlayerShot01(GetPlayerX()-8, GetPlayerY()+8, 30, 270, 1, 1, 13);
- i++;
- }
- }
- if(optionxpos>15){optionxpos--;}
- if(optionypos>0){optionypos--;}
- }else{
- if(count%8 == 0){
- i = -3;
- while(i<=3){
- CreatePlayerShot01(GetPlayerX()+8, GetPlayerY()+8, 30, 270, 1, 1, 3);
- CreatePlayerShot01(GetPlayerX()-8, GetPlayerY()+8, 30, 270, 1, 1, 3);
- i++;
- }
- }
- if(optionxpos<25){optionxpos++;}
- if(optionypos<0){optionypos++;}
- }
- if(count >= 0){
- count++;
- }
- if(count >= 6 && (GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)){
- count = -1;
- }
- if(count >= 8){
- count = -1;
- }
- SetIntersectionCircle(GetPlayerX, GetPlayerY, 2);
- yield;
- }
- @Missed{
- }
- @SpellCard{
- }
- @DrawLoop{
- SetTexture(Img_Reimu);
- if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD){
- SetGraphicRect(80, 0, 119, 49); // left movement frame
- }else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD){
- SetGraphicRect(0, 0, 39, 49); // right movement frame
- }else{
- SetGraphicRect(40, 0, 79, 49); // neutral frame
- }
- DrawGraphic(GetPlayerX(), GetPlayerY());
- }
- @Finalize{
- DeleteGraphic(Img_Reimu);
- DeleteGraphic(Img_Cutin);
- }
- function wait(w){
- loop(w){ yield; }
- }
- }
- script_spell OrbsofHakurei{
- @Initialize{
- }
- @MainLoop{
- }
- @Finalize{
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement