X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=ca53e87dd057056e655c07df0141c3f27ede3141;hb=80b6be9545812304bed7cf2a25434ef5f08a25c3;hp=cedee68266583f9486dea676a0d67bd5bacb2378;hpb=d9c9b5b7d5cac2469ac075010c4d729e1adf0cc4;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index cedee68..ca53e87 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -6,7 +6,7 @@ from plomrogue.mapping import YX class ThingBase: type_ = '?' - def __init__(self, game, id_=0, position=(YX(0,0),YX(0,0))): + def __init__(self, game, id_=0, position=(YX(0, 0), YX(0, 0))): self.game = game if id_ == 0: self.id_ = self.game.new_thing_id() @@ -18,6 +18,8 @@ class ThingBase: class Thing(ThingBase): blocking = False + portable = False + protection = '.' def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -37,11 +39,20 @@ class Thing(ThingBase): class Thing_Item(Thing): symbol_hint = 'i' + portable = True -class Thing_Furniture(Thing): - symbol_hint = 'h' +class Thing_Spawner(Thing): + symbol_hint = 'S' + + def proceed(self): + for t in [t for t in self.game.things + if t != self and t.position == self.position]: + return + t = self.game.thing_types['Item'](self.game, position=self.position) + self.game.things += [t] + self.game.changed = True @@ -81,8 +92,7 @@ class ThingAnimate(Thing): self.task.check() except GameError as e: self.task = None - raise GameError - return + raise e self.task.todo -= 1 if self.task.todo <= 0: self._last_task_result = self.task.do()