You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
828 B
Go
35 lines
828 B
Go
package hero
|
|
|
|
import (
|
|
"math/rand"
|
|
|
|
"github.com/denisovdennis/autohero/internal/constants"
|
|
"github.com/denisovdennis/autohero/internal/model"
|
|
"github.com/denisovdennis/autohero/internal/tuning"
|
|
)
|
|
|
|
func UsePotionOnHero(hero *model.Hero, force bool) int {
|
|
if force != true {
|
|
if hero == nil || hero.Potions <= 0 || hero.HP <= 0 {
|
|
return 0
|
|
}
|
|
hpThresh := int(float64(hero.MaxHP) * constants.OfflineAutoPotionHPThresh)
|
|
if hero.HP >= hpThresh {
|
|
return 0
|
|
}
|
|
if rand.Float64() >= (1.0 - (1.0 - float64(hero.HP / hpThresh))) / 1.2 + constants.OfflineAutoPotionChance {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
hero.Potions--
|
|
healAmount := int(float64(hero.MaxHP) * tuning.Get().PotionHealPercent)
|
|
if healAmount < 1 {
|
|
healAmount = 1
|
|
}
|
|
hero.HP += healAmount
|
|
if hero.HP > hero.MaxHP {
|
|
hero.HP = hero.MaxHP
|
|
}
|
|
return healAmount;
|
|
} |