Advertisement
Guest User

reference code

a guest
Feb 12th, 2015
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. #TouhouDanmakufu[Single]
  2. #ScriptVersion[3]
  3. #ID["Bound_and_Rebound"]
  4. #Title["Disaster Sign 'Shock and Aftershock'"]
  5. #Text["Resonating bullets are wonderful things, aren't they?"]
  6. //#Image["./bar.png"]
  7. //#Background["./tower.png"]
  8. //#BGM["./boss.mp3"]
  9. #Replay Name["Ear.Hard"]
  10.  
  11. let speed = 1;
  12. let tick = 0;
  13. let tick2 = 384;
  14. let bossObj;
  15. let bossX = 0;
  16. let bossY = 0;
  17. let imgBoss = GetCurrentScriptDirectory ~ "standin.png";
  18.  
  19. #include "script/default_system/Default_ShotConst.txt"
  20.  
  21. let difficulty = 2;
  22. //0 = Easy
  23. //1 = Normal
  24. //2 = Hard
  25. //3 = Lunatic
  26. //4 = Ultra
  27. //-1 = Stable
  28. @Initialize {
  29.  
  30. //boss defines
  31. bossObj = ObjEnemy_Create(OBJ_ENEMY_BOSS);
  32. ObjEnemy_Regist(bossObj);
  33.  
  34. ObjMove_SetPosition(bossObj,192,-100);
  35.  
  36. //move Seraph Midori to correct place
  37. ObjMove_SetDestAtSpeed(bossObj,192,120,5);
  38.  
  39. mainTask;
  40. }
  41.  
  42. @Event {
  43. //set boss timer
  44. alternative(GetEventType())
  45. case(EV_REQUEST_LIFE) {
  46. SetScriptResult(3000);
  47. }
  48. case(EV_REQUEST_TIMER) {
  49. SetScriptResult(60);
  50. }
  51.  
  52.  
  53. }
  54.  
  55. @MainLoop {
  56. bossX = ObjMove_GetX(bossObj);
  57. bossY = ObjMove_GetY(bossObj);
  58.  
  59. //collision
  60. ObjEnemy_SetIntersectionCircleToShot(bossObj,bossX,bossY,32);
  61. ObjEnemy_SetIntersectionCircleToPlayer(bossObj,bossX,bossY,16);
  62. yield;
  63. }
  64.  
  65. @Finalize {
  66.  
  67. }
  68.  
  69. function angleToPlayer {
  70. let dir = atan2(GetPlayerY-bossY,GetPlayerX-bossX);
  71. return dir
  72. }
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80. //height == 448
  81.  
  82. task movement {
  83. let var_quake1 = CreateShotA1(bossX,bossY,3,0,DS_BALL_L_GREEN,0);
  84. let var_quake2 = CreateShotA1(bossX,bossY,3,180,DS_BALL_L_GREEN,0);
  85. let q1_x = ObjMove_GetX(var_quake1);
  86. let q1_y = ObjMove_GetY(var_quake1);
  87. let q2_x = ObjMove_GetX(var_quake2);
  88. let q2_y = ObjMove_GetY(var_quake2);
  89. function q1_angleToPlayer {
  90. let q1_atp = atan2(GetPlayerY-q1_y,GetPlayerX-q1_x);
  91. return q1_atp
  92. }
  93.  
  94. function q2_angleToPlayer {
  95. let q2_atp = atan2(GetPlayerY-q2_y,GetPlayerX-q2_x);
  96. return q2_atp
  97. }
  98. loop{
  99.  
  100. let q1_atp = q1_angleToPlayer;
  101. let q2_atp = q2_angleToPlayer;
  102. if(q1_x > 384) { ObjMove_AddPatternA1(var_quake1,0,NO_CHANGE,q1_atp); }
  103. if(q1_x < 0) { ObjMove_AddPatternA1(var_quake1,0,NO_CHANGE,q1_atp); }
  104. if(q1_y > 448) { ObjMove_AddPatternA1(var_quake1,0,NO_CHANGE,q1_atp); }
  105. if(q1_y < 0) { ObjMove_AddPatternA1(var_quake1,0,NO_CHANGE,q1_atp); }
  106. if(q2_x > 384) { ObjMove_AddPatternA1(var_quake2,0,NO_CHANGE,q2_atp); }
  107. if(q2_x < 0) { ObjMove_AddPatternA1(var_quake2,0,NO_CHANGE,q2_atp); }
  108. if(q2_y > 448) { ObjMove_AddPatternA1(var_quake2,0,NO_CHANGE,q2_atp); }
  109. if(q2_y < 0) { ObjMove_AddPatternA1(var_quake2,0,NO_CHANGE,q2_atp); }
  110. yield;
  111. }
  112. }
  113. //Best function ever; very convenient
  114. function wait(w) {
  115. loop(w) { yield; }
  116. }
  117.  
  118. task mainTask {
  119. renderBoss;
  120. ObjMove_SetDestAtSpeed(bossObj,196,224,5);
  121. wait(70);
  122. movement;
  123. }
  124.  
  125. task renderBoss {
  126. let dir;
  127. let speed;
  128. ObjPrim_SetTexture(bossObj,imgBoss);
  129. ObjSprite2D_SetSourceRect(bossObj,0,0,16,32);
  130. ObjSprite2D_SetDestCenter(bossObj);
  131. ObjRender_SetScaleXYZ(bossObj,2,2,0);
  132.  
  133. while(!Obj_IsDeleted(bossObj)) {
  134.  
  135. dir = ObjMove_GetAngle(bossObj);
  136. speed = ObjMove_GetSpeed(bossObj);
  137. if(speed == 0) { ObjSprite2D_SetSourceRect(bossObj,0,0,16,32); ObjRender_SetAngleXYZ(bossObj,0,0,0); }
  138. else if(cos(dir) < 0) { ObjSprite2D_SetSourceRect(bossObj,0,0,16,32); ObjRender_SetAngleXYZ(bossObj,0,0,0); }
  139. else if(cos(dir) > 0) { ObjSprite2D_SetSourceRect(bossObj,0,0,16,32); ObjRender_SetAngleXYZ(bossObj,0,180,0); }
  140.  
  141. yield;
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement