Downloads containing HH17_Level07.j2as

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Holiday Hare '17Featured Download ShadowGPW Single player 8.8 Download file

File preview

  1. #include "hh17enemies.asc"
  2.  
  3. void onLevelLoad() {
  4.         HH17::setEnemy(OBJECT::RAVEN);
  5.         HH17::setEnemy(OBJECT::SKELETON);
  6.         HH17::setEnemy(OBJECT::DOGGYDOGG);
  7.         HH17::setEnemy(OBJECT::DRAGON);
  8.         HH17::setEnemy(OBJECT::MONKEY);
  9.         HH17::setEnemy(OBJECT::STANDMONKEY);
  10.        
  11.         jjPalette.fill(92,0,154, 246, 1, 1);
  12.         jjPalette.fill(72,0,122, 247, 1, 1);
  13.        
  14.         for (uint16 i = 720; i < 790; i++) {
  15.                 jjPIXELMAP bgTiles(i);
  16.                 for (uint x = 0; x < bgTiles.width; ++x) {
  17.                         for (uint y = 0; y < bgTiles.height; ++y) {
  18.                                 if (bgTiles[x,y] == 10) bgTiles[x,y] = 246;
  19.                                 if (bgTiles[x,y] == 13) bgTiles[x,y] = 247;
  20.                         }
  21.                 }
  22.                 bgTiles.save(i, true);
  23.         }
  24.        
  25.         Imitation(OBJECT::TACO, OBJECT::MILK);
  26.         uint src = jjAnimSets[ANIM::CUSTOM[255]].load(0, "SExmas.j2a");
  27.         uint dest = jjAnimSets[ANIM::PICKUPS];
  28.         for (int i = 0; i < 95; i++) {
  29.                 const jjANIMATION@ anim = jjAnimations[src + i];
  30.                 if (anim.frameCount != 0)
  31.                         jjAnimations[dest + i] = anim;
  32.         }
  33.         jjAnimSets[ANIM::BRIDGE].load(1, "SExmas.j2a");
  34.         jjAnimSets[ANIM::CUSTOM[0]].load(2, "SExmas.j2a");
  35.         jjObjectPresets[OBJECT::BOMBCRATE].behavior = GiftBox();
  36.         jjObjectPresets[OBJECT::BOMBCRATE].determineCurAnim(ANIM::CUSTOM[0], 0);
  37. }
  38.  
  39. void onLevelReload() {
  40.         HH17::processEnemyColors();
  41.         onLevelLoad();
  42. }
  43.  
  44. class Imitation : jjBEHAVIORINTERFACE {
  45.         private uint8 eventID;
  46.         private jjBEHAVIOR behavior;
  47.         Imitation(uint8 realEventID, uint8 fakeEventID) {
  48.                 jjOBJ@ obj = jjObjectPresets[realEventID];
  49.                 eventID = obj.eventID;
  50.                 behavior = obj.behavior;
  51.                 obj.eventID = fakeEventID;
  52.                 obj.behavior = this;
  53.         }
  54.         void onBehave(jjOBJ@ obj) override {
  55.                 if (obj.state == STATE::DEACTIVATE)
  56.                         obj.eventID = eventID;
  57.                 obj.behave(behavior);
  58.         }
  59. }
  60. class GiftBox : jjBEHAVIORINTERFACE {
  61.         void destroy(jjOBJ@ obj) {
  62.                 jjSample(obj.xPos, obj.yPos, SOUND::COMMON_WOOD1);
  63.                 {
  64.                         int id = jjAddObject(OBJECT::EXPLOSION, obj.xPos, obj.yPos);
  65.                         if (id != 0) {
  66.                                 jjOBJ@ other = jjObjects[id];
  67.                                 other.determineCurAnim(ANIM::PICKUPS, 4);
  68.                         }
  69.                 }
  70.                 for (int i = jjRandom() & 7 | 8; i-- != 0;) {
  71.                         int id = jjAddObject(OBJECT::SHARD, obj.xPos, obj.yPos);
  72.                         if (id != 0) {
  73.                                 jjOBJ@ other = jjObjects[id];
  74.                                 other.determineCurAnim(ANIM::PICKUPS, 93 + (jjRandom() & 1));
  75.                         }
  76.                 }
  77.                 obj.yPos -= 8.f;
  78.                 for (int i = obj.var[1]; i-- != 0;) {
  79.                         int id = jjAddObject(obj.var[0], obj.xPos, obj.yPos);
  80.                         if (id != 0) {
  81.                                 jjOBJ@ other = jjObjects[id];
  82.                                 if (other.playerHandling == HANDLING::PICKUP) {
  83.                                         int angle = (jjRandom() & 255) + 128;
  84.                                         other.xSpeed = jjCos(angle) * 5.f;
  85.                                         other.ySpeed = jjSin(angle) * -3.f;
  86.                                 } else if (other.playerHandling == HANDLING::SPECIAL) {
  87.                                         other.deactivates = false;
  88.                                 }
  89.                         }
  90.                 }
  91.                 obj.clearPlatform();
  92.                 obj.delete();
  93.         }
  94.         void onBehave(jjOBJ@ obj) override {
  95.                 switch (obj.state) {
  96.                         case STATE::START:
  97.                                 {
  98.                                         uint16 x = int(obj.xOrg) >>> 5;
  99.                                         uint16 y = int(obj.yOrg) >>> 5;
  100.                                         obj.var[0] = jjParameterGet(x, y, 0, 8);
  101.                                         obj.var[1] = jjParameterGet(x, y, 8, 4);
  102.                                         obj.curAnim += jjParameterGet(x, y, 12, 2);
  103.                                         obj.determineCurFrame();
  104.                                         obj.bulletHandling = HANDLING::DESTROYBULLET;
  105.                                         obj.scriptedCollisions = true;
  106.                                 }
  107.                                 break;
  108.                         case STATE::FALL:
  109.                                 obj.var[2] = 1;
  110.                                 break;
  111.                         case STATE::FREEZE:
  112.                         case STATE::SLEEP:
  113.                                 if (obj.var[2] != 0) {
  114.                                         destroy(obj);
  115.                                         return;
  116.                                 }
  117.                 }
  118.                 obj.behave(BEHAVIOR::MONITOR);
  119.         }
  120.         bool onObjectHit(jjOBJ@, jjOBJ@, jjPLAYER@, int) {
  121.                 return true;
  122.         }
  123.         bool onIsSolid(jjOBJ@) {
  124.                 return true;
  125.         }
  126. }
  127.  
  128. void onMain() {
  129.         HH17::handleEnemyProjectiles();
  130. }
  131.  
  132.