private void ResponseUnrenderItemEnhancement(ActionBase.ActionEvaluation <ItemEnhancement5> eval) { var agentAddress = eval.Signer; var avatarAddress = eval.Action.avatarAddress; var slot = eval.OutputStates.GetCombinationSlotState(avatarAddress, eval.Action.slotIndex); var result = (ItemEnhancement.ResultModel)slot.Result; var itemUsable = result.itemUsable; var avatarState = eval.OutputStates.GetAvatarState(avatarAddress); // NOTE: 사용한 자원에 대한 레이어 다시 추가하기. LocalLayerModifier.ModifyAgentGold(agentAddress, -result.gold); LocalLayerModifier.RemoveItem(avatarAddress, itemUsable.ItemId); foreach (var itemId in result.materialItemIdList) { // NOTE: 최종적으로 UpdateCurrentAvatarState()를 호출한다면, 그곳에서 상태를 새로 설정할 것이다. LocalLayerModifier.RemoveItem(avatarAddress, itemId); } // NOTE: 메일 레이어 다시 없애기. LocalLayerModifier.AddItem(avatarAddress, itemUsable.ItemId, false); LocalLayerModifier.RemoveNewAttachmentMail(avatarAddress, result.id); // NOTE: 워크샵 슬롯의 모든 휘발성 상태 변경자를 다시 추가하기. var otherItemId = result.materialItemIdList.First(); LocalLayerModifier.ModifyCombinationSlotItemEnhancement( itemUsable.ItemId, otherItemId, eval.Action.slotIndex); UpdateAgentState(eval); UpdateCurrentAvatarState(eval); UpdateCombinationSlotState(slot); UnrenderQuest(avatarAddress, avatarState.questList.completedQuestIds); }