diff --git a/config/template/config.yaml b/config/template/config.yaml
index 5926fdfb..b1cb6661 100644
--- a/config/template/config.yaml
+++ b/config/template/config.yaml
@@ -16,6 +16,11 @@ enableCubeRecipes: true # Enable cubing of flawlesses and tokens
chickenScaryAuras:
amplifyDamage: false
bloodMana: false
+ decrepify: false
+ lowerResist: false
+ fanaticism: false
+ might: false
+ conviction: false
health: # Healing configuration, all values in %
healingPotionAt: 75
diff --git a/internal/config/config.go b/internal/config/config.go
index e741a1ea..e9d57fc0 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -93,6 +93,11 @@ type CharacterCfg struct {
ChickenScaryAuras struct {
AmplifyDamage bool `yaml:"amplifyDamage"`
BloodMana bool `yaml:"bloodMana"`
+ Decrepify bool `yaml:"decrepify"`
+ LowerResist bool `yaml:"lowerResist"`
+ Fanaticism bool `yaml:"fanaticism"`
+ Might bool `yaml:"might"`
+ Conviction bool `yaml:"conviction"`
}
Health struct {
HealingPotionAt int `yaml:"healingPotionAt"`
diff --git a/internal/health/health_manager.go b/internal/health/health_manager.go
index fe676491..351fb49a 100644
--- a/internal/health/health_manager.go
+++ b/internal/health/health_manager.go
@@ -107,9 +107,9 @@ func (hm *Manager) HandleHealthAndMana() error {
}
}
+ // Player scary aura check - great for use on hardcore
chickenAurasConfig := hm.data.CharacterCfg.ChickenScaryAuras
- // Player dangerous aura check - great for use on hardcore
if chickenAurasConfig.AmplifyDamage && hm.data.PlayerUnit.States.HasState(state.Amplifydamage) {
return fmt.Errorf("%w: Player has amplify damage aura", ErrChicken)
}
@@ -128,5 +128,36 @@ func (hm *Manager) HandleHealthAndMana() error {
}
}
+ if chickenAurasConfig.Decrepify && hm.data.PlayerUnit.States.HasState(state.Decrepify) {
+ return fmt.Errorf("%w: Player has decrepify aura", ErrChicken)
+ }
+
+ if chickenAurasConfig.LowerResist && hm.data.PlayerUnit.States.HasState(state.Lowerresist) {
+ return fmt.Errorf("%w: Player has lower resist aura", ErrChicken)
+ }
+
+ if chickenAurasConfig.Fanaticism || chickenAurasConfig.Might || chickenAurasConfig.Conviction {
+ for _, m := range hm.data.Monsters.Enemies() {
+ var scaryAura string
+
+ if chickenAurasConfig.Fanaticism && m.States.HasState(state.Fanaticism) {
+ scaryAura = "fanaticism"
+ }
+
+ if chickenAurasConfig.Might && m.States.HasState(state.Might) {
+ scaryAura = "might"
+ }
+
+ if chickenAurasConfig.Conviction && m.States.HasState(state.Conviction) {
+ scaryAura = "conviction"
+ }
+
+ // TODO: Distance check?
+ if scaryAura != "" {
+ return fmt.Errorf("%w: Mob has %s aura", ErrChicken, scaryAura)
+ }
+ }
+ }
+
return nil
}
diff --git a/internal/server/http_server.go b/internal/server/http_server.go
index c82b7b12..028a322a 100644
--- a/internal/server/http_server.go
+++ b/internal/server/http_server.go
@@ -782,6 +782,11 @@ func (s *HttpServer) characterSettings(w http.ResponseWriter, r *http.Request) {
// Chicken Scary Auras Config
cfg.ChickenScaryAuras.AmplifyDamage = r.Form.Has("chickenAmplifyDamage")
cfg.ChickenScaryAuras.BloodMana = r.Form.Has("chickenBloodMana")
+ cfg.ChickenScaryAuras.Decrepify = r.Form.Has("chickenDecrepify")
+ cfg.ChickenScaryAuras.LowerResist = r.Form.Has("chickenLowerResist")
+ cfg.ChickenScaryAuras.Fanaticism = r.Form.Has("chickenFanaticism")
+ cfg.ChickenScaryAuras.Might = r.Form.Has("chickenMight")
+ cfg.ChickenScaryAuras.Conviction = r.Form.Has("chickenConviction")
// Health config
cfg.Health.HealingPotionAt, _ = strconv.Atoi(r.Form.Get("healingPotionAt"))
diff --git a/internal/server/templates/character_settings.gohtml b/internal/server/templates/character_settings.gohtml
index 3abb61e7..ef0229c3 100644
--- a/internal/server/templates/character_settings.gohtml
+++ b/internal/server/templates/character_settings.gohtml
@@ -276,6 +276,44 @@
{{ end }}
+