diff --git a/assets/characters/decoration/candelabra1.png b/assets/entities/decoration/candelabra1.png similarity index 100% rename from assets/characters/decoration/candelabra1.png rename to assets/entities/decoration/candelabra1.png diff --git a/assets/characters/decoration/candelabra2.png b/assets/entities/decoration/candelabra2.png similarity index 100% rename from assets/characters/decoration/candelabra2.png rename to assets/entities/decoration/candelabra2.png diff --git a/assets/characters/decoration/candelabra3.png b/assets/entities/decoration/candelabra3.png similarity index 100% rename from assets/characters/decoration/candelabra3.png rename to assets/entities/decoration/candelabra3.png diff --git a/assets/characters/decoration/candelabra4.png b/assets/entities/decoration/candelabra4.png similarity index 100% rename from assets/characters/decoration/candelabra4.png rename to assets/entities/decoration/candelabra4.png diff --git a/assets/characters/decoration/candelabra5.png b/assets/entities/decoration/candelabra5.png similarity index 100% rename from assets/characters/decoration/candelabra5.png rename to assets/entities/decoration/candelabra5.png diff --git a/assets/characters/decoration/candelabra6.png b/assets/entities/decoration/candelabra6.png similarity index 100% rename from assets/characters/decoration/candelabra6.png rename to assets/entities/decoration/candelabra6.png diff --git a/assets/characters/decoration/candelabra7.png b/assets/entities/decoration/candelabra7.png similarity index 100% rename from assets/characters/decoration/candelabra7.png rename to assets/entities/decoration/candelabra7.png diff --git a/assets/characters/decoration/candelabra8.png b/assets/entities/decoration/candelabra8.png similarity index 100% rename from assets/characters/decoration/candelabra8.png rename to assets/entities/decoration/candelabra8.png diff --git a/assets/characters/fairy/flying1.png b/assets/entities/fairy/flying1.png similarity index 100% rename from assets/characters/fairy/flying1.png rename to assets/entities/fairy/flying1.png diff --git a/assets/characters/fairy/flying2.png b/assets/entities/fairy/flying2.png similarity index 100% rename from assets/characters/fairy/flying2.png rename to assets/entities/fairy/flying2.png diff --git a/assets/characters/kupo/kupo.ase b/assets/entities/kupo/kupo.ase similarity index 100% rename from assets/characters/kupo/kupo.ase rename to assets/entities/kupo/kupo.ase diff --git a/assets/characters/kupo/kupo1.png b/assets/entities/kupo/kupo1.png similarity index 100% rename from assets/characters/kupo/kupo1.png rename to assets/entities/kupo/kupo1.png diff --git a/assets/characters/kupo/kupo2.png b/assets/entities/kupo/kupo2.png similarity index 100% rename from assets/characters/kupo/kupo2.png rename to assets/entities/kupo/kupo2.png diff --git a/assets/characters/kupo/kupo3.png b/assets/entities/kupo/kupo3.png similarity index 100% rename from assets/characters/kupo/kupo3.png rename to assets/entities/kupo/kupo3.png diff --git a/assets/characters/kupo/kupo4.png b/assets/entities/kupo/kupo4.png similarity index 100% rename from assets/characters/kupo/kupo4.png rename to assets/entities/kupo/kupo4.png diff --git a/assets/characters/kupo/kupo_arrow1.ase b/assets/entities/kupo/kupo_arrow1.ase similarity index 100% rename from assets/characters/kupo/kupo_arrow1.ase rename to assets/entities/kupo/kupo_arrow1.ase diff --git a/assets/characters/kupo/kupo_arrow1.png b/assets/entities/kupo/kupo_arrow1.png similarity index 100% rename from assets/characters/kupo/kupo_arrow1.png rename to assets/entities/kupo/kupo_arrow1.png diff --git a/assets/characters/kupo/kupo_bow.ase b/assets/entities/kupo/kupo_bow.ase similarity index 100% rename from assets/characters/kupo/kupo_bow.ase rename to assets/entities/kupo/kupo_bow.ase diff --git a/assets/characters/kupo/kupo_bow1.png b/assets/entities/kupo/kupo_bow1.png similarity index 100% rename from assets/characters/kupo/kupo_bow1.png rename to assets/entities/kupo/kupo_bow1.png diff --git a/assets/characters/kupo/kupo_bow2.png b/assets/entities/kupo/kupo_bow2.png similarity index 100% rename from assets/characters/kupo/kupo_bow2.png rename to assets/entities/kupo/kupo_bow2.png diff --git a/assets/characters/kupo/kupo_bow3.png b/assets/entities/kupo/kupo_bow3.png similarity index 100% rename from assets/characters/kupo/kupo_bow3.png rename to assets/entities/kupo/kupo_bow3.png diff --git a/assets/characters/kupo/kupo_bow4.png b/assets/entities/kupo/kupo_bow4.png similarity index 100% rename from assets/characters/kupo/kupo_bow4.png rename to assets/entities/kupo/kupo_bow4.png diff --git a/assets/characters/kupo/kupo_bow5.png b/assets/entities/kupo/kupo_bow5.png similarity index 100% rename from assets/characters/kupo/kupo_bow5.png rename to assets/entities/kupo/kupo_bow5.png diff --git a/assets/characters/kupo/kupo_bow6.png b/assets/entities/kupo/kupo_bow6.png similarity index 100% rename from assets/characters/kupo/kupo_bow6.png rename to assets/entities/kupo/kupo_bow6.png diff --git a/assets/characters/nancy/fall.ase b/assets/entities/nancy/fall.ase similarity index 100% rename from assets/characters/nancy/fall.ase rename to assets/entities/nancy/fall.ase diff --git a/assets/characters/nancy/fall1.png b/assets/entities/nancy/fall1.png similarity index 100% rename from assets/characters/nancy/fall1.png rename to assets/entities/nancy/fall1.png diff --git a/assets/characters/nancy/fall2.png b/assets/entities/nancy/fall2.png similarity index 100% rename from assets/characters/nancy/fall2.png rename to assets/entities/nancy/fall2.png diff --git a/assets/characters/nancy/fall3.png b/assets/entities/nancy/fall3.png similarity index 100% rename from assets/characters/nancy/fall3.png rename to assets/entities/nancy/fall3.png diff --git a/assets/characters/nancy/idle.ase b/assets/entities/nancy/idle.ase similarity index 100% rename from assets/characters/nancy/idle.ase rename to assets/entities/nancy/idle.ase diff --git a/assets/characters/nancy/idle1.png b/assets/entities/nancy/idle1.png similarity index 100% rename from assets/characters/nancy/idle1.png rename to assets/entities/nancy/idle1.png diff --git a/assets/characters/nancy/idle2.png b/assets/entities/nancy/idle2.png similarity index 100% rename from assets/characters/nancy/idle2.png rename to assets/entities/nancy/idle2.png diff --git a/assets/characters/nancy/idle3.png b/assets/entities/nancy/idle3.png similarity index 100% rename from assets/characters/nancy/idle3.png rename to assets/entities/nancy/idle3.png diff --git a/assets/characters/nancy/idle4.png b/assets/entities/nancy/idle4.png similarity index 100% rename from assets/characters/nancy/idle4.png rename to assets/entities/nancy/idle4.png diff --git a/assets/characters/nancy/jump.ase b/assets/entities/nancy/jump.ase similarity index 100% rename from assets/characters/nancy/jump.ase rename to assets/entities/nancy/jump.ase diff --git a/assets/characters/nancy/jump1.png b/assets/entities/nancy/jump1.png similarity index 100% rename from assets/characters/nancy/jump1.png rename to assets/entities/nancy/jump1.png diff --git a/assets/characters/nancy/jump2.png b/assets/entities/nancy/jump2.png similarity index 100% rename from assets/characters/nancy/jump2.png rename to assets/entities/nancy/jump2.png diff --git a/assets/characters/nancy/jump3.png b/assets/entities/nancy/jump3.png similarity index 100% rename from assets/characters/nancy/jump3.png rename to assets/entities/nancy/jump3.png diff --git a/assets/characters/nancy/moth_mask/fall.ase b/assets/entities/nancy/moth_mask/fall.ase similarity index 100% rename from assets/characters/nancy/moth_mask/fall.ase rename to assets/entities/nancy/moth_mask/fall.ase diff --git a/assets/characters/nancy/moth_mask/fall1.png b/assets/entities/nancy/moth_mask/fall1.png similarity index 100% rename from assets/characters/nancy/moth_mask/fall1.png rename to assets/entities/nancy/moth_mask/fall1.png diff --git a/assets/characters/nancy/moth_mask/fall2.png b/assets/entities/nancy/moth_mask/fall2.png similarity index 100% rename from assets/characters/nancy/moth_mask/fall2.png rename to assets/entities/nancy/moth_mask/fall2.png diff --git a/assets/characters/nancy/moth_mask/fall3.png b/assets/entities/nancy/moth_mask/fall3.png similarity index 100% rename from assets/characters/nancy/moth_mask/fall3.png rename to assets/entities/nancy/moth_mask/fall3.png diff --git a/assets/characters/nancy/moth_mask/idle.ase b/assets/entities/nancy/moth_mask/idle.ase similarity index 100% rename from assets/characters/nancy/moth_mask/idle.ase rename to assets/entities/nancy/moth_mask/idle.ase diff --git a/assets/characters/nancy/moth_mask/idle1.png b/assets/entities/nancy/moth_mask/idle1.png similarity index 100% rename from assets/characters/nancy/moth_mask/idle1.png rename to assets/entities/nancy/moth_mask/idle1.png diff --git a/assets/characters/nancy/moth_mask/idle2.png b/assets/entities/nancy/moth_mask/idle2.png similarity index 100% rename from assets/characters/nancy/moth_mask/idle2.png rename to assets/entities/nancy/moth_mask/idle2.png diff --git a/assets/characters/nancy/moth_mask/idle3.png b/assets/entities/nancy/moth_mask/idle3.png similarity index 100% rename from assets/characters/nancy/moth_mask/idle3.png rename to assets/entities/nancy/moth_mask/idle3.png diff --git a/assets/characters/nancy/moth_mask/idle4.png b/assets/entities/nancy/moth_mask/idle4.png similarity index 100% rename from assets/characters/nancy/moth_mask/idle4.png rename to assets/entities/nancy/moth_mask/idle4.png diff --git a/assets/characters/nancy/moth_mask/jump.ase b/assets/entities/nancy/moth_mask/jump.ase similarity index 100% rename from assets/characters/nancy/moth_mask/jump.ase rename to assets/entities/nancy/moth_mask/jump.ase diff --git a/assets/characters/nancy/moth_mask/jump1.png b/assets/entities/nancy/moth_mask/jump1.png similarity index 100% rename from assets/characters/nancy/moth_mask/jump1.png rename to assets/entities/nancy/moth_mask/jump1.png diff --git a/assets/characters/nancy/moth_mask/jump2.png b/assets/entities/nancy/moth_mask/jump2.png similarity index 100% rename from assets/characters/nancy/moth_mask/jump2.png rename to assets/entities/nancy/moth_mask/jump2.png diff --git a/assets/characters/nancy/moth_mask/jump3.png b/assets/entities/nancy/moth_mask/jump3.png similarity index 100% rename from assets/characters/nancy/moth_mask/jump3.png rename to assets/entities/nancy/moth_mask/jump3.png diff --git a/assets/characters/nancy/moth_mask/run.ase b/assets/entities/nancy/moth_mask/run.ase similarity index 100% rename from assets/characters/nancy/moth_mask/run.ase rename to assets/entities/nancy/moth_mask/run.ase diff --git a/assets/characters/nancy/moth_mask/run1.png b/assets/entities/nancy/moth_mask/run1.png similarity index 100% rename from assets/characters/nancy/moth_mask/run1.png rename to assets/entities/nancy/moth_mask/run1.png diff --git a/assets/characters/nancy/moth_mask/run2.png b/assets/entities/nancy/moth_mask/run2.png similarity index 100% rename from assets/characters/nancy/moth_mask/run2.png rename to assets/entities/nancy/moth_mask/run2.png diff --git a/assets/characters/nancy/moth_mask/run3.png b/assets/entities/nancy/moth_mask/run3.png similarity index 100% rename from assets/characters/nancy/moth_mask/run3.png rename to assets/entities/nancy/moth_mask/run3.png diff --git a/assets/characters/nancy/moth_mask/run4.png b/assets/entities/nancy/moth_mask/run4.png similarity index 100% rename from assets/characters/nancy/moth_mask/run4.png rename to assets/entities/nancy/moth_mask/run4.png diff --git a/assets/characters/nancy/moth_mask/run5.png b/assets/entities/nancy/moth_mask/run5.png similarity index 100% rename from assets/characters/nancy/moth_mask/run5.png rename to assets/entities/nancy/moth_mask/run5.png diff --git a/assets/characters/nancy/moth_mask/run6.png b/assets/entities/nancy/moth_mask/run6.png similarity index 100% rename from assets/characters/nancy/moth_mask/run6.png rename to assets/entities/nancy/moth_mask/run6.png diff --git a/assets/characters/nancy/run.ase b/assets/entities/nancy/run.ase similarity index 100% rename from assets/characters/nancy/run.ase rename to assets/entities/nancy/run.ase diff --git a/assets/characters/nancy/run1.png b/assets/entities/nancy/run1.png similarity index 100% rename from assets/characters/nancy/run1.png rename to assets/entities/nancy/run1.png diff --git a/assets/characters/nancy/run2.png b/assets/entities/nancy/run2.png similarity index 100% rename from assets/characters/nancy/run2.png rename to assets/entities/nancy/run2.png diff --git a/assets/characters/nancy/run3.png b/assets/entities/nancy/run3.png similarity index 100% rename from assets/characters/nancy/run3.png rename to assets/entities/nancy/run3.png diff --git a/assets/characters/nancy/run4.png b/assets/entities/nancy/run4.png similarity index 100% rename from assets/characters/nancy/run4.png rename to assets/entities/nancy/run4.png diff --git a/assets/characters/nancy/run5.png b/assets/entities/nancy/run5.png similarity index 100% rename from assets/characters/nancy/run5.png rename to assets/entities/nancy/run5.png diff --git a/assets/characters/nancy/run6.png b/assets/entities/nancy/run6.png similarity index 100% rename from assets/characters/nancy/run6.png rename to assets/entities/nancy/run6.png diff --git a/assets/entities/particle/fairy1.png b/assets/entities/particle/fairy1.png new file mode 100644 index 0000000..aed1521 Binary files /dev/null and b/assets/entities/particle/fairy1.png differ diff --git a/assets/entities/particle/fairy2.png b/assets/entities/particle/fairy2.png new file mode 100644 index 0000000..9722b4b Binary files /dev/null and b/assets/entities/particle/fairy2.png differ diff --git a/assets/entities/particle/fairy3.png b/assets/entities/particle/fairy3.png new file mode 100644 index 0000000..ea2c4c1 Binary files /dev/null and b/assets/entities/particle/fairy3.png differ diff --git a/assets/entities/particle/fairy4.png b/assets/entities/particle/fairy4.png new file mode 100644 index 0000000..14c28cc Binary files /dev/null and b/assets/entities/particle/fairy4.png differ diff --git a/data/scripts/entities/arrow.lua b/data/scripts/entities/arrow.lua index 9e5c420..8e562f5 100644 --- a/data/scripts/entities/arrow.lua +++ b/data/scripts/entities/arrow.lua @@ -16,10 +16,12 @@ Arrow = Entity:New(x,y) -- animations o.body = Animation:New(animation.kupo.arrow) + + table.insert(LoadedEntities,o) + o.id = #LoadedEntities setmetatable(o, self) self.__index = self - table.insert(LoadedEntities,o) return o end diff --git a/data/scripts/entities/decoration.lua b/data/scripts/entities/decoration.lua index b02e519..d01f8b1 100644 --- a/data/scripts/entities/decoration.lua +++ b/data/scripts/entities/decoration.lua @@ -15,11 +15,13 @@ function Decoration:New(x,y,animation,lightRange) o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange,nil,60/6) end + table.insert(LoadedEntities,o) + o.id = #LoadedEntities + setmetatable(o, self) self.__index = self - return o - end +end function Decoration:Smart() end diff --git a/data/scripts/entities/fairy.lua b/data/scripts/entities/fairy.lua index c06d042..6661f9e 100644 --- a/data/scripts/entities/fairy.lua +++ b/data/scripts/entities/fairy.lua @@ -17,9 +17,11 @@ Fairy = Entity:New(x,y) o.lightRange = 55 o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange) + table.insert(LoadedEntities,o) + o.id = #LoadedEntities + setmetatable(o, self) self.__index = self - return o end @@ -31,8 +33,8 @@ function Fairy:Smart() self.target.y = main_Player.pos.y - main_Player.target_offset.y - 10 local distance_x = self.target.x - self.pos.x local distance_y = self.target.y - self.pos.y - local distance = math.sqrt(distance_x ^ 2 + distance_y ^ 2) local angle = GetAngleFromVector(distance_x,distance_y) + local distance = math.sqrt(distance_x ^ 2 + distance_y ^ 2) if distance < self.range then self.vel.x = 0 self.vel.y = 0 @@ -40,6 +42,7 @@ function Fairy:Smart() self.vel.x = math.cos(angle)*self.speed*distance/(8*game.scale) self.vel.y = math.sin(angle)*self.speed*distance/(8*game.scale) end + Particle:New(self.pos.x,self.pos.y,animation.particle.fairy,angle-math.rad(180),self.speed*distance/(16*game.scale)) end function Fairy:HandleAnimation() diff --git a/data/scripts/entities/kupo.lua b/data/scripts/entities/kupo.lua index d0aff6b..00e1deb 100644 --- a/data/scripts/entities/kupo.lua +++ b/data/scripts/entities/kupo.lua @@ -28,9 +28,11 @@ Kupo = Entity:New(x,y) o.lightRange = o.range/2 o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange) + table.insert(LoadedEntities,o) + o.id = #LoadedEntities + setmetatable(o, self) self.__index = self - return o end diff --git a/data/scripts/entities/particle.lua b/data/scripts/entities/particle.lua new file mode 100644 index 0000000..8b7bba5 --- /dev/null +++ b/data/scripts/entities/particle.lua @@ -0,0 +1,48 @@ +Particle = Entity:New(x,y) + + function Particle:New(x,y,animation,rotation,speed) + local o = Entity:New(x,y) + + o.pos = {x = x, y = y} + o.speed = speed or 0 + o.sprite_rotation = rotation or 0 + + o.time = 0.5 + o.timer = 0 + + o.vel = { + x = o.speed * math.cos(o.sprite_rotation), + y = o.speed * math.sin(o.sprite_rotation) + } + + -- animations + o.body = Animation:New(animation) + + table.insert(LoadedEntities,o) + o.id = #LoadedEntities + + setmetatable(o, self) + self.__index = self + return o + end + +function Particle:Smart() + +end + +function Particle:HandleAnimation() + self.body:Animate() + self.timer = self.timer + current_dt + self.sprite_alpha = (self.time-self.timer)/self.time + if self.sprite_alpha < 0 then self:Kill() end + self:Draw(self.body) +end + +function Particle:DoPhysics() + if not self:isCollidingAt(self.pos.x + self.vel.x, self.pos.y, objects.collisions) then + self.pos.x = self.pos.x + self.vel.x + end + if not self:isCollidingAt(self.pos.x, self.pos.y + self.vel.y, objects.collisions) then + self.pos.y = self.pos.y + self.vel.y + end +end diff --git a/data/scripts/entities/player.lua b/data/scripts/entities/player.lua index bbf670c..b764cd5 100644 --- a/data/scripts/entities/player.lua +++ b/data/scripts/entities/player.lua @@ -53,9 +53,11 @@ -- lights o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange) + table.insert(LoadedEntities,o) + o.id = #LoadedEntities + setmetatable(o, self) self.__index = self - return o end diff --git a/data/scripts/entity.lua b/data/scripts/entity.lua index 38ef0d8..a770aea 100644 --- a/data/scripts/entity.lua +++ b/data/scripts/entity.lua @@ -15,11 +15,13 @@ function Entity:New(x,y) o.sprite_scale = {x = 1, y = 1} o.sprite_rotation = math.rad(0) o.sprite_tint = {1,1,1} + o.sprite_alpha = 1 o.sprite_flip = { x = 1, y = 1} o.illuminated = false setmetatable(o, self) self.__index = self + return o end @@ -43,7 +45,7 @@ end function Entity:Draw(animation) local c1, c2, c3, a = love.graphics.getColor() - love.graphics.setColor(self.sprite_tint[1],self.sprite_tint[2],self.sprite_tint[3]) + love.graphics.setColor(self.sprite_tint[1],self.sprite_tint[2],self.sprite_tint[3],self.sprite_alpha) animation:Draw( self.pos.x - Camera.pos.x - ( (self.sprite_offset.x) * math.cos(self.sprite_rotation) - (self.sprite_offset.y) * math.sin(self.sprite_rotation)) * self.sprite_scale.x * self.sprite_flip.x, self.pos.y - Camera.pos.y - ( (self.sprite_offset.x) * math.sin(self.sprite_rotation) + (self.sprite_offset.y) * math.cos(self.sprite_rotation)) * self.sprite_scale.y * self.sprite_flip.y, @@ -88,8 +90,21 @@ function Entity:isCollidingAtAll(x,y) return result end +function Entity:Kill() + if self.id ~= nil then + for _, e in pairs(LoadedEntities) do + if e.id > self.id then + e.id = e.id - 1 + end + end + table.remove(LoadedEntities,self.id) + end + self = nil +end + require "data/scripts/entities/kupo" require "data/scripts/entities/arrow" require "data/scripts/entities/decoration" require "data/scripts/entities/player" require "data/scripts/entities/fairy" +require "data/scripts/entities/particle" diff --git a/data/scripts/enums.lua b/data/scripts/enums.lua index 46dea88..c9dc7e0 100644 --- a/data/scripts/enums.lua +++ b/data/scripts/enums.lua @@ -1,77 +1,84 @@ -- animationsç -- all these are linear animations, maybe in the future make proper animations? animation = { + particle = { + fairy = { + path = "assets/entities/particle/fairy", + frames = 4, + speed = 1/4 + } + }, fairy = { flying = { - path = "assets/characters/fairy/flying", + path = "assets/entities/fairy/flying", frames = 2, speed = 1/30 } }, decoration = { candelabra = { - path = "assets/characters/decoration/candelabra", + path = "assets/entities/decoration/candelabra", frames = 8, speed = 1/6 } }, kupo = { body = { - path = "assets/characters/kupo/kupo", + path = "assets/entities/kupo/kupo", frames = 4, speed = 1/8 }, bow = { - path = "assets/characters/kupo/kupo_bow", + path = "assets/entities/kupo/kupo_bow", frames = 6, speed = 1/10 }, arrow = { - path = "assets/characters/kupo/kupo_arrow", + path = "assets/entities/kupo/kupo_arrow", frames = 1, speed = 1 } }, moth_mask = { idle = { - path = "assets/characters/nancy/moth_mask/idle", + path = "assets/entities/nancy/moth_mask/idle", frames = 4, speed = 1/8 }, run = { - path = "assets/characters/nancy/moth_mask/run", + path = "assets/entities/nancy/moth_mask/run", frames = 6, speed = 1/8 }, fall = { - path = "assets/characters/nancy/moth_mask/fall", + path = "assets/entities/nancy/moth_mask/fall", frames = 3, speed = 1/8 }, jump = { - path = "assets/characters/nancy/moth_mask/jump", + path = "assets/entities/nancy/moth_mask/jump", frames = 3, speed = 1/8 } }, nancy = { idle = { - path = "assets/characters/nancy/idle", + path = "assets/entities/nancy/idle", frames = 4, speed = 1/8 }, run = { - path = "assets/characters/nancy/run", + path = "assets/entities/nancy/run", frames = 6, speed = 1/8 }, fall = { - path = "assets/characters/nancy/fall", + path = "assets/entities/nancy/fall", frames = 3, speed = 1/8 }, jump = { - path = "assets/characters/nancy/jump", + path = "assets/entities/nancy/jump", frames = 3, speed = 1/8 } diff --git a/main.lua b/main.lua index d48e21f..4d3db70 100644 --- a/main.lua +++ b/main.lua @@ -43,11 +43,10 @@ function love.load() main_Player = Player:New(75,50) - table.insert(LoadedEntities,main_Player) - table.insert(LoadedEntities,Kupo:New(100,150)) - table.insert(LoadedEntities,Kupo:New(300,150)) - table.insert(LoadedEntities,Decoration:New(200,89,animation.decoration.candelabra,80)) - table.insert(LoadedEntities,Fairy:New(200,88)) + Kupo:New(100,150) + Kupo:New(300,150) + Decoration:New(200,89,animation.decoration.candelabra,80) + Fairy:New(200,88) gravity = 0.2 end