/** * @see TargetSlot * @param targetSlot */ public void removeAbnormalEffectsByTargetSlot(SkillTargetSlot targetSlot) { for (Effect effect : abnormalEffectMap.values()) { if (effect.getTargetSlot() == targetSlot.ordinal()) { effect.endEffect(); abnormalEffectMap.remove(effect.getStack()); } } }
/** * @param targetSlot * @param count */ public void removeEffectByTargetSlot(SkillTargetSlot targetSlot, int count) { for (Effect effect : abnormalEffectMap.values()) { if (count == 0) break; if (effect.getTargetSlot() == targetSlot.ordinal()) { if (targetSlot == SkillTargetSlot.BUFF && effect.getTargetSlotLevel() > 1) continue; effect.endEffect(); abnormalEffectMap.remove(effect.getStack()); count--; } } }
/** * @param dispelCat * @param targetSlot * @param count */ public void removeEffectByDispelCat( DispelCategoryType dispelCat, SkillTargetSlot targetSlot, int count) { for (Effect effect : abnormalEffectMap.values()) { if (count == 0) break; if (effect.getTargetSlot() == targetSlot.ordinal()) { boolean remove = false; switch (dispelCat) { case ALL: if (effect.getDispelCat() == DispelCategoryType.ALL || effect.getDispelCat() == DispelCategoryType.DEBUFF_MENTAL || effect.getDispelCat() == DispelCategoryType.DEBUFF_PHYSICAL) remove = true; break; case DEBUFF_MENTAL: if (effect.getDispelCat() == DispelCategoryType.ALL || effect.getDispelCat() == DispelCategoryType.DEBUFF_MENTAL) remove = true; break; case DEBUFF_PHYSICAL: if (effect.getDispelCat() == DispelCategoryType.ALL || effect.getDispelCat() == DispelCategoryType.DEBUFF_PHYSICAL) remove = true; break; case BUFF: if (effect.getDispelCat() == DispelCategoryType.BUFF && effect.getTargetSlotLevel() < 1) remove = true; break; case STUN: if (effect.getDispelCat() == DispelCategoryType.STUN) remove = true; break; } if (remove) { effect.endEffect(); abnormalEffectMap.remove(effect.getStack()); count--; } } } }