Adds two fantasy affixes (#89257)

## About The Pull Request

- Adds a fantasy affix that makes your attacks with the item cause a
chain lightning, which shocks people. The damage, distance, and limit
are all based on quality.
- Adds a fantasy affix that makes your attacks with the item slow the
target's click cd, making them take longer between attacks. The penalty
is based on quality.

## Why It's Good For The Game

BiS for main tanks

## Changelog

🆑 Melbert
add: Adds two fantasy affixes
/🆑
This commit is contained in:
MrMelbert
2025-02-08 17:35:11 -06:00
committed by GitHub
parent f8f3f698ae
commit a2afa509aa
6 changed files with 142 additions and 4 deletions
@@ -161,3 +161,26 @@
var/obj/item/master = comp.parent
comp.appliedComponents += master.AddComponent(/datum/component/soul_stealer)
return "soul-[pick("stealing", "hungering", "devouring")] [newName]"
// On hitting a mob chain lightning will jump to another mob within 2 tiles of the original target
/datum/fantasy_affix/thunderfury
name = "Thunderfury"
placement = AFFIX_PREFIX
alignment = AFFIX_GOOD
weight = 3
/datum/fantasy_affix/thunderfury/apply(datum/component/fantasy/comp, newName)
comp.parent.AddElement(/datum/element/chain_lightning_attack, get_damage(comp), get_range(comp), get_limit(comp))
return "Thunderfury, Blessed [newName]"
/datum/fantasy_affix/thunderfury/remove(datum/component/fantasy/comp)
comp.parent.RemoveElement(/datum/element/chain_lightning_attack, get_damage(comp), get_range(comp), get_limit(comp))
/datum/fantasy_affix/thunderfury/proc/get_damage(datum/component/fantasy/comp)
return min(round(comp.quality, 2), 20)
/datum/fantasy_affix/thunderfury/proc/get_range(datum/component/fantasy/comp)
return min(round(sqrt(comp.quality), 1), 3)
/datum/fantasy_affix/thunderfury/proc/get_limit(datum/component/fantasy/comp)
return min(round(sqrt(comp.quality), 1), 3)
@@ -290,3 +290,20 @@
/datum/fantasy_affix/doot/remove(datum/component/fantasy/comp)
comp.parent.RemoveElement(/datum/element/spooky, too_spooky = comp.quality > 17, stam_damage_mult = comp.quality * 0.15)
// On hitting a mob their click cd is slowed marginally
/datum/fantasy_affix/windseeker
name = "of the Windseeker"
placement = AFFIX_SUFFIX
alignment = AFFIX_GOOD
weight = 3
/datum/fantasy_affix/windseeker/apply(datum/component/fantasy/comp, newName)
comp.parent.AddElement(/datum/element/slow_target_click_cd_attack, get_cd_penalty(comp))
return "[newName] of the Windseeker"
/datum/fantasy_affix/windseeker/remove(datum/component/fantasy/comp)
comp.parent.RemoveElement(/datum/element/slow_target_click_cd_attack, get_cd_penalty(comp))
/datum/fantasy_affix/windseeker/proc/get_cd_penalty(datum/component/fantasy/comp)
return min(round(sqrt(comp.quality) * 0.1, 0.1), 0.4) // this gives you a small number, like 0.2 seconds