Esempio n. 1
0
 public override void CallBack()
 {
     Map.Map map = Map.MapManager.Instance.GetMap(actor.MapInstanceID);
     actor.Tasks.TryRemove("ItemDelete", out Task task);
     Deactivate();
     map.DeleteActor(actor);
 }
Esempio n. 2
0
 protected void Disappear(int disappearEffect)
 {
     NPC.DisappearEffect = disappearEffect;
     Map.Map map = Map.MapManager.Instance.GetMap(NPC.MapInstanceID);
     map.DeleteActor(NPC);
 }
Esempio n. 3
0
 public override void CallBack()
 {
     try
     {
         Map.Map map = Map.MapManager.Instance.GetMap(actor.MapInstanceID);
         if (map == null)
         {
             actor.Tasks.TryRemove("CorpseDelete", out Task task);
             Deactivate();
         }
         if (!already)
         {
             already         = true;
             actor.Invisible = false;
             map.OnActorVisibilityChange(actor);
             map.DeleteActor(actor.NPC);
         }
         else
         {
             if ((actor.AvailableItems.Count > 0) || actor.NPC.BaseData.QuestIDs.Count > 0)
             {
                 if (!shoudDisappear)
                 {
                     shoudDisappear = true;
                     dueTime        = 60000;
                     Activate();
                     actor.ShouldDisappear = true;
                     UpdateEvent evt = new UpdateEvent()
                     {
                         Actor      = actor,
                         UpdateType = UpdateTypes.DeleteCorpse
                     };
                     map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, actor, false);
                 }
                 else
                 {
                     actor.Items = null;
                     actor.Gold  = 0;
                     if (actor.CurrentPickingPlayer > 0)
                     {
                         if (map.GetActor(actor.CurrentPickingPlayer) is ActorPC pc)
                         {
                             pc.Client().SendActorCorpseClose(actor.ActorID);
                         }
                     }
                     actor.Tasks.TryRemove("CorpseDelete", out Task task);
                     Deactivate();
                     actor.ShouldDisappear = true;
                     map.DeleteActor(actor);
                 }
             }
             else
             {
                 actor.Tasks.TryRemove("CorpseDelete", out Task task);
                 Deactivate();
                 actor.ShouldDisappear = true;
                 map.DeleteActor(actor);
             }
         }
     }
     catch (Exception ex)
     {
         SmartEngine.Core.Logger.Log.Error(ex);
         actor.Tasks.TryRemove("CorpseDelete", out Task task);
         Deactivate();
     }
 }