// когда "задание 'получить баллон' завершено" - рандомим новый индекс для артиста private static void Postfix(Chore chore) { GetBalloonWorkable balloonWorkable = chore.target?.GetComponent <GetBalloonWorkable>(); if (balloonWorkable != null) { BALLOONARTIST.Get(balloonWorkable)?.GetComponent <VaricolouredBalloonsHelper>()?.RandomizeArtistBalloonSymbolIdx(); } }
// перехватываем "задание 'получить баллон' начато" // вытаскиваем индекс из артиста, запихиваем его в получателя, и применяем подмену символа анимации // уничтожаем предыдущий FX-объект баллона если он есть private static void OnBeginGetBalloonChore(BalloonStandConfig balloonStandConfig, Chore chore) { GetBalloonWorkable balloonWorkable = chore.target?.GetComponent <GetBalloonWorkable>(); if (balloonWorkable != null) { uint idx = BALLOONARTIST.Get(balloonWorkable)?.GetComponent <VaricolouredBalloonsHelper>()?.ArtistBalloonSymbolIdx ?? 0; VaricolouredBalloonsHelper receiver = chore.driver?.GetComponent <VaricolouredBalloonsHelper>(); if (receiver != null) { receiver.ReceiverBalloonSymbolIdx = idx; receiver.ApplySymbolOverrideByIdx(idx); if (receiver.fx != null) { receiver.fx.StopSM("Unequipped"); receiver.fx = null; } } } }