Downloads containing saldr3.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Devan's Revenge (Intro)Featured Download sAlAmAnDeR Single player 9.6 Download file

File preview

  1. #include "SaLLiB-v2.0.asc"
  2. #include "saldr-common.asc"
  3.  
  4. void onLevelLoad() {
  5.         jjObjectPresets[OBJECT::DEMON].determineCurAnim(ANIM::DEMON,0);
  6.         jjObjectPresets[OBJECT::DEMON].determineCurFrame();
  7.         jjObjectPresets[OBJECT::BILSY].determineCurAnim(ANIM::BILSBOSS,4);
  8.         jjObjectPresets[OBJECT::BILSY].determineCurFrame();
  9.         jjObjectPresets[OBJECT::DEVILDEVAN].determineCurAnim(ANIM::DEVILDEVAN,5);
  10.         jjObjectPresets[OBJECT::DEVILDEVAN].determineCurFrame();
  11.         jjObjectPresets[OBJECT::RAVEN].determineCurAnim(ANIM::RAVEN,0);
  12.         jjObjectPresets[OBJECT::RAVEN].determineCurFrame();
  13.         jjObjectPresets[OBJECT::FISH].determineCurAnim(ANIM::BIRD3D,0);
  14.         jjObjectPresets[OBJECT::FISH].determineCurFrame();
  15. }
  16.  
  17. void onLevelBegin() {
  18.         for(uint i = 0; i < 49; i++)
  19.                 DemonNPC(10*32+16+24*i,55*32).direction = -1;
  20.         for(uint i = 0; i < 13; i++)
  21.                 BilsyNPC(10*32+16+96*i,54*32).direction = -1;
  22.         for(uint i = 0; i < 18; i++) {
  23.                 RavenNPC(10*32+16+64*i,49*32).direction = -1;
  24.                 RavenNPC(10*32-16+64*i,47*32).direction = -1;
  25.                 RavenNPC(10*32-48+64*i,45*32).direction = -1;
  26.                 RavenNPC(10*32-80+64*i,43*32).direction = -1;
  27.         }
  28.         @devan = DevilDevanNPC(5*32,48*32);
  29.        
  30.         @army = COMMON::Position(15*32, 53*32);
  31.        
  32.         @dragon = @RabbitNPC(CHAR::SPAZ,65*32-16,46*32-7);
  33.         dragon.becomeMetalDragon();
  34.         dragon.direction = -1;
  35.  
  36.         @wiceh = @RabbitNPC(CHAR::SPAZ,62*32-16,47*32-7);
  37.         wiceh.becomeWicehy();
  38.        
  39.         @bossrule = @RabbitNPC(CHAR::SPAZ,68*32,47*32-7);
  40.         bossrule.becomeBossrule();
  41.         bossrule.direction = -1;
  42.  
  43.         @evilmike = @RabbitNPC(CHAR::SPAZ,59*32,49*32-16);
  44.         evilmike.becomeEvilMike();
  45.        
  46.         /*@sal = @RabbitNPC(CHAR::SPAZ,59*32-16,49*32-16);
  47.         sal.becomeSal();
  48.         sal.pose();
  49.         sal.direction = 1;*/
  50.        
  51.         jjLocalPlayers[0].xPos = -32;
  52.         jjLocalPlayers[0].yPos = -32;
  53.         jjLocalPlayers[0].xSpeed = -1;
  54.         jjLocalPlayers[0].ySpeed = -1;
  55.        
  56.         CUSTOM::UI.drawAmmo = false;
  57.         CUSTOM::UI.drawLives = false;
  58.         CUSTOM::UI.drawScore = false;
  59.         CUSTOM::UI.drawHealth = false;
  60.         CUSTOM::UI.drawPlayerTimer = false;
  61. }
  62.  
  63. RabbitNPC@ wiceh;
  64. RabbitNPC@ dragon;
  65. RabbitNPC@ bossrule;
  66. RabbitNPC@ evilmike;
  67. RabbitNPC@ sal;
  68.  
  69. CUSTOM::Object@ devan;
  70. COMMON::Position@ army;
  71. GAME::Dialogue@ dialogue;
  72.  
  73. COMMON::Timer@ timer = @COMMON::Timer();
  74. INTERPOLATION::Linear@ rInter;
  75. INTERPOLATION::Linear@ gInter;
  76. INTERPOLATION::Linear@ bInter;
  77.  
  78. void clearChat() {
  79.         for(int i = chat.length()-1; i > -1; i--)
  80.                 chat.removeAt(i);
  81. }
  82.  
  83. enum State {
  84.         PAUSE,
  85.         INIT,
  86.         DIALOGUEMINIONS,
  87.         MEANWHILE,
  88.         DIALOGUERABBITS1,
  89.         PAUSEFORRAVENS,
  90.         DIALOGUERABBITS2,
  91.         SKYCOLOR,
  92.         DIALOGUERABBITS3,
  93.         RUNAWAY,
  94.         PAUSEFORWAT,
  95.         WAT,
  96.         DONE
  97. }
  98.  
  99. State state = PAUSE;
  100. array<GAME::Speech@> chat();
  101.  
  102. RavenNPC@ makeRaven() {
  103.         float xRand = 65*32-7+15*32*sin(random(0,PI)+HALF_PI);//random(61*32,70*32);
  104.         float yRand = 44*32+15*32*cos(random(0,PI)+HALF_PI);//random(38*32,43*32);
  105.         RavenNPC@ raven = RavenDOA(xRand,yRand);
  106.         raven.pose();
  107.         raven.spriteScaleX = 0.3;
  108.         raven.spriteScaleY = 0.3;
  109.         raven.spriteLayerZ = 7;
  110.         raven.moveLinear(65*32-7,44*32,500);
  111.         return raven;
  112. }
  113.  
  114. void onMain() {
  115.         p.ballTime = 1;
  116.         if(state == PAUSE) {
  117.                 p.cameraFreeze(0*32,42*32,false,true);
  118.                 jjDrawString(1*32,49*32,"Back in the present...",STRING::LARGE,STRING::BOUNCE,100);
  119.                 if(jjGameTicks > 210)
  120.                         state = INIT;
  121.         } else if(state == INIT) {
  122.                
  123.                 chat.insertLast(GAME::Speech(devan, "|MINIONS! HEAR ME!",                                                   6*32));
  124.                 chat.insertLast(GAME::Speech(devan, "|OUR ETERNAL ADVERSARIES HAVE LIVED TOO COMFORTABLY",  8*32));
  125.                 chat.insertLast(GAME::Speech(devan, "|GROWING FAT AND SLUGGISH FROM THEIR OWN PROSPERITY",  8*32));
  126.                 chat.insertLast(GAME::Speech(devan, "|BUT TODAY, ALL THAT WILL CHANGE",                                         8*32));
  127.                 chat.insertLast(GAME::Speech(devan, "|FOR TODAY, WE TAKE CARROTUS!",                                            8*32));
  128.                 chat.insertLast(GAME::Speech(army,  "||*CHEER*",                                                                                        3*32));
  129.                 @dialogue = @GAME::DialogueFixedDelay(chat,350);
  130.                 state = DIALOGUEMINIONS;
  131.         } else if(state == DIALOGUEMINIONS) {
  132.                 if(!dialogue.isActive) {
  133.                         p.cameraFreeze(56*32,37*32,false,true);
  134.                         state = MEANWHILE;
  135.                         timer.start(140);
  136.                 }
  137.         } else if(state == MEANWHILE) {
  138.                 jjDrawString(61*32,43*32,"MEANWHILE", STRING::LARGE,STRING::BOUNCE);
  139.                 if(timer.isFinished()) {
  140.                         clearChat();
  141.                         state = DIALOGUERABBITS1;
  142.                         chat.insertLast(GAME::Speech(dragon, "|its good day 2be jackrabbit", 8*32));
  143.                         chat.insertLast(GAME::Speech(wiceh,      "|||||ya lol",                              2*32));
  144.                         chat.insertLast(GAME::Speech(dragon, "|we got lotsa carrots",            5*32));
  145.                         chat.insertLast(GAME::Speech(wiceh,      "|||||ya lol",                              2*32));
  146.                         chat.insertLast(GAME::Speech(dragon, "|sky is blue",                             4*32));
  147.                         chat.insertLast(GAME::Speech(wiceh,      "|||||lol",                                     1*32));
  148.                         @dialogue = @GAME::DialogueScaledDelay(chat,210);
  149.                 }
  150.         } else if(state == DIALOGUERABBITS1) {
  151.                 if(!dialogue.isActive) {
  152.                         timer.start(280);
  153.                         state = PAUSEFORRAVENS;
  154.                 }
  155.         } else if(state == PAUSEFORRAVENS) {
  156.                 if(timer.elapsedTime()%70 == 0)
  157.                         makeRaven();
  158.                 if(timer.isFinished()) {
  159.                         state = DIALOGUERABBITS2;
  160.                         clearChat();
  161.                         chat.insertLast(GAME::Speech(evilmike,    "|||Hey, what's that?",                           4*32));
  162.                         chat.insertLast(GAME::Speech(bossrule,    "carrots",                                                    2*32));
  163.                         chat.insertLast(GAME::Speech(evilmike,    "|||No, I mean in layer 7 you noob",  8*32));
  164.                         @dialogue = @GAME::DialogueScaledDelay(chat,210);
  165.                 }
  166.         } else if(state == DIALOGUERABBITS2) {
  167.                 if(jjGameTicks % 70 == 0) makeRaven();
  168.                 if(!dialogue.isActive) {
  169.                         state = SKYCOLOR;
  170.                         @rInter = @INTERPOLATION::Linear(0,255,210);
  171.                         @gInter = @INTERPOLATION::Linear(0,192,210);
  172.                         timer.start(210);
  173.                         for(uint i = 0; i < 18; i++) {
  174.                                 RavenNPC@ raven = @makeRaven();
  175.                                 if(raven.xPos < 65*32) raven.direction = 1;
  176.                                 raven.fly();
  177.                                 raven.spriteScaleX = 1.5;
  178.                                 raven.spriteScaleY = 1.5;
  179.                                 raven.scaleDeccelerate(1.5, 0, 500,1.1);
  180.                         }
  181.                 }
  182.         } else if(state == SKYCOLOR) {
  183.                 if(jjGameTicks % 70 == 0) makeRaven();
  184.                 if(!timer.isFinished()) {
  185.                         jjSetFadeColors(int(rInter.value(timer.elapsedTime())),int(gInter.value(timer.elapsedTime())),0);
  186.                 } else {
  187.                         jjPalette.gradient(255, 255, 128, 128, 32, 0, 176, 32);
  188.                         jjPalette.apply();
  189.                         clearChat();
  190.                         chat.insertLast(GAME::Speech(evilmike, "|||They are headed for the castle!", 6*32));
  191.                         chat.insertLast(GAME::Speech(evilmike, "|||We have to warn them! Let's go!", 6*32));
  192.                         @dialogue = @GAME::DialogueScaledDelay(chat,210);
  193.                         state = DIALOGUERABBITS3;
  194.                 }
  195.         } else if(state == DIALOGUERABBITS3) {
  196.                 if(jjGameTicks % 70 == 0) makeRaven();
  197.                 if(!dialogue.isActive) {
  198.                         state = RUNAWAY;
  199.                         evilmike.moveLinear(54*32,49*32-16,50);
  200.                         evilmike.runAnim();
  201.                         evilmike.direction = -1;
  202.                 }
  203.         } else if(state == RUNAWAY) {
  204.                 if(jjGameTicks % 70 == 0) makeRaven();
  205.                 if(!evilmike.isMoving()) {
  206.                         state = PAUSEFORWAT;
  207.                         timer.start(210);
  208.                 }
  209.         } else if(state == PAUSEFORWAT) {
  210.                 if(jjGameTicks % 70 == 0) makeRaven();
  211.                 if(timer.isFinished()) {
  212.                         state = WAT;
  213.                         clearChat();
  214.                         chat.insertLast(GAME::Speech(dragon, "|...what?",       3*32));
  215.                         @dialogue = @GAME::DialogueScaledDelay(chat,140);
  216.                 }
  217.         } else if(state == WAT) {
  218.                 if(jjGameTicks % 70 == 0) makeRaven();
  219.                 if(!dialogue.isActive) {
  220.                         jjNxt("saldr5.j2l",false,true);
  221.                         state = DONE;
  222.                 }
  223.         }
  224. }