Exemplo n.º 1
0
 def __init__(self):
     super().__init__()
     self.coinage = {
         'Copper': 0, 'Silver': 0, 'Electrum': 0,
         'Gold': dice(12, 6) * 1000, 'Platinum': dice(8, 6) * 1000,
         'Gems': 0, 'Jewels': 0
     }
     loot_data = (
         (2, {}),
         (5, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_c, (1, 8))]}),
         (8, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_c, (1, 8))]}),
         (11, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_c, (1, 8))]}),
         (14, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_c, (1, 8))]}),
         (22, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_d, (1, 6))]}),
         (30, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_d, (1, 6))]}),
         (38, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_d, (1, 6))]}),
         (46, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_d, (1, 6))]}),
         (52, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_e, (1, 6))]}),
         (58, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_e, (1, 6))]}),
         (63, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_e, (1, 6))]}),
         (68, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_e, (1, 6))]}),
         (69, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (70, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (71, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (72, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (74, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (76, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (78, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (80, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (85, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_i, (1, 4))]}),
         (90, {"Jewels": (1, 10, 2500), "Magic_Items": [(magic_table_i, (1, 4))]}),
         (95, {"Jewels": (1, 4, 7500), "Magic_Items": [(magic_table_i, (1, 4))]}),
         (100, {"Gems": (1, 8, 5000), "Magic_Items": [(magic_table_i, (1, 4))]})
     )
     self.set_loot(loot_data)
Exemplo n.º 2
0
def turn(defense: dict):
    roll_offence, roll_defense = dice(1, 20), dice(1, 20)

    if roll_offence > roll_defense:
        damage = dice(1, 10)
        defense['Health'] = max(defense['Health'] - damage, 0)
    return defense
Exemplo n.º 3
0
 def __init__(self):
     super().__init__()
     self.coinage = {
         'Copper': dice(6, 6) * 100, 'Silver': dice(3, 6) * 100,
         'Electrum': 0, 'Gold': dice(2, 6) * 10, 'Platinum': 0,
         'Gems': 0, 'Jewels': 0
     }
     loot_data = (
         (6, {}),
         (16, {"Gems": (2, 6, 10)}),
         (26, {"Jewels": (2, 4, 25)}),
         (36, {"Gems": (2, 6, 50)}),
         (44, {"Gems": (2, 6, 10), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (52, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (60, {"Gems": (2, 6, 50), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (65, {"Gems": (2, 6, 10), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (70, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (75, {"Gems": (2, 6, 50), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (78, {"Gems": (2, 6, 10), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (80, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (85, {"Gems": (2, 6, 50), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (92, {"Gems": (2, 4, 25), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (97, {"Jewels": (2, 6, 50), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (99, {"Gems": (2, 4, 25), "Magic_Items": [(magic_table_g, 1)]}),
         (100, {"Jewels": (2, 6, 50), "Magic_Items": [(magic_table_g, 1)]})
     )
     self.set_loot(loot_data)
Exemplo n.º 4
0
def campaign():
    random_class = RandomValue((
        Barbarian,
        Gladiator,
        Knight,
        Wizard,
        Warlock,
        Witch,
        Archer,
        Ninja,
        Pirate,
        Templar,
        Druid,
        Shaman,
    ))

    with open('combat_log.csv', 'w') as csv_file:
        file = csv.writer(csv_file, delimiter=',')
        file.writerow(("Attacker", "AttackerLevel", "Defender",
                       "DefenderLevel", "Winner"))
        for _ in range(1000000):
            attacker = random_class(dice(1, 20))
            defender = random_class(dice(1, 20))
            file.writerow(
                (attacker.name, attacker.level, defender.name, defender.level,
                 combat(attacker, defender)))
Exemplo n.º 5
0
def combat(player: dict, target: dict):
    init_roll_a, init_roll_b = dice(1, 20), dice(1, 20)
    while init_roll_a == init_roll_b:
        init_roll_a, init_roll_b = dice(1, 20), dice(1, 20)

    while player['Health'] > 0 and target['Health'] > 0:
        if init_roll_a > init_roll_b:
            player, target = combat_round(player, target)
        else:
            target, player = combat_round(target, player)

    if player['Health'] > 0:
        return player['Name']
    elif target['Health'] > 0:
        return target['Name']
    else:
        return 'Tie'
Exemplo n.º 6
0
 def set_loot(self, loot_data):
     loot = cumulative_weighted_choice(loot_data)
     for key in loot:
         if key == "Magic_Items":
             for itm in loot[key]:
                 table, amount = itm
                 if amount == 1:
                     self.magic_items.append(table())
                 else:
                     self.magic_items.extend(table() for _ in range(dice(*amount)))
         else:
             coin_type, amount = key, loot[key]
             n = len(amount)
             if n == 2:
                 r, s = amount
                 self.coinage[coin_type] += dice(r, s)
             elif n == 3:
                 r, s, m = amount
                 self.coinage[coin_type] += dice(r, s) * m
Exemplo n.º 7
0
 def __init__(self):
     super().__init__()
     self.coinage = {
         'Copper': 0, 'Silver': 0, 'Electrum': 0,
         'Gold': dice(4, 6) * 1000, 'Platinum': dice(5, 6) * 100,
         'Gems': 0, 'Jewels': 0
     }
     loot_data = (
         (3, {}),
         (6, {"Jewels": (2, 4, 250)}),
         (9, {"Jewels": (2, 4, 750)}),
         (12, {"Gems": (3, 6, 500)}),
         (15, {"Gems": (3, 6, 1000)}),
         (19, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_a, (1, 4)), (magic_table_b, (1, 6))]}),
         (23, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_a, (1, 4)), (magic_table_b, (1, 6))]}),
         (26, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_a, (1, 4)), (magic_table_b, (1, 6))]}),
         (29, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_a, (1, 4)), (magic_table_b, (1, 6))]}),
         (35, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_c, (1, 6))]}),
         (40, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_c, (1, 6))]}),
         (45, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_c, (1, 6))]}),
         (50, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_c, (1, 6))]}),
         (54, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_d, (1, 4))]}),
         (58, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_d, (1, 4))]}),
         (62, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_d, (1, 4))]}),
         (66, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_d, (1, 4))]}),
         (68, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_e, 1)]}),
         (70, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_e, 1)]}),
         (72, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_e, 1)]}),
         (74, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_e, 1)]}),
         (76, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (78, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (80, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (82, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (85, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (88, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (90, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (92, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_h, (1, 4))]}),
         (94, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_i, 1)]}),
         (96, {"Jewels": (2, 4, 750), "Magic_Items": [(magic_table_i, 1)]}),
         (98, {"Gems": (3, 6, 500), "Magic_Items": [(magic_table_i, 1)]}),
         (100, {"Gems": (3, 6, 1000), "Magic_Items": [(magic_table_i, 1)]}),
     )
     self.set_loot(loot_data)
Exemplo n.º 8
0
 def __init__(self):
     super().__init__()
     self.coinage = {
         'Copper': dice(2, 6) * 100, 'Silver': dice(2, 6) * 1000,
         'Electrum': 0, 'Gold': dice(6, 6) * 100, 'Platinum': dice(3, 6) * 10,
         'Gems': 0, 'Jewels': 0
     }
     loot_data = (
         (4, {}),
         (10, {"Jewels": (2, 4, 25)}),
         (16, {"Gems": (3, 6, 50)}),
         (22, {"Gems": (3, 6, 100)}),
         (28, {"Jewels": (2, 4, 250)}),
         (32, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (36, {"Gems": (3, 6, 50), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (40, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (44, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_a, (1, 6))]}),
         (49, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (54, {"Gems": (3, 6, 50), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (59, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (63, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_b, (1, 4))]}),
         (66, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (69, {"Gems": (3, 6, 50), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (72, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (74, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_c, (1, 4))]}),
         (76, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_d, 1)]}),
         (78, {"Gems": (3, 6, 50), "Magic_Items": [(magic_table_d, 1)]}),
         (79, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_d, 1)]}),
         (80, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_d, 1)]}),
         (84, {"Jewels": (2, 4, 25), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (88, {"Gems": (3, 6, 50), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (91, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (94, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_f, (1, 4))]}),
         (96, {"Gems": (2, 4, 100), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (98, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_g, (1, 4))]}),
         (99, {"Gems": (3, 6, 100), "Magic_Items": [(magic_table_h, 1)]}),
         (100, {"Jewels": (2, 4, 250), "Magic_Items": [(magic_table_h, 1)]})
     )
     self.set_loot(loot_data)
Exemplo n.º 9
0
 def damage(self):
     return dice(1, 6)
Exemplo n.º 10
0
 def damage(self):
     return dice(self.level, self.dam_dice)
Exemplo n.º 11
0
 def __init__(self, level):
     self.level = level
     self.health = max(self.hit_dice, dice(self.level, self.hit_dice))
     self.n_specials = self.level // 5