Example #1
0
    def activate(self, activator=None):
        if CountUpTile.activate(self,activator):
            xu = self.map.size.x//4
            yu = self.map.size.y//4
            b = Menu( Position(xu,yu), Position(xu*2,yu*2), title="Trap Control" )
            b.add('1',"View traps")
            b.add('2',"%s traps" %(TrapConsole.traps_on and 'Disable' or 'Enable'))
            b.add('3',"Set off traps")
            b.add('x',"Exit")

            c = b.get_key()
            del b

            traps = self.map.find_all(Trap,Tile)

            if c == '1':
                for t in traps:
                    t.visible_to_player = True
                self.map.player.handle_keys()

            elif c == '2':
                for trap in traps:
                    trap.enabled = TrapConsole.traps_on

                TrapConsole.traps_on = not TrapConsole.traps_on

            elif c == '3':
                for trap in traps:
                    trap.trip()

            return True
        return False
Example #2
0
    def pickup(self, i):
        """returns True if i picked up successfully"""
        # TODO: move all this into HasInventory interface
        assert isinstance(i, Item), "Can't pick up a %s" % i

        if isinstance(i, Evidence):
            self.evidence.append(i)
            if not i.pos is None:  # found it in a locker
                self.map.remove(i)
            return Player.ITEM_PICKUP_COST

        item_index = None
        items = self.items
        if isinstance(i, SlotItem):
            items = [self.slot_items[i.valid_slot]]
        if not None in items:
            # prompt to drop something; drop it

            xu = self.map.size.x // 4
            yu = self.map.size.y // 4
            b = Menu(Position(xu, yu),
                     Position(xu * 2, yu * 2),
                     title="Pick Up")
            b.add('x', str(i))
            b.add_spacer()
            for idx in range(len(items)):
                v = items[idx]
                b.add('%d' % (idx + 1), str(v))
            c = b.get_key()

            if isinstance(c, str) and c.isnumeric():
                item_index = int(c) - 1
            self.redraw_screen()
            del b
            if item_index is None or item_index >= len(items):
                return 0.0
            items[item_index].drop_at(self.pos)
            self.map.add(items[item_index])
        else:
            item_index = items.index(None)

        if isinstance(i, SlotItem):
            self.slot_items[i.valid_slot] = i
        else:
            self.items[item_index] = i

        if not i.pos is None:  # if taken from locker or other bonus
            self.map.remove(i)
        i.take_by(self)
        return Player.ITEM_PICKUP_COST
Example #3
0
    def pickup(self,i):
        """returns True if i picked up successfully"""
        # TODO: move all this into HasInventory interface
        assert isinstance(i,Item), "Can't pick up a %s"%i

        if isinstance(i,Evidence):
            self.evidence.append(i)
            if not i.pos is None: # found it in a locker
                self.map.remove(i)
            return Player.ITEM_PICKUP_COST

        item_index = None
        items      = self.items
        if isinstance(i,SlotItem):
            items  = [self.slot_items[i.valid_slot]]
        if not None in items:
            # prompt to drop something; drop it

            xu = self.map.size.x//4
            yu = self.map.size.y//4
            b = Menu( Position(xu,yu), Position(xu*2,yu*2), title="Pick Up" )
            b.add('x',str(i))
            b.add_spacer()
            for idx in range(len(items)):
                v = items[idx]
                b.add('%d'%(idx+1),str(v))
            c = b.get_key()

            if isinstance(c,str) and c.isnumeric():
                item_index = int(c) - 1
            self.redraw_screen()
            del b
            if item_index is None or item_index >= len(items):
                return 0.0
            items[item_index].drop_at(self.pos)
            self.map.add(items[item_index])
        else:
            item_index = items.index(None)

        if isinstance(i,SlotItem):
            self.slot_items[i.valid_slot] = i
        else:
            self.items[item_index] = i

        if not i.pos is None: # if taken from locker or other bonus
            self.map.remove(i)
        i.take_by(self)
        return Player.ITEM_PICKUP_COST
Example #4
0
    def activate(self, activator=None):
        if CountUpTile.activate(self, activator):
            xu = self.map.size.x // 4
            yu = self.map.size.y // 4
            b = Menu(Position(xu, yu),
                     Position(xu * 2, yu * 2),
                     title="Camera Control")
            b.add('1', "View cameras")
            b.add(
                '2', "Switch %s cameras" %
                (CameraConsole.cameras_on and 'off' or 'on'))
            b.add('x', "Exit")

            c = b.get_key()
            del b

            cams = self.map.find_all(StaticCamera, Monster)

            if c == '1':
                for cam in cams:
                    self.map.prepare_fov(cam.pos, reset=False)
                self.map.player.handle_keys()

            elif c == '2':
                if CameraConsole.cameras_on:
                    for cam in cams:
                        cam.add_effect(StatusEffect.BLIND)
                else:
                    for cam in cams:
                        cam.remove_effect(StatusEffect.BLIND)

                CameraConsole.cameras_on = not CameraConsole.cameras_on

            return True
        return False
Example #5
0
    def activate(self, activator=None):
        if CountUpTile.activate(self,activator):
            xu = self.map.size.x//4
            yu = self.map.size.y//4
            b = Menu( Position(xu,yu), Position(xu*2,yu*2), title="Camera Control" )
            b.add('1',"View cameras")
            b.add('2',"Switch %s cameras" %(CameraConsole.cameras_on and 'off' or 'on'))
            b.add('x',"Exit")

            c = b.get_key()
            del b

            cams = self.map.find_all(StaticCamera,Monster)

            if c == '1':
                for cam in cams:
                    self.map.prepare_fov(cam.pos,reset=False)
                self.map.player.handle_keys()

            elif c == '2':
                if CameraConsole.cameras_on:
                    for cam in cams:
                        cam.add_effect(StatusEffect.BLIND)
                else:
                    for cam in cams:
                        cam.remove_effect(StatusEffect.BLIND)

                CameraConsole.cameras_on = not CameraConsole.cameras_on

            return True
        return False
Example #6
0
    def drop(self):
        # prompt to drop something; drop it
        xu = self.map.size.x//4
        yu = self.map.size.y//4
        b = Menu( Position(xu,yu), Position(xu*2,yu*2), title="Drop" )
        
        b.add('x','Do nothing')
        b.add_spacer()

        for idx in range(len(self.items)):
            v = self.items[idx]
            if not v is None:
                b.add('%d'%(idx+1),str(v))

        b.add_spacer()
        idx += 1

        for k in self.slot_keys:
            idx += 1
            if not self.slot_items[k] is None:
                b.add('%d'%idx,str(self.slot_items[k]))

        c = b.get_key()
                    
        item_index = None
        if isinstance(c,str) and c.isnumeric():
            item_index = int(c) - 1
        self.redraw_screen()
        del b

        if item_index is None:
            return 0.0

        i = None
        if item_index < len(self.items):
            i = self.items[item_index]
            self.items[item_index] = None
        elif item_index < len(self.items)+len(self.slot_keys):
            k = self.slot_keys[item_index-len(self.items)]
            i = self.slot_items[k]
            self.slot_items[k] = None

        if not i is None:
            i.drop_at(self.pos)
            self.map.add(i)
            return self.ITEM_DROP_COST 

        return 0.0
Example #7
0
    def drop(self):
        # prompt to drop something; drop it
        xu = self.map.size.x // 4
        yu = self.map.size.y // 4
        b = Menu(Position(xu, yu), Position(xu * 2, yu * 2), title="Drop")

        b.add('x', 'Do nothing')
        b.add_spacer()

        for idx in range(len(self.items)):
            v = self.items[idx]
            if not v is None:
                b.add('%d' % (idx + 1), str(v))

        b.add_spacer()
        idx += 1

        for k in self.slot_keys:
            idx += 1
            if not self.slot_items[k] is None:
                b.add('%d' % idx, str(self.slot_items[k]))

        c = b.get_key()

        item_index = None
        if isinstance(c, str) and c.isnumeric():
            item_index = int(c) - 1
        self.redraw_screen()
        del b

        if item_index is None:
            return 0.0

        i = None
        if item_index < len(self.items):
            i = self.items[item_index]
            self.items[item_index] = None
        elif item_index < len(self.items) + len(self.slot_keys):
            k = self.slot_keys[item_index - len(self.items)]
            i = self.slot_items[k]
            self.slot_items[k] = None

        if not i is None:
            i.drop_at(self.pos)
            self.map.add(i)
            return self.ITEM_DROP_COST

        return 0.0
Example #8
0
    def activate(self, activator=None):
        if CountUpTile.activate(self, activator):
            xu = self.map.size.x // 4
            yu = self.map.size.y // 4
            b = Menu(Position(xu, yu),
                     Position(xu * 2, yu * 2),
                     title="Trap Control")
            b.add('1', "View traps")
            b.add(
                '2',
                "%s traps" % (TrapConsole.traps_on and 'Disable' or 'Enable'))
            b.add('3', "Set off traps")
            b.add('x', "Exit")

            c = b.get_key()
            del b

            traps = self.map.find_all(Trap, Tile)

            if c == '1':
                for t in traps:
                    t.visible_to_player = True
                self.map.player.handle_keys()

            elif c == '2':
                for trap in traps:
                    trap.enabled = TrapConsole.traps_on

                TrapConsole.traps_on = not TrapConsole.traps_on

            elif c == '3':
                for trap in traps:
                    trap.trip()

            return True
        return False