Advertisement
Guest User

Untitled

a guest
Jun 16th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.39 KB | None | 0 0
  1.  
  2. let CSD = GetCurrentScriptDirectory;
  3.  
  4. let texFloor = CSD ~ "images/stg5bg.png";
  5.  
  6. let bSpell = false;
  7.  
  8. LoadCommonDataAreaA1("Stage part");
  9. let stagepart = GetAreaCommonData("Stage part", "Stagepart", 0);
  10. LoadCommonDataAreaA2("Boss Spell", "./CDarea.dnh");
  11.  
  12. let mask;
  13.  
  14. let obj4;
  15.  
  16. @Initialize{
  17. ObjRender_SetY(text, 100);
  18. mask = ObjMask_Create("example_mask", 24, 26); // applies to layers 24~26
  19. ObjRender_SetAlpha(mask, 0);
  20. let canvas = ObjPrim_Create(OBJ_SPRITE_2D);
  21. Del(mask);
  22. ObjPrim_SetTexture(canvas, GetCurrentScriptDirectory() ~ "white.png"); // white pixel
  23. ObjSprite2D_SetSourceRect(canvas, 0, 0, 1024, 512); // 1024x512 is render target size
  24. ObjSprite2D_SetDestRect(canvas, 0, 0, 1024, 512);
  25. ObjMask_AddSource(mask, canvas);
  26. Shader;
  27. renderStage;
  28. scrollStage;
  29. TSpellBackground;
  30. TSpellBackgroundBoss;
  31. }
  32.  
  33. @MainLoop{
  34. stagepart = GetAreaCommonData("Stage part", "Stagepart", 0);
  35. if(GetAreaCommonData("Boss Spell", "Active", false) == true){
  36. bSpell = true;
  37. }else{
  38. bSpell = false;
  39. }
  40. ObjText_SetText(text, bSpell);
  41. yield;
  42. }
  43.  
  44. @Finalize{
  45.  
  46. }
  47.  
  48. task Del(obj){
  49. loop{
  50. if(stagepart == 1){
  51. Obj_Delete(obj);
  52. break;
  53. }
  54. yield;
  55. }
  56. }
  57.  
  58. task renderStage{
  59. SetFogEnable(true);
  60. SetFogParam(512, 1536, 195, 29, 204);
  61.  
  62. let Y = round(32768^(1/2));
  63. let addCount = 11; //11
  64. let l = 0;
  65. let r = addCount;
  66. let y = 39;
  67. let z = 49;
  68. let y1 = -(2*Y) + 8;
  69. let z1 = -(2*Y) - 8;
  70. let y2 = -(3*Y) + 8;
  71. let z2 = -(2*Y) - 8;
  72. let n = 0;
  73. loop(8){
  74. if(n == 0){
  75. n ++;
  76. let obj = Shine(-15,y1 + 60,z1,255);
  77. Alpha(obj);
  78. obj = Shine(271,y1 + 60,z1,255);
  79. Alpha(obj);
  80. obj = Shine1(-15,y1 + 60,z1,255);
  81. Alpha(obj);
  82. obj = Shine1(271,y1 + 60,z1,255);
  83. Alpha(obj);
  84. }
  85.  
  86. makeFloor5(-160,y1 - 100,z1 + 100,255); //all of the Floor objects have 22 on render priority
  87. makeFloor5(417,y1 - 100,z1 + 100,255);
  88. makeFloor5(-480,y1 - 100,z1 + 100,255);
  89. makeFloor5(737,y1 - 100,z1 + 100,255);
  90. makeFloor5(-800,y1 - 100,z1 + 100,255);
  91. makeFloor5(1057,y1 - 100,z1 + 100,255);
  92.  
  93. makeFloor1(-15,y1,z1,255);
  94. makeFloor2(0,y2,z2,255);
  95. makeFloor1(271,y1,z1,255);
  96. makeFloor2(256,y2,z2,255);
  97. y1 += Y;
  98. z1 += Y;
  99. y2 += Y;
  100. z2 += Y;
  101. n ++;
  102. if(n >= 3){
  103. n = 0;
  104. }
  105. }
  106. loop(70){
  107. makeFloor3(128,y,z,255,l,256,r,512);
  108. r += addCount;
  109. l += addCount;
  110. if(r > 256 - addCount){
  111. r = addCount;
  112. l = 0;
  113. }
  114. y += addCount/2;
  115. z += addCount/2;
  116. makeFloor4(128,y,z,255,l,256,r,512);
  117. r += addCount;
  118. l += addCount;
  119. y += addCount/2;
  120. z += addCount/2;
  121. if(r > 256 - addCount){
  122. r = addCount;
  123. l = 0;
  124. }
  125. }
  126.  
  127. task Alpha(obj){
  128. let alp = 255;
  129. loop(3600){
  130. alp -= 255/3600;
  131. ObjRender_SetAlpha(obj, alp);
  132. yield;
  133. }
  134. }
  135. }
  136.  
  137. task scrollStage{
  138. let Y = 32768^(1/2);
  139. let text = ObjText_Create;
  140. let i = 0;
  141. let f = 0;
  142. let scroll = 0;
  143.  
  144. SetCameraPerspectiveClip(16, 4096);
  145.  
  146. SetCameraAzimuthAngle(-45);//-45
  147. SetCameraElevationAngle(45);
  148. SetCameraRadius(400); //400
  149.  
  150. SetCameraFocusX(96);//96
  151. SetCameraFocusY(250);
  152. SetCameraFocusZ(0);
  153.  
  154. SetCameraYaw(0);
  155. SetCameraPitch(-20);
  156. SetCameraRoll(0);
  157.  
  158. let dark = ObjPrim_Create(OBJ_SPRITE_2D);
  159. ObjPrim_SetTexture(dark, GetCurrentScriptDirectory() ~ "images/Black.png");
  160. ObjSprite2D_SetSourceRect(dark, 0, 0, 512, 512);
  161. ObjRender_SetPosition(dark, GetCenterX, GetCenterY, 0);
  162. ObjSprite2D_SetDestCenter(dark);
  163. ObjRender_SetBlendType(dark, BLEND_ALPHA);
  164. Obj_SetRenderPriorityI(dark, 25);
  165. ObjRender_SetAlpha(dark, 200);
  166. let alp = 200;
  167.  
  168. loop(3600){
  169. alp -= 200/3600;
  170. ObjRender_SetAlpha(dark, alp);
  171. scroll += Y/128;
  172. SetCameraFocusZ(0+scroll);
  173. SetCameraFocusY(250+scroll);//250
  174. if(scroll >= 362){
  175. scroll = 0;
  176. }
  177. yield;
  178. }
  179. wait(60);
  180. let elev = 45;
  181. let az = -45;
  182. let X = 96;
  183. loop(240){
  184. X += 32/240;
  185. az -= 45/240;
  186. elev -= 10/240;
  187. SetCameraFocusX(X);
  188. SetCameraAzimuthAngle(az);
  189. SetCameraElevationAngle(elev);
  190. yield;
  191. }
  192. TDBG;
  193. }
  194.  
  195. task Visible(obj){
  196. wait(3901);
  197. Obj_Delete(obj);
  198. }
  199.  
  200. task TSpellBackground{
  201. let count = 0;
  202. loop{
  203. if(bSpell == true && stagepart == 0 && count == 0){
  204. count ++;
  205. Init;
  206. }else if(bSpell == false){
  207. count = 0;
  208. }
  209. yield;
  210. }
  211.  
  212. task Init{
  213. let alpha = 255;
  214.  
  215. let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  216. ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "images/Youmu/cdbg0.png");
  217. ObjSprite2D_SetSourceRect(obj, 0, 0, 256, 256);
  218. ObjSprite2D_SetDestRect(obj, -192, -224, 192, 224);
  219. ObjRender_SetPosition(obj, GetStgFrameWidth/2, GetStgFrameHeight/2, 0);
  220. Obj_SetRenderPriorityI(obj, 20);
  221. ObjRender_SetAlpha(obj, alpha);
  222. ObjRender_SetBlendType(obj, BLEND_ALPHA);
  223.  
  224. let obj1 = ObjPrim_Create(OBJ_SPRITE_2D);
  225. ObjPrim_SetTexture(obj1, GetCurrentScriptDirectory ~ "images/Youmu/cdbg1.png");
  226. ObjSprite2D_SetSourceRect(obj1, 0, 0, 256, 256);
  227. ObjRender_SetScaleXYZ(obj1, 2.5, 2.5, 2.5);
  228. ObjSprite2D_SetDestCenter(obj1);
  229. Obj_SetRenderPriorityI(obj1, 20);
  230. ObjSprite2D_SetDestCenter(obj1);
  231. ObjRender_SetPosition(obj1, GetStgFrameWidth/2, GetStgFrameHeight/2, 0);
  232. ObjRender_SetAlpha(obj1, alpha);
  233. ObjRender_SetBlendType(obj1, BLEND_ALPHA);
  234.  
  235. let angleT = 0;
  236. while(!Obj_IsDeleted(obj)){
  237. angleT += 0.3;
  238. if(bSpell == false){
  239. loop(60){
  240. alpha -= 255/60;
  241. ObjRender_SetAlpha(obj, alpha);
  242. ObjRender_SetAlpha(obj1, alpha);
  243. yield;
  244. }
  245. Obj_Delete(obj);
  246. Obj_Delete(obj1);
  247. }
  248. ObjRender_SetAngleZ(obj1, angleT);
  249. yield;
  250. }
  251. }
  252. }
  253.  
  254. task TSpellBackgroundBoss{
  255. let count1 = 0;
  256. loop{
  257. if(bSpell == true && stagepart == 1 && count1 == 0){
  258. count1 ++;
  259. Init;
  260. }else if(bSpell == false){
  261. count1 = 0;
  262. }
  263. yield;
  264. }
  265.  
  266. task Init{
  267. let alpha = 0;
  268.  
  269. let obj1 = ObjPrim_Create(OBJ_SPRITE_2D);
  270. ObjPrim_SetTexture(obj1, GetCurrentScriptDirectory ~ "images/Yuyuko/cardbg1.png");
  271. ObjSprite2D_SetSourceRect(obj1, 0, -256, 256, 512);
  272. ObjRender_SetScaleXYZ(obj1, 1.5, 1.5, 1.5);
  273. ObjSprite2D_SetDestCenter(obj1);
  274. Obj_SetRenderPriorityI(obj1, 27);
  275. ObjSprite2D_SetDestCenter(obj1);
  276. ObjRender_SetPosition(obj1, GetStgFrameWidth/2, GetStgFrameHeight/2, 0);
  277. ObjRender_SetAlpha(obj1, alpha);
  278. ObjRender_SetBlendType(obj1, BLEND_ADD_ARGB);
  279.  
  280. let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  281. ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "images/Yuyuko/cardbg0.png");
  282. ObjSprite2D_SetSourceRect(obj, 0, 0, 384, 448);
  283. ObjSprite2D_SetDestCenter(obj);
  284. Obj_SetRenderPriorityI(obj, 27);
  285. ObjRender_SetPosition(obj, GetStgFrameWidth/2, GetStgFrameHeight/2, 0);
  286. ObjSprite2D_SetDestCenter(obj);
  287. ObjRender_SetAlpha(obj, alpha);
  288. ObjRender_SetBlendType(obj, BLEND_SUBTRACT);
  289.  
  290. let posY = GetStgFrameHeight/2;
  291. let count = 0;
  292. loop(60){
  293. alpha += 255/60;
  294. ObjRender_SetAlpha(obj, alpha);
  295. ObjRender_SetAlpha(obj1, alpha);
  296. posY -= 1.7;
  297. count += 1.7;
  298. if(count >= 384){
  299. count = 0;
  300. posY = GetStgFrameHeight/2;
  301. }
  302. ObjRender_SetY(obj1, posY);
  303. yield;
  304. }
  305. while(!Obj_IsDeleted(obj)){
  306.  
  307. if(bSpell == false){
  308. loop(60){
  309. alpha -= 255/60;
  310. ObjRender_SetAlpha(obj, alpha);
  311. ObjRender_SetAlpha(obj1, alpha);
  312. posY -= 1.7;
  313. count += 1.7;
  314. if(count >= 384){
  315. count = 0;
  316. posY = GetStgFrameHeight/2;
  317. }
  318. ObjRender_SetY(obj1, posY);
  319. yield;
  320. }
  321. Obj_Delete(obj);
  322. Obj_Delete(obj1);
  323. }
  324. posY -= 1.7;
  325. count += 1.7;
  326. if(count >= 384){
  327. count = 0;
  328. posY = GetStgFrameHeight/2;
  329. }
  330. ObjRender_SetY(obj1, posY);
  331. yield;
  332. }
  333. }
  334. }
  335.  
  336.  
  337. function ObjMask_Create(texture_name, layer_min, layer_max){
  338. // Set up render target
  339. CreateRenderTarget(texture_name);
  340.  
  341. // Set up shader
  342. let obj = ObjShader_Create();
  343. ObjShader_SetShaderF(obj, GetCurrentScriptDirectory() ~ "SamplePS02_HLSL.dnh");
  344. ObjShader_SetTechnique(obj, "TecMask");
  345. ObjShader_SetTexture(obj, "textureMask_", texture_name);
  346. SetShaderI(obj, layer_min, layer_max);
  347.  
  348. Obj_SetValue(obj, "MASK_CONTENTS", []);
  349.  
  350. task run(){
  351. while(!Obj_IsDeleted(obj)){
  352. let contents = Obj_GetValueD(obj, "MASK_CONTENTS", []);
  353. // Remove any deleted objects from list
  354. contents = remove_deleted_objs(contents);
  355.  
  356. ascent(i in 0..length(contents)){
  357. // Make visible when drawing to render target
  358. //Obj_SetVisible(contents[i], true);
  359. Obj_SetVisible(contents[i], false);
  360. RenderToTextureB1(texture_name, contents[i], (i==0));
  361. // Otherwise invisible
  362. //Obj_SetVisible(contents[i], false);
  363. }
  364.  
  365. Obj_SetValue(obj, "MASK_CONTENTS", contents);
  366. yield;
  367. }
  368.  
  369. let contents = Obj_GetValueD(obj, "MASK_CONTENTS", []);
  370. ascent(i in 0..length(contents)){ Obj_Delete(contents[i]); }
  371. RemoveTexture(texture_name);
  372. }
  373. run();
  374.  
  375. return obj;
  376.  
  377. function remove_deleted_objs(a){
  378. let res = [0][0..0]; // typed array
  379. let slices = [];
  380. let prev = 0;
  381. ascent(i in 0..length(a)){
  382. if(Obj_IsDeleted(a[i])){
  383. slices = slices ~ [[prev, i]];
  384. prev = i+1;
  385. }
  386. }
  387. // if unchanged, return
  388. if(length(slices) == 0 && prev == 0){ return a; }
  389. // last slice
  390. slices = slices ~ [[prev, length(a)]];
  391. // join slices
  392. ascent(j in 0..length(slices)){
  393. res = res ~ a[slices[j][0]..slices[j][1]];
  394. }
  395. return res;
  396. }
  397. }
  398.  
  399. function ObjMask_AddSource(obj, src){
  400. Obj_SetValue(obj, "MASK_CONTENTS", Obj_GetValueD(obj, "MASK_CONTENTS", []) ~ [src]);
  401. }
  402.  
  403. task Shader{
  404. let c = 1;
  405. let circle = ObjPrim_Create(OBJ_SPRITE_2D);
  406. let circle1 = ObjPrim_Create(OBJ_SPRITE_2D);
  407. let alpha = 0;
  408.  
  409. loop{
  410. if(bSpell == true && stagepart == 0 && c == 0){
  411. alpha = 255;
  412. c ++;
  413.  
  414. ObjPrim_SetTexture(circle, GetCurrentScriptDirectory() ~ "images/mask_subtract3.png");
  415. ObjSprite2D_SetSourceRect(circle, 0, 0, 768, 896);
  416. ObjRender_SetPosition(circle, GetCenterX + 32, GetCenterY + 16, 0);
  417. ObjSprite2D_SetDestCenter(circle);
  418. ObjRender_SetBlendType(circle, BLEND_SUBTRACT);
  419. ObjMask_AddSource(mask, circle);
  420. ObjRender_SetScaleXYZ(circle, 0, 0, 1);
  421. Appear(circle);
  422.  
  423. let scaleX = 0;
  424. let scaleY = 0;
  425. loop(10){
  426. scaleX += 1.5/10;
  427. scaleY += 1.5/10;
  428. ObjRender_SetScaleXYZ(circle, scaleX, scaleY, 1);
  429. yield;
  430. }
  431. wait(80);
  432.  
  433. ObjPrim_SetTexture(circle1, GetCurrentScriptDirectory() ~ "images/mask_subtract2.png");
  434. ObjSprite2D_SetSourceRect(circle1, 0, 0, 768, 896);
  435. ObjRender_SetPosition(circle1, GetCenterX + 32, GetCenterY + 16, 0);
  436. ObjSprite2D_SetDestCenter(circle1);
  437. ObjRender_SetBlendType(circle1, BLEND_SUBTRACT);
  438. ObjMask_AddSource(mask, circle1);
  439. Appear(circle1);
  440.  
  441. ObjRender_SetScaleXYZ(circle1, 0, 0, 1);
  442. scaleX = 0;
  443. scaleY = 0;
  444. loop(10){
  445. scaleX += 1.5/10;
  446. scaleY += 1.5/10;
  447. ObjRender_SetScaleXYZ(circle1, scaleX, scaleY, 1);
  448. yield;
  449. }
  450. loop(120){
  451. scaleX += 4/120;
  452. scaleY += 4/120;
  453. ObjRender_SetScaleXYZ(circle, scaleX, scaleY, 1);
  454. ObjRender_SetScaleXYZ(circle1, scaleX, scaleY, 1);
  455. yield;
  456. }
  457. loop(60){
  458. scaleX += 15/60;
  459. scaleY += 15/60;
  460. ObjRender_SetScaleXYZ(circle, scaleX, scaleY, 1);
  461. ObjRender_SetScaleXYZ(circle1, scaleX, scaleY, 1);
  462. yield;
  463. }
  464. while(bSpell == true){
  465. yield;
  466. }
  467. }else if(bSpell == false && stagepart == 0 && c > 0){
  468. c = 0;
  469. loop(60){
  470. if(alpha > 0){
  471. alpha -= 255/60;
  472. }
  473. ObjRender_SetAlpha(circle, alpha);
  474. ObjRender_SetAlpha(circle1, alpha);
  475. yield;
  476. }
  477. }
  478. yield;
  479. }
  480.  
  481. task Appear(obj){
  482. ObjRender_SetAlpha(obj, 0);
  483. wait(1);
  484. ObjRender_SetAlpha(obj, 255);
  485. }
  486. }
  487.  
  488. task TDBG{
  489. let count = 0;
  490. CreateRenderTarget("3d");
  491. SetInvalidRenderPriorityA1(21, 23);
  492. RenderToTextureA1("3d", 21, 23, true);
  493. obj4 = ObjPrim_Create(OBJ_SPRITE_2D);
  494. ObjPrim_SetTexture(obj4, "3d");
  495. ObjSprite2D_SetSourceRect(obj4, 0 + 32, 0 + 16, 384 + 32, 448 + 16);
  496. ObjSprite2D_SetDestRect(obj4, 0, 0, 384, 448);
  497. Obj_SetRenderPriorityI(obj4, 25);
  498. ObjRender_SetAlpha(obj4, 255);
  499. let alpha = 255;
  500. while(!IsCloseScript(GetCommonData("Main Stage Script ID", 0))){
  501. if(GetCommonData("Delete", 0) == 1){
  502. let alp = 255;
  503. loop(60){
  504. alp -= 255/60;
  505. ObjRender_SetAlpha(obj4, alp);
  506. yield;
  507. }
  508. Obj_Delete(obj4);
  509. count = 0;
  510. }
  511. if(GetCommonData("Delete", 0) == 2 && count == 0){
  512. count ++;
  513. obj4 = ObjPrim_Create(OBJ_SPRITE_2D);
  514. ObjPrim_SetTexture(obj4, "3d");
  515. ObjSprite2D_SetSourceRect(obj4, 0 + 32, 0 + 16, 384 + 32, 448 + 16);
  516. ObjSprite2D_SetDestRect(obj4, 0, 0, 384, 448);
  517. Obj_SetRenderPriorityI(obj4, 25);
  518. ObjRender_SetAlpha(obj4, 0);
  519. let alp = 0;
  520. loop(60){
  521. alp += 255/60;
  522. ObjRender_SetAlpha(obj4, alp);
  523. yield;
  524. }
  525. }
  526. yield;
  527. }
  528. ClearInvalidRenderPriority();
  529. bSpell = false;
  530. }
  531.  
  532. function wait(n){
  533. loop(n){
  534. yield;
  535. }
  536. }
  537. function rand_int(min, max){
  538. return round(rand(min, max))
  539. }
  540. function GetCenterX(){
  541. return GetStgFrameWidth() / 2;
  542. }
  543.  
  544. function GetCenterY(){
  545. return GetStgFrameHeight() / 2;
  546. }
  547. function MyStageID{
  548. return GetCommonData("Main Stage Script ID", 0);
  549. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement