rename module to taleweave, implement effect cooldowns
This commit is contained in:
parent
87ed47324c
commit
a30e762498
|
@ -1,8 +1,7 @@
|
|||
adventure/custom_*
|
||||
adventure/user_config.yaml
|
||||
worlds/
|
||||
__pycache__/
|
||||
.env
|
||||
venv/
|
||||
client/node_modules/
|
||||
client/out/
|
||||
taleweave/custom_*
|
||||
|
|
14
Makefile
14
Makefile
|
@ -32,22 +32,22 @@ package-upload:
|
|||
twine upload dist/*
|
||||
|
||||
lint-check:
|
||||
black --check adventure/
|
||||
black --check taleweave/
|
||||
black --check tests/
|
||||
flake8 adventure
|
||||
flake8 taleweave
|
||||
flake8 tests
|
||||
isort --check-only --skip __init__.py --filter-files adventure
|
||||
isort --check-only --skip __init__.py --filter-files taleweave
|
||||
isort --check-only --skip __init__.py --filter-files tests
|
||||
|
||||
lint-fix:
|
||||
black adventure/
|
||||
black taleweave/
|
||||
black tests/
|
||||
flake8 adventure
|
||||
flake8 taleweave
|
||||
flake8 tests
|
||||
isort --skip __init__.py --filter-files adventure
|
||||
isort --skip __init__.py --filter-files taleweave
|
||||
isort --skip __init__.py --filter-files tests
|
||||
|
||||
style: lint-fix
|
||||
|
||||
typecheck:
|
||||
mypy adventure
|
||||
mypy taleweave
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
from logging import getLogger
|
||||
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
action_context,
|
||||
broadcast,
|
||||
get_agent_for_character,
|
||||
get_character_agent_for_name,
|
||||
world_context,
|
||||
)
|
||||
from adventure.errors import ActionError
|
||||
from adventure.utils.conversation import loop_conversation
|
||||
from adventure.utils.search import (
|
||||
from taleweave.errors import ActionError
|
||||
from taleweave.utils.conversation import loop_conversation
|
||||
from taleweave.utils.search import (
|
||||
find_character_in_room,
|
||||
find_item_in_character,
|
||||
find_item_in_room,
|
||||
find_room,
|
||||
)
|
||||
from adventure.utils.string import normalize_name
|
||||
from adventure.utils.world import describe_entity
|
||||
from taleweave.utils.string import normalize_name
|
||||
from taleweave.utils.world import describe_entity
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -3,22 +3,23 @@ from typing import Callable, List
|
|||
|
||||
from packit.agent import Agent, agent_easy_connect
|
||||
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
action_context,
|
||||
broadcast,
|
||||
get_agent_for_character,
|
||||
get_current_turn,
|
||||
get_dungeon_master,
|
||||
get_game_systems,
|
||||
has_dungeon_master,
|
||||
set_dungeon_master,
|
||||
world_context,
|
||||
)
|
||||
from adventure.errors import ActionError
|
||||
from adventure.generate import generate_item, generate_room, link_rooms
|
||||
from adventure.utils.effect import apply_effects
|
||||
from adventure.utils.search import find_character_in_room
|
||||
from adventure.utils.string import normalize_name
|
||||
from adventure.utils.world import describe_character, describe_entity
|
||||
from taleweave.errors import ActionError
|
||||
from taleweave.generate import generate_item, generate_room, link_rooms
|
||||
from taleweave.utils.effect import apply_effects, is_effect_ready
|
||||
from taleweave.utils.search import find_character_in_room
|
||||
from taleweave.utils.string import normalize_name
|
||||
from taleweave.utils.world import describe_character, describe_entity
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
@ -154,15 +155,22 @@ def action_use(item: str, target: str) -> str:
|
|||
if not chosen_effect:
|
||||
raise ValueError(f"The {chosen_name} effect is not available to apply.")
|
||||
|
||||
if chosen_effect.uses is None:
|
||||
pass
|
||||
elif chosen_effect.uses == 0:
|
||||
current_turn = get_current_turn()
|
||||
effect_ready = is_effect_ready(chosen_effect, current_turn)
|
||||
|
||||
if effect_ready == "cooldown":
|
||||
raise ActionError(
|
||||
f"The {chosen_name} effect of {item} is still cooling down and is not ready to use yet."
|
||||
)
|
||||
elif effect_ready == "exhausted":
|
||||
raise ActionError(
|
||||
f"The {chosen_name} effect of {item} has no uses remaining."
|
||||
)
|
||||
elif chosen_effect.uses > 0:
|
||||
elif chosen_effect.uses is not None:
|
||||
chosen_effect.uses -= 1
|
||||
|
||||
chosen_effect.last_used = current_turn
|
||||
|
||||
try:
|
||||
apply_effects(target_character, [chosen_effect])
|
||||
except Exception:
|
|
@ -1,8 +1,8 @@
|
|||
from adventure.context import action_context, get_agent_for_character, get_current_turn
|
||||
from adventure.errors import ActionError
|
||||
from adventure.models.config import DEFAULT_CONFIG
|
||||
from adventure.models.planning import CalendarEvent
|
||||
from adventure.utils.planning import get_recent_notes
|
||||
from taleweave.context import action_context, get_agent_for_character, get_current_turn
|
||||
from taleweave.errors import ActionError
|
||||
from taleweave.models.config import DEFAULT_CONFIG
|
||||
from taleweave.models.planning import CalendarEvent
|
||||
from taleweave.utils.planning import get_recent_notes
|
||||
|
||||
character_config = DEFAULT_CONFIG.world.character
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
from adventure.context import action_context, get_system_data
|
||||
from adventure.systems.quest import (
|
||||
from taleweave.context import action_context, get_system_data
|
||||
from taleweave.systems.quest import (
|
||||
QUEST_SYSTEM,
|
||||
complete_quest,
|
||||
get_active_quest,
|
||||
get_quests_for_character,
|
||||
set_active_quest,
|
||||
)
|
||||
from adventure.utils.search import find_character_in_room
|
||||
from taleweave.utils.search import find_character_in_room
|
||||
|
||||
|
||||
def accept_quest(character: str, quest: str) -> str:
|
|
@ -7,15 +7,15 @@ from typing import Dict
|
|||
|
||||
from discord import Client, Embed, File, Intents
|
||||
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
broadcast,
|
||||
get_character_agent_for_name,
|
||||
get_current_world,
|
||||
set_character_agent,
|
||||
subscribe,
|
||||
)
|
||||
from adventure.models.config import DEFAULT_CONFIG, DiscordBotConfig
|
||||
from adventure.models.event import (
|
||||
from taleweave.models.config import DEFAULT_CONFIG, DiscordBotConfig
|
||||
from taleweave.models.event import (
|
||||
ActionEvent,
|
||||
GameEvent,
|
||||
GenerateEvent,
|
||||
|
@ -26,14 +26,14 @@ from adventure.models.event import (
|
|||
ResultEvent,
|
||||
StatusEvent,
|
||||
)
|
||||
from adventure.player import (
|
||||
from taleweave.player import (
|
||||
RemotePlayer,
|
||||
get_player,
|
||||
has_player,
|
||||
remove_player,
|
||||
set_player,
|
||||
)
|
||||
from adventure.render.comfy import render_event
|
||||
from taleweave.render.comfy import render_event
|
||||
|
||||
logger = getLogger(__name__)
|
||||
client = None
|
|
@ -17,10 +17,10 @@ from typing import (
|
|||
from packit.agent import Agent
|
||||
from pyee.base import EventEmitter
|
||||
|
||||
from adventure.game_system import GameSystem
|
||||
from adventure.models.entity import Character, Room, World
|
||||
from adventure.models.event import GameEvent
|
||||
from adventure.utils.string import normalize_name
|
||||
from taleweave.game_system import GameSystem
|
||||
from taleweave.models.entity import Character, Room, World
|
||||
from taleweave.models.event import GameEvent
|
||||
from taleweave.utils.string import normalize_name
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -3,7 +3,7 @@ from typing import Any, Callable, Protocol
|
|||
|
||||
from packit.agent import Agent
|
||||
|
||||
from adventure.models.entity import World, WorldEntity
|
||||
from taleweave.models.entity import World, WorldEntity
|
||||
|
||||
|
||||
class FormatPerspective(Enum):
|
|
@ -7,20 +7,20 @@ from packit.loops import loop_retry
|
|||
from packit.results import enum_result, int_result
|
||||
from packit.utils import could_be_json
|
||||
|
||||
from adventure.context import broadcast, set_current_world, set_system_data
|
||||
from adventure.game_system import GameSystem
|
||||
from adventure.models.config import DEFAULT_CONFIG, WorldConfig
|
||||
from adventure.models.effect import (
|
||||
from taleweave.context import broadcast, set_current_world, set_system_data
|
||||
from taleweave.game_system import GameSystem
|
||||
from taleweave.models.config import DEFAULT_CONFIG, WorldConfig
|
||||
from taleweave.models.effect import (
|
||||
EffectPattern,
|
||||
FloatEffectPattern,
|
||||
IntEffectPattern,
|
||||
StringEffectPattern,
|
||||
)
|
||||
from adventure.models.entity import Character, Item, Portal, Room, World, WorldEntity
|
||||
from adventure.models.event import GenerateEvent
|
||||
from adventure.utils import try_parse_float, try_parse_int
|
||||
from adventure.utils.effect import resolve_int_range
|
||||
from adventure.utils.search import (
|
||||
from taleweave.models.entity import Character, Item, Portal, Room, World, WorldEntity
|
||||
from taleweave.models.event import GenerateEvent
|
||||
from taleweave.utils import try_parse_float, try_parse_int
|
||||
from taleweave.utils.effect import resolve_int_range
|
||||
from taleweave.utils.search import (
|
||||
list_characters,
|
||||
list_characters_in_room,
|
||||
list_items,
|
||||
|
@ -28,7 +28,7 @@ from adventure.utils.search import (
|
|||
list_items_in_room,
|
||||
list_rooms,
|
||||
)
|
||||
from adventure.utils.string import normalize_name
|
||||
from taleweave.utils.string import normalize_name
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -9,7 +9,7 @@ from packit.agent import Agent, agent_easy_connect
|
|||
from packit.memory import make_limited_memory
|
||||
from packit.utils import logger_with_colors
|
||||
|
||||
from adventure.utils.file import load_yaml
|
||||
from taleweave.utils.file import load_yaml
|
||||
|
||||
# configure logging
|
||||
LOG_PATH = "logging.json"
|
||||
|
@ -30,22 +30,22 @@ logger = logger_with_colors(__name__) # , level="DEBUG")
|
|||
load_dotenv(environ.get("ADVENTURE_ENV", ".env"), override=True)
|
||||
|
||||
if True:
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
get_system_data,
|
||||
set_current_turn,
|
||||
set_dungeon_master,
|
||||
set_system_data,
|
||||
subscribe,
|
||||
)
|
||||
from adventure.game_system import GameSystem
|
||||
from adventure.generate import generate_room, generate_world, link_rooms
|
||||
from adventure.models.config import DEFAULT_CONFIG, Config
|
||||
from adventure.models.entity import World, WorldState
|
||||
from adventure.models.event import GenerateEvent
|
||||
from adventure.models.files import PromptFile, WorldPrompt
|
||||
from adventure.plugins import load_plugin
|
||||
from adventure.simulate import simulate_world
|
||||
from adventure.state import (
|
||||
from taleweave.game_system import GameSystem
|
||||
from taleweave.generate import generate_room, generate_world, link_rooms
|
||||
from taleweave.models.config import DEFAULT_CONFIG, Config
|
||||
from taleweave.models.entity import World, WorldState
|
||||
from taleweave.models.event import GenerateEvent
|
||||
from taleweave.models.files import PromptFile, WorldPrompt
|
||||
from taleweave.plugins import load_plugin
|
||||
from taleweave.simulate import simulate_world
|
||||
from taleweave.state import (
|
||||
MEMORY_LIMIT,
|
||||
create_agents,
|
||||
save_world,
|
||||
|
@ -296,19 +296,19 @@ def main():
|
|||
threads = []
|
||||
|
||||
if args.render:
|
||||
from adventure.render.comfy import launch_render, render_generated
|
||||
from taleweave.render.comfy import launch_render, render_generated
|
||||
|
||||
threads.extend(launch_render(config.render))
|
||||
if args.render_generated:
|
||||
subscribe(GenerateEvent, render_generated)
|
||||
|
||||
if args.discord:
|
||||
from adventure.bot.discord import launch_bot
|
||||
from taleweave.bot.discord import launch_bot
|
||||
|
||||
threads.extend(launch_bot(config.bot.discord))
|
||||
|
||||
if args.server:
|
||||
from adventure.server.websocket import launch_server
|
||||
from taleweave.server.websocket import launch_server
|
||||
|
||||
threads.extend(launch_server(config.server.websocket))
|
||||
|
||||
|
@ -323,7 +323,7 @@ def main():
|
|||
extra_actions = []
|
||||
if args.optional_actions:
|
||||
logger.info("loading optional actions")
|
||||
from adventure.actions.optional import init as init_optional_actions
|
||||
from taleweave.actions.optional import init as init_optional_actions
|
||||
|
||||
optional_actions = init_optional_actions()
|
||||
logger.info(
|
||||
|
@ -350,7 +350,7 @@ def main():
|
|||
|
||||
# make sure the server system runs after any updates
|
||||
if args.server:
|
||||
from adventure.server.websocket import server_system
|
||||
from taleweave.server.websocket import server_system
|
||||
|
||||
extra_systems.append(GameSystem(name="server", simulate=server_system))
|
||||
|
|
@ -53,6 +53,7 @@ class EffectPattern:
|
|||
attributes: List[AttributeEffectPattern] = Field(default_factory=list)
|
||||
cooldown: int | None = None
|
||||
duration: int | IntRange | None = None
|
||||
last_used: int | None = None
|
||||
uses: int | None = None
|
||||
id: str = Field(default_factory=uuid)
|
||||
type: Literal["effect_pattern"] = "effect_pattern"
|
|
@ -2,7 +2,7 @@ from typing import List
|
|||
|
||||
from pydantic import Field
|
||||
|
||||
from adventure.models.base import dataclass
|
||||
from taleweave.models.base import dataclass
|
||||
|
||||
|
||||
@dataclass
|
|
@ -7,8 +7,8 @@ from typing import Any, Callable, Dict, List, Optional, Sequence
|
|||
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
|
||||
from packit.agent import Agent
|
||||
|
||||
from adventure.context import action_context
|
||||
from adventure.models.event import PromptEvent
|
||||
from taleweave.context import action_context
|
||||
from taleweave.models.event import PromptEvent
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -16,10 +16,10 @@ from fnvhash import fnv1a_32
|
|||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
from PIL import Image
|
||||
|
||||
from adventure.context import broadcast
|
||||
from adventure.models.config import DEFAULT_CONFIG, RenderConfig
|
||||
from adventure.models.entity import WorldEntity
|
||||
from adventure.models.event import (
|
||||
from taleweave.context import broadcast
|
||||
from taleweave.models.config import DEFAULT_CONFIG, RenderConfig
|
||||
from taleweave.models.entity import WorldEntity
|
||||
from taleweave.models.event import (
|
||||
ActionEvent,
|
||||
GameEvent,
|
||||
GenerateEvent,
|
||||
|
@ -28,7 +28,7 @@ from adventure.models.event import (
|
|||
ResultEvent,
|
||||
StatusEvent,
|
||||
)
|
||||
from adventure.utils.random import resolve_int_range
|
||||
from taleweave.utils.random import resolve_int_range
|
||||
|
||||
from .prompt import prompt_from_entity, prompt_from_event
|
||||
|
|
@ -3,17 +3,17 @@ from logging import getLogger
|
|||
from random import shuffle
|
||||
from typing import List
|
||||
|
||||
from adventure.context import get_current_world, get_dungeon_master
|
||||
from adventure.models.entity import Room, WorldEntity
|
||||
from adventure.models.event import (
|
||||
from taleweave.context import get_current_world, get_dungeon_master
|
||||
from taleweave.models.entity import Room, WorldEntity
|
||||
from taleweave.models.event import (
|
||||
ActionEvent,
|
||||
GameEvent,
|
||||
ReplyEvent,
|
||||
ResultEvent,
|
||||
StatusEvent,
|
||||
)
|
||||
from adventure.utils.search import find_character_in_room, find_item_in_room, find_room
|
||||
from adventure.utils.world import describe_entity
|
||||
from taleweave.utils.search import find_character_in_room, find_item_in_room, find_room
|
||||
from taleweave.utils.world import describe_entity
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -12,23 +12,23 @@ import websockets
|
|||
from PIL import Image
|
||||
from pydantic import RootModel
|
||||
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
broadcast,
|
||||
get_character_agent_for_name,
|
||||
get_current_world,
|
||||
set_character_agent,
|
||||
subscribe,
|
||||
)
|
||||
from adventure.models.config import DEFAULT_CONFIG, WebsocketServerConfig
|
||||
from adventure.models.entity import Character, Item, Room, World
|
||||
from adventure.models.event import (
|
||||
from taleweave.models.config import DEFAULT_CONFIG, WebsocketServerConfig
|
||||
from taleweave.models.entity import Character, Item, Room, World
|
||||
from taleweave.models.event import (
|
||||
GameEvent,
|
||||
PlayerEvent,
|
||||
PlayerListEvent,
|
||||
PromptEvent,
|
||||
RenderEvent,
|
||||
)
|
||||
from adventure.player import (
|
||||
from taleweave.player import (
|
||||
RemotePlayer,
|
||||
get_player,
|
||||
has_player,
|
||||
|
@ -36,9 +36,9 @@ from adventure.player import (
|
|||
remove_player,
|
||||
set_player,
|
||||
)
|
||||
from adventure.render.comfy import render_entity, render_event
|
||||
from adventure.state import snapshot_world, world_json
|
||||
from adventure.utils.search import find_character, find_item, find_portal, find_room
|
||||
from taleweave.render.comfy import render_entity, render_event
|
||||
from taleweave.state import snapshot_world, world_json
|
||||
from taleweave.utils.search import find_character, find_item, find_portal, find_room
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -12,7 +12,7 @@ from packit.results import multi_function_or_str_result
|
|||
from packit.toolbox import Toolbox
|
||||
from packit.utils import could_be_json
|
||||
|
||||
from adventure.actions.base import (
|
||||
from taleweave.actions.base import (
|
||||
action_ask,
|
||||
action_give,
|
||||
action_look,
|
||||
|
@ -20,7 +20,7 @@ from adventure.actions.base import (
|
|||
action_take,
|
||||
action_tell,
|
||||
)
|
||||
from adventure.actions.planning import (
|
||||
from taleweave.actions.planning import (
|
||||
check_calendar,
|
||||
erase_notes,
|
||||
get_recent_notes,
|
||||
|
@ -30,7 +30,7 @@ from adventure.actions.planning import (
|
|||
summarize_notes,
|
||||
take_note,
|
||||
)
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
broadcast,
|
||||
get_character_agent_for_name,
|
||||
get_character_for_agent,
|
||||
|
@ -42,15 +42,15 @@ from adventure.context import (
|
|||
set_current_world,
|
||||
set_game_systems,
|
||||
)
|
||||
from adventure.game_system import GameSystem
|
||||
from adventure.models.config import DEFAULT_CONFIG
|
||||
from adventure.models.entity import Character, Room, World
|
||||
from adventure.models.event import ActionEvent, ReplyEvent, ResultEvent
|
||||
from adventure.utils.conversation import make_keyword_condition, summarize_room
|
||||
from adventure.utils.effect import expire_effects
|
||||
from adventure.utils.planning import expire_events, get_upcoming_events
|
||||
from adventure.utils.search import find_room_with_character
|
||||
from adventure.utils.world import describe_entity, format_attributes
|
||||
from taleweave.game_system import GameSystem
|
||||
from taleweave.models.config import DEFAULT_CONFIG
|
||||
from taleweave.models.entity import Character, Room, World
|
||||
from taleweave.models.event import ActionEvent, ReplyEvent, ResultEvent
|
||||
from taleweave.utils.conversation import make_keyword_condition, summarize_room
|
||||
from taleweave.utils.effect import expire_effects
|
||||
from taleweave.utils.planning import expire_events, get_upcoming_events
|
||||
from taleweave.utils.search import find_room_with_character
|
||||
from taleweave.utils.world import describe_entity, format_attributes
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -7,9 +7,9 @@ from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, System
|
|||
from packit.agent import Agent, agent_easy_connect
|
||||
from pydantic import RootModel
|
||||
|
||||
from adventure.context import get_all_character_agents, set_character_agent
|
||||
from adventure.models.entity import World
|
||||
from adventure.player import LocalPlayer
|
||||
from taleweave.context import get_all_character_agents, set_character_agent
|
||||
from taleweave.models.entity import World
|
||||
from taleweave.player import LocalPlayer
|
||||
|
||||
MEMORY_LIMIT = 25 # 10
|
||||
|
|
@ -8,9 +8,9 @@ from pydantic import Field
|
|||
from rule_engine import Rule
|
||||
from yaml import Loader, load
|
||||
|
||||
from adventure.game_system import FormatPerspective, GameSystem
|
||||
from adventure.models.entity import Attributes, World, WorldEntity, dataclass
|
||||
from adventure.plugins import get_plugin_function
|
||||
from taleweave.game_system import FormatPerspective, GameSystem
|
||||
from taleweave.models.entity import Attributes, World, WorldEntity, dataclass
|
||||
from taleweave.plugins import get_plugin_function
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -4,10 +4,10 @@ from typing import Dict, List, Literal, Optional
|
|||
from packit.agent import Agent
|
||||
from pydantic import Field
|
||||
|
||||
from adventure.context import get_system_data
|
||||
from adventure.game_system import GameSystem, SystemData
|
||||
from adventure.models.base import Attributes, dataclass, uuid
|
||||
from adventure.models.entity import (
|
||||
from taleweave.context import get_system_data
|
||||
from taleweave.game_system import GameSystem, SystemData
|
||||
from taleweave.models.base import Attributes, dataclass, uuid
|
||||
from taleweave.models.entity import (
|
||||
Character,
|
||||
EntityReference,
|
||||
Item,
|
||||
|
@ -15,13 +15,13 @@ from adventure.models.entity import (
|
|||
World,
|
||||
WorldEntity,
|
||||
)
|
||||
from adventure.systems.logic import match_logic
|
||||
from adventure.utils.search import (
|
||||
from taleweave.systems.logic import match_logic
|
||||
from taleweave.utils.search import (
|
||||
find_entity_reference,
|
||||
find_item_in_container,
|
||||
find_item_in_room,
|
||||
)
|
||||
from adventure.utils.systems import load_system_data, save_system_data
|
||||
from taleweave.utils.systems import load_system_data, save_system_data
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
|
@ -3,7 +3,7 @@ from .language_actions import action_read
|
|||
from .magic_actions import action_cast
|
||||
from .movement_actions import action_climb
|
||||
|
||||
from adventure.systems.logic import load_logic
|
||||
from taleweave.systems.logic import load_logic
|
||||
|
||||
LOGIC_FILES = [
|
||||
"./adventure/systems/rpg/weather_logic.yaml",
|
|
@ -1,14 +1,14 @@
|
|||
from random import randint
|
||||
|
||||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
broadcast,
|
||||
get_dungeon_master,
|
||||
get_game_systems,
|
||||
world_context,
|
||||
)
|
||||
from adventure.generate import generate_item
|
||||
from adventure.models.base import dataclass
|
||||
from adventure.models.entity import Item
|
||||
from taleweave.generate import generate_item
|
||||
from taleweave.models.base import dataclass
|
||||
from taleweave.models.entity import Item
|
||||
|
||||
|
||||
@dataclass
|
|
@ -1,5 +1,5 @@
|
|||
from adventure.context import action_context, broadcast
|
||||
from adventure.utils.search import find_item_in_character
|
||||
from taleweave.context import action_context, broadcast
|
||||
from taleweave.utils.search import find_item_in_character
|
||||
|
||||
|
||||
def action_read(item: str) -> str:
|
|
@ -1,7 +1,7 @@
|
|||
from random import randint
|
||||
|
||||
from adventure.context import action_context, broadcast, get_dungeon_master
|
||||
from adventure.utils.search import find_character_in_room
|
||||
from taleweave.context import action_context, broadcast, get_dungeon_master
|
||||
from taleweave.utils.search import find_character_in_room
|
||||
|
||||
|
||||
def action_cast(spell: str, target: str) -> str:
|
|
@ -1,7 +1,7 @@
|
|||
from random import randint
|
||||
|
||||
from adventure.context import action_context, broadcast, get_dungeon_master
|
||||
from adventure.utils.search import find_item_in_room
|
||||
from taleweave.context import action_context, broadcast, get_dungeon_master
|
||||
from taleweave.utils.search import find_item_in_room
|
||||
|
||||
|
||||
def action_climb(target: str) -> str:
|
|
@ -2,7 +2,7 @@ from .hunger_actions import action_cook, action_eat
|
|||
from .hygiene_actions import action_wash
|
||||
from .sleeping_actions import action_sleep
|
||||
|
||||
from adventure.systems.logic import load_logic
|
||||
from taleweave.systems.logic import load_logic
|
||||
|
||||
LOGIC_FILES = [
|
||||
"./adventure/systems/sim/environment_logic.yaml",
|
|
@ -1,11 +1,11 @@
|
|||
from adventure.context import (
|
||||
from taleweave.context import (
|
||||
action_context,
|
||||
broadcast,
|
||||
get_agent_for_character,
|
||||
get_dungeon_master,
|
||||
)
|
||||
from adventure.utils.search import find_character_in_room, find_item_in_room
|
||||
from adventure.utils.world import describe_entity
|
||||
from taleweave.utils.search import find_character_in_room, find_item_in_room
|
||||
from taleweave.utils.world import describe_entity
|
||||
|
||||
|
||||
def action_attack(target: str) -> str:
|
|
@ -1,4 +1,4 @@
|
|||
from adventure.models.entity import Attributes, Room
|
||||
from taleweave.models.entity import Attributes, Room
|
||||
|
||||
|
||||
def hot_room(room: Room, attributes: Attributes):
|
|
@ -1,5 +1,5 @@
|
|||
from adventure.context import action_context
|
||||
from adventure.utils.search import find_item_in_character
|
||||
from taleweave.context import action_context
|
||||
from taleweave.utils.search import find_item_in_character
|
||||
|
||||
|
||||
def action_cook(item: str) -> str:
|
|
@ -1,5 +1,5 @@
|
|||
from adventure.context import action_context, get_dungeon_master
|
||||
from adventure.utils.world import describe_entity
|
||||
from taleweave.context import action_context, get_dungeon_master
|
||||
from taleweave.utils.world import describe_entity
|
||||
|
||||
|
||||
def action_wash(unused: bool) -> str:
|
|
@ -1,5 +1,5 @@
|
|||
from adventure.context import action_context, get_dungeon_master
|
||||
from adventure.utils.world import describe_entity
|
||||
from taleweave.context import action_context, get_dungeon_master
|
||||
from taleweave.utils.world import describe_entity
|
||||
|
||||
|
||||
def action_sleep(unused: bool) -> str:
|
|
@ -1,4 +1,4 @@
|
|||
from adventure.models.base import Attributes, AttributeValue
|
||||
from taleweave.models.base import Attributes, AttributeValue
|
||||
|
||||
|
||||
def add_value(value: AttributeValue, offset: int | float) -> AttributeValue:
|
|
@ -8,10 +8,10 @@ from packit.conditions import condition_or, condition_threshold, make_flag_condi
|
|||
from packit.results import multi_function_or_str_result
|
||||
from packit.utils import could_be_json
|
||||
|
||||
from adventure.context import broadcast
|
||||
from adventure.models.config import DEFAULT_CONFIG
|
||||
from adventure.models.entity import Character, Room
|
||||
from adventure.models.event import ReplyEvent
|
||||
from taleweave.context import broadcast
|
||||
from taleweave.models.config import DEFAULT_CONFIG
|
||||
from taleweave.models.entity import Character, Room
|
||||
from taleweave.models.event import ReplyEvent
|
||||
|
||||
from .string import and_list, normalize_name
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
from logging import getLogger
|
||||
from typing import List
|
||||
from typing import List, Literal
|
||||
|
||||
from adventure.models.effect import (
|
||||
from taleweave.models.effect import (
|
||||
BooleanEffectPattern,
|
||||
BooleanEffectResult,
|
||||
EffectPattern,
|
||||
|
@ -13,8 +13,8 @@ from adventure.models.effect import (
|
|||
StringEffectPattern,
|
||||
StringEffectResult,
|
||||
)
|
||||
from adventure.models.entity import Attributes, Character
|
||||
from adventure.utils.attribute import (
|
||||
from taleweave.models.entity import Attributes, Character
|
||||
from taleweave.utils.attribute import (
|
||||
add_value,
|
||||
append_value,
|
||||
multiply_value,
|
||||
|
@ -282,3 +282,21 @@ def expire_effects(target: Character) -> None:
|
|||
target.active_effects[:] = [
|
||||
effect for effect in target.active_effects if is_active_effect(effect)
|
||||
]
|
||||
|
||||
|
||||
def is_effect_ready(
|
||||
effect: EffectPattern, current_turn: int
|
||||
) -> Literal["ready", "cooldown", "exhausted"]:
|
||||
"""
|
||||
Determine if an effect is ready to be used.
|
||||
"""
|
||||
|
||||
if effect.cooldown is not None and effect.last_used is not None:
|
||||
if (effect.last_used + effect.cooldown) >= current_turn:
|
||||
return "cooldown"
|
||||
|
||||
if effect.uses is not None:
|
||||
if effect.uses <= 0:
|
||||
return "exhausted"
|
||||
|
||||
return "ready"
|
|
@ -1,4 +1,4 @@
|
|||
from adventure.models.entity import Character
|
||||
from taleweave.models.entity import Character
|
||||
|
||||
|
||||
def expire_events(character: Character, current_turn: int):
|
|
@ -1,7 +1,7 @@
|
|||
import random
|
||||
from typing import List
|
||||
|
||||
from adventure.models.base import FloatRange, IntRange
|
||||
from taleweave.models.base import FloatRange, IntRange
|
||||
|
||||
|
||||
def resolve_float_range(range: float | FloatRange | None) -> float | None:
|
|
@ -1,6 +1,6 @@
|
|||
from typing import Any, Generator
|
||||
|
||||
from adventure.models.entity import (
|
||||
from taleweave.models.entity import (
|
||||
Character,
|
||||
EntityReference,
|
||||
Item,
|
|
@ -1,6 +1,6 @@
|
|||
from pydantic import RootModel
|
||||
|
||||
from adventure.utils.file import load_yaml, save_yaml
|
||||
from taleweave.utils.file import load_yaml, save_yaml
|
||||
|
||||
|
||||
def load_system_data(cls, file):
|
|
@ -1,8 +1,8 @@
|
|||
from logging import getLogger
|
||||
|
||||
from adventure.context import get_game_systems
|
||||
from adventure.game_system import FormatPerspective
|
||||
from adventure.models.entity import Character, WorldEntity
|
||||
from taleweave.context import get_game_systems
|
||||
from taleweave.game_system import FormatPerspective
|
||||
from taleweave.models.entity import Character, WorldEntity
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
Loading…
Reference in New Issue