Parker.lua
From Pocket Rumble Wiki
parker.lua[edit]
Parker = { moves={ standA = { attackbox = {pushback=189 * gameLogicMult, hitStun=12, width=17 * gameLogicMult, height=11 * gameLogicMult, dmg=1, relativeY=10 * gameLogicMult, explosionX = 4 *gameLogicMult, explosionY = 2 * gameLogicMult, priority = 4}; { frames = {1,4}; custom = function(self) self:executeSound('lightWhiff', {"sfx", "whiff"}) end }; { type ="active"; frames = {2,2}; }; { type ="recovery"; frames = {3,3,4,2}; }; }; standB = { attackbox = {pushback=250 * gameLogicMult, hitStun=20, width=30 * gameLogicMult, height=12 * gameLogicMult, relativeY = 11 * gameLogicMult, dmg=1, explosionX = 4 * gameLogicMult, explosionY = 2 * gameLogicMult}; { --280 frames = {1,3}; --1,2 custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { frames = {2,2,3,2,4,2}; --2,4,3,3 custom = function(self) -- self:changeSpeed(300 * gameLogicMult, 40) end }; { type = "active"; frames = {5,2,6,4}; --4,3,5,2 custom = function(self) self:changeSpeed(500 * gameLogicMult, 170) -- self:changeLocation (10 * gameLogicMult) -- self:changeSpeed(0,0) end }; { type = "recovery"; frames = {6,8}; --5,5,6,4,7,4 --7,4,8,4 }; { frames = {7,4,8,4}; custom = function(self) self:changeLocation(-4 * gameLogicMult) end }; }; lowA = { attackbox = {pushback=160 * gameLogicMult, hitStun=14, width=26 * gameLogicMult, height=11 * gameLogicMult, relativeY=25 * gameLogicMult, explosionX = -8, explosionY = 999 * gameLogicMult, priority = 4}; { --pushback: 190 frames = {1,2,2,1,3,2}; --1,4,2,1 custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {4,5}; --3,2,4,3 }; { type = "recovery"; frames = {5,4}; --5,4 }; }; lowB = { attackbox = {pushUp = -300,pushback=100 * gameLogicMult, hitStun=21, width=35 * gameLogicMult, height=11 * gameLogicMult, dmg=1, relativeY=25 * gameLogicMult, explosionX = - (3 * gameLogicMult), explosionY = 999, priority = 3}; { frames = {1,2,2,4,3,2}; --1,2,2,2,3,1,4,1,5,1 custom = function(self) self:executeSound('heavyWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {4,3}; --6,3,7,1 }; { type = "recovery"; frames = {5,1,6,8,7,3}; --8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3 }; --attackbox = {pushUp = 90 * gameLogicMult, pushback=200 * gameLogicMult, hitStun=18, width=16 * gameLogicMult, height=36 * gameLogicMult, dmg=1, relativeY=0 * gameLogicMult, explosionX = -2, explosionY = 6, priority = 4}; --{ --150 pushback --frames = {1,2,2,3,3,2}; --custom = function(self) --self:executeSound('mediumWhiff', {"sfx", "whiff"}) --end --}; --{ --frames = {4,2}; --custom = function(self) --self:changeSpeed(2000, 500) --end --}; --{ --type = "active"; --frames = {5,2,6,2}; --custom = function(self) -- self:changeLocation(25 * gameLogicMult) --I TOOK THIS OUT BECAUSE IT LET YOU TELEPORT THROUGH PEOPLE --end --}; --{ --type = "recovery"; --frames = {7,4,8,2,9,2}; --}; }; jumpA = { attackbox = {pushback=170 * gameLogicMult, hitStun=17, width=20 * gameLogicMult, height=16 * gameLogicMult, dmg=1, relativeY=25 * gameLogicMult, explosionX = -3 * gameLogicMult,explosionY = 6 * gameLogicMult, priority = 4, ignoreCornerPush=true}; { frames = {1,3,2,2,3,1}; --1,6 custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) self.attackbox.SFX = "hitLightSFX" end }; { type="active"; frames = {4,2,5,2}; --2,2,3,4 }; { type="recovery"; frames = {6,4,7,3}; --6,4,7,4,8,16 }; endWith = function(self) self:executeAnimation("jumpA", { { frames={7,2,8,4}; }; { spriteName = "jumpUp"; frames={11,30}; } }); end }; jumpB = { attackbox = {pushback=80 * gameLogicMult, hitStun=19, width=30 * gameLogicMult, height=45 * gameLogicMult, relativeX = -10 * gameLogicMult, relativeY = -5 * gameLogicMult, explosionY = 40, priority = 3, ignoreCornerPush=true}; { --45 * gamelogicmult frames = {1,3,2,3,3,2,5,1}; --1,4,2,2 custom = function(self) self:executeSound("mediumWhiff", {"sfx", "whiff"}) end }; { type = "active"; frames = {6,1}; --3,2 custom = function(self) self:executeEffect("jumpBEffect"); end }; { frames = {6,1}; custom = function(self) -- self.attackbox.height= self.attackbox.height + (20 * gameLogicMult) -- self.attackbox.height = 37 * gameLogicMult -- self.attackbox.width = 18 * gameLogicMult -- self.attackbox.relativeY = 0 * gameLogicMult -- self.attackbox.relativeX = 0 * gameLogicMult end }; { frames = {6,3}; --6,2 custom = function(self) -- self.attackbox.height= self.attackbox.height + (20 * gameLogicMult) -- self.attackbox.height= self.attackbox.height + (10 * gameLogicMult) -- self.attackbox.height = 21 * gameLogicMult -- self.attackbox.width = 30 * gameLogicMult -- self.attackbox.relativeY = 30 * gameLogicMult -- self.attackbox.relativeX = -20 * gameLogicMult -- self.attackbox.explosionX = -15 * gameLogicMult -- self.attackbox.explosionY = 9 * gameLogicMult end }; { type="recovery"; frames = {6,3,7,4}; --10,5,7,3,7,5 }; endWith = function(self) self:executeAnimation("jumpUp", { frames={10,3,11,20}; }); end }; downForwardA = { attackbox = {pushback=80 * gameLogicMult, hitStun = 22, width=67 * gameLogicMult, height=12 * gameLogicMult, relativeX = -17 * gameLogicMult, relativeY = 11 * gameLogicMult, dmg=1, explosionX = -6 * gameLogicMult, priority = 2, external = true, projectileMoveStrength=700}; { --old hitstun as starter: 25 frames = {1,3,2,5}; --1,4,2,8 custom = function(self) end }; { -- type = "active"; frames = {3,2,4,2}; custom = function(self) -- self.attackbox.width = 20 * gameLogicMult -- self.attackbox.relativeX = -18 * gameLogicMult self:executeSound('heavyWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {5,2}; --5,2,6,2,7,2,8,2 custom = function(self) self:executeEffect("downForwardAEffect") end }; { frames = {6,2,7,2,8,2}; --5,2,6,2,7,2,8,2 custom = function(self) self.attackbox.width = self.attackbox.width - 20 self.attackbox.relativeX = self.attackbox.relativeX + 20 end }; { type="recovery"; frames = {9,3,10,3,11,4}; --4,4 custom = function(self) -- self:executeProjectile("orbInert") -- self:executeEffect("orb") end }; }; downBackB = { { frames = {1,3,2,3,3,3}; --1,3,2,5,3,3 custom = function(self) -- self:executeEffect("orbStartupAir") self:executeProjectile("orbStartupAir") self:executeSound("orbDelay", "sfx") end }; { type="recovery"; frames = {5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2}; --5,3,6,3,7,3,8,2,9,2,10,2,11,2,12,2,13,2,14,2 custom = function(self) -- local originalDecay = self.projectiles.orbInert.decay -- self.projectiles.orbInert.decay = 5 -- self.projectiles.orbInert.ySpeed = -400 -- self:executeProjectile("orbInert", nil, self.y - 50) -- self.projectiles.orbInert.ySpeed = 0 -- self.projectiles.orbInert.decay = originalDecay end }; }; downForwardB = { attackType = attackTypes.high; attackbox = {forceForward = true, pushUp = 77 * gameLogicMult, pushback=130 * gameLogicMult, hitStun=16, width=55 * gameLogicMult, height=23 * gameLogicMult, relativeX=-35 * gameLogicMult, relativeY=-10 * gameLogicMult, dmg=1, explosionY = 12 * gameLogicMult,explosionX = 4 * gameLogicMult, priority = 2, projectileMoveStrength=700}; { frames = {1,3,2,3}; custom = function(self) self:executeSound("jump", {"sfx", "whiff"}) self.throwInvuln = true end }; { frames = {3,3}; custom = function(self) -- self.invulnerability = true self.height = self.height - (11 * gameLogicMult) self:changeSpeed(600, 30) self.ySpeed = -300 -- -300 -- self:executeSound("heavyWhiff", {"sfx", "whiff"}) end }; --1,4,2,2,3,2 { frames = {4,3,5,3}; custom = function(self) -- self.invulnerability = true -- self.height = self.height - (11 * gameLogicMult) -- self:changeSpeed(600, 30) -- self.ySpeed = -300 -- -300 -- self.attackbox.width = 15 * gameLogicMult self:executeSound("heavyWhiff", {"sfx", "whiff"}) end }; { type="active"; frames = {6,3}; custom = function(self) -- self.attackbox.width = 55 * gameLogicMult -- self.attackbox.relativeX = -35 * gameLogicMult -- self:executeSound("heavyWhiff", {"sfx", "whiff"}) end }; { frames = {7,3}; custom = function(self) self.attackbox.exists = false end }; { frames = {8,3}; --7,3,8,4,9,4,10,6 custom = function(self) -- self.height = standHeight self.y = yFloor - standHeight self.ySpeed = 0 self.ignoreGravity = true -- self.yOffset = self.yOffset - (4 * gameLogicMult) -- self.height = standHeight self:executeSound("mediumWhiff", {"sfx", "whiff"}) end }; { frames = {9,3}; custom = function(self) self.height = standHeight -- self.ignoreGravity = false self.attackbox.exists = true self.attacking = true self.attackbox.height = 31 * gameLogicMult self.attackbox.width = 30 * gameLogicMult self.attackbox.relativeY = 0 * gameLogicMult self.attackbox.relativeX = 0 * gameLogicMult self.attackbox.explosionX = -4 * gameLogicMult self.attackbox.explosionY = 9 * gameLogicMult self.attackbox.pushUp = -300 * gameLogicMult self.attackbox.pushback = 220 * gameLogicMult --250 self.attackbox.hitStun = 12 --16 self.attackbox.projectileMoveStrength = 0 self.throwInvuln = true end }; { frames = {10,3}; custom = function(self) self.attackbox.height = 21 * gameLogicMult self.attackbox.relativeY = 10 * gameLogicMult self.throwInvuln = false self.ignoreGravity = false end }; { type="recovery"; frames = {11,3,12,3,13,3,14,3,15,3,16,3}; --10,2,11,6,12,6,13,6 custom = function(self) -- self.invulnerability = false end }; }; downBackA = { { frames = {1,3,2,3,3,3}; --1,3,2,5,3,3 custom = function(self) self:executeEffect("orbStartupFloor") end }; { type="recovery"; frames = {5,3,6,3,7,3,8,3,9,3,10,3}; --5,3,6,3,7,3,8,3,9,5,10,4 custom = function(self) self:executeProjectile("orbInert") end }; }; neutralAB = { { type="startup"; frames = {1,2,2,2,3,6,4,2,5,2,6,2}; custom = function(self) self:executeSound('parryWhiff', {"sfx", "whiff"}) self:executeSound('mediumWhiff', {"sfx", "whiff"}) self:startTrails("super") self.parry = true self.attacking = false self:changeMeter(-1) self:setFrameBar({{type="active", frameCount=16}, {type="recovery", frameCount=15}}) -- self:changeWidth(30) end }; { type="recovery"; frames = {7,7,8,7}; --4,5,5,5,6,5 custom = function(self) self.parry = false self:changeWidth(19) end }; { frames = {8,1}; custom = function(self) self:stopTrails() end }; }; parryConnectMid = { spriteName = "parryMid"; { type = "recovery"; frames = {1,3,2,3}; custom = function(self) self.invulnerability = true self.ignoreInvulnOutline = true self:executeSound("parry", "sfx") self:executeSound("parry2", "sfx") cameraJitterX = 6 self:flushBar() self:changeWidth(19) self:checkTurn(true) self:executeEffect("neutralABEffect") self.alwaysDrawFront = true self.requestSS = true self.attacking = true self:changeMeter(1) self:executeEffect("parrySparkMid") end }; { frames = {3,15,4,2}; custom = function(self) self.invulnerability = false self.ignoreInvulnOutline = false -- self:executeEffect("neutralABEffect") -- self.attacking = true -- self.requestSS = true end }; endWith = function(self) self.attacking = false self.parry = false self:superStopContinue() self:endAttack() self:stopTrails() end }; parryConnectLow = { spriteName = "parryLow"; { type = "recovery"; frames = {1,3,2,3}; custom = function(self) self.invulnerability = true self.ignoreInvulnOutline = true self:executeSound("parry", "sfx") self:executeSound("parry2", "sfx") cameraJitterX = 6 self:flushBar() self:changeWidth(19) self:checkTurn(true) self:executeEffect("neutralABEffect") self.alwaysDrawFront = true self.requestSS = true self.attacking = true self:changeMeter(1) self:executeEffect("parrySparkLow") end }; { frames = {3,15,4,2}; custom = function(self) self.invulnerability = false self.ignoreInvulnOutline = false -- self:executeEffect("neutralABEffect") -- self.attacking = true -- self.requestSS = true end }; endWith = function(self) self.attacking = false self.parry = false self:superStopContinue() self:endAttack() self:stopTrails() end }; parryConnectHigh = { spriteName = "parryHigh"; { type = "recovery"; frames = {1,4,2,4}; custom = function(self) self.invulnerability = true self.ignoreInvulnOutline = true self:executeSound("parry", "sfx") self:executeSound("parry2", "sfx") cameraJitterX = 6 self:flushBar() self:changeWidth(19) self:checkTurn(true) self:executeEffect("neutralABEffect") self.alwaysDrawFront = true self.requestSS = true self.attacking = true self:changeMeter(1) self:executeEffect("parrySparkHigh") end }; { frames = {3,15,4,2}; custom = function(self) self.invulnerability = false self.ignoreInvulnOutline = false -- self:executeEffect("neutralABEffect") -- self.attacking = true -- self.requestSS = true end }; endWith = function(self) self.attacking = false self.parry = false self:superStopContinue() self:endAttack() self:stopTrails() end }; dashForward = { { type = "recovery"; frames = {1,2}; custom = function(self) -- self.alwaysDrawBehind = true -- self.invulnerability = true -- self.ignoreCollision = true -- self:executeSound("dash.ogg", "sfx") -- self:setDust(0) -- self:changeSpeed(self.runSpeed * 3, 35) end }; { type = "recovery"; frames = {2,2,3,2,4,2,5,2,6,2,7,2}; custom = function(self) self.alwaysDrawBehind = true self.invulnerability = true self.ignoreCollision = true self:executeSound("dash", "sfx") self:setDust(-40) self:changeSpeed(self.runSpeed * 3, 35) end }; { frames = {8,3,9,3}; custom = function(self) self.invulnerability = false self.ignoreCollision = false end }; }; dashBack = { spriteName = "dashForward"; -- { -- type = "recovery"; -- frames = {7,3}; -- custom = function(self) -- -- self.alwaysDrawBehind = true -- -- self.invulnerability = true -- -- self.ignoreCollision = true -- -- self:executeSound("dash.ogg", "sfx") -- -- self:setDust(140, true) -- -- self:changeSpeed(-self.runSpeed * 2.8, -35) -- -- self.ignoreCollision = true -- end -- }; { type = "recovery"; frames = {7,1,6,2,5,2,4,2,3,2,2,1,1,1}; custom = function(self) self.alwaysDrawBehind = true self.invulnerability = true self.ignoreCollision = true self:executeSound("dash", "sfx") self:setDust(140, true) self:changeSpeed(-self.runSpeed * 2.8, -35) end }; { frames = {8,3,9,3}; custom = function(self) self.invulnerability = false self.ignoreCollision = false end }; }; }; animations={ idle = { { --TODO: animation timer is never getting weird and out of sync like it used to with custom frame times due to how animations reset -- frameTime = .1; frames = {2,4,3,26,4,7,5,7,6,7,7,7,8,18,9,5,10,4,11,4,12,4,13,26,14,7,15,7,16,7,17,7,18,5,19,9,20,4,21,4,22,4,1,4}; }; }; walkForward = { spriteName = "walk"; { frameTime = .018; --TODO: animation timer is never getting weird and out of sync like it used to with custom frame times due to how animations reset -- frameTime = .2; frames = {1,4,2,5,3,4,4,5,5,4,6,5,7,4,8,5,9,4,10,5}; }; }; walkBack = { spriteName = "walkBack"; { frameTime = .018; --TODO: animation timer is never getting weird and out of sync like it used to with custom frame times due to how animations reset -- frameTime = .2; frames = {1,5,2,6,3,5,4,6,5,5,6,6,7,5,8,6,9,5,10,6}; }; }; crouch = { { --TODO: animation timer is never getting weird and out of sync like it used to with custom frame times due to how animations reset frames = {1,6,2,6,3,25,4,6,5,6,6,42}; }; }; jumpUp = { frames={2,4,3,3,4,3,5,3,6,3,7,3,8,6,9,3,10,3,11,3}; endWith = "nothing"; }; jumpForward = { spriteName = "jumpUp"; frames={2,4,3,3,4,3,5,3,6,3,7,3,8,6,9,3,10,3,11,3}; endWith = "nothing"; }; jumpBack = { spriteName = "jumpUp"; frames={2,4,3,3,4,3,5,3,6,3,7,3,8,6,9,3,10,3,11,3}; endWith = "nothing"; }; land = { spriteName = "jumpUp"; frames = {12,3,13,3,1,3,14,3}; }; crouchTransition = { frameTime = frameTime *3; frames={1,1}; }; standTransition = { spriteName = "crouchTransition"; frameTime = frameTime *3; frames={1,1}; custom = function(self) self.yOffset = -6 end }; turn = { frames = {1,4}; }; crouchTurn = { frames = {1,4}; }; tech = { frames={1,4,2,4,3,4,4,4,5,4}; }; preBlock={ spriteName="blockStand"; endWith = "nothing"; frames = {1,1,2,1,3,1}; }; preBlockReverse={ spriteName="blockStand"; frames = {2,1,1,1}; }; preBlockCrouch={ endWith = "nothing"; spriteName="blockCrouch"; frames={1,2,2,1}; }; preBlockCrouchReverse={ spriteName="blockCrouch"; frames={1,2}; }; knockdown = { endWith = "nothing"; frames = {1,6,2,3,3,1,4,2,5,2,6,2,7,1,8,2}; --1,6,2,3,3,2,4,2,5,2,6,2,7,2,8,2 }; impact = { spriteName = "knockdown"; frames = {9,3} }; startGroundBounce = { spriteName = "knockdown"; frames = {9,1,10,1,11,3,12,3,13,3,14,2} }; stopGroundBounce = { spriteName = "knockdown"; frames = {14,1, 15, 3, 16,8} }; wakeup = { spriteName = "knockdown"; frames = {17,5,18,5} }; airHurt = { endWith = "nothing"; { frames = {1,1,2,3}; }; { spriteName = "jumpUp"; frames = {8,9,9,4,10,4,11,99}; }; }; death = { spriteName = "knockdown"; endWith = "nothing"; frames = {16,1} }; chipDeath = { endWith = "nothing"; { frames={1,3,2,3}; custom=function(self) self.enemy:drawFirst() end }; { frames={3,3,4,3,5,3,6,3}; custom = function(self) self:executeSound("chipDeath", {"sfx"}) end }; { frames={7,3}; custom = function(self) self:executeSound("chipDeath", {"sfx"}) end }; { frames={8,1}; custom = function(self) koFinish = true end }; }; win = { spriteName = "yay"; frames = {2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,3,25,3,26,3,27,3,28,6,29,6,30,40,31,6,32,6,33,6}; endWith = function(self) self:executeAnimation("yayLoop") end }; yay = { frames = {1,18,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,3,25,3,26,3,27,3,28,6,29,6,30,40,31,6,32,6,33,6}; endWith = function(self) self:executeAnimation("yayLoop") end }; yayLoop = { spriteName = "yay"; frames = {34,3,35,3,36,3,37,3,38,3,39,3,40,3,41,3,42,3,43,3,44,3,45,45,46,6,47,60,48,6}; }; boo = { frames = {1,24,2,4,3,6,4,6,5,38,6,4,7,2,8,2,9,2,10,2,11,4,12,6,13,2,14,2,15,2,16,2}; endWith = function(self) self:executeAnimation("booLoop") end }; booLoop = { spriteName = "boo"; frames = {17,6,18,1,19,1,20,1,19,1,18,1,19,1,20,1,17,6,18,1,19,1,20,1,19,1,18,1,19,1,20,1,17,6,18,1,19,1,20,1,19,1,18,1,19,1,20,1,17,24,18,1,19,1,20,1,19,1,18,1,19,1,20,1}; }; }; throw = { enemyFrames = { {5,12 + 4,-14}, --f1 {6,6 + 4,-14}, --f2 {7,1 + 4,-14}, --f3 {2,5 + 8,-17}, --f4 {1,4 + 8,-16}, --f5 {1,3 + 8,-16}, --f6 {1,3 + 8,-16}, --f7 {1,3 + 8,-16}, --f8 {1,3 + 8,-16}, --f9 {2,4 + 8,-18}, --f10 {12,16 + 8,-14}, --f11 {0,0,0}, --f12 {0,0,0}, --f13 {0,0,0}, --f14 {0,0,0}, --f15 {0,0,0}, --f16 {0,0,0}, --f17 {6,3 + 4,-14}, --f18 {5,6 + 4,-14}, --f19 {17,5 + 4,-10}, --f20 {18,4 + 4,-10}, --f21 {19,2 + 4,-11}, --f22 {12,0 + 4,-14}, --f23 {0,0,0}, --f24 {0,0,0}, --f25 {0,0,0} --f26 }; start = { {frames = {1,3,2,3,3,3,3}}; --5,2,6,4 --1,4,2,4,3,4,4,2,5,1,6,1 { frames = {4,1}; --8,4,9,4,10,4,11,4 custom = function(self) self:throwHitstop(6, 38, 34) cameraJitterX = 2 self.combo = self.combo + 1 self.enemy:changeHealth(1) self:executeSound(self.hitSpecialSFX, "sfx") self.enemy:forceEnemyEffect("shock", "getThrown") self.enemy.xOffset = -30 self.enemy.yOffset = -8 end }; { frames = {5,3,6,7}; custom = function(self) self.enemy:stopEnemyEffect(true) end }; }; forward = { { frames = {7,2,8,2,9,2}; --11,4,13,2,14,2,15,2 data = {dmg = 1, hitstop = 9, explosionX= 101, explosionY = 101, changeLocation = 90, changeSpeed = 270, changeYSpeed = -600}; custom = function(self) self:executeEffect("orbThrowStartup") self:executeSound("orbLoop", "sfx") end }; { frames = {10,1}; custom = function(self) self:executeEffect("orbThrowActive") self.combo = self.combo + 1 self.enemy:changeHealth(1) self:executeSound(self.hitSpecialSFX, "sfx") self:throwHitstop(9, 38, 34) self.enemy:forceEnemyEffect("shock", "getThrown") cameraJitterX = 2 self.enemy.xOffset = -30 self.enemy.yOffset = -8 self:executeSound("lightning", "sfx") end }; { frames = {10,2,11,1}; custom = function(self) self.enemy:stopEnemyEffect(true) end }; { frames = {11,2}; custom = function(self) end }; { frames = {12,3,13,3,14,3,15,3,16,3,17,3}; custom = function(self) self.enemy:changeLocation(30) self.enemy:changeSpeed(240) --300 self.enemy.ySpeed = -250 self.enemy.y = self.enemy.y + 20 self.enemy.ignoreGravity = false self.enemy:knockFall() self.ignoreFloor = false self.enemy.ignoreFloor = false end }; }; backward = { { frames = {18,3}; --21,4,22,4,23,4 data = {dmg = 1, changeLocation = 10, changeSpeed = 500, changeYSpeed = -600}; custom = function(self) self:changeSpeed(700, 50) --800,50 if self.enemy.x > 600 or self.enemy.x < 42 then --590, 60 self.enemy:throwForceLocation(-60) else self.enemy:throwForceLocation(-10) end end }; { frames = {19,3,20,3,21,3,22,3}; custom = function(self) self:changeLocation(18) end }; { frames = {24,1}; --23,3,24,8,25,3,26,3 custom = function(self) -- self.xOffset = self.xOffset - 60 self:throwHitstop(8, -60, 34) self:executeSound(self.hitHeavySFX, "sfx") self.enemy:resetThrowForceLocation() self.ignoreFloor = false self.enemy.ignoreFloor = false self.combo = self.combo + 1 self.enemy:changeHealth(1) self.enemy:changeSpeed(-300) self.enemy.ySpeed = -200 --600 self.enemy.y = self.enemy.y + 20 self.enemy.ignoreGravity = false self.enemy:forceEnemyEffect("shock", "knockdown") -- self:changeLocation(90) -- self.enemy:knockFall() -- self:changeLocation(-90) end }; { frames = {24,7,25,3,26,3}; custom = function(self) self.enemy:stopEnemyEffect(true) self.enemy:knockFall() end }; { custom = function(self) self.ignoreCollision = false -- self:changeLocation(60) end }; }; }; effects = { hitEffect = { frames = {1,3,2,2,3,1,4,2,5,1}; --1,1,2,1,3,2,4,3,5,2 }; standBEffect = { frames = {6,6,7,3,8,3,9,3,10,3,11,3}; relativeX = 40; relativeY = 18; destroyWhenPlayerHurt = true; }; downBackBEffect = { frames = {1,3,2,3,3,3,4,3,5,3,6,3,7,3}; relativeX = 40; relativeY = -54; destroyWhenPlayerHurt = true; }; jumpBEffect = { -- layer = "middle"; frames = {1,2,2,2,3,2,4,2}; relativeX = -26; --30 relativeY = -10; destroyWhenPlayerHurt = true; followPlayer = true; destroyWhenPlayerLand = true; }; downForwardAEffect = { frames = {1,2,2,2,3,2,4,2}; relativeX = -40; }; orbStartupFloor = { spriteName = "orbSpawn"; frames = {1,2,2,2,3,2,4,2,5,2,6,2,7,2}; relativeX = 4; relativeY = 20; destroyWhenPlayerHurt = true; followPlayer = true; custom = function(self, host) host:executeSound("orbForm", "sfx") end }; orbStartupAir = { relativeX = 4; relativeY = 20; destroyWhenPlayerHurt = true; -- relativeY = -50; -- ySpeed = -30; -- decay = 10; { frames = {1,2,2,2,3,2,4,2,5,2,6,1,7,1}; custom = function(self) self.ySpeed = 0; self.decay = 0; self.followPlayer = true; self.destroyWhenPlayerHurt = true; end }; { frames = {8,1,9,2,10,2,11,2,12,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,1,9,2,10,2,11,2,12,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,1,9,2,10,2,11,2,12,2}; custom = function(self) self.ySpeed = -400; -- -340 self.decay = 17.2; -- 12 self.followPlayer = false; self.destroyWhenPlayerHurt = false; end }; { custom = function(self, host) host:executeSound("orbForm", "sfx") if self.flip == 1 then host:executeProjectile("orbInert", self.x + 6, self.y + 10) else host:executeProjectile("orbInert", self.x - 6 - 16, self.y + 10) end self.exists = false end }; }; -- fireball = { -- frames = {}; -- endWith = "loop"; -- relativeX = 0; -- relativeY = 0; -- destroyWhenPlayerHurt = false; -- }; orb = { frames = {10,1,1,3,2,1,10,1,3,1,10,1,3,1,9,1,4,1,9,1,1,3,10,3,9,3,6,3,7,3}; relativeX = -11 *gameLogicMult; relativeY = -10 *gameLogicMult; destroyWhenPlayerHurt = false; layer = "top"; }; orbInert = { frames = {4,3,5,1,6,2,7,1,8,2,9,1,10,2,11,1,12,2,13,4,14,4,15,4,16,5,1,5,2,5,3,5}; endWith = "loop"; relativeX = -3 *gameLogicMult; relativeY = -5 *gameLogicMult; destroyWhenPlayerHurt = false; custom = function(self, host) host:executeSound("orbLoop", "sfx", host:distanceFromCamera(self.x)) end }; orbDestroy = { frames = {1,2,2,2,3,2,4,2,5,4,6,4,7,4,8,4}; flicker = true; relativeX = -12 *gameLogicMult; relativeY = -12 *gameLogicMult; }; orbThrowStartup = { spriteName = "orbSpawn"; frames = {1,1,2,1,3,1,4,1,5,1,6,1,7,1}; relativeX = 30 * gameLogicMult; relativeY = 10 * gameLogicMult; layer = "top"; }; orbThrowActive = { spriteName = "orb"; frames = {10,1,3,1,9,1,4,1,9,1,1,3,10,3,9,2,6,2,7,2}; -- frames = {1,2,2,2,3,2,4,2,9,1,1,1,10,1,9,1,6,1}; --4,8,9,1,1,1,10,1,9,1,6,1 relativeX = 20*gameLogicMult; relativeY = 4*gameLogicMult; layer = "top"; }; neutralABEffect = { frames = {1,2,8,4,9,2,10,2};-- 4,1,5,1,6,1, --1,2,2,2,3,2,4,2,5,2,6,2,7,2 flicker = true; relativeX = -16 * gameLogicMult; -- -4 relativeY = -9 * gameLogicMult; -- -9 }; lightningStrikeNoOrb = { layer = "middle"; frames = {1,1,2,1,3,1,4,1,5,1,6,1}; relativeY = -70 * gameLogicMult; relativeX = -4 * gameLogicMult; followPlayer = true; }; lightningStrike = { frames = {1,1,2,1,3,1,4,1,5,1,6,1}; relativeX = -20; relativeY = -64; }; parrySparkMid = { spriteName = "parrySpark"; frames = {1,2,2,2,3,2,4,1,5,1,6,1}; relativeX = -46; relativeY = -88; }; parrySparkHigh = { spriteName = "parrySpark"; frames = {1,2,2,2,3,2,4,1,5,1,6,1}; relativeX = -76; relativeY = -120; }; parrySparkLow = { spriteName = "parrySpark"; frames = {1,2,2,2,3,2,4,1,5,1,6,1}; relativeX = -56; relativeY = -50; }; chainLightning = { frames = {1,1,2,3,3,3,4,3,5,3,6,3,7,3}; layer = "middleTop"; }; slapSpark = { frames = {1,1,2,1,3,1,4,1,5,1,6,1}; layer = "top"; }; nameplate = { -- frames = {1,5,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2}; endWith = "nothing"; { frames = {1,1,2,1,3,3,4,1,5,2,6,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; { frames = {7,3,8,1,9,3,10,1,11,2,12,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; { frames = {13,3,14,1,15,3,16,1,17,2,18,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; { frames = {19,3,20,1,21,3,22,1,23,2,24,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; { frames = {25,3,26,1,27,3,28,1,29,2,30,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; { frames = {31,3,32,1,33,3,34,1,35,3,36,2}; custom = function(self, host) if host.player1 == true then host:executeSound("typewriterLeft", {"sfx", "nameplate1"}) else host:executeSound("typewriterRight", {"sfx", "nameplate2"}) end end }; }; -- nameplate = { -- frames = {1,5,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2}; -- endWith = "nothing"; -- }; }; projectiles = { orbStartupAir = { lifetime = 67; width = 8 * gameLogicMult; height = 6 * gameLogicMult; noAttackbox = true; dontKillEffect = true; dontDrawBox = true; }; orbInert = { destroyEffect = "orb"; sfx = "orb"; xSpeed = 0; --default 350 relativeX = 5 *gameLogicMult; --29*gameLogicMult relativeY = 16 *gameLogicMult; hitStun = 16; pushback = 250; width = 8 * gameLogicMult; height = 6 * gameLogicMult; hitstop = 10; priority = 1; noAttackbox = true; moveable = true; effectOnMove = "slapSpark"; updateDuringHitstop = true; -- cornerStop = true; stayOnScreen = true; decay = 20; ifMultiple = function(self, host, otherProjectile) local leftX, rightX, leftY, rightY, width, angle if self.x < otherProjectile.x then leftX = self.x + self.width/2 rightX = otherProjectile.x + otherProjectile.width/2 leftY = self.y rightY = otherProjectile.y else leftX = otherProjectile.x + otherProjectile.width/2 rightX = self.x + self.width/2 leftY = otherProjectile.y rightY = self.y end local orb_centery_offset = 3*gameLogicMult leftY = leftY + orb_centery_offset rightY = rightY + orb_centery_offset width = math.dist(leftX,leftY, rightX,rightY) --width = bit.dist(leftX,leftY, rightX,rightY) angle = math.angle(leftX,leftY, rightX,rightY) --angle = bit.angle(leftX,leftY, rightX,rightY) host.moves.chainLightning.rotate = angle host.moves.chainLightning.maskWidth = width/gameLogicMult host.moves.chainLightning.oy = host.sprites.chainLightning.height/gameLogicMult host:executeEffect("chainLightning", leftX, leftY, 1) local distWidth = rightX - leftX local distHeight = leftY - rightY local chunkXOffset = -host.projectiles.chainChunk.width/2 local chunkYOffset = host.projectiles.chainChunk.height/2 local chunkCount = 10 local chunkDistWidth = distWidth / (chunkCount-1) local chunkDistHeight = distHeight / (chunkCount-1) for i=1, chunkCount do host:executeProjectile("chainChunk", leftX + chunkXOffset , leftY - chunkYOffset, 1) chunkXOffset = chunkXOffset + chunkDistWidth chunkYOffset = chunkYOffset + chunkDistHeight end host:executeSound("lightning", "sfx", host:distanceFromCamera(leftX + distWidth/2)) host:executeProjectile("chainLargeChunk", leftX - 18, leftY - 20, 1) host:executeProjectile("chainLargeChunk", rightX - 18, rightY - 20, 1) otherProjectile:destroy() self:destroy() end; }; orbActive = { -- sfx = "orbDestroy"; lifetime = 5; width = 20; height = 20; priority = 2; hitStun = 78; pushback = 0; hitstop = 10; }; lightningStrike = { sfx = "lightningStrike"; lifetime = 6; width = 60; height = 84 * gameLogicMult; priority = 2; hitstop = 5; pushback = 50; pushUp = 300 * gameLogicMult; hitStun = 8; dontKillEffect = true; }; chainLightning = { lifetime = 5; width = 0; height = 30; priority = 1; hitStun = 40; --78 pushback = 0; hitstop = 10; dontKillEffect = true; }; chainChunk = { effect = "nil"; deathTag = "chain"; stunlock = true; lifetime = 15; width = 20; height = 20; priority = 1; hitStun = 46; pushback = 0; hitstop = 10; blockStun = 24; }; chainLargeChunk = { effect = "nil"; deathTag = "chain"; stunlock = true; lifetime = 15; width = 36; height = 40; priority = 1; hitStun = 46; pushback = 0; hitstop = 10; blockStun = 24; }; }; colors = { default = { sprite = { {64,64,64};--suit {155,155,167};--tie {248,248,248};--skin {99,0,148};--dark hand outline {148,0,247};--medium hand outline {191,87,199};--bright hand outline {255,228,242};--bright hand fill {240,128,240};--hand trails }; effects = { {53,0,79};--lightning darkest {99,0,148}; {148,0,247}; {191,87,199}; {240,128,240}; {255,175,255}; {255,228,242};--lightning lightest }; meterIcon = { {148,0,247}; --dark {191,87,199}; --medium {240,128,240}; --light }; hit = { {53,0,79};--inner frame 1 {99,0,148};--outer frame 1 {255,175,255};--innter frame 2 {168,168,236};--outer frame 2 {148,0,247};--frame 5 }; dust = {155,155,167}; mainUI = {64,64,64}; --UIcolor health = {155,155,167}; meterChunk = { {148,0,247}; --dark {191,87,199}; --medium {240,128,240}; --light }; trailSuper = { {148,0,247}; --black {255,255,255}; --white {240,128,240}; --other }; }; alt1 = { --red sprite = { {116,61,61};--suit {247,0,0};--tie {248,248,248};--skin {0,16,111};--dark hand outline {0,0,247};--medium hand outline {0,99,231};--bright hand outline {221,243,255};--bright hand fill {67,214,247};--hand trails }; effects = { {0,9,66};--lightning darkest {0,16,111}; {0,0,247}; {0,99,231}; {67,214,247}; {155,244,255}; {221,243,255};--lightning lightest }; meterIcon = { {0,99,231}; --dark {67,214,247}; --medium {194,242,255}; --light }; hit = { {0,9,66};--inner frame 1 {0,16,111};--outer frame 1 {155,244,255};--innter frame 2 {245,245,152};--outer frame 2 {0,99,231};--frame 5 }; dust = {255,64,64}; trailSuper = { {0,99,231}; --black {255,255,255}; --white {67,214,247}; --other }; mainUI = {113, 0, 0}; health = {255,0,0}; meterChunk = { {16,143,255}; --darkBlue {64,174,255}; --medium blue {131,221,251}; --lightest blue }; }; alt2 = { --orange sprite = { {112,90,55};--suit {255,132,21};--tie {248,248,248};--skin {89,76,0};--dark hand outline {154,144,0};--medium hand outline {215,191,0};--bright hand outline {255,255,179};--bright hand fill {244,245,0};--hand trails }; effects = { {53,46,0};--lightning darkest {89,76,0}; {154,144,0}; {215,191,0}; {244,245,0}; {251,255,105}; {255,255,179};--lightning lightest }; meterIcon = { {242,182,0}; --dark {255,255,0}; --medium {253,255,142}; --light }; hit = { {53,46,0};--inner frame 1 {89,76,0};--outer frame 1 {251,255,105};--innter frame 2 {191,229,223};--outer frame 2 {215,191,0};--frame 5 }; dust = {255,164,42}; mainUI = {187, 72, 0}; --UIcolor health = {255,102,7}; meterChunk = { --meterOne {215,191,0}; --darkGreen {246,255,109}; --mediumGreen {255,255,255}; --lightestGreen }; trailSuper = { {215,191,0}; --black {255,255,255}; --white {255,255,0}; --other }; }; alt3 = { sprite = { {114,114,0};--suit {249,243,0};--tie {248,248,248};--skin {128,0,78};--dark hand outline {191,0,112};--medium hand outline {221,0,133};--bright hand outline {255,228,242};--bright hand fill {255,70,131};--hand trails }; effects = { {82,0,50};--lightning darkest {128,0,78}; {191,0,112}; {221,0,133}; {255,70,131}; {255,155,218}; {255,228,242};--lightning lightest }; meterIcon = { {247,0,82}; --dark {255,78,171}; --medium {255,130,209}; --light }; hit = { {82,0,50};--inner frame 1 {128,0,78};--outer frame 1 {255,155,218};--innter frame 2 {168,202,236};--outer frame 2 {191,0,112};--frame 5 }; dust = {255,255,0}; mainUI = {113, 113, 0}; health = {215,215,0}; meterChunk = { --meterOne {255,16,83}; --darkBlue {255,64,126}; --medium blue {251,131,191}; --lightest blue --meterTwo {255,100,146}; --darkblue {255,164,178}; --medium blue {255,239,233}; --lightest blue }; trailSuper = { {255,30,106}; --black {255,255,255}; --white {255,132,235}; --other }; }; alt4 = { sprite = { {56,94,23};--suit {71,238,27};--tie {248,248,248};--skin {98,0,110};--dark hand outline {120,0,165};--medium hand outline {159,0,197};--bright hand outline {240,228,255};--bright hand fill {153,85,193};--hand trails }; effects = { {59,0,66};--lightning darkest {98,0,110}; {120,0,165}; {159,0,197}; {153,85,193}; {198,155,255}; {240,228,255};--lightning lightest }; meterIcon = { {112,0,183}; --dark {153,85,193}; --medium {202,128,240}; --light }; hit = { {59,0,66};--inner frame 1 {98,0,110};--outer frame 1 {198,155,255};--innter frame 2 {168,236,223};--outer frame 2 {120,0,165};--frame 5 }; dust = {0,255,0}; mainUI = {0, 113, 0}; health = {0,255,0}; meterChunk = { --meterOne {148,0,247}; --darkGreen {191,87,199}; --mediumGreen {240,128,240}; --lightestGreen --meterTwo {240,128,240}; --darkGreen {255,175,255}; --mediumGreen {255,228,242}; --lightestGreen }; trailSuper = { {153,0,193}; --black {255,255,255}; --white {204,142,255}; --other }; }; alt5 = { --blue sprite = { {0,75,88};--suit {128,183,192};--tie {248,248,248};--skin {148,0,0};--dark hand outline {255,0,0};--medium hand outline {255,69,69};--bright hand outline {255,228,228};--bright hand fill {255,121,121};--hand trails }; effects = { {74,0,0};--lightning darkest {148,0,0}; {255,0,0}; {255,69,69}; {255,121,121}; {255,180,180}; {255,228,228};--lightning lightest }; meterIcon = { {255,0,0}; --dark {255,69,69}; --medium {255,121,121}; --light }; hit = { {75,0,0};--inner frame 1 {148,0,0};--outer frame 1 {255,163,163};--innter frame 2 {176,223,228};--outer frame 2 {255,0,0};--frame 5 }; dust = {128,183,192}; mainUI = {0,75,88}; --UIcolor health = {0,216,255}; meterChunk = { {255,0,0}; --dark {255,69,69}; --medium {255,121,121}; --light }; trailSuper = { {255,0,0}; --black {255,255,255}; --white {255,121,121}; --other }; }; alt7 = { sprite = { {72,42,69};--suit {161,128,180};--tie {248,248,248};--skin {0,148,23};--dark hand outline {1,198,0};--medium hand outline {36,232,0};--bright hand outline {206,255,147};--bright hand fill {0,255,0};--hand trails }; effects = { {0,79,19};--lightning darkest {0,148,23}; {1,198,0}; {36,232,0}; {0,255,0}; {149,255,32}; {206,255,147};--lightning lightest }; meterIcon = { {53,136,0}; --dark {108,255,23}; --medium {208,255,147}; --light }; hit = { {0,79,19};--inner frame 1 {0,148,23};--outer frame 1 {149,255,32};--innter frame 2 {236,230,168};--outer frame 2 {1,198,0};--frame 5 }; dust = {171,43,200}; block = {171,43,200}; mainUI = {71,42,69}; health = {171,43,200}; meterChunk = { --meterOne {19,176,11}; --darkBlue {0,255,0}; --medium blue {144,255,96}; --lightest blue --meterTwo {108,255,94}; --darkblue {192,255,162}; --medium blue {240,255,236}; --lightest blue }; trailSuper = { {33,206,0}; --black {255,255,255}; --white {129,255,118}; --other }; }; alt8 = { sprite = { {136,53,83};--suit {255,124,254};--tie {248,248,248};--skin {0,91,90};--dark hand outline {0,131,132};--medium hand outline {0,171,160};--bright hand outline {205,236,255};--bright hand fill {0,220,161};--hand trails }; effects = { {0,60,65};--lightning darkest {0,91,90}; {0,131,132}; {0,171,160}; {0,220,161}; {141,224,255}; {205,236,255};--lightning lightest }; meterIcon = { {0,141,134}; --dark {0,220,161}; --medium {128,240,128}; --light }; hit = { {0,60,65};--inner frame 1 {0,91,90};--outer frame 1 {141,224,255};--innter frame 2 {236,168,195};--outer frame 2 {0,131,132};--frame 5 }; dust = {255,100,146}; mainUI = {149,0,52}; health = {255,100,146}; meterChunk = { --meterOne {0,151,155}; --darkBlue {0,221,180}; --medium blue {169,255,183}; --lightest blue --meterTwo {99,232,255}; --darkblue {164,251,255}; --medium blue {234,246,255}; --lightest blue }; trailSuper = { {0,178,129}; --black {255,255,255}; --white {159,255,180}; --other }; }; }; }; function Parker:initiate() self:_initiate() self.pushbackDustOffset = 0 self.requestHitSheet = "shock" self.hitLightSFX = "parkerLight" self.hitHeavySFX = "parkerHeavy" self.hitLowSFX = "parkerLow" self.hitSpecialSFX = "parkerSpecial" end function Parker:reset() self:_reset() self:resetMeter() self.neutralABRequirement = true end function Parker:resetMeter() self.meterChunkArray = {} -- self.meterAmount = 3 self.neutralABRequirement = true for i=1, 3 do self.meterChunkArray[i] = anim8.newAnimation(self.sprites.meterChunk.grid(repeatNum(2,1)), frameTime, 'pauseAtEnd') --6,1,1,2,2,2,3,2,4,2,5,1 end self.meterChunkArray[3].onLoop = function() -- self.meterFull = true self.meterChunkArray[3].onLoop = function() end end self:_resetMeter() self:fullMeter() self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(3,1)), frameTime, 'pauseAtEnd') end -- TODO: rename to drawMeter or make a drawOverEverything function Parker:meterAnimation() if not KILLSHADERS then love.graphics.setShader(self.shaders.meterIcon) end if self.player1 then self.meterAnimate:draw(self.sprites.meter.sheet, self.meterX, self.meterY + self.meterJitter, 0, gameLogicMult, gameLogicMult, 0, 0) if not KILLSHADERS then love.graphics.setShader(self.shaders.meterChunk) end for i=1, 3 do local d = i-1 self.meterChunkArray[i]:draw(self.sprites.meterChunk.sheet, (self.meterX + 122 - 48) - (d * 16), self.meterY + 12 + self.meterJitter, 0, gameLogicMult, gameLogicMult, 0, 0) end else self.meterAnimate:draw(self.sprites.meter.sheet, self.meterX, self.meterY + self.meterJitter, 0, -gameLogicMult, gameLogicMult, 0, 0) if not KILLSHADERS then love.graphics.setShader(self.shaders.meterChunk) end for i=1, 3 do local d = i-1 self.meterChunkArray[i]:draw(self.sprites.meterChunk.sheet, (self.meterX - 122 + 48) + (d * 16), self.meterY + 12 + self.meterJitter, 0, -gameLogicMult, gameLogicMult, 0, 0) end end love.graphics.setShader() end function Parker:changeMeter(amount) self.meterAmount = self.meterAmount + amount if amount > 0 then self.neutralABRequirement = true if self.meterAmount == 1 then self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(4,2,3,1)), frameTime, 'pauseAtEnd') else self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(3,1)), frameTime, 'pauseAtEnd') end -- if self.meterAmount == 2 or self.meterAmount >= 4 then -- self:executeSound('fullMeter', "sfx") -- self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(2,2,3,1)), frameTime, 'pauseAtEnd') -- end -- if self.meterAmount >= 2 then -- self.downBackABRequirement = true -- self.downForwardABRequirement = true -- end -- if self.meterAmount >= 4 then -- self.meterAmount = 4 -- self.meterJitter = 5 -- else -- self.meterJitter = 2 -- end else if self.meterAmount <= 0 then self.neutralABRequirement = false self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(1,1)), frameTime, 'pauseAtEnd') -- if self.meterAmount < 0 then self.meterAmount = 0 end -- self.downBackABRequirement = false -- self.downForwardABRequirement = false end self.meterChunkArray[self.meterAmount + 1] = anim8.newAnimation(self.sprites.meterChunk.grid(repeatNum(1,1,4,2,2,2,4,2,2,2,4,2,2,2)), frameTime, 'pauseAtEnd') self.meterJitter = 5 end end function Parker:fullMeter() if self.meterAmount < 3 then self.meterAmount = 0 self:changeMeter(3) end end