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