home · contact · privacy
Also sit down if spawning over sittable.
[plomrogue2] / plomrogue / things.py
index 3a72ca31728dfd72ebeb8e6cd8b23510db34615c..6cb1e89c3b3df30f9e9cd2dbedf09c42cd5649a9 100644 (file)
@@ -29,6 +29,7 @@ class Thing(ThingBase):
     cookable = False
     carried = False
     consumable = False
+    sittable = False
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
@@ -50,7 +51,7 @@ class Thing(ThingBase):
 
         def lower_msg_by_volume(msg, volume, largest_audible_distance,
                                 url_limits = []):
-            factor = largest_audible_distance / 4
+            factor = largest_audible_distance / 2
             lowered_msg = ''
             in_url = False
             i = 0
@@ -482,6 +483,19 @@ class Thing_StimulantSpawner(ThingSpawner):
 
 
 
+class Thing_Chair(Thing):
+    symbol_hint = 'h'
+    portable = True
+    sittable = True
+
+
+
+class Thing_ChairSpawner(ThingSpawner):
+    symbol_hint = 'e'
+    child_type = 'Chair'
+
+
+
 class Thing_Cookie(Thing):
     symbol_hint = 'c'
     portable = True
@@ -754,3 +768,18 @@ class Thing_Player(ThingAnimate):
         chars_split = list(chars)
         chars_split.sort()
         return ''.join(chars_split)
+
+    def try_to_sit(self):
+        terrain = self.game.maps[self.position[0]][self.position[1]]
+        if terrain in self.game.terrains:
+            terrain_type = self.game.terrains[terrain]
+            if 'sittable' in terrain_type.tags:
+                self.standing = False
+                self.send_msg('CHAT "You sink into the %s. '
+                              'Staying here will replenish your energy."'
+                              % terrain_type.description)
+        for t in [t for t in self.game.things
+                  if t.type_ == 'Chair' and t.position == self.position]:
+            self.standing = False
+            self.send_msg('CHAT "You sink into the Chair. '
+                          'Staying here will replenish your energy."')