12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- Peasant = extend(Person)
- Peasant.rangeRange = {200, 350}
- Peasant.reloadRange = {1, 1.5}
- ----------------
- -- Core
- ----------------
- function Peasant:activate()
- local genders = {'male', 'female', 'knight', 'wizard'}
- self.gender = genders[love.math.random(1, #genders)]
- if self.gender == 'knight' or self.gender == 'wizard' then
- self.index = 1
- else
- self.index = love.math.random(1, 2)
- end
- self.image = data.media.graphics.kingdumb[self.gender]['normal' .. self.index]
- self.direction = 1
- self.state = self.state or self.idle
- self.walkTimer = 1
- self.reloadTimer = 0
- self.range = lume.random(unpack(self.rangeRange))
- Person.activate(self)
- end
- function Peasant:update()
- self.walkTimer = timer.rot(self.walkTimer)
- Person.update(self)
- end
- ----------------
- -- Helpers
- ----------------
- function Peasant:inRange()
- return self:distanceTo(ctx.pigeon) < self.range
- end
- ----------------
- -- States
- ----------------
- Peasant.idle = {}
- Peasant.idle.walkRate = {.4, .5}
- function Peasant.idle:update()
- self.image = data.media.graphics.kingdumb[self.gender]['normal' .. self.index]
- if self:distanceTo(ctx.pigeon) < 300 then
- self:changeState('panic')
- end
- if self.walkTimer == 0 then
- self:hop(0)
- self.walkTimer = lume.random(unpack(self.state.walkRate))
- end
- end
- Peasant.panic = {}
- Peasant.panic.walkRate = {.3, .4}
- function Peasant.panic:update()
- self.direction = 1
- self.image = data.media.graphics.kingdumb[self.gender]['panic' .. self.index]
- if self.walkTimer == 0 then
- self:hop(self.direction)
- self.walkTimer = lume.random(unpack(self.state.walkRate))
- end
- end
|