Hector.lua
From Pocket Rumble Wiki
hector.lua[edit]
Hector = { moves = { standA = { attackbox = {customEffect = "hitEffectSmall", pushback=189 * gameLogicMult, hitStun=12, width=17 * gameLogicMult, height=11 * gameLogicMult, dmg=1, relativeY=33 * gameLogicMult, explosionX = -2 * gameLogicMult, explosionY = 10 * gameLogicMult, priority = 4}; { frames = {1,1,8,2,2,1}; custom = function(self) self:executeSound('lightWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {3,2,4,2}; }; { type = "recovery"; frames = {5,2,6,1}; }; }; lowA = { attackbox = {customEffect = "hitEffectSmall", pushback=90 * gameLogicMult, hitStun=12, width=25 * gameLogicMult, height=36 * gameLogicMult, dmg=1, relativeY=0 * gameLogicMult, explosionX = -20, explosionY = 15}; { frames = {3,1,4,2,5,2}; custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {6,4}; }; { type = "recovery"; frames = {6,6,7,3,8,3,9,3}; }; }; lowB = { attackbox = {pushUp = -430,pushback=100 * gameLogicMult, hitStun=13, width=47 * gameLogicMult, height=14 * gameLogicMult, dmg=1, relativeY=22 * gameLogicMult, explosionX = -50, explosionY = -10, priority = 3, external = true}; { --pushUp = 300 frames = {1,4}; --1,2,2,2,3,1,4,1,5,1 custom = function(self) self:executeSound('heavyWhiff', {"sfx", "whiff"}) end }; { frames = {2,4}; custom = function(self) self:changeWidth(29) end }; { type = "active"; frames = {3,5}; --6,3,7,1 custom = function(self) self:executeEffect('lowBEffect') self:executeEffect('lowBEffectFront') self:executeEffect('lowBArm') end }; { type = "recovery"; frames = {3,7,4,2,5,1,7,1,9,1,11,1,13,1,15,1,17,1,19,7,20,2}; --25 }; { frames = {21,2}; --2 custom = function(self) self:changeWidth(19) end }; }; standB = { attackbox = {pushUp = 163 * gameLogicMult, pushback=45 * gameLogicMult, hitStun=18, width=35 * gameLogicMult, height=14 * gameLogicMult, relativeY = 16 * gameLogicMult, dmg=1, explosionX = -30, explosionY = 10, priority = 3, external = true}; { frames = {1,4,2,7}; custom = function(self) self:executeSound('heavyWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {3,6}; custom = function(self) self:changeWidth(32) self:executeEffect('standBEffect') end }; { type = "recovery"; frames ={3,3,4,3,5,3,6,3}; }; { frames = {7,2,8,7,9,3}; custom = function(self) self:changeWidth(19) end }; }; jumpA = { attackbox = {customEffect = "hitEffectSmall", pushback=145 * gameLogicMult, hitStun=14, width=38 * gameLogicMult, height=11 * gameLogicMult, dmg=1, relativeY=15 * gameLogicMult, explosionX = -10 * gameLogicMult, explosionY = 5 * gameLogicMult, priority = 4, ignoreCornerPush=true}; --hitstun=16,pushback=145 { frames = {1,3,2,3,3,2}; --{1,3,2,3,3,1} custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {4,2,5,1,4,1}; }; { type = "recovery"; frames = {4,1,12,3,13,3}; --2,4,1,16 }; endWith = function(self) self:executeAnimation("jumpUp", { frames={7,3,8,3,9,4,10,10}; }); end }; jumpB = { attackbox = {customEffect = "hitEffect2", pushback=44 * gameLogicMult, hitStun=22, width=45 * gameLogicMult, height=22 * gameLogicMult, dmg=1, relativeX= (-35 * gameLogicMult), relativeY=44 * gameLogicMult, explosionX = -48, explosionY = -60, priority = 3, ignoreCornerPush=true, external = true}; --pushback=66 * gameLogicMult hitstun=23 { --hitstun=22 frames = {1,5,2,5,3,1}; --11 custom = function(self) self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { type = "active"; frames = {4,7}; --7 custom = function(self) self:executeEffect('jumpBEffect') end }; { type = "recovery"; frames = {5,2,6,2,7,2,8,1}; --7 }; endWith = function(self) self:executeAnimation("jumpB", { { frames={8,99}; }; } ); end }; downForwardA = { { frames = {4,1,5,1,6,1}; custom = function(self) self:executeSound('naomiHands', {"sfx"}) if self.health == 0 then self:executeAnimation("chipDeath") end end; }; { frames = {8,1,9,1,10,1}; custom = function(self) --self:executeSound('naomiHands', {"sfx"}) end; }; { frames = {12,1,13,1,14,1}; custom = function(self) self:executeSound('naomiHands', {"sfx"}) end; }; { type = "recovery"; frames = {15,2,16,1}; custom = function(self) if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self:executeProjectile("downForwardAProjectile") self:executeEffect("sparkDownForwardA") end }; { frames = {16,2}; custom = function(self) self.invulnerability = false end }; { type="recovery"; frames = {16,7,17,3}; --1,30 custom = function(self) if rootState.infiniteHealth then self:returnHealth() end end }; }; downBackA = { attackType = attackTypes.high; attackbox = {customEffect = "hitEffect2", external=true,pushUp=-200*gameLogicMult,pushback=50 * gameLogicMult, hitStun=12, width=50 * gameLogicMult, height=40 * gameLogicMult, relativeY = 0 * gameLogicMult, dmg=1, explosionX = -8 * gameLogicMult, explosionY = -10 * gameLogicMult, priority = 2}; { frames = {1,2,2,1,3,2,4,2}; --17 custom = function(self) self:executeSound('jump', {"sfx", "whiff"}) -- self:setDust(-40) --0 self:stopTrails() self.throwInvuln = true if self.health == 0 then self:executeAnimation("chipDeath") end end }; { frames = {5,2}; --this is where going up and down can happen custom = function(self) self.ySpeed = -1000 end }; { frames = {6,2}; --this is where going up and down can happen custom = function(self) self.ySpeed = -500 end }; { frames = {7,2}; --this is where going up and down can happen custom = function(self) self.ySpeed = 0 self:executeSound('mediumWhiff', {"sfx", "whiff"}) end }; { frames = {8,2}; --this is where going up and down can happen custom = function(self) self.ySpeed = 500 end }; { frames = {10,2}; --this is where going up and down can happen custom = function(self) self.ySpeed = 1000 end }; { type="active"; frames = {11,2}; custom = function(self) self:executeSound('knockdown', {"sfx"}) -- self:changeSpeed(600,27) --375,27 if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self.attackbox.exists = true self.attacking = true self:executeEffect("downBackAEffect") end }; -- { -- frames = {7,3,8,2}; -- custom = function(self) -- TEsound.stop("whiff") -- self:executeSound('heavyRush', {"sfx", "whiff"}) -- self.attackbox.exists = false -- self.attacking = true -- self:changeSpeed(400,27) -- end -- }; -- { -- frames = {9,2}; -- custom = function(self) -- self.attackbox.pushUp = -200 * gameLogicMult -- self.attackbox.exists = true -- self.attacking = true -- end -- }; { type="recovery"; frames = {12,2,13,9,14,3,15,2,16,2}; --18 custom = function(self) self.throwInvuln = false if rootState.infiniteHealth then self:returnHealth() end end; }; }; downForwardB = { attackType = attackTypes.low; attackbox = {external=true,pushUp = 180 * gameLogicMult,pushback=110 * gameLogicMult, hitStun=8, width=40 * gameLogicMult, height=15 * gameLogicMult, relativeY = 26 * gameLogicMult, dmg=1, explosionX = 0 * gameLogicMult, explosionY = -2 * gameLogicMult, priority = 2}; { frames = {2,3,3,3,4,2}; --12 custom = function(self) self:executeSound('antlerCharge', {"sfx", "whiff"}) self:setDust(-40) --0 self:changeSpeed(600,27) --375,27 if self.health == 0 then self:executeAnimation("chipDeath") end self:stopTrails() end }; { frames = {7,2,8,2}; --12 custom = function(self) self:executeSound('antlerAir', {"sfx", "whiff"}) end }; { type="active"; frames = {9,4}; custom = function(self) self:executeEffect("lowSlashEffect") if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self.attackbox.exists = true self.attacking = true end }; -- { -- frames = {7,1,8,2}; -- custom = function(self) -- TEsound.stop("whiff") -- self:executeSound('heavyRush', {"sfx", "whiff"}) -- self.attackbox.exists = false -- self.attacking = true -- end -- }; -- { -- frames = {9,2}; -- custom = function(self) -- self.attackbox.relativeY = 8 * gameLogicMult -- self.attackbox.width=25 * gameLogicMult -- self.attackbox.pushUp = 200 * gameLogicMult -- self.attackbox.exists = true -- self.attacking = true -- end -- }; { type="recovery"; frames = {10,4,11,2,12,2,13,2}; --12 custom = function(self) if rootState.infiniteHealth then self:returnHealth() end end; }; }; downBackB = { attackbox = {customEffect = "hitEffect3", external=true,forceForward = true, pushback=60 * gameLogicMult, hitStun=15, width=50, height=40, dmg=1, priority=1, explosionX= -30, explosionY= 30, relativeY = 0 * gameLogicMult}; { frames = {1,1,2,2,3,2}; custom = function(self) self:executeSound('antlerAir', {"sfx"}) self.invulnerability = true if self.health == 0 then self:executeAnimation("chipDeath") self.invulnerability = false end end }; { type = "active"; frames = {4,2,5,1}; custom = function(self) if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self.attackbox.exists = true self.attackbox.pushUp = 250 * gameLogicMult self.attackbox.pushback = 50 * gameLogicMult self.attackbox.relativeY = -36 * gameLogicMult self.attackbox.relativeX = -20 * gameLogicMult self.attackbox.height = self.attackbox.height + self.height - 20 self.attackbox.width = 60 * gameLogicMult self:executeEffect("downBackBEffect") end }; { frames = {5,2}; custom = function(self) self.invulnerability = false end }; { type="recovery"; frames = {6,2}; --1,30 }; { frames = {7,2,8,11,9,3,10,3}; custom = function(self) self:executeSound('naomiHands', {"sfx"}) self:executeEffect("sparkDownBackB") if rootState.infiniteHealth then self:returnHealth() end end }; }; neutralAB = { frameData = {{type="startup", frameCount=19}, {type="recovery", frameCount=19}}; -- attackbox = {onlyKnockdown = true, pushUp = 20 * gameLogicMult, pushback = 100 * gameLogicMult, width=20 * gameLogicMult, height=20 * gameLogicMult, dmg=1, relativeX=0, relativeY = (12 * gameLogicMult), -- relativeY=20 * gameLogicMult, priority = 3, special = true}; { frames = {1,4,2,3,3,3,4,3,5,3,6,3};--17 custom = function(self) self:executeSound('tenchiSuperRumble', {"sfx", "turd", "whiff"}) -- self:changeMeter(1) end; }; { type = "recovery"; frames = {7,3,8,3,9,3,10,3,11,3,12,3,13,3}; custom = function(self) if self.meterAmount > 0 then self:changeHealth(-self.meterAmount, true) end self:changeMeter(-self.meterAmount) self.invulnerability = true self.ignoreInvulnOutline = true self.requestSS = true TEsound.stop("turd") self:executeSound('parryWhiff', {"sfx"}) self:executeSound('rush', {"sfx"}) end; }; { frames = {14,4,15,3,16,3,17,3,18,3,19,3}; --25 custom = function(self) self:superStopContinue() self.invulnerability = false self.ignoreInvulnOutline = false end }; }; dashForward = { spriteName = "dash"; special=true; attackbox = {external=true,pushUp = 100 * gameLogicMult, pushback=60 * gameLogicMult, hitStun=12, width=80 * gameLogicMult, height=10 * gameLogicMult, relativeX = -85 * gameLogicMult, relativeY = 20 * gameLogicMult, dmg=1, explosionX = -100 * gameLogicMult, explosionY = 0 * gameLogicMult, priority = 2, forceFlip = true}; { frames = {14,1,2,1}; custom = function(self) self:executeSound('launch', {"sfx"}) self.ignoreCollision = true end }; { frames = {3,2,4,2,5,2}; custom = function(self) self:changeSpeed(1700) end }; { frames = {6,1,7,1,8,1,9,1,10,1}; --6,1,7,1,8,1,9,1,10,1 custom = function(self) self:changeSpeed(0) self:executeSound('naomiHands', {"sfx"}) self.x = self.x + (8 * self.flip) self.ignoreCollision = false end }; { type="active"; frames = {11,1}; custom = function(self) if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self:executeEffect("spark") self:executeEffect("downForwardBEffect") end }; { type="active"; frames = {11,5,11,2}; custom = function(self) end }; { type="recovery"; frames = {11,7,11,5,12,5}; --11,3,12,4,14,4 custom = function(self) if rootState.infiniteHealth then self:returnHealth() end end }; { custom = function(self) if (self.enemy.x + self.enemy.width/2 > self.x + self.width/2) then self.flip = 1 self.faceRight = true else self.flip = -1 self.faceRight = false end end }; }; dashBack = { attackbox = {customEffect = "hitEffect4", external=true,pushUp = 227 * gameLogicMult, pushback=60 * gameLogicMult, hitStun=12, width=45 * gameLogicMult, height=10 * gameLogicMult, relativeX = 0 * gameLogicMult, relativeY = 20 * gameLogicMult, dmg=1, explosionX = 1 * gameLogicMult, explosionY = -2 * gameLogicMult, priority = 2}; special=true; { frames = {1,2}; custom = function(self) self.flip = self.flip self:executeSound('naomiHands', {"sfx"}) self.ignoreCollision = true self.invulnerability = true end }; { frames = {2,2,4,2,5,2}; custom = function(self) self:changeSpeed(-800) end }; { frames = {7,1,9,1,10,1}; --6,1,7,1,8,1,9,1,10,1 custom = function(self) self:changeSpeed(0) self.invulnerability = false self.x = self.x + (8 * self.flip) self.ignoreCollision = false end }; { type="active"; frames = {11,2}; custom = function(self) if self.health > 1 then self:changeHealth(1) self:changeMeter(1) end self:executeEffect("dashBackSpark") self:executeEffect("dashBackEffect") end }; { type="active"; frames = {11,5}; custom = function(self) end }; { type="recovery"; frames = {11,4,12,3}; --11,16,12,3 custom = function(self) if rootState.infiniteHealth then self:returnHealth() end end }; { custom = function(self) if (self.enemy.x + self.enemy.width/2 > self.x + self.width/2) then self.flip = 1 self.faceRight = true else self.flip = -1 self.faceRight = false end end }; }; }; throw = { enemyFrames = { {5,28,-11}, --f1 {6,25,-11}, --f2 {7,21,-11}, --f3 {7,19,-11}, --f4 {1,25,-14}, --f5 {2,24,-15}, --f6 {1,25,-14}, --f7 {5,28,-11}, --f8 {17,28,-7}, --f9 {18,27,-7}, --f10 {19,25,-8}, --f11 {0,0,0}, --f12 {0,0,0}, --f13 {0,0,0}, --f14 {0,0,0}, --f15 {5,27,-11}, --f16 {17,27,-7}, --f17 {18,26,-7}, --f18 {19,13,-8}, --f19 {19,-4,-8}, --f20 {5,-30,-11}, --f21 {0,0,0}, --f22 {0,0,0}, --f23 {0,0,0}, --f24 }; start = { {frames = {1,3,2,3,3,3,4,3,5,2}}; --5,2,6,4 --1,4,2,4,3,4,4,2,5,1,6,1 { frames = {6,3,7,3}; --8,4,9,4,10,4,11,4 custom = function(self) self:executeSound('lowAttack', {"sfx"}) self:throwHitstop(6, 38, 34) cameraJitterX = 2 self.combo = self.combo + 1 self.enemy:changeHealth(1) end }; }; forward = { { frames = {8,3,9,3,10,3,11,2}; --11,4,13,2,14,2,15,2 data = {dmg = 1, hitstop = 9, explosionX= 101, explosionY = 101, changeLocation = 90, changeSpeed = 350, changeYSpeed = -600}; }; { frames = {12,3,13,3,14,3}; custom = function(self) self:executeSound('heavyAttack', {"sfx"}) self.combo = self.combo + 1 self.enemy:changeHealth(1) self:throwHitstop(8, 38, 34) cameraJitterX = 2 self.enemy:changeLocation(30) self.enemy:changeSpeed(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 = {16,3,17,3,18,3}; --21,4,22,4,23,4 data = {dmg = 1, changeLocation = 10, changeSpeed = 500, changeYSpeed = -600}; }; { frames = {19,3,20,3,21,2}; custom = function(self) self:reverseDrawOrder() self:changeSpeed(700, 50) self:executeSound('grab', "sfx") -- self:changeLocation(22) end }; { frames = {22,2,23,2,24,2}; custom = function(self) -- self:changeLocation(22) self.combo = self.combo + 1 self.enemy:changeHealth(1) self.enemy:changeSpeed(-200) self.enemy.ySpeed = -190 self.enemy.y = self.enemy.y + 20 self.enemy.ignoreGravity = false self.ignoreCollision = false self.enemy:knockFall() self.enemy.animation:gotoFrame(5) self.faceRight = not self.faceRight self.ignoreFloor = false self.enemy.ignoreFloor = false end }; }; }; animations = { idle = { frames = {1,4,2,4,3,4,4,4,5,4,6,42,7,6,8,6,9,4,10,4,11,4,12,30}; }; turn = { frames = {1,4}; }; crouchTransition = { frames = {1,3}; }; crouch = { frames = {1,4,2,3,3,37,4,3,5,4,6,4,7,4,8,4,9,4,10,27,11,4,12,4,13,4,14,4}; }; crouchTurn = { frames = {1,4}; }; standTransition = { spriteName = "crouchTransition"; frames = {1,3}; custom = function(self) self.yOffset = -4 end }; walkForward = { frames = {1,5,2,3,3,3,4,5,5,3,7,5,8,5,9,8,10,5}; }; walkBack = { spriteName = "walkForward"; { frames = {1,5,2,3,3,3,4,5,5,3,7,5,8,5,9,8,10,5}; }; }; jumpUp = { frames={2,3,3,6,4,3,5,3,6,10,7,3,8,3,9,4,10,10}; endWith = "nothing"; }; jumpForward = { spriteName = "jumpUp"; frames={2,3,3,6,4,3,5,3,6,10,7,3,8,3,9,4,10,10}; endWith = "nothing"; }; jumpBack = { spriteName = "jumpUp"; frames={2,3,3,6,4,3,5,3,6,10,7,3,8,3,9,4,10,10}; endWith = "nothing"; }; land = { spriteName = "jumpUp"; frames = {11,4}; }; airHurt = { endWith = "nothing"; { frames = {1,1,2,3,3,4}; }; { spriteName = "jumpUp"; frames = {8,4,9,4,10,99}; }; }; 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 }; }; 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,3,2,3,3,3,4,3,5,3,6,3}; }; impact = { spriteName = "knockdown"; frames = {7,3} }; startGroundBounce = { spriteName = "knockdown"; frames = {8,3,9,3,10,4,11,3} }; stopGroundBounce = { spriteName = "knockdown"; frames = {12,2,13,10} }; wakeup = { spriteName = "knockdown"; frames = {14,5,15,5} }; death = { spriteName = "knockdown"; endWith = "nothing"; frames = {13,1} }; yay = { frames = {1,16,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,7,19,7,20,7,21,7}; endWith = function(self) self:executeAnimation("yayLoop") end }; yayLoop = { spriteName = "yay"; frames = {22,7,23,7,24,7,25,7,26,7,27,7}; }; win = { spriteName = "yay"; { frames = {2,3,3,3,4,3,5,3,6,3}; }; { frames = {7,3,8,3,9,3}; custom = function(self) self:executeSound("naomiHands", {"sfx"}) end }; { frames = {10,3,11,3,12,3}; custom = function(self) self:executeSound("naomiHands", {"sfx"}) end; }; { frames = {13,3,14,3,15,3,16,3,17,3,18,7,19,7,20,7,21,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7, 22,7,23,7,24,7,25,7,26,7,27,7}; custom = function(self) self:executeSound("naomiHands", {"sfx"}) end; }; }; boo = { frames = {1,16,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,3,22,3,23,3,24,3,25,3,26,3,27,3,28,3}; endWith = function(self) self:executeAnimation("booLoop") end }; booLoop = { spriteName = "boo"; frames = {29,12,30,9,31,12,32,9,33,9}; }; }; effects = { hitEffect = { frames = {3,1,4,1,5,1,6,2,7,1,8,2,9,1,10,1}; --1,1,2,1,3,2,4,3,5,2 }; hitEffect2 = { layer = "hit"; frames = {3,1,4,1,5,1,6,2,7,1,8,2,9,1,10,1}; --1,1,2,1,3,2,4,3,5,2 }; hitEffect3 = { layer = "hit"; frames = {3,1,4,1,5,1,6,2,7,1,8,2,9,1,10,1}; --1,1,2,1,3,2,4,3,5,2 }; hitEffect4 = { layer = "hit"; frames = {3,1,4,1,5,1,6,2,7,1,8,2,9,1,10,1}; --1,1,2,1,3,2,4,3,5,2 }; hitEffectSmall = { layer = "hit"; frames = {3,1,4,1,5,1,6,1,7,1,9,1,10,1}; --1,1,2,1,3,2,4,3,5,2 }; spark = { frames = {1,2,2,2,3,2,4,2,5,2,6,2}; relativeX = -23; relativeY = 17; }; sparkDownForwardA = { frames = {1,2,2,2,3,2,4,2,5,2,6,2}; spriteName = "spark"; relativeX = -40; relativeY = 12; }; sparkDownBackB = { frames = {1,2,2,2,3,2,4,2,5,2,6,2}; spriteName = "spark"; relativeX = -30; relativeY = 6; layer = "bottom"; }; downForwardBEffect = { frames = {1,1,2,1,3,1,4,1,5,1,6,2,7,2,8,2,9,1}; relativeX = -150; relativeY = 10; }; downBackBEffect = { frames = {2,2,3,2,4,2,5,2,6,2,7,2}; relativeX = -32 * gameLogicMult; relativeY = -37 * gameLogicMult; }; downForwardAProjectile = { frames = {1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,-1,2}; relativeX = -4; relativeY = 0; }; lowBEffect = { frames = {1,3,2,2,3,1,4,1,5,1,6,1}; relativeX = -17 * gameLogicMult; relativeY = -1 * gameLogicMult; followPlayer = true; destroyWhenPlayerHurt = true; layer = "bottom"; }; lowBEffectFront = { frames = {1,3,2,2,3,1}; relativeX = -17 * gameLogicMult; relativeY = -1 * gameLogicMult; followPlayer = true; destroyWhenPlayerHurt = true; }; lowBArm = { frames = {1,13}; relativeX = -17 * gameLogicMult; relativeY = -10 * gameLogicMult; followPlayer = true; destroyWhenPlayerHurt = true; layer = "bottom"; destroyWhenPlayerCancel = true; ignoreHitstop = false; }; jumpBEffect = { frames = {1,3,2,2,3,1,4,1,5,1}; relativeX = -16 * gameLogicMult; relativeY = -11 * gameLogicMult; destroyWhenPlayerHurt = true; followPlayer = true; destroyWhenPlayerLand = true; }; standBEffect = { frames = {1,3,2,2,3,2,4,2,5,1}; relativeX = -14 * gameLogicMult; relativeY = -2 * gameLogicMult; destroyWhenPlayerHurt = true; followPlayer = true; destroyWhenPlayerLand = true; }; dashBackSpark = { spriteName = "spark"; frames = {1,2,2,2,3,2,4,2,5,2,6,2}; relativeX = -30; relativeY = 17; }; dashBackEffect = { frames = {1,1,2,1,3,1,4,1,5,1,6,2,7,2,8,2,9,1}; relativeX = -30; relativeY = 10; }; lowSlashEffect = { frames = {1,2,2,2,3,2,4,2,5,2,6,2}; relativeX = -2 * gameLogicMult; relativeY = 20 * gameLogicMult; }; downBackAEffect = { frames = {1,2,2,2,3,2,4,2,5,2}; relativeX = -15 * gameLogicMult; relativeY = -18 * gameLogicMult; destroyWhenPlayerHurt = true; followPlayer = true; }; }; nameplate = { endWith = "nothing"; frames = {1,6,2,2,3,2,4,2,5,6,6,2,7,2,8,2,9,6,10,2,11,2,12,2,13,6,14,2,15,2,16,3,17,3,18,3,19,3,20,3,21,3,22,3,23,3,24,3}; custom = function(self, host) if host.player1 == true then host:executeSound("nameplate", {"sfx", "nameplate1"}, -1) else host:executeSound("nameplate", {"sfx", "nameplate2"}, 1) end end; }; projectiles = { downForwardAProjectile = { relativeX = 27*gameLogicMult; relativeY = 0 *gameLogicMult; hitStun = 16; pushback = 50; explosionX = -30 * gameLogicMult; width = 36 * gameLogicMult; height = 35 * gameLogicMult; hitstop = 10; priority = 2; stayOnScreen = true; dontKillEffect = true; lifetime = 10; }; }; colors = { default = { sprite = { {248,244,64}; --main yellow {255,30,106}; --sword main trail {255,154,182}; --sword light color {193,0,67}; --sword outline }; effects = { {255,30,106}; --sword main trail {255,154,182}; --sword light color {193,0,67}; --sword outline }; hit = {255,255,0}; meterIcon = { {255,30,106}; -- main {149,0,52}; --shadow {255,154,182}; -- lit main }; --generalAssets dust = {255,255,0}; block = {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 }; }; alt1 = { sprite = { {249,60,60}; --main yellow {0,99,231}; --sword main trail {67,214,247}; --sword light color {20,0,193}; --sword outline }; effects = { {0,99,231}; --sword main trail {67,214,247}; --sword light color {20,0,193}; --sword outline }; hit = {255,0,0}; meterIcon = { {67,214,247}; -- main {0,99,231}; --shadow {194,242,255}; -- lit main }; --generalAssets dust = {255,64,64}; mainUI = {113, 0, 0}; health = {255,0,0}; meterChunk = { --meterOne {16,143,255}; --darkBlue {64,174,255}; --medium blue {131,221,251}; --lightest blue --meterTwo {99,187,255}; --darkblue {164,216,255}; --medium blue {233,236,255}; --lightest blue }; }; alt2 = { sprite = { {240,149,68}; --main yellow {255,255,0}; --sword main trail {247,255,122}; --sword light color {184,180,0}; --sword outline }; effects = { {255,255,0}; --sword main trail {247,255,122}; --sword light color {184,180,0}; --sword outline }; hit = {255,74,0}; meterIcon = { {255,255,0}; -- main {153,149,0}; --shadow {255,255,165}; -- lit main }; --generalAssets dust = {255,164,42}; mainUI = {187, 72, 0}; health = {255,102,7}; meterChunk = { --meterOne {215,191,0}; --darkGreen {246,255,109}; --mediumGreen {255,255,255}; --lightestGreen --meterTwo {254,255,96}; --darkGreen {249,255,174}; --mediumGreen {255,255,255}; --lightestGreen }; }; alt4 = { sprite = { {130,198,0}; --main yellow {153,85,193}; --sword main trail {233,154,255}; --sword light color {59,25,55}; --sword outline }; effects = { {153,85,193}; --sword main trail {233,154,255}; --sword light color {59,25,55}; --sword outline }; hit = {0,255,0}; meterIcon = { {153,85,193}; -- main {107,0,149}; --shadow {234,212,243}; -- lit main }; --generalAssets dust = {0,255,0}; block = {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 }; }; alt5 = { sprite = { {81,173,199}; --main yellow {255,0,0}; --sword main trail {255,154,154}; --sword light color {193,0,0}; --sword outline }; effects = { {255,0,0}; --sword main trail {255,154,154}; --sword light color {193,0,0}; --sword outline }; hit = {0,216,255}; meterIcon = { {255,0,0}; -- main {149,0,0}; --shadow {255,154,154}; -- lit main }; --generalAssets dust = {128,183,192}; mainUI = {0,75,88}; --UIcolor health = {0,216,255}; meterChunk = { --meterOne {255,0,0}; --dark {255,69,69}; --medium {255,121,121}; --light --meterTwo {255,121,121}; --darkGreen {255,180,180}; --mediumGreen {255,228,228}; --lightestGreen }; }; alt6 = { sprite = { {155,155,167}; --main yellow {240,128,240}; --sword main trail {255,199,247}; --sword light color {191,87,199}; --sword outline }; effects = { {240,128,240}; --sword main trail {255,199,247}; --sword light color {191,87,199}; --sword outline }; hit = {162,162,206}; meterIcon = { {240,128,240}; -- main {148,0,247}; --shadow {255,204,255}; -- lit main }; --generalAssets dust = {155,155,167}; mainUI = {64,64,64}; --UIcolor health = {155,155,167}; 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 }; }; alt7 = { sprite = { {125,72,123}; --main yellow {0,255,0}; --sword main trail {149,255,32}; --sword light color {0,133,0}; --sword outline }; effects = { {0,255,0}; --sword main trail {149,255,32}; --sword light color {0,133,0}; --sword outline }; hit = {212,0,211}; meterIcon = { {0,255,0}; -- main {0,133,0}; --shadow {184,255,105}; -- lit main }; --generalAssets dust = {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 }; }; alt8 = { sprite = { {255,151,255}; --main yellow {0,220,161}; --sword main trail {154,234,255}; --sword light color {0,150,193}; --sword outline }; effects = { {0,220,161}; --sword main trail {154,234,255}; --sword light color {0,150,193}; --sword outline }; hit = {255,43,106}; meterIcon = { {0,221,155}; -- main {0,102,82}; --shadow {169,255,173}; -- lit main }; --generalAssets 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 }; }; }; }; function Hector:controlUpdate(left, right, up, down, buttonA, buttonB, tapA, tapB, specialA, specialB) self:_controlUpdate(left, right, up, down, buttonA, buttonB, tapA, tapB, specialA, specialB) end function Hector:meterAnimation() love.graphics.setShader(self.shaders.meterIcon) if self.player1 then self.meterAnimate:draw(self.sprites.meter.sheet, self.meterX, self.meterY + self.meterJitter, 0, gameLogicMult, gameLogicMult, 0, 0) love.graphics.setShader(self.shaders.meterChunk) for i=1, 4 do local d = i-1 self.meterChunkArray[i]:draw(self.sprites.meterChunk.sheet, (self.meterX + 148 - 48 - 24 + 16) - (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) love.graphics.setShader(self.shaders.meterChunk) for i=1, 4 do local d = i-1 self.meterChunkArray[i]:draw(self.sprites.meterChunk.sheet, (self.meterX - 148 + 48 + 24 - 16) + (d * 16), self.meterY + 12 + self.meterJitter, 0, -gameLogicMult, gameLogicMult, 0, 0) end end love.graphics.setShader() end -- function Hector:superStopUpdate(dt) -- self.miscTimer = self.miscTimer - 1 -- if self.miscTimer == 0 then -- self:superStopContinue() -- self.enemy.blockHigh = false -- self.enemy.blockLow = false -- self.enemy:normalHit(self.attackbox) -- end -- end function Hector:initiate() self:_initiate() self.hitLightSFX = "lightAttack" self.hitHeavySFX = "heavyAttack" self.hitLowSFX = "lowAttack" self.hitSpecialSFX = "special" end function Hector:changeMeter(amount) self.meterAmount = self.meterAmount + amount if amount > 0 then self.neutralABRequirement = true if amount ~= 4 then self:setFlicker(self.colors["alt" .. self.colorNum].meterIcon[1][1]*255,self.colors["alt" .. self.colorNum].meterIcon[1][2]*255,self.colors["alt" .. self.colorNum].meterIcon[1][3]*255,3, true) end if self.meterAmount == 1 then if self.playerNum == 1 then self:executeSound('fullMeter', "sfx", -1) else self:executeSound('fullMeter', "sfx", 1) end self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(2,2,3,1)), frameTime, 'pauseAtEnd') end if self.meterAmount >= 4 then self.meterJitter = 5 self.meterAmount = 4 else self.meterJitter = 2 end else if self.meterAmount == 0 then self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(1,1)), frameTime, 'pauseAtEnd') if self.meterAmount < 0 then self.meterAmount = 0 end self.neutralABRequirement = false end for i=1,4 do self.meterChunkArray[i] = anim8.newAnimation(self.sprites.meterChunk.grid(repeatNum(1,1,4,2,2,2,4,2,2,2,4,2,2,2)), frameTime, 'pauseAtEnd') end self.meterJitter = 5 end end function Hector:resetMeter() self.meterChunkArray = {} -- self.meterAmount = 3 for i=1, 4 do self.meterChunkArray[i] = anim8.newAnimation(self.sprites.meterChunk.grid(repeatNum(1,1,4,2,2,2,4,2,2,2,4,2,2,2)), 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(1,1)), frameTime, 'pauseAtEnd') end function Hector:reset() self:_reset() end function Hector:fullMeter() if self.meterAmount < 4 then self.meterAmount = 0 self.meterAnimate = anim8.newAnimation(self.sprites.meter.grid(repeatNum(3,1)), frameTime, 'pauseAtEnd') self:changeMeter(4) end end