Exemple #1
0
 def __init__(self,
              name,
              pos,
              sprite,
              hp,
              defense,
              res,
              strength,
              attack_kind,
              classes,
              equipments,
              strategy,
              lvl,
              skills,
              race,
              gold,
              interaction,
              compl_sprite=None):
     Movable.__init__(
         self, name, pos, sprite, hp, defense, res,
         Character.races_data[race]['move'] +
         Character.classes_data[classes[0]]['move'], strength, attack_kind,
         strategy, lvl, skills, compl_sprite)
     self.equipments = equipments
     self.classes = classes
     self.race = race
     self.gold = gold
     self.interaction = interaction
     self.join_team = False
     self.reach_ = [1]
     self.constitution = Character.races_data[race]['constitution'] + \
         Character.classes_data[classes[0]]['constitution']
 def __init__(self,
              name,
              pos,
              sprite,
              hp,
              defense,
              res,
              max_move,
              strength,
              attack_kind,
              classes,
              equipments,
              strategy,
              lvl,
              race,
              gold,
              talk,
              compl_sprite=None):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move,
                      strength, attack_kind, strategy, lvl, compl_sprite)
     self.equipments = equipments
     self.classes = classes
     self.race = race
     self.gold = gold
     self.dialog = talk
 def __init__(self, name, pos, sprite, hp, defense, res, max_move, strength, attack_kind, classes, equipments,
              strategy, lvl, race, gold, talk, compl_sprite=None):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move, strength, attack_kind, strategy,
                      lvl, compl_sprite)
     self.equipments = equipments
     self.classes = classes
     self.race = race
     self.gold = gold
     self.dialog = talk
     self.constitution = Character.races_data[race]['constitution'] + \
                         Character.classes_data[classes[0]]['constitution']
Exemple #4
0
    def __init__(self, name, pos, sprite, hp, defense, res, max_move, strength, attack_kind, xp_gain, strategy, lvl=1):
        Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move, strength, strategy, lvl)
        '''Possible states :
                - 0 : Have to act
                - 1 : On move
                - 2 : Have to attack
                - 3 : Turn finished
        '''

        self.xp_gain = int(xp_gain * ((1.1) ** (lvl - 1)))
        self.attack_kind = attack_kind
Exemple #5
0
 def attacked(self, ent, damages, kind):
     for eq in self.equipments:
         if kind == PHYSICAL:
             damages -= eq.get_def()
         elif kind == SPIRITUAL:
             damages -= eq.get_res()
     return Movable.attacked(self, ent, damages, kind)
 def __init__(self,
              name,
              pos,
              sprite,
              hp,
              defense,
              res,
              max_move,
              strength,
              attack_kind,
              xp_gain,
              strategy,
              lvl=1):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move,
                      strength, attack_kind, strategy, lvl)
     self.xp_gain = int(xp_gain * (1.1**(lvl - 1)))
Exemple #7
0
    def save(self, tree_name):
        tree = Movable.save(self, tree_name)

        # Save class (if possible)
        if len(self.classes) > 0:
            class_el = etree.SubElement(tree, 'class')
            class_el.text = self.classes[
                0]  # Currently, only first class is saved if any

        # Save race
        race = etree.SubElement(tree, 'race')
        race.text = self.race

        # Save gold
        gold = etree.SubElement(tree, 'gold')
        gold.text = str(self.gold)

        # Save inventory
        inv = etree.SubElement(tree, 'inventory')
        for it in self.items:
            it_el = etree.SubElement(inv, 'item')
            it_el.text = it.name

        # Save equipment
        equip = etree.SubElement(tree, 'equipment')
        for eq in self.equipments:
            eq_el = etree.SubElement(equip, eq.body_part)
            eq_el.text = eq.name

        return tree
 def attacked(self, ent, damages, kind):
     for eq in self.equipments:
         if kind is DamageKind.PHYSICAL:
             damages -= eq.defense
         elif kind == DamageKind.SPIRITUAL:
             damages -= eq.res
     return Movable.attacked(self, ent, damages, kind)
Exemple #9
0
    def save(self):
        tree = Movable.save(self)

        # Save gold
        gold = etree.SubElement(tree, 'gold')
        gold.text = str(self.gold)

        return tree
Exemple #10
0
    def __init__(self, name, pos, sprite, hp, defense, res, max_move, strength, attack_kind, classes, equipments, strategy, lvl,
                 race, gold, talk,
                 compl_sprite=None):
        Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move, strength, strategy, lvl, compl_sprite)
        '''Possible states :
                - 0 : Have to act
                - 1 : On move
                - 2 : Have to attack
                - 3 : Turn finished
        '''

        self.equipments = equipments
        self.classes = classes
        self.race = race
        self.gold = gold
        self.dialog = talk
        self.attack_kind = attack_kind
Exemple #11
0
 def get_stat_change(self, stat):
     malus = 0
     if stat == 'speed':
         # Check if character as a malus to his movement due to equipment total weight exceeding constitution
         total_weight = sum([eq.weight for eq in self.equipments])
         diff = total_weight - self.constitution
         malus = 0 if diff < 0 else -math.ceil(diff / 2)
     return malus + Movable.get_stat_change(self, stat)
 def __init__(self,
              name,
              pos,
              sprite,
              hp,
              defense,
              res,
              max_move,
              strength,
              attack_kind,
              strategy,
              reach,
              xp_gain,
              loot,
              lvl=1):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move,
                      strength, attack_kind, strategy, lvl)
     self.reach = reach
     self.xp_gain = int(xp_gain * (1.1**(lvl - 1)))
     self.potential_loot = loot
Exemple #13
0
 def __init__(self,
              name,
              pos,
              sprite,
              hp,
              defense,
              res,
              max_move,
              strength,
              xp_gain,
              lvl=1):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move,
                      strength, lvl)
     '''Possible states :
             - 0 : Have to act
             - 1 : On move
             - 2 : Have to attack
             - 3 : Turn finished
     '''
     self.state = 0
     self.xp_gain = xp_gain
    def save(self, tree_name):
        tree = Movable.save(self, tree_name)

        # Save class (if possible)
        if len(self.classes) > 0:
            class_el = etree.SubElement(tree, 'class')
            class_el.text = self.classes[0]  # Currently, only first class is saved if any

        # Save race
        race = etree.SubElement(tree, 'race')
        race.text = self.race

        # Save gold
        gold = etree.SubElement(tree, 'gold')
        gold.text = str(self.gold)

        return tree
    def save(self, tree_name):
        tree = Movable.save(self, tree_name)

        # Save loot
        loot = etree.SubElement(tree, "loot")
        for (item, probability) in self.potential_loot:
            if isinstance(item, Item):
                it_el = etree.SubElement(loot, 'item')
                it_name = etree.SubElement(it_el, 'name')
            else:
                # We assume item is gold
                it_el = etree.SubElement(loot, 'gold')
                it_name = etree.SubElement(it_el, 'amount')
            it_name.text = str(item)
            it_probability = etree.SubElement(it_el, 'probability')
            it_probability.text = str(probability)

        return tree
Exemple #16
0
 def move(self):
     Movable.move(self)
     if not self.on_move:
         self.state = 2
Exemple #17
0
 def set_move(self, pos):
     Movable.set_move(self, pos)
     self.state = 1
 def __init__(self, name, pos, sprite, hp, defense, res, max_move, strength,
              classes, equipments, lvl):
     Movable.__init__(self, name, pos, sprite, hp, defense, res, max_move,
                      strength, lvl)
     self.equipments = equipments
     self.classes = classes
 def display(self, screen):
     Movable.display(self, screen)
     for eq in self.equipments:
         eq.display(screen, self.pos, True)
def random_movable_entity(min_hp=10, max_defense=10, max_res=10):
    attrs = random_movable_attributes(min_hp, max_defense, max_res)
    return Movable(attrs['name'], attrs['pos'], attrs['sprite'], attrs['hp'],
                   attrs['defense'], attrs['res'], attrs['max_moves'],
                   attrs['strength'], attrs['attack_kind'], attrs['strategy'])
 def get_reach(self):
     reach = Movable.get_reach(self)
     w = self.get_weapon()
     if w is not None:
         reach = w.reach
     return reach
 def lvl_up(self):
     Movable.lvl_up(self)
     self.stats_up()
Exemple #23
0
    from src.StartScreen import StartScreen
    from src import LoadFromXMLManager as Loader

    pg.init()

    # Load fonts
    fonts.init_fonts()

    # Window parameters
    pg.display.set_caption("In the name of the Five Cats")
    screen = pg.display.set_mode((MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT))

    # Load constant sprites
    Destroyable.init_constant_sprites()
    Breakable.init_constant_sprites()
    Movable.init_constant_sprites()
    Sidebar.init_constant_sprites()
    Level.init_constant_sprites()

    # Load some data
    races = Loader.load_races()
    classes = Loader.load_classes()
    Character.init_data(races, classes)

    clock = pg.time.Clock()

    start_screen = StartScreen(screen)

    quit_game = False
    while not quit_game:
        for e in pg.event.get():