52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package input
|
|
|
|
import "github.com/alpacahq/alpacadecimal"
|
|
|
|
func (our *Input) CurrentShield() alpacadecimal.Decimal {
|
|
if our == nil || our.CurrentPet == nil {
|
|
return alpacadecimal.Zero
|
|
}
|
|
return our.CurrentPet.Shield
|
|
}
|
|
|
|
func (our *Input) HasShield() bool {
|
|
return our.CurrentShield().Cmp(alpacadecimal.Zero) > 0
|
|
}
|
|
|
|
func (our *Input) AddShield(value alpacadecimal.Decimal) bool {
|
|
if our == nil || our.CurrentPet == nil {
|
|
return false
|
|
}
|
|
if value.Cmp(alpacadecimal.Zero) <= 0 {
|
|
return false
|
|
}
|
|
our.CurrentPet.Shield = our.CurrentPet.Shield.Add(value)
|
|
return true
|
|
}
|
|
|
|
func (our *Input) AbsorbShieldDamage(damage alpacadecimal.Decimal) alpacadecimal.Decimal {
|
|
if our == nil || our.CurrentPet == nil {
|
|
return alpacadecimal.Zero
|
|
}
|
|
if damage.Cmp(alpacadecimal.Zero) <= 0 || our.CurrentPet.Shield.Cmp(alpacadecimal.Zero) <= 0 {
|
|
return alpacadecimal.Zero
|
|
}
|
|
|
|
absorbed := alpacadecimal.Min(our.CurrentPet.Shield, damage)
|
|
our.CurrentPet.Shield = our.CurrentPet.Shield.Sub(absorbed)
|
|
if our.CurrentPet.Shield.Cmp(alpacadecimal.Zero) < 0 {
|
|
our.CurrentPet.Shield = alpacadecimal.Zero
|
|
}
|
|
return absorbed
|
|
}
|
|
|
|
func (our *Input) ConsumeAllShield() alpacadecimal.Decimal {
|
|
if our == nil || our.CurrentPet == nil {
|
|
return alpacadecimal.Zero
|
|
}
|
|
|
|
value := our.CurrentPet.Shield
|
|
our.CurrentPet.Shield = alpacadecimal.Zero
|
|
return value
|
|
}
|