Quest system with progress tracking

Quest ext

Quest and QuestTree provide a player quest system with progress tracking, time limits, and BossBar integration.

from bridge.extensions import Quest, QuestTree

Quest

Constructor

Quest(name, description="", time_limit=None)

Lifecycle

accept(player)start(player)complete(player) / fail(player) / end(player)

Decorators

quest = Quest("Slay the Dragon", time_limit=300)

@quest.on_complete
def completed(player, quest):
    player.send_message("§aQuest complete!")

@quest.progress_getter
def progress(quest, player):
    return kills.get(player, 0) / 10  # 0.0 – 1.0

BossBar Integration

quest.show_bar(player)   # show progress/timer bar
quest.hide_bar(player)   # remove it

QuestTree

Layered quest progression. When all quests in a layer are complete, the next layer unlocks.

tree = QuestTree([
    [intro_quest],
    [quest_a, quest_b],
    [final_quest],
])

tree.current_depth(player)  # current layer index
tree.available(player)      # quests the player can start
tree.is_complete(player)    # all layers done?