private void InternalEnqueueMessage(string message) { if (PossingMob == null) { _messageQueue.Enqueue(message); } else { _messageQueue.Enqueue(message); //allow the possessed mob to see what they are doing PossingMob.EnqueueMessage(message); } }
/// <summary> /// Causes the mobile to die and returns the corpse /// </summary> /// <returns></returns> public virtual ICorpse Die(IMobileObject attacker) { GlobalReference.GlobalValues.Engine.Event.OnDeath(this); IsAlive = false; if (PossingMob != null) { PossingMob.PossedMob = null; PossingMob.EnqueueCommand("Look"); PossingMob = null; } foreach (IEnchantment enchantment in Enchantments) { enchantment.EnchantmentEndingDateTime = new DateTime(); //set the end date to the past so its not fired and will be cleaned up } Corpse corpse = new Corpse(); corpse.OriginalMob = this; corpse.Killer = attacker; corpse.TimeOfDeath = DateTime.UtcNow; corpse.ShortDescription = "A corpse lies here."; corpse.LookDescription = CorpseLookDescription ?? "This corpse once was living but no life exists here now."; corpse.ExamineDescription = CorpseLookDescription ?? "This corpse once was living but no life exists here now."; corpse.KeyWords.Add("Corpse"); corpse.SentenceDescription = "corpse"; corpse.Items.AddRange(EquipedEquipment); corpse.Items.AddRange(Items); _equipment.Clear(); Items.Clear(); corpse.Items.Add(new Money(Money)); Money = 0; return(corpse); }