@@ -25,6 +25,7 @@ public class CleanseSpell extends TargetedSpell implements TargetedEntitySpell {
2525 private final List <BuffSpell > buffSpells ;
2626 private final List <LoopSpell > loopSpells ;
2727 private final List <OrbitSpell > orbitSpells ;
28+ private final List <TotemSpell > totemSpells ;
2829 private final List <SilenceSpell > silenceSpells ;
2930 private final List <LevitateSpell > levitateSpells ;
3031 private final List <PotionEffectType > potionEffectTypes ;
@@ -40,6 +41,7 @@ public CleanseSpell(MagicConfig config, String spellName) {
4041 buffSpells = new ArrayList <>();
4142 loopSpells = new ArrayList <>();
4243 orbitSpells = new ArrayList <>();
44+ totemSpells = new ArrayList <>();
4345 silenceSpells = new ArrayList <>();
4446 levitateSpells = new ArrayList <>();
4547 potionEffectTypes = new ArrayList <>();
@@ -104,6 +106,18 @@ public void initialize() {
104106 continue ;
105107 }
106108
109+ if (s .startsWith ("totem:" )) {
110+ if (s .replace ("totem:" , "" ).equalsIgnoreCase ("*" )) {
111+ for (Spell spell : MagicSpells .getSpellsOrdered ()) {
112+ if (spell instanceof TotemSpell ) totemSpells .add ((TotemSpell ) spell );
113+ }
114+ continue ;
115+ }
116+ Spell spell = MagicSpells .getSpellByInternalName (s .replace ("totem:" , "" ));
117+ if (spell instanceof TotemSpell ) totemSpells .add ((TotemSpell ) spell );
118+ continue ;
119+ }
120+
107121 if (s .startsWith ("silence:" )) {
108122 if (s .replace ("silence:" , "" ).equalsIgnoreCase ("*" )) {
109123 for (Spell spell : MagicSpells .getSpellsOrdered ()) {
@@ -167,6 +181,10 @@ public void initialize() {
167181 if (spell .hasOrbit (entity )) return true ;
168182 }
169183
184+ for (TotemSpell spell : totemSpells ) {
185+ if (spell .hasTotem (entity )) return true ;
186+ }
187+
170188 for (SilenceSpell spell : silenceSpells ) {
171189 if (spell .isSilenced (entity )) return true ;
172190 }
@@ -207,6 +225,7 @@ public CastResult castAtEntity(SpellData data) {
207225 stunSpells .forEach (spell -> spell .removeStun (target ));
208226 loopSpells .forEach (spell -> spell .cancelLoops (target ));
209227 orbitSpells .forEach (spell -> spell .removeOrbits (target ));
228+ totemSpells .forEach (spell -> spell .removeTotems (target ));
210229 silenceSpells .forEach (spell -> spell .removeSilence (target ));
211230 levitateSpells .forEach (spell -> spell .removeLevitate (target ));
212231
0 commit comments