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
Binary file data/images/tiles/moonlight.png has changed
--- 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
Binary file source/images/tiles/moonlight.xcf has changed