protected override void OnTarget(Mobile from, object targ) { if (targ is BaseCreature) { m_Creature = (BaseCreature)targ; TransformGroup TransformType = (TransformGroup)TAVShiftUtilities.GetTransformGroup(m_Creature); if (TransformType != TransformGroup.Impossible) { m_Player.SendMessage("That is a {0} creature.", TransformType.ToString()); } else { m_Player.SendMessage("You cannot shapeshift into that creature."); } } else { m_Player.SendMessage("That is not a creature."); } }
protected override void OnTarget(Mobile from, object targ) { if (targ is Corpse) { m_Corpse = (Corpse)targ; TransformType = (TransformGroup)TAVShiftUtilities.GetTransformGroup(m_Corpse.Owner); if (TransformType != TransformGroup.Impossible) { m_Player.SendMessage("The creature has been added to your transformation list"); NewShapeshiftGump.SaveTransformation(m_Player, TransformType, Slot, (BaseCreature)m_Corpse.Owner); m_Player.SendMessage("This creature is {0}", TransformType); } else { m_Player.SendMessage("That creature cannot be added to your transformation list. "); } } else { m_Player.SendMessage("You must drink the hearts blood of a slain creature to learn its form."); } }
public static Container Mobile_CreateCorpseHandler(Mobile owner, ArrayList initialContent, ArrayList equipItems) { bool shouldFillCorpse = true; //if ( owner is BaseCreature ) // shouldFillCorpse = !((BaseCreature)owner).IsBonded; Corpse c; if (owner is MilitiaFighter) { c = new MilitiaFighterCorpse(owner, shouldFillCorpse ? equipItems : new ArrayList()); } else { c = new Corpse(owner, shouldFillCorpse ? equipItems : new ArrayList()); } owner.Corpse = c; if (owner is BaseCreature) { c.ShiftType = (TransformGroup)TAVShiftUtilities.GetTransformGroup((BaseCreature)owner); } if (shouldFillCorpse) { for (int i = 0; i < initialContent.Count; ++i) { Item item = (Item)initialContent[i]; if (Core.AOS && owner.Player && item.Parent == owner.Backpack) { c.AddItem(item); } else { c.DropItem(item); } if (owner.Player && Core.AOS) { c.SetRestoreInfo(item, item.Location); } } } else { c.Carved = true; // TODO: Is it needed? } Point3D loc = owner.Location; Map map = owner.Map; if (map == null || map == Map.Internal) { loc = owner.LogoutLocation; map = owner.LogoutMap; } c.MoveToWorld(loc, map); c.CheckRaise(); return(c); }