// сам носимый баллон: // внедряем в FX-объект баллона контроллер подмены анимации // вытаскиваем индекс из носителя и применяем подмену символа анимации // запоминаем ссылку на новый FX-объект private static void ApplySymbolOverrideBalloonFX(BalloonFX.Instance smi, KBatchedAnimController kbac) { kbac.usingNewSymbolOverrideSystem = true; var symbolOverrideController = SymbolOverrideControllerUtil.AddToPrefab(kbac.gameObject); var receiver = smi.master.GetComponent <VaricolouredBalloonsHelper>(); if (receiver != null) { receiver.fx = smi; VaricolouredBalloonsHelper.ApplySymbolOverrideByIdx(symbolOverrideController, receiver.ReceiverBalloonSymbolIdx); } }
private static void EquippableBalloonConfig_OnUnequipBalloon_Prefix(Equippable eq, ref BalloonFX.Instance ___fx) { if (VaricolouredBalloonsOptions.Instance.DestroyFXAfterEffectExpired) { var carrier = (eq?.assignee?.GetSoleOwner()?.GetComponent <MinionAssignablesProxy>().target as KMonoBehaviour)?.GetComponent <VaricolouredBalloonsHelper>(); if (carrier?.fx != null) { carrier.fx.StopSM("Unequipped"); carrier.fx = null; } } ___fx = null; }