public override void UpdateStatus(FightStatus fightStatus) { if (fightStatus.TryGetEntity(concernedEntity, out PlayerStatus entityStatus)) { bool flag = fightStatus == FightStatus.local; int count = moves.Count; for (int i = 0; i < count; i++) { SpellMovement spellMovement = moves[i]; if (flag) { FightCastManager.CheckSpellPlayed(spellMovement.Spell.SpellInstanceId); } switch (spellMovement.To) { case Ankama.Cube.Protocols.FightCommonProtocol.SpellMovementZone.Nowhere: case Ankama.Cube.Protocols.FightCommonProtocol.SpellMovementZone.Deck: if (spellMovement.From == Ankama.Cube.Protocols.FightCommonProtocol.SpellMovementZone.Hand) { int spellInstanceId = spellMovement.Spell.SpellInstanceId; entityStatus.RemoveSpell(spellInstanceId); AbstractPlayerUIRework view2 = entityStatus.view; if (null != view2) { view2.RemoveSpellStatus(spellInstanceId, i); } } break; case Ankama.Cube.Protocols.FightCommonProtocol.SpellMovementZone.Hand: { SpellInfo spell = spellMovement.Spell; SpellStatus spellStatus = SpellStatus.TryCreate(spell, entityStatus); if (spellStatus != null) { entityStatus.AddSpell(spellStatus); AbstractPlayerUIRework view = entityStatus.view; if (null != view) { view.AddSpellStatus(spell, i); } } break; } default: throw new ArgumentOutOfRangeException($"Spell moved to unknown zone: {spellMovement.To}"); } } } else { Log.Error(FightEventErrors.PlayerNotFound(concernedEntity), 75, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\Fight\\Events\\SpellsMovedEvent.cs"); } FightLogicExecutor.FireUpdateStatus(fightStatus.fightId, EventCategory.SpellsMoved); }