Preskoči na vsebino

std-combat

Level: Atom | Entity: Combatant | Persistence: runtime

4 states, 6 events, 7 transitions

Live Preview

orbital CombatantOrbital {
entity Combatant [runtime] {
id : string
name : string
description : string
status : string
createdAt : string
hp : number
attack : number
defense : number
}
trait CombatantCombat -> Combatant [interaction] {
initial: ready
state ready {
INIT -> ready
(fetch Combatant)
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-hud", position: "top", stats: [{ label: "HP", value: "@entity.hp" }, { label: "Attack", value: "@entity.attack" }, { label: "Defense", value: "@entity.defense" }] }, { type: "button", label: "Attack", event: "ATTACK", variant: "primary", icon: "swords" }] })
ATTACK -> attacking
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-hud", position: "top", stats: [{ label: "HP", value: "@entity.hp" }, { label: "Attack", value: "@entity.attack" }, { label: "Defense", value: "@entity.defense" }] }, { type: "button", label: "Cooldown End", event: "HIT", variant: "secondary", icon: "clock" }] })
}
state attacking {
HIT -> cooldown
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-hud", position: "top", stats: [{ label: "HP", value: "@entity.hp" }, { label: "Attack", value: "@entity.attack" }, { label: "Defense", value: "@entity.defense" }] }, { type: "badge", label: "Cooling down..." }] })
DEFEAT -> defeated
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-over-screen", title: "Defeated", variant: "defeat" }, { type: "button", label: "Reset", event: "RESET", variant: "ghost", icon: "rotate-ccw" }] })
}
state cooldown {
COOLDOWN_END -> ready
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-hud", position: "top", stats: [{ label: "HP", value: "@entity.hp" }, { label: "Attack", value: "@entity.attack" }, { label: "Defense", value: "@entity.defense" }] }, { type: "button", label: "Attack", event: "ATTACK", variant: "primary", icon: "swords" }] })
DEFEAT -> defeated
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-over-screen", title: "Defeated", variant: "defeat" }, { type: "button", label: "Reset", event: "RESET", variant: "ghost", icon: "rotate-ccw" }] })
}
state defeated {
RESET -> ready
(render-ui main { type: "stack", direction: "vertical", gap: "lg", align: "center", children: [{ type: "game-hud", position: "top", stats: [{ label: "HP", value: "@entity.hp" }, { label: "Attack", value: "@entity.attack" }, { label: "Defense", value: "@entity.defense" }] }, { type: "button", label: "Attack", event: "ATTACK", variant: "primary", icon: "swords" }] })
}
}
page "/combatants" -> CombatantCombat
}
Loading preview...

Orbital Visualization

Loading visualization...

Entity Fields

FieldTypeDefault
idstring-
namestring-
descriptionstring-
statusstring"active"
createdAtstring-
hpnumber100
attacknumber10
defensenumber5

States

StateType
readyInitial
attacking-
cooldown-
defeated-

Events

EventPayload
INIT-
ATTACKtargetId: string
HITdamage: number
COOLDOWN_END-
DEFEAT-
RESET-

Transitions

FromEventToEffects
readyINITready2 effects
readyATTACKattacking1 effect
attackingHITcooldown1 effect
cooldownCOOLDOWN_ENDready1 effect
attackingDEFEATdefeated1 effect
cooldownDEFEATdefeated1 effect
defeatedRESETready1 effect