Add Anchor, Puppet, Tesla kits and perks
Introduce three new kits (Anchor, Puppet, Tesla) and multiple perks, plus related plumbing and behavior changes. Key changes: - Added kit implementations: AnchorKit (summon iron-golem anchor, knockback resistance/radius effects), PuppetKit (life-drain / fear abilities), TeslaKit (lightning active + passive knockback/fire aura). - Register new kits and register new perks in SpeedHG startup. - Added new perks: AdrenalinePerk (post-damage speed proc with cooldown), EnderbluePerk (ender-pearl fall damage handling), Ghost, Pyromaniac, Scavenger (and updated OraclePerk/PerkEventDispatcher usage). - Extended Perk API (Perk.kt) with onEnderPearlDamage and onPostDamage hooks to support specialized damage handling and post-damage checks. - PerkManager.isGhost added for checking Ghost perk selection and used to exclude ghost players from targeting/compass logic. - GameManager.updateCompass now excludes ghost-perk players when computing compass targets. - Updated PerkEventDispatcher and OraclePerk to integrate new hooks and behaviors. - Minor language additions in en_US.yml to support new kits/perks. These changes add new gameplay mechanics and ensure correct event dispatching for pearl/fall/post-damage cases and ghost invisibility to game tracking.
This commit is contained in:
@@ -57,4 +57,29 @@ abstract class Perk {
|
||||
*/
|
||||
open fun onEnvironmentalDamage(player: Player, event: EntityDamageEvent) {}
|
||||
|
||||
/**
|
||||
* Aufgerufen wenn dieser Spieler via Enderperle teleportiert wurde und
|
||||
* direkt danach Fallschaden erhalten würde (Cause: FALL, nach ENDER_PEARL-Teleport).
|
||||
*
|
||||
* Der [PerkEventDispatcher] unterscheidet diesen Fall vom normalen Fallschaden
|
||||
* über ein internes Tracking-Set und ruft diesen Hook **statt** [onEnvironmentalDamage] auf.
|
||||
*
|
||||
* → Überschreiben um den Schaden zu canceln ([event.isCancelled = true]).
|
||||
*/
|
||||
open fun onEnderPearlDamage(player: Player, event: EntityDamageEvent) {}
|
||||
|
||||
/**
|
||||
* Aufgerufen **nach** vollständiger Schadensberechnung (MONITOR-Priority),
|
||||
* wenn `event.finalDamage` den endgültigen Abzug nach Rüstung/Modifiern enthält.
|
||||
* `player.health` ist hier noch der Vor-Schaden-Wert.
|
||||
*
|
||||
* Geeignet für Prüfungen der Form: `player.health - event.finalDamage < X`
|
||||
*
|
||||
* Gilt für **jeden** Schadenstyp (Nahkampf UND Umgebung).
|
||||
* Wird nicht aufgerufen wenn das Event bereits gecancelt ist.
|
||||
*
|
||||
* → Primär für [AdrenalinePerk].
|
||||
*/
|
||||
open fun onPostDamage(player: Player, event: EntityDamageEvent) {}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user