X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=09dc4b678a066ba83f475250a8f205ac7ab4ec90;hb=faf760cf585b035e207e5bc80ec4fce720685c23;hp=072f2513ce9a11a56e86c92828cbfde3cb1f594b;hpb=9f83e41901f23e282737e7344c84e8a692d05ef0;p=plomrogue2
diff --git a/plomrogue/things.py b/plomrogue/things.py
index 072f251..09dc4b6 100644
--- a/plomrogue/things.py
+++ b/plomrogue/things.py
@@ -48,7 +48,6 @@ class Thing(ThingBase):
def lower_msg_by_volume(msg, volume, largest_audible_distance,
url_limits = []):
- import random
factor = largest_audible_distance / 4
lowered_msg = ''
in_url = False
@@ -139,16 +138,26 @@ class Thing_SpawnPoint(Thing):
+class ThingInstallable(Thing):
+ portable = True
+ installable = True
+
+ def install(self):
+ self.portable = False
+
+ def uninstall(self):
+ self.portable = True
+
+
+
class Thing_DoorSpawner(ThingSpawner):
child_type = 'Door'
-class Thing_Door(Thing):
+class Thing_Door(ThingInstallable):
symbol_hint = 'D'
blocks_movement = False
- portable = True
- installable = True
def open(self):
self.blocks_movement = False
@@ -162,12 +171,6 @@ class Thing_Door(Thing):
self.blocks_sound = True
self.thing_char = '#'
- def install(self):
- self.portable = False
-
- def uninstall(self):
- self.portable = True
-
class Thing_Psychedelic(Thing):
@@ -194,7 +197,6 @@ class Thing_Bottle(Thing):
self.full = False
def spin(self):
- import random
all_players = [t for t in self.game.things if t.type_ == 'Player']
# TODO: refactor with ThingPlayer.prepare_multiprocessible_fov_stencil
# and ThingPlayer.fov_test
@@ -422,8 +424,6 @@ class Thing_CookieSpawner(Thing):
class ThingAnimate(Thing):
blocks_movement = True
- drunk = 0
- tripping = 0
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -561,6 +561,9 @@ class ThingAnimate(Thing):
class Thing_Player(ThingAnimate):
symbol_hint = '@'
+ drunk = 0
+ tripping = 0
+ need_for_toilet = 0
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -568,12 +571,26 @@ class Thing_Player(ThingAnimate):
def proceed(self):
super().proceed()
- self.drunk -= 1
+ if self.drunk >= 0:
+ self.drunk -= 1
+ if self.tripping >= 0:
+ self.tripping -= 1
+ if self.need_for_toilet > 0:
+ self.need_for_toilet += 1
+ terrain = self.game.maps[self.position[0]][self.position[1]]
+ if terrain in self.game.terrains:
+ terrain_type = self.game.terrains[terrain]
+ if 'toilet' in terrain_type.tags:
+ self.send_msg('CHAT "You use the toilet. What a relief!"')
+ self.need_for_toilet = 0
+ if 10000 * random.random() < self.need_for_toilet / 100000:
+ self.send_msg('CHAT "You need to use a toilet."')
if self.drunk == 0:
self.send_msg('CHAT "You sober up."')
self.invalidate('fov')
self.game.changed = True
- self.tripping -= 1
+ self.need_for_toilet *= 2
+ self.need_for_toilet += 1
if self.tripping == 0:
self.send_msg('DEFAULT_COLORS')
self.send_msg('CHAT "You sober up."')