This commit is contained in:
2026-01-17 13:59:18 -06:00
parent c46afdac76
commit fbc4e070da
10 changed files with 145 additions and 52 deletions

View File

@@ -1,11 +1,22 @@
class_name BattleAction
var speedModifier:float
var canTargetMultiple:bool
var canTargetEnemy:bool
var canTargetAlly:bool
var preferAlly:bool
func _init(params:Dictionary) -> void:
self.speedModifier = params.get("speedModifier", 1.0)
self.canTargetMultiple = params.get("canTargetMultiple", false)
self.canTargetEnemy = params.get("canTargetEnemy", true)
self.canTargetAlly = params.get("canTargetAlly", true)
self.preferAlly = params.get("preferAlly", false)
func perform(params:Dictionary) -> void:
assert(params.has("user"))
assert(params.has("target"))
pass
assert(params.has("targets"))
pass
func canFighterUse(fighter:BattleFighter) -> bool:
return true

View File

@@ -2,12 +2,15 @@ class_name BattleDecision
var action:BattleAction
var user:BattleFighter
var target:BattleFighter
var targets:Array[BattleFighter]
func _init(_action:BattleAction, _user:BattleFighter, _target:BattleFighter) -> void:
func _init(_action:BattleAction, _user:BattleFighter, _targets:Array[BattleFighter]) -> void:
action = _action
user = _user
target = _target
targets = _targets
func getPriority() -> float:
return 1.0
func execute(cutscene:Cutscene) -> void:
pass

View File

@@ -11,4 +11,4 @@ func perform(params:Dictionary) -> void:
super.perform(params)
var user:BattleFighter = params.get("user")
var target:BattleFighter = params.get("target")
var targets:Array[BattleFighter] = params.get("targets")

View File

@@ -32,12 +32,13 @@ func perform(params:Dictionary):
super.perform(params)
var user:BattleFighter = params.get("user")
var target:BattleFighter = params.get("target")
var targets:Array[BattleFighter] = params.get("targets")
# What to do if target is dead?
if target.status == BattleFighter.Status.DEAD:
print("Target is already dead. Move has no effect.")
assert(false)
for target in targets:
if target.status == BattleFighter.Status.DEAD:
print("Target is already dead. Move has no effect.")
assert(false)
# TODO: Determine damage
var damage:int = 0
@@ -51,9 +52,19 @@ func perform(params:Dictionary):
if isCrit:
print("CRITICAL HIT!")
target.damage(damage, isCrit)
for target in targets:
target.damage(damage, isCrit)
print("DAMAGE DONE")
func canFighterUse(fighter:BattleFighter) -> bool:
if !super.canFighterUse(fighter):
return false
if fighter.mp < self.mpCost:
return false
return true
# Moves
static var MOVE_PUNCH = BattleMove.new({
"name": "Punch",
@@ -67,7 +78,8 @@ static var MOVE_FIRE1 = BattleMove.new({
"power": 25,
"mpCost": 5,
"accuracy": 0.9,
"moveType": MoveType.MAGICAL
"moveType": MoveType.MAGICAL,
"canTargetMultiple": true
})
static var MOVE_HEAL1 = BattleMove.new({
@@ -75,5 +87,7 @@ static var MOVE_HEAL1 = BattleMove.new({
"power": -20,
"mpCost": 8,
"accuracy": 1.0,
"moveType": MoveType.ABILITY
"moveType": MoveType.ABILITY,
"canTargetMultiple": true,
"preferAlly": true
})