From: Christian Heller Date: Tue, 15 Dec 2020 04:41:03 +0000 (+0100) Subject: Enable sinking into and getting up from terrain tagged as sittable. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/%7B%7Bdb.prefix%7D%7D/tasks?a=commitdiff_plain;h=78c02188e008392eddc2e806bacacecc7d8fd94b;p=plomrogue2 Enable sinking into and getting up from terrain tagged as sittable. --- diff --git a/plomrogue/tasks.py b/plomrogue/tasks.py index 4f390d4..de9f1c8 100644 --- a/plomrogue/tasks.py +++ b/plomrogue/tasks.py @@ -42,11 +42,22 @@ class Task_MOVE(Task): raise PlayError('blocked by impassable tile') def do(self): + if self.thing.type_ == 'Player' and not self.thing.standing: + self.thing.standing = True + self.thing.send_msg('CHAT "You get up."') self.thing.game.record_change(self.thing.position, 'other') if self.thing.blocks_light: self.thing.game.record_change(self.thing.position, 'fov') self.thing.position = self._get_move_target() self.thing.game.record_change(self.thing.position, 'other') + terrain = \ + self.thing.game.maps[self.thing.position[0]][self.thing.position[1]] + if terrain in self.thing.game.terrains: + terrain_type = self.thing.game.terrains[terrain] + if 'sittable' in terrain_type.tags: + self.thing.standing = False + self.thing.send_msg('CHAT "You sink into the %s."' + % terrain_type.description) self.thing.invalidate('fov') if self.thing.blocks_light: self.thing.game.record_change(self.thing.position, 'fov') diff --git a/plomrogue/things.py b/plomrogue/things.py index 249a138..6ad8534 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -564,6 +564,7 @@ class Thing_Player(ThingAnimate): drunk = 0 tripping = 0 need_for_toilet = 0 + standing = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs)