Actions Module

The actions module defines all entity behaviors.

Base Action

class simulation_framework.src.actions.base.Action(actor_id: int)[source]

Bases: ABC

abstract can_execute(actor: Entity, world: World) bool[source]
can_interrupt() bool[source]
abstract execute(actor: Entity, world: World) ActionResult[source]
abstract get_cost() ResourceCost[source]
abstract get_duration() int[source]
get_progress(current_tick: int) float[source]
interrupt() ActionResult[source]
is_complete(current_tick: int) bool[source]
start(current_tick: int) None[source]
class simulation_framework.src.actions.base.ActionResult(success: 'bool' = <bound method ActionResult.success of <class 'simulation_framework.src.actions.base.ActionResult'>>, message: 'str' = '', events: 'List[Event]' = <factory>, interrupted: 'bool' = False)[source]

Bases: object

classmethod create_interrupted(message: str = 'Action was interrupted') ActionResult[source]
events: List[Event]
classmethod failure(message: str = 'Action failed', events: List[Event] | None = None) ActionResult[source]
interrupted: bool = False
message: str = ''
classmethod success(message: str = 'Action completed successfully', events: List[Event] | None = None) ActionResult[source]
class simulation_framework.src.actions.base.Event(event_type: 'str', actor_id: 'int', target_id: 'Optional[int]' = None, data: 'Dict[str, Any]' = <factory>, timestamp: 'int' = 0)[source]

Bases: object

actor_id: int
data: Dict[str, Any]
event_type: str
target_id: int | None = None
timestamp: int = 0
class simulation_framework.src.actions.base.ResourceCost(stamina: 'int' = 0, magic: 'int' = 0, health: 'int' = 0, items: 'Dict[str, int]' = <factory>)[source]

Bases: object

can_afford(entity: Entity) bool[source]
consume(entity: Entity) bool[source]
health: int = 0
items: Dict[str, int]
magic: int = 0
stamina: int = 0

Movement Actions

class simulation_framework.src.actions.movement.MoveAction(actor_id: int, destination: Tuple[int, int])[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]
class simulation_framework.src.actions.movement.PathfindAction(actor_id: int, destination: Tuple[int, int], pathfinder: Pathfinder | None = None, use_fog_of_war: bool = False)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_current_target() Tuple[int, int] | None[source]
get_duration() int[source]
get_remaining_steps() int[source]
class simulation_framework.src.actions.movement.WanderAction(actor_id: int, center: Tuple[int, int] | None = None, max_distance: int = 5)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]

Combat Actions

class simulation_framework.src.actions.combat.CombatAction(actor_id: int, target_id: int, damage_type: str = 'physical', base_range: float = 1.0)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]
class simulation_framework.src.actions.combat.DefendAction(actor_id: int, duration: int = 3)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]
class simulation_framework.src.actions.combat.FleeAction(actor_id: int, flee_distance: int = 3)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]
class simulation_framework.src.actions.combat.MagicAttack(actor_id: int, target_id: int, spell_type: str = 'magical', spell_range: float = 15.0)[source]

Bases: CombatAction

can_execute(actor: Entity, world: World) bool[source]
get_cost() ResourceCost[source]
class simulation_framework.src.actions.combat.MeleeAttack(actor_id: int, target_id: int)[source]

Bases: CombatAction

can_execute(actor: Entity, world: World) bool[source]
get_cost() ResourceCost[source]
class simulation_framework.src.actions.combat.RangedAttack(actor_id: int, target_id: int, weapon_range: float = 10.0)[source]

Bases: CombatAction

can_execute(actor: Entity, world: World) bool[source]
get_cost() ResourceCost[source]

Gathering Actions

class simulation_framework.src.actions.gathering.FishAction(actor_id: int)[source]

Bases: GatherAction

can_execute(actor: Entity, world: World) bool[source]
class simulation_framework.src.actions.gathering.ForageAction(actor_id: int, resource_type: str = 'berries')[source]

Bases: GatherAction

can_execute(actor: Entity, world: World) bool[source]
class simulation_framework.src.actions.gathering.GatherAction(actor_id: int, resource_type: str, required_tool: str | None = None, required_terrain: str | None = None, skill_name: str = 'general')[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]
class simulation_framework.src.actions.gathering.MineAction(actor_id: int, resource_type: str = 'stone')[source]

Bases: GatherAction

class simulation_framework.src.actions.gathering.WoodcutAction(actor_id: int)[source]

Bases: GatherAction

Crafting Actions

class simulation_framework.src.actions.crafting.CraftAction(actor_id: int, item_name: str, quantity: int = 1)[source]

Bases: Action

can_execute(actor: Entity, world: World) bool[source]
execute(actor: Entity, world: World) ActionResult[source]
get_cost() ResourceCost[source]
get_duration() int[source]