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