Exemple #1
0
def tavern_play(player):
    print("Shady looking guy sits at the table.")
    if player.money >= 10:
        choice = input("Do you want to play traveler? (yes/no): ")
        if choice == 'y' or choice == 'yes':
            print("Lest play then")
            npc_roll = dice.roll_dice()
            player_roll = dice.roll_dice()
            if player_roll > npc_roll:
                print("Shady guy: Not bad. Lucky bastard.")
                player.money += 10
                print(player)
            elif player_roll < npc_roll:
                print("Too bad!")
                player.money -= 10
                print(player)
            else:
                print("Shady guy: Draw? What a pity.")
                print(player)
        elif choice == 'n' or choice == "no":
            print(
                "Shady guy makes angry face and screams 'don't bother me then' and hits you in the face"
            )
            player.life -= 10
            print(player)
        else:
            print("Choose 'yes' or 'no'!")
            tavern_play(player)
    else:
        print(
            f"Shady guy: You need at least 10 gold coins to play with me and you have only {player.money}. Go away!"
        )
        enter_the_tavern(player)
    enter_the_tavern(player)
Exemple #2
0
    def __init__(self):
        super().__init__()
        self.Name = 'Kobold'
        self.HP = roll_dice('1d4')
        roll = roll_dice('1d4')
        if roll <= 2:
            self.weapon = choice(Weapons['1d4'])

        else:
            if roll == 4:
                roll2 = roll_dice('1d4')
                if roll2 >= 3:
                    self.weapon = choice(Weapons['1d8'])
                else:
                    self.weapon = choice(Weapons['1d6'])
            else:
                self.weapon = choice(Weapons['1d6'])
        listx = ['Sling', 'Bow']
        if self.weapon == 'Crossbow':
            self.weapon = 'Bow'

        self.Inventory = [self.weapon]
        # TODO needs a function
        if self.weapon in listx:
            self.Inventory.append('Dagger')
            if self.weapon == 'Bow':
                self.Inventory.append('5 Arrows')
            if self.weapon == 'Sling':
                self.Inventory.append('5 stones')
        self.Damage = weapon_damage(self.weapon)
Exemple #3
0
 def __init__(self):
     super().__init__()
     self.Name = 'Skeleton'
     self.HP = roll_dice('1d8')
     roll = roll_dice('1d6')
     if roll <= 1:
         self.weapon = choice(Weapons['1d4'])
     elif roll <= 4:
         self.weapon = choice(Weapons['1d6'])
     elif roll <= 5:
         self.weapon = choice(Weapons['1d8'])
     elif roll <= 6:
         self.weapon = choice(Weapons['1d10'])
     if self.weapon == 'Sling':
         self.weapon = 'Club'
     elif self.weapon == 'Crossbow':
         self.weapon = 'Bow'
     self.Damage = weapon_damage(self.weapon)
     self.Inventory = [self.weapon]
     # TODO needs a function
     listx = ['Sling', 'Bow']
     if self.weapon in listx:
         self.Inventory.append('Dagger')
         if self.weapon == 'Bow':
             self.Inventory.append('5 Arrows')
         if self.weapon == 'Sling':
             self.Inventory.append('5 stones')
Exemple #4
0
def starting_path(player):
    print("starting location description")
    choose = input(
        "Where ya go? Or maybe do you wanna look around? (city/river/look): ")
    if choose == 'city':
        return 'city'
    elif choose == 'river':
        return 'river'
    elif choose == 'look':
        print(
            "You look around. Notice small hut. Inside you meet weird gobling wearing medical smock. He wants to play a game."
        )
        print(
            "Dialogue 1, blah blah regardless you will have to promise me to go to the city."
        )
        goblin_choice = input(
            f"So will you play with me {player.name}? (yes/no)")
        if goblin_choice == "yes" or goblin_choice == "y":
            goblin_roll = dice.roll_dice()
            player_roll = dice.roll_dice()
            if goblin_roll > player_roll:
                print(
                    f"Oh you loose {player.name}. I'm taking your kidney then!"
                )
                player.life = 50
                return "city"
            elif goblin_roll < player_roll:
                print(
                    f"Damn you {player.name}. You win this time, here's your money!"
                )
                player.money = 100
                return "city"
            else:
                print(
                    "Draw. What a shame. I'll take some of your hairs and have some money"
                )
                player.money = 60
                player.life = 90
                return "city"
        else:
            print("I see you are a coward!")
            print(
                "THat hits your morale, but you proceed to the city scared of green psycho"
            )
            player.life = 90
            return "city"
    else:
        print('Please input one of presented options in bracket.')
        starting_path()
Exemple #5
0
def ending_game(player):
    opponent_life = 666
    while player.life > 0 and opponent_life > 0:
        if moving.end_game(player) == "Player win":
            opponent_life -= player.weapon
            print(
                f"{player.name} hits Black Knight for {player.weapon} points! Black Knight has {opponent_life} hit points left."
            )
        elif moving.end_game(player) == "Black Knight win":
            player.life -= 10
            print(
                f"{player.name} takes hit for 10 points. You have {player.life} hit points left."
            )
        else:
            print(moving.end_game(player))
    if player.life == 0:
        print("Oh no, you are dead! X_X")
    elif opponent_life <= 0:
        prize = dice.roll_dice() * 666
        player.money += prize
        print(
            f"{player.name} has killed Black Knight and found {prize} gold coins. "
            f"Now {player.name} has {player.money} gold coins and {player.life}/100 hit points left."
        )
        print(
            f"{player.name} feeling strong walks away from dead Black Knight.")
        player.quest = 3
        print(f"Exhausted {player.name} goes to tavern to drink to death.")
        print("You win? I made mistake then it shouldn't be possible!")
Exemple #6
0
def river_troll_fight2(player):
    opponent_life = 10
    input("Just press anything to start fight (and confirm with ENTER).")
    while player.life > 0 and opponent_life > 0:
        if moving.encounter(player) == "Player win":
            opponent_life -= player.weapon
            print(
                f"{player.name} hits troll for {player.weapon} points! Troll has {opponent_life} hit points left."
            )
        elif moving.encounter(player) == "Opponent win":
            player.life -= 10
            print(
                f"{player.name} takes hit for 10 points. You have {player.life} hit points left."
            )
        else:
            print(moving.encounter(player))
    if player.life == 0:
        print(gascii.you_died())
    elif opponent_life <= 0:
        prize = dice.roll_dice() * 20
        player.money += prize
        print(gascii.moneyz())
        print(
            f"{player.name} has killed troll and found {prize} gold coins. "
            f"Now {player.name} has {player.money} gold coins and {player.life}/100 hit points left."
        )
        print(f"{player.name} feeling strong walks back towards river bank.")
        player.quest = 2
        print(
            f"Exhausted {player.name} leaves the cave. It's time to go back to the city to get reward from the order, isn't it?"
        )
        river_direction(player)
Exemple #7
0
def river_troll_fight1(player):
    opponent_life = 10
    while player.life > 0 and opponent_life > 0:
        if moving.encounter_disadvantage(player) == "Player win":
            opponent_life -= player.weapon
            print(
                f"{player.name} hits troll for {player.weapon} points! Troll has {opponent_life} hit points left."
            )
        elif moving.encounter_disadvantage(player) == "Opponent win":
            player.life -= 10
            print(
                f"{player.name} takes hit for 10 points. You have {player.life} hit points left."
            )
        else:
            print(moving.encounter_disadvantage(player))
    if player.life == 0:
        print("Oh no, you are dead! X_X")
    elif opponent_life <= 0:
        prize = dice.roll_dice() * 20
        player.money += prize
        print(
            f"{player.name} has killed troll and found {prize} gold coins. "
            f"Now {player.name} has {player.money} gold coins and {player.life}/100 hit points left."
        )
        print(f"{player.name} feeling strong walks back towards river bank.")
        player.quest = 2
        print(
            f"Exhausted {player.name} leaves the cave. It's time to go back to the city to get reward from the order, isn't it?"
        )
        river_direction(player)
Exemple #8
0
def cave_wolf_encounter(player):
    opponent_life = 5
    print(gascii.wolf_view())
    input("Just press anything to start fight (and confirm with ENTER).")
    while player.life > 0 and opponent_life > 0:
        if moving.encounter(player) == "Player win":
            opponent_life -= player.weapon
            print(
                f"{player.name} hits wolf for {player.weapon} points! Wolf has {opponent_life} hit points left."
            )
        elif moving.encounter(player) == "Opponent win":
            player.life -= 10
            print(
                f"{player.name} takes hit for 10 points. You have {player.life} hit points left."
            )
        else:
            print(moving.encounter(player))
    if player.life == 0:
        print(gascii.you_died())
    elif opponent_life <= 0:
        prize = dice.roll_dice() * 11
        player.money += prize
        print(gascii.moneyz())
        print(
            f"{player.name} has killed wolf and found {prize} gold coins. "
            f"Now {player.name} has {player.money} gold coins and {player.life}/100 hit points left."
        )
        print(f"{player.name} feeling strong walks back towards river bank.")
        river_cave_02(player)
Exemple #9
0
def cave_wolf_encounter(player):
    opponent_life = 5
    while player.life > 0 and opponent_life > 0:
        if moving.encounter(player) == "Player win":
            opponent_life -= player.weapon
            print(
                f"{player.name} hits wolf for {player.weapon} points! Wolf has {opponent_life} hit points left."
            )
        elif moving.encounter(player) == "Opponent win":
            player.life -= 10
            print(
                f"{player.name} takes hit for 10 points. You have {player.life} hit points left."
            )
        else:
            print(moving.encounter(player))
    if player.life == 0:
        print("Oh no, you are dead! X_X")
    elif opponent_life <= 0:
        prize = dice.roll_dice() * 11
        player.money += prize
        print(
            f"{player.name} has killed wolf and found {prize} gold coins. "
            f"Now {player.name} has {player.money} gold coins and {player.life}/100 hit points left."
        )
        print(f"{player.name} feeling strong walks back towards river bank.")
        river_cave_02(player)
Exemple #10
0
def encounter(player):
    player_roll = dice.roll_dice() + player.weapon
    opponent_roll = dice.roll_dice()
    if player_roll > opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. {player.name} wins this round!"
        )
        return "Player win"
    elif player_roll < opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. {player.name} lost this round!"
        )
        return "Opponent win"
    else:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. This round ended with draw!"
        )
        return "Draw"
Exemple #11
0
def ranged_fumble(roll):
  if roll == 1:
    damage = roll_dice(2, 6)["result"]
    return "Weapon is broken, dealing {} bludgeoning damage".format(damage)
  elif roll == 2:
    return "Weapon is broken"
  elif roll < 11:
    return "Weapon malfunction: fix with an action."
  elif roll < 20:
    return "Your attack hits the first creature {} of you within range.".format(direction())
  else:
    return "You got lucky"
Exemple #12
0
def melee_fumble(roll):
  if roll == 1:
    damage = roll_dice(2, 6)["result"]
    return "The weapon breaks and you take {} slashing damage.".format(damage)
  elif roll == 2:
    return "The weapon breaks."
  elif roll < 11:
    return "Your attack hits you. Receive half damage."
  elif roll < 20:
    return "Your attack hits the first creature {} of you within range.".format(direction())
  else:
    return "You got lucky"
Exemple #13
0
def cast_spell(*args, **kwargs):
    results = []
    camera = kwargs.get('camera')
    con = kwargs.get('console')
    screen_width = kwargs.get('screen_width')
    screen_height = kwargs.get('screen_height')
    fov_map = kwargs.get('fov_map')

    caster = args[0]
    entities = kwargs.get('entities')
    damage = roll_dice(kwargs.get('damage'))
    maximum_range = kwargs.get('maximum_range')

    target = None
    closest_distance = maximum_range + 1

    for entity in entities:
        if entity._Fighter and entity != caster and fov_map.fov[entity.y,
                                                                entity.x]:
            distance = caster.distance_to(entity)

            if distance < closest_distance:
                target = entity
                closest_distance = distance

    if target:
        draw_animation(con, camera, screen_width, screen_height, target.x,
                       target.y, 'flash')
        tcod.console_blit(con, 0, 0, screen_width, screen_height, 0, 0, 0)
        tcod.console_flush(keep_aspect=True)

        results.append({
            'consumed':
            True,
            'target':
            target,
            'message':
            Message(
                F'A crackling stream of energy hits {target.name} for {damage} hit points.'
            )
        })
        results.extend(target._Fighter.take_damage(damage))
    else:
        results.append({
            'consumed':
            False,
            'target':
            None,
            'message':
            Message('No enemy is close enough to strike.', tcod.red)
        })

    return results
Exemple #14
0
def river_cave_01(player):
    print(
        f"The entrance is really dark but behind the corner {player.name} finds primitive fire pit."
    )
    cave01_decision = input(
        "Next to it sleeps wolf. Do you want to sneak by it or attack it? (sneak/attack) "
    )
    if cave01_decision == "sneak":
        if dice.roll_dice() >= 4:
            print(f"{player.name} sneaks by on tip toes.")
            river_cave_02(player)
        elif dice.roll_dice() < 4:
            print(
                f"Oh no! Clumsy {player.name} stomped on little twig and the wolf woke up. You need to fight for your life!"
            )
            cave_wolf_encounter(player)
    elif cave01_decision == "attack":
        print(f"{player.name} grabs weapon and charges towards wolf!")
        cave_wolf_encounter(player)
    else:
        print("Please input command highlighted in the brackets.")
        river_cave_01(player)
Exemple #15
0
def tavern_play(player):
    print("\nShady looking guy sits at the table.")
    if player.money >= 10:
        choice = input("Do you want to play traveler? (yes/no): ").lower()
        if choice == 'y' or choice == 'yes':
            print("Let's play then!")
            print(gascii.dice_art())
            npc_roll = dice.roll_dice()
            player_roll = dice.roll_dice()
            if player_roll > npc_roll:
                print("Shady guy: Not bad. Lucky bastard.")
                print(gascii.moneyz())
                player.money += 10
                enter_the_tavern(player)
            elif player_roll < npc_roll:
                print("Too bad!")
                print(gascii.sad_smiley())
                player.money -= 10
                enter_the_tavern(player)
            else:
                print("Shady guy: Draw? What a pity. \n  ¯\_(ツ)_/¯")
                enter_the_tavern(player)
        elif choice == 'n' or choice == "no":
            print("Shady guy makes angry face and screams 'don't bother me then' and hits you in the face")
            print(gascii.sword_art())
            player.life -= 10
            print(f"{player.name} lost 10 hit points.")
            enter_the_tavern(player)
        elif choice == "stats":
            commands.my_stats(player)
            tavern_play(player)
        else:
            commands.typo()
            tavern_play(player)
    else:
        print(f"Shady guy: You need at least 10 gold coins to play with me and you have only {player.money}. Go away!")
        enter_the_tavern(player)
    enter_the_tavern(player)
Exemple #16
0
def main():
    print('This program rolls two dice %d times and' % NUM_ROLLS)
    print('determines the number of times a certain number occurs.\n')

    number = int(input('Enter a number from 2 to 12: '))
    while number > 12 or number < 2:
        print('Error, number must be between 2 and 12')
        number = int(input('Enter a number from 2 to 12: '))

    count = 0
    for i in range(NUM_ROLLS):
        die1, die2 = dice.roll_dice()
        if die1 + die2 == number:
            count += 1
    print('Out of %d rolls, %d occurs %d times.' % (NUM_ROLLS, number, count))
Exemple #17
0
def get_out():
    global counter2
    global count
    counter2 = counter2 + 1
    print(count, ": ", counter2)
    result = roll_dice()
    change_label(result)
    if count == 0:
        main.title(player.get_player(count))
        if counter2 % 3 == 0:
            count += 1
    elif count == 1:
        main.title(player.get_player(count))
        if counter2 % 3 == 0:
            count -= 1
Exemple #18
0
def click():
    global count
    main.title(player.get_player(count))
    result = roll_dice()
    print(player.get_player(count), "(", count, ")", "rolled", result)
    change_label(result)
    saver.write_csv(player.get_player(count), result)
    if count == 0:
        if result != 6:
            main.title(player.get_player(count))
            count = count + 1
    elif count == 1:
        if result != 6:
            main.title(player.get_player(count))
            count = count - 1
Exemple #19
0
def cast_fireball(*args, **kwargs):
    results = []
    camera = kwargs.get('camera')
    con = kwargs.get('console')
    screen_width = kwargs.get('screen_width')
    screen_height = kwargs.get('screen_height')
    fov_map = kwargs.get('fov_map')

    entities = kwargs.get('entities')
    damage_dice = kwargs.get('damage')
    radius = kwargs.get('radius')
    r = int((radius - 1) / 2)
    target_x = kwargs.get('target_x') - camera.x
    target_y = kwargs.get('target_y') - camera.y

    if not fov_map.fov[target_y, target_x]:
        results.append({
            'consumed':
            False,
            'message':
            Message('You cannot target a tile outside your field of view.',
                    tcod.yellow)
        })
        return results

    for x in range(target_x - r, target_x + r + 1):
        for y in range(target_y - r, target_y + r + 1):
            draw_animation(con, camera, screen_width, screen_height, x, y,
                           'explosion')

    tcod.console_blit(con, 0, 0, screen_width, screen_height, 0, 0, 0)
    tcod.console_flush(keep_aspect=True)
    results.append({
        'consumed':
        True,
        'message':
        Message(F'The flaming sphere explodes!', tcod.orange)
    })
    for entity in entities:
        if entity.distance(target_x, target_y) <= radius and entity._Fighter:
            damage = roll_dice(damage_dice)
            results.append({
                'message':
                Message(F'{entity.name} gets blasted for {damage} hit points.',
                        tcod.orange)
            })
            results.extend(entity._Fighter.take_damage(damage))
    return results
Exemple #20
0
    def _add_to_combat(self, combat, monsters):
        if not combat:
            return

        # Add monsters to the combat
        combat.monsters.update({monster.name: monster for monster in monsters})

        # No turn manager, so don't worry about adding them to the
        # initiative order...
        if not combat.tm:
            return

        for monster in monsters:
            if self.initiative_resolver:
                roll = self.initiative_resolver(monster)
            else:
                roll = roll_dice(1, 20, modifier=monster.initiative_mod)
            combat.tm.add_combatant(monster, roll)
Exemple #21
0
def cast_fireball(*args, **kwargs):
    results = []

    animation = kwargs.get('animation')
    root = kwargs.get('root')
    context = kwargs.get('context')

    camera = kwargs.get('camera')
    fov_map = kwargs.get('fov_map')

    entities = kwargs.get('entities')
    damage_dice = kwargs.get('damage')
    radius = kwargs.get('radius')
    r = int((radius-1) / 2)
    target_x = kwargs.get('target_x')
    target_y = kwargs.get('target_y')

    if not fov_map.fov[target_y, target_x]:
        results.append({'consumed': False,
                        'message': Message(SYS_LOG['outside_fov'], tcod.yellow)})
        return results

    ex = tuple(colors.get('explosion'))
    for x in range(target_x - r, target_x + r + 1):
        for y in range(target_y - r, target_y + r + 1):
            draw_animation(animation, camera, x,y, " ", bg=ex)

    refresh_console(root, animation, context, 0, 1 , 0.15)

    results.append({'consumed': True, 'animate': True,
                    'message': Message(ITEM_LOG['magic']['fireball']['describe'], tcod.orange)})

    for entity in entities:
        if entity.distance(target_x, target_y) <= math.sqrt(2*(r**2)) and entity._Fighter:
            damage = roll_dice(damage_dice)
            results.append({'message': Message(cout(ITEM_LOG['magic_attack'],
                                                받침(ITEM_LOG['magic']['fireball']['name']),
                                                ITEM_LOG['magic']['fireball']['effect'],
                                                받침(entity.name,1),
                                                damage), tcod.orange)})
            results.extend(entity._Fighter.take_damage(damage))
    return results
Exemple #22
0
def melee_critical(roll):
    damage = 0
    if roll == 1:
        return 'Target must succeed DC 14 con save or go unconscious until they succeed a DC12 con save on the end of their turn.'
    elif roll == 2:
        damage = roll_dice(3, 6)["result"]
        return 'Target suffers internal trauma and takes {} bludgeoning damage.'.format(
            damage)
    elif roll < 5:
        return "The target cannot use reactions for the rest of your turn."
    elif roll < 11:
        return 'You can use your reaction to make a single melee attack against this creature.'
    elif roll < 15:
        return "You build momentum and gain an additional 10ft of movement this turn."
    elif roll < 18:
        return "Limb damage: the target's movement speed is decreased by 5 feet until they complete a short rest."
    elif roll < 20:
        return 'If the target is holding a weapon, you knock it onto the ground.'
    else:
        return 'You gain an extra action this turn'
Exemple #23
0
    def attack(self, target):
        """
        0: (int) attack difficulty
        1: (int) steps achieved
        2: (list) dices rolled
        3: (tuple) damage dealed FAT, INJ
        4: missed, blocked, dmg, overkill
        :param target:
        :return:
        """
        assert isinstance(target, Creature)

        attack_report = []

        attack_difficulty = 2
        attack_report.append(attack_difficulty)

        step_value, dices_rolled = make_skill_roll(self.sheet.fitness, self.sheet.brawling)
        attack_report.append(step_value)
        attack_report.append(dices_rolled)

        result = step_value - attack_difficulty
        # Overkill
        if result >= 4:
            target.sheet.fatigue += 1
            attack_report.append((1, 0))
            attack_report.append("overkill")
        elif result >= 0:
            dice = roll_dice(1)
            if dice > target.sheet.ac:
                target.sheet.fatigue += 1
                attack_report.append((1, 0))
                attack_report.append("dmg")
            else:
                attack_report.append((0, 0))
                attack_report.append("blocked")
        else:
            attack_report.append((0, 0))
            attack_report.append("missed")

        return attack_report
Exemple #24
0
def encounter_disadvantage(player):
    player_roll = dice.roll_dice() + player.weapon
    opponent_roll = 0
    opponent_roll1 = dice.roll_dice_1k12()
    opponent_roll2 = dice.roll_dice_1k12()
    if opponent_roll1 > opponent_roll2:
        opponent_roll = opponent_roll1
    else:
        opponent_roll = opponent_roll2
    if player_roll > opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. {player.name} wins this round!"
        )
        return "Player win"
    elif player_roll < opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. {player.name} lost this round!"
        )
        return "Opponent win"
    else:
        print(
            f"{player.name} has rolled {player_roll} and opponent has rolled {opponent_roll}. This round ended with draw!"
        )
        return "Draw"
Exemple #25
0
def end_game(player):
    player_roll = dice.roll_dice() + player.weapon
    opponent_roll = 0
    opponent_roll1 = dice.roll_dice_1k12() + player.weapon
    opponent_roll2 = dice.roll_dice_1k12() + player.weapon
    if opponent_roll1 > opponent_roll2:
        opponent_roll = opponent_roll1
    else:
        opponent_roll = opponent_roll2
    if player_roll > opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and Black Knight has rolled {opponent_roll}. {player.name} wins this round!"
        )
        return "Player win"
    elif player_roll < opponent_roll:
        print(
            f"{player.name} has rolled {player_roll} and Black Knight has rolled {opponent_roll}. {player.name} lost this round!"
        )
        return "Black Knight win"
    else:
        print(
            f"{player.name} has rolled {player_roll} and Black Knight has rolled {opponent_roll}. This round ended with draw!"
        )
        return "Draw"
Exemple #26
0
import dice
print(dice.roll_dice())
print(dice.roll_dice())
Exemple #27
0
                if this_game < best_game[1]:
                    best_game = [al250.name, this_game]
                    best_values = these_values1
                has_won = True
            if current_points[al500.name] >= WINNING_POINTS:
                wins[al500.name] += 1
                if this_game < best_game[1]:
                    best_game = [al500.name, this_game]
                    best_values = these_values2
                has_won = True

            num_dice = NUM_DICE
            turn1 = True
            pts1 = 0
            while turn1:
                rroll = roll_dice(num_dice)
                vals = gd.value(rroll)
                if len(vals) == 0:  # No Points!
                    turn1 = False
                    pts1 = 0

                else:
                    choice = al250.decision(vals, pts1)
                    these_values1.append(choice)
                    if choice[1] == None:  # Decided to take points
                        current_points[al250.name] += choice[0] + pts1
                        turn1 = False
                    else:
                        pts1 += choice[0]
                        num_dice = choice[1]
Exemple #28
0
args = parser.parse_args()
pattern = re.compile('^(\d+)d(\d+)([-+])?(\d+)?$', re.IGNORECASE)
matches = pattern.match(args.dice)
if matches:
    groups = matches.groups()
    if args.high:
        total = dice.roll_high(int(groups[0]), int(groups[1]),
                               float(args.factor))
        fairness = '(The dice are weighted high)'
    elif args.low:
        total = dice.roll_low(int(groups[0]), int(groups[1]),
                              float(args.factor))
        fairness = '(The dice are weighted low)'
    else:
        total = dice.roll_dice(int(groups[0]), int(groups[1]))
        fairness = '(The dice are fair)'

    if groups[2] is None:
        print('Rolled', total, 'for a total of', sum(total), fairness)
    else:
        if groups[2] == '-':
            modifier = int(groups[3]) * -1
            print('Rolled', total, 'minus', groups[3], 'for a total of',
                  sum(total) + modifier, fairness)
        else:
            modifier = int(groups[3])
            print('Rolled', total, 'plus', groups[3], 'for a total of',
                  sum(total) + modifier, fairness)
else:
    print('No dice string found.')
def ultimatedie():
    dice_number = dice.roll_dice()
    while (dice_number == 6) or (dice_number == 5):
        dice_number = dice.roll_dice()
Exemple #30
0
def natural_fumble(roll):
  if roll == 1:
    return "The attack is disabled until you complete a short or long rest, and you take {} slashing damage".format(roll_dice(2, 6)["result"])
  elif roll == 2:
    return "This attack is disabled until you complete a short or long rest"
  elif roll < 11:
    return "Minor sprain: take {} bludgeoning damage the next time you use this attack".format(roll_dice(2, 6)["result"])
  elif roll < 20:
    return "Your attack hits the first creature {} of you within range.".format(direction())
  else:
    return "You got lucky"
Exemple #31
0
def main():
    layout = [
        [
            # TODO output only stores one line, have it write like stdout
            sg.Output(
                size=(90, 25),
                echo_stdout_stderr=True,
                tooltip="Results of the dice rolled",
                key="-OUTPUT-",
            )
        ],
        [
            # TODO find way to make to auto-clear this field when clicked on
            sg.Input(20,
                     size=(8, 1),
                     tooltip="Amount of sides on the dice",
                     key="-SIDES-"),
            # TODO disable if 'repeat' chosen and vice versa
            sg.Input(
                1,
                size=(8, 1),
                tooltip=
                "Times to roll the dice. Disabled if Repeat button enabled",
                key="-COUNT-",
            ),
            # TODO these need to be able to be unchecked
            #      but remain in radio group to be one or the other
            sg.Radio(
                "Adv.",
                "adv_or_disadv",
                tooltip="Roll two d20 and choose the higher roll",
            ),
            sg.Radio(
                "Disadv.",
                "adv_or_disadv",
                tooltip="Roll two d20 and choose the lower roll",
            ),
            sg.Check(
                "Sum rolls",
                auto_size_text=True,
                tooltip="Sum all rolls. Only valid with 'Count'",
            ),
            sg.Submit(
                "Roll!",
                auto_size_button=True,
                tooltip="Roll the dice with the parameters given",
            ),
        ],
    ]

    window = sg.Window(
        "Dice",
        layout,
        auto_size_text=True,
        auto_size_buttons=True,
        size=(600, 400),
        element_justification="center",
    )

    while True:
        event, values = window.read()
        if event in (sg.WINDOW_CLOSED, "Exit"):
            break
        if event == "Roll!":
            sides = int(values["-SIDES-"])
            count = int(values["-COUNT-"])
            window["-OUTPUT-"].update(roll_dice(sides, count))
            window.Refresh()

    window.close()