Mercurial > nagslang
changeset 357:d2c7e17299a7
Moonlight tiles force wolf form.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 06 Sep 2013 19:14:04 +0200 |
parents | 582a96e5fdac |
children | 911547a1c378 |
files | data/images/tiles/moonlight.png data/levels/level2 nagslang/game_object.py nagslang/protagonist.py source/images/tiles/moonlight.xcf |
diffstat | 5 files changed, 29 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/level2 Fri Sep 06 18:41:29 2013 +0200 +++ b/data/levels/level2 Fri Sep 06 19:14:04 2013 +0200 @@ -18,6 +18,13 @@ - [700, 200] - [700, 150] classname: AcidFloor +- args: + - [600, 250] + - - [600, 250] + - [600, 300] + - [700, 300] + - [700, 250] + classname: ForceWolfFloor lines: [] polygons: 1:
--- a/nagslang/game_object.py Fri Sep 06 18:41:29 2013 +0200 +++ b/nagslang/game_object.py Fri Sep 06 19:14:04 2013 +0200 @@ -510,11 +510,14 @@ # off terrian, but as long as the rate is reasonably # low, they shouldn't impact gameplay if self._ticks == 0: - protagonist.lose_health(self.damage) + self.apply_effect(protagonist) self._ticks += 1 if self._ticks > self.rate: self._ticks = 0 + def apply_effect(self, protagonist): + protagonist.lose_health(self.damage) + @classmethod def requires(cls): return [("name", "string"), ("position", "coordinates"), @@ -524,3 +527,11 @@ class AcidFloor(HostileTerrain): damage = 1 tile = 'acid.png' + + +class ForceWolfFloor(HostileTerrain): + tile = 'moonlight.png' + rate = 0 + + def apply_effect(self, protagonist): + protagonist.force_wolf_form()
--- a/nagslang/protagonist.py Fri Sep 06 18:41:29 2013 +0200 +++ b/nagslang/protagonist.py Fri Sep 06 19:14:04 2013 +0200 @@ -76,6 +76,7 @@ self.angle = 0 self.is_moving = False self.changing_sequence = [] + self.change_delay = 0 self.go_human() @@ -252,6 +253,8 @@ self.inventory = old_protagonist.inventory def toggle_form(self): + if self.change_delay: + return self.changing_sequence.extend(self.CHANGING_SEQUENCE[self.form]) def _go_to_next_form(self): @@ -343,9 +346,16 @@ self.health_level = PROTAGONIST_HEALTH_MAX_LEVEL def update(self, dt): + if self.change_delay > 0: + self.change_delay -= 1 if self.changing_sequence: self._go_to_next_form() if int(self.lifetime + dt) > int(self.lifetime): if self.in_wolf_form(): self.gain_health(1) super(Protagonist, self).update(dt) + + def force_wolf_form(self): + if self.in_human_form() and not self.changing_sequence: + self.toggle_form() + self.change_delay = 2