From: Christian Heller Date: Sat, 26 Dec 2020 21:20:37 +0000 (+0100) Subject: Also sit down if spawning over sittable. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/static/%7B%7B%20web_path%20%7D%7D/%7B%7Bprefix%7D%7D/processes?a=commitdiff_plain;h=7ca861abd3acab67ddf18c39dbaadd9b401f7892;p=plomrogue2 Also sit down if spawning over sittable. --- 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."')