internal SpellCastResult Prepare() { ExecutionState = SpellExecutionState.Preparing; PrepareExplicitTarget(); SpellInfo.CalculatePowerCosts(Caster, powerCosts, this); SpellCastResult result = ValidateCast(); if (result != SpellCastResult.Success) { return(result); } return(Cast()); }