idk
This commit is contained in:
@@ -5,40 +5,72 @@ enum Status {
|
||||
DEAD,
|
||||
}
|
||||
|
||||
enum FighterTeam {
|
||||
PLAYER,
|
||||
ENEMY
|
||||
}
|
||||
|
||||
enum FighterController {
|
||||
PLAYER,
|
||||
AI
|
||||
}
|
||||
|
||||
# Health
|
||||
var health:int
|
||||
var maxHealth:int
|
||||
var mp:int
|
||||
var maxMp:int
|
||||
var status:Status = Status.NORMAL
|
||||
var status:Status
|
||||
|
||||
var attack:int = 10
|
||||
var defense:int = 5
|
||||
var speed:int = 5
|
||||
var magic:int = 5
|
||||
var luck:int = 1
|
||||
# Identity
|
||||
var team:FighterTeam
|
||||
var controller:FighterController
|
||||
|
||||
func _init(
|
||||
maxHealth:int = 100,
|
||||
maxMp:int = 50,
|
||||
) -> void:
|
||||
self.maxHealth = maxHealth
|
||||
self.health = maxHealth
|
||||
self.maxMp = maxMp
|
||||
self.mp = maxMp
|
||||
# Stats
|
||||
var attack:int
|
||||
var defense:int
|
||||
var speed:int
|
||||
var magic:int
|
||||
var luck:int
|
||||
|
||||
# Equipment
|
||||
|
||||
# Signals
|
||||
signal healthChanged(difference:int)
|
||||
signal mpChanged(difference:int)
|
||||
signal statusChanged(oldStatus:Status, newStatus:Status)
|
||||
|
||||
func _init(params:Dictionary) -> void:
|
||||
self.maxHealth = params.get('max_health', 100)
|
||||
self.maxMp = params.get('max_mp', 50)
|
||||
self.attack = params.get('attack', 10)
|
||||
self.defense = params.get('defense', 5)
|
||||
self.speed = params.get('speed', 5)
|
||||
self.magic = params.get('magic', 5)
|
||||
self.luck = params.get('luck', 1)
|
||||
self.team = params.get('team', FighterTeam.ENEMY)
|
||||
self.controller = params.get('controller', FighterController.PLAYER)
|
||||
|
||||
self.health = self.maxHealth
|
||||
self.mp = self.maxMp
|
||||
|
||||
func damage(amount:int) -> void:
|
||||
assert(amount > 0)
|
||||
if status == Status.DEAD:
|
||||
return
|
||||
health = max(health - amount, 0)
|
||||
healthChanged.emit(-amount)
|
||||
if health == 0:
|
||||
var oldStatus = status
|
||||
status = Status.DEAD
|
||||
statusChanged.emit(oldStatus, status)
|
||||
|
||||
func heal(amount:int) -> void:
|
||||
assert(amount > 0)
|
||||
if status == Status.DEAD:
|
||||
return
|
||||
health = min(health + amount, maxHealth)
|
||||
healthChanged.emit(amount)
|
||||
|
||||
func revive(health:int) -> void:
|
||||
assert(health > 0)
|
||||
@@ -47,14 +79,18 @@ func revive(health:int) -> void:
|
||||
health = min(health, maxHealth)
|
||||
status = Status.NORMAL
|
||||
self.health = health
|
||||
statusChanged.emit(Status.DEAD, Status.NORMAL)
|
||||
healthChanged.emit(health)
|
||||
|
||||
func mpConsume(amount:int) -> void:
|
||||
assert(amount > 0)
|
||||
mp = max(mp - amount, 0)
|
||||
mpChanged.emit(-amount)
|
||||
|
||||
func mpRestore(amount:int) -> void:
|
||||
assert(amount > 0)
|
||||
mp = min(mp + amount, maxMp)
|
||||
mpChanged.emit(amount)
|
||||
|
||||
func isCrit() -> bool:
|
||||
# 10% chance of a crit
|
||||
|
||||
Reference in New Issue
Block a user