Downloads containing NapsMEV0-3-29.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 24 Battle PurpleJazz Battle N/A Download file

File preview

  1. //82=Custom Modifiers (Naps)          |+|Modifier  |Custom |Modifier  |EventType:8
  2.  
  3. //Total events so far: 2 (this number might increase in the future)
  4. //Expected number of events: 18
  5. //Versioning: (Years Passed)-Month-day
  6.  
  7. namespace NapModifier {
  8.         array<jjOBJ@> playerSupportingPlatforms(32);
  9.         array<uint> playerButtstompCounter(jjLocalPlayerCount);
  10.         enum customEvents {Slow_Sink,Bouncy_Sink};
  11.         int usedEvent = 82;
  12.         bool fixedBouncySinkButtstomp = false;
  13.         void onPlayerModifierHook(jjPLAYER@ play) {
  14.                 int playEventBelow = 0;
  15.                 int playEventParBelow = 0;
  16.                 int playEventAbove = 0;
  17.                 int playEventParAbove = 0;
  18.                 int playEvent = 0;
  19.                 int playEventPar = 0;
  20.                 if (play.xPos > 0 && (play.xPos/32) < jjLayerWidth[4] && play.yPos > 0 && ((play.yPos + 12)/32) < jjLayerHeight[4]) {
  21.                         playEventBelow = jjEventGet(int(play.xPos/32),int((play.yPos + (play.antiGrav? -12 : 12))/32));
  22.                         playEventParBelow = jjParameterGet(int(play.xPos/32),int((play.yPos + (play.antiGrav? -12 : 12))/32),0,8);
  23.                 }
  24.                 if (play.xPos > 0 && (play.xPos/32) < jjLayerWidth[4] && play.yPos - 12 > 0 && ((play.yPos)/32) < jjLayerHeight[4]) {
  25.                         playEventAbove = jjEventGet(int(play.xPos/32),int((play.yPos - (play.antiGrav? -12 : 12))/32));
  26.                         playEventParAbove = jjParameterGet(int(play.xPos/32),int((play.yPos - (play.antiGrav? -12 : 12))/32),0,8);
  27.                 }
  28.                
  29.                 if (play.xPos > 0 && (play.xPos/32) < jjLayerWidth[4] && play.yPos > 0 && ((play.yPos)/32) < jjLayerHeight[4]) {
  30.                         playEvent = jjEventGet(int(play.xPos/32),int((play.yPos)/32));
  31.                         playEventPar = jjParameterGet(int(play.xPos/32),int(play.yPos/32),0,8);
  32.                 }
  33.                 if (playEventBelow == usedEvent) {
  34.                         if (playEventParBelow == Slow_Sink || playEventParBelow == Bouncy_Sink) {
  35.                                 if (playEventParBelow == Bouncy_Sink && play.ySpeed > 4) {
  36.                                         if (play.buttstomp >= 121 || (playerButtstompCounter[play.localPlayerID] < 3 && !fixedBouncySinkButtstomp)) {
  37.                                                 play.yPos -= play.ySpeed;
  38.                                                 if (!fixedBouncySinkButtstomp) {
  39.                                                         playerButtstompCounter[play.localPlayerID]++;
  40.                                                 }
  41.                                         }
  42.                                 }
  43.                                 if (play.ySpeed < -0.5) {
  44.                                         play.ySpeed = 0;
  45.                                 }      
  46.                                
  47.                                 if (play.xSpeed < -0.5) {
  48.                                         play.xSpeed = -0.5;
  49.                                 }
  50.                                 if (play.xSpeed > 0.5) {
  51.                                         play.xSpeed = 0.5;
  52.                                 }
  53.                                 if (!(((playEventParAbove == Slow_Sink || playEventParAbove == Bouncy_Sink) && (playEventAbove == usedEvent)) || ((playEventPar == Slow_Sink || playEventPar == Bouncy_Sink) && playEvent == usedEvent)) && playEventParBelow == Bouncy_Sink) {
  54.                                         if (play.ySpeed >= 4) {
  55.                                                 if (play.ySpeed < 13) {
  56.                                                         play.ySpeed = (-play.ySpeed)*2.3;
  57.                                                         jjSample(play.xPos,play.yPos,SOUND::Sample(SOUND::BUBBA_BUBBABOUNCE1 + int(jjRandom() % 2)),63, 1000 + int(abs(play.ySpeed) * 1000));
  58.                                                 } else {
  59.                                                         play.ySpeed = -13;
  60.                                                 }
  61.                                         }              
  62.                                 } else {
  63.                                         if (play.ySpeed > 0.5) {
  64.                                                 play.ySpeed = 0.5;
  65.                                         }      
  66.                                 }
  67.                                 if (playerSupportingPlatforms[play.playerID] is null) {
  68.                                         jjOBJ@ obj = jjObjects[jjAddObject(OBJECT::GRASSPLATFORM,play.xPos,play.yPos + (play.antiGrav? -48 : 24),0)];
  69.                                         @playerSupportingPlatforms[play.playerID] = obj;
  70.                                         obj.determineCurAnim(ANIM::GRASSPLAT, 0);
  71.                                         obj.determineCurFrame(true);
  72.                                         obj.behavior = SupportingPlatform();
  73.                                         obj.var[1] = play.playerID;
  74.                                        
  75.                                 }
  76.                                
  77.                         }
  78.                 } else {
  79.                         if (playEventAbove == usedEvent && (playEventParAbove == Slow_Sink || playEventParAbove == Bouncy_Sink)) {
  80.                                 if (play.ySpeed < -0.5) {
  81.                                         play.ySpeed = 0;
  82.                                        
  83.                                 }      
  84.                         }
  85.                         revertChanges(play);
  86.                 }
  87.                
  88.         }
  89.        
  90.         void revertChanges(jjPLAYER@ play) {
  91.                 if (playerSupportingPlatforms[play.playerID] !is null) {
  92.                         play.platform = 0;
  93.                         playerSupportingPlatforms[play.playerID].delete();
  94.                         @playerSupportingPlatforms[play.playerID] = null;
  95.                 }
  96.                 playerButtstompCounter[play.localPlayerID] = 0;
  97.         }
  98.         class SupportingPlatform : jjBEHAVIORINTERFACE {
  99.                 void onBehave(jjOBJ@ obj) {
  100.                         if (obj.var[1] >= 0) {
  101.                                 jjPLAYER@ play = jjPlayers[obj.var[1]];
  102.                                 obj.xPos = play.xPos;
  103.                                 obj.isFreezable = false;
  104.                                 obj.triggersTNT = false;
  105.                                 obj.bulletHandling = HANDLING::IGNOREBULLET;
  106.                                 obj.beSolid();
  107.                                 if (play.platform == obj.objectID) {
  108.                                         obj.yPos += (play.antiGrav? -0.5 : 0.5);
  109.                                 } else {
  110.                                         play.platform = 0;
  111.                                 }
  112.                                  //jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame,0);
  113.                         } else
  114.                         {
  115.                                 obj.state = STATE::DEACTIVATE;
  116.                         }
  117.                 }
  118.         }
  119. }