1squid = class:new() 2 3function squid:init(x, y, color) 4 self.x = x-1+2/16 5 self.y = y-1+4/16 6 self.width = 12/16 7 self.height = 12/16 8 self.rotation = 0 --for portals 9 10 self.speedy = 0 11 self.speedx = 0 12 13 self.active = true 14 self.static = false 15 self.autodelete = true 16 self.gravity = 0 17 self.category = 30 18 19 --IMAGE STUFF 20 self.drawable = true 21 self.graphic = squidimg 22 self.quad = squidquad[1] 23 self.offsetX = 6 24 self.offsetY = 3 25 self.quadcenterX = 8 26 self.quadcenterY = 8 27 28 self.mask = { true, 29 true, false, true, true, true, 30 true, true, true, true, true, 31 true, false, true, true, true, 32 true, true, true, true, true, 33 true, true, true, true, true, 34 true, true, true, true, true} 35 36 self.direction = "left" 37 38 self.timer = 0 39 self.state = "idle" 40 41 self.shot = false 42end 43 44function squid:update(dt) 45 --rotate back to 0 (portals) 46 if self.rotation > 0 then 47 self.rotation = self.rotation - portalrotationalignmentspeed*dt 48 if self.rotation < 0 then 49 self.rotation = 0 50 end 51 elseif self.rotation < 0 then 52 self.rotation = self.rotation + portalrotationalignmentspeed*dt 53 if self.rotation > 0 then 54 self.rotation = 0 55 end 56 end 57 58 if self.shot then 59 self.speedy = self.speedy + shotgravity*dt 60 61 self.x = self.x+self.speedx*dt 62 self.y = self.y+self.speedy*dt 63 64 return false 65 66 else 67 --get nearest player 68 closestplayer = 1 69 for i = 2, players do 70 local v = objects["player"][i] 71 if math.abs(self.x - v.x) < math.abs(self.x - objects["player"][closestplayer].x) then 72 closestplayer = i 73 end 74 end 75 76 if self.state == "idle" then 77 self.speedy = squidfallspeed 78 79 --get if change state to upward 80 if (self.y+self.speedy*dt) + self.height + 0.0625 >= (objects["player"][closestplayer].y - (24/16 - objects["player"][closestplayer].height)) then 81 self.state = "upward" 82 self.upx = self.x 83 self.speedx = 0 84 self.speedy = 0 85 86 --get if to change direction 87 if true then--math.random(2) == 1 then 88 if self.direction == "right" then 89 if self.x > objects["player"][closestplayer].x then 90 self.direction = "left" 91 end 92 else 93 if self.x < objects["player"][closestplayer].x then 94 self.direction = "right" 95 end 96 end 97 end 98 end 99 100 elseif self.state == "upward" then 101 if self.direction == "right" then 102 self.speedx = self.speedx + squidacceleration*dt 103 if self.speedx > squidxspeed then 104 self.speedx = squidxspeed 105 end 106 else 107 self.speedx = self.speedx - squidacceleration*dt 108 if self.speedx < -squidxspeed then 109 self.speedx = -squidxspeed 110 end 111 end 112 113 self.speedy = self.speedy - squidacceleration*dt 114 115 if self.speedy < -squidupspeed then 116 self.speedy = -squidupspeed 117 end 118 119 if math.abs(self.x - self.upx) >= 2 then 120 self.state = "downward" 121 self.quad = squidquad[2] 122 self.downy = self.y 123 self.speedx = 0 124 end 125 126 elseif self.state == "downward" then 127 self.speedy = squidfallspeed 128 if self.y > self.downy + squiddowndistance then 129 self.state = "idle" 130 self.quad = squidquad[1] 131 end 132 end 133 134 self.x = self.x+self.speedx*dt 135 self.y = self.y+self.speedy*dt 136 137 return false 138 end 139end 140 141function squid:shotted(dir) --fireball, star, turtle 142 playsound(shotsound) 143 self.shot = true 144 self.active = false 145 self.gravity = shotgravity 146 self.speedy = -shotjumpforce 147 self.direction = dir or "right" 148 if self.direction == "left" then 149 self.speedx = -shotspeedx 150 else 151 self.speedx = shotspeedx 152 end 153end 154 155function squid:rightcollide(a, b) 156 if self:globalcollide() then 157 return false 158 end 159 160end 161 162function squid:leftcollide(a, b) 163 if self:globalcollide() then 164 return false 165 end 166 167end 168 169function squid:ceilcollide(a, b) 170 if self:globalcollide() then 171 return false 172 end 173 174end 175 176function squid:floorcollide(a, b) 177 if self:globalcollide() then 178 return false 179 end 180 181end 182 183function squid:globalcollide(a, b) 184 return true 185end