grid-royale / backend /tools /activate_ability.py
LokeshReddy001's picture
Initial commit: Grid Royale game backend and frontend.
bcad26c
Raw
History Blame Contribute Delete
1.78 kB
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ..environment.environment import Environment
class ActivateAbilityTool:
name = "activate_ability"
schema = {
"type": "function",
"function": {
"name": "activate_ability",
"description": "Activate one of your acquired abilities. Each ability has different effects and args.",
"parameters": {
"type": "object",
"properties": {
"ability": {
"type": "string",
"description": "Name of the ability to activate",
},
"args": {
"type": "object",
"description": "Arguments for the ability (varies per ability)",
},
},
"required": ["ability", "args"],
},
},
}
@staticmethod
def run(env: Environment, aid: str, args: dict) -> str:
ability_name = args.get("ability", "")
ability_args = args.get("args", {})
agent = env.agents[aid]
ability = agent.get_ability(ability_name)
if not ability:
return f"You don't have the ability '{ability_name}'"
if not ability.can_use(env.turn):
return f"Ability '{ability_name}' cannot be used right now (cooldown or no uses left)"
from ..environment.ability_registry import ABILITY_REGISTRY
ability_def = ABILITY_REGISTRY.get(ability_name)
if not ability_def:
return f"Unknown ability: {ability_name}"
result = ability_def.handler(env, aid, ability_args)
ability.use(env.turn)
return result