From 7ca861abd3acab67ddf18c39dbaadd9b401f7892 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sat, 26 Dec 2020 22:20:37 +0100 Subject: [PATCH] Also sit down if spawning over sittable. --- plomrogue/game.py | 1 + plomrogue/tasks.py | 15 +-------------- plomrogue/things.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/plomrogue/game.py b/plomrogue/game.py index 90f70d9..95ea71d 100755 --- a/plomrogue/game.py +++ b/plomrogue/game.py @@ -356,6 +356,7 @@ class Game(GameBase): if s.temporary: self.remove_thing(s) break + t.try_to_sit() def run_tick(self): diff --git a/plomrogue/tasks.py b/plomrogue/tasks.py index ad8cfc8..68ffb09 100644 --- a/plomrogue/tasks.py +++ b/plomrogue/tasks.py @@ -61,20 +61,7 @@ class Task_MOVE(Task): self.thing.name)) break 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. ' - 'Staying here will replenish your energy."' - % terrain_type.description) - for t in [t for t in self.thing.game.things - if t.type_ == 'Chair' and t.position == self.thing.position]: - self.thing.standing = False - self.thing.send_msg('CHAT "You sink into the Chair. ' - 'Staying here will replenish your energy."') + self.thing.try_to_sit() 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 8a6be22..6cb1e89 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -768,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."') -- 2.30.2