Fix: Modifiers persist in continuous spells cast by scrolls (#895) (ipdnaeip)
* ItemScroll Modifier Fix Modifiers persist in continuous spells cast by scrolls. Added check for tick 0 as to not reapply SpellModifier changes * Fix comment formatting in ItemScroll.java --------- Co-authored-by: WinDanesz <31292708+WinDanesz@users.noreply.github.com>
This commit is contained in:
@@ -160,12 +160,21 @@ public class ItemScroll extends Item implements ISpellCastingItem, IWorkbenchIte
|
|||||||
|
|
||||||
Spell spell = Spell.byMetadata(stack.getItemDamage());
|
Spell spell = Spell.byMetadata(stack.getItemDamage());
|
||||||
// By default, scrolls have no modifiers - but with the event system, they could be added.
|
// By default, scrolls have no modifiers - but with the event system, they could be added.
|
||||||
SpellModifiers modifiers = new SpellModifiers();
|
|
||||||
|
SpellModifiers modifiers;
|
||||||
|
|
||||||
|
if(WizardData.get(player) != null){
|
||||||
|
modifiers = WizardData.get(player).itemCastingModifiers;
|
||||||
|
}else{
|
||||||
|
modifiers = new SpellModifiers();
|
||||||
|
}
|
||||||
|
|
||||||
int castingTick = stack.getMaxItemUseDuration() - count;
|
int castingTick = stack.getMaxItemUseDuration() - count;
|
||||||
|
|
||||||
// Continuous spells (these must check if they can be cast each tick since the mana changes)
|
// Continuous spells (these must check if they can be cast each tick since the mana changes)
|
||||||
// In theory the spell is always continuous here but just in case it isn't...
|
// In theory the spell is always continuous here but just in case it isn't...
|
||||||
if(spell.isContinuous && canCast(stack, spell, player, player.getActiveHand(), castingTick, modifiers)){
|
// Do not check canCast() on tick 0 as it is already done in onItemRightClick() and would duplicate modifiers
|
||||||
|
if(spell.isContinuous && (castingTick == 0 || canCast(stack, spell, player, player.getActiveHand(), castingTick, modifiers))){
|
||||||
cast(stack, spell, player, player.getActiveHand(), castingTick, modifiers);
|
cast(stack, spell, player, player.getActiveHand(), castingTick, modifiers);
|
||||||
}else{
|
}else{
|
||||||
// Scrolls normally work on the max use duration so this isn't ever reached by wizardry, but if the
|
// Scrolls normally work on the max use duration so this isn't ever reached by wizardry, but if the
|
||||||
|
|||||||
Reference in New Issue
Block a user