public CharacterStatueDeed(CharacterStatue statue) : base(0x14F0) { m_Statue = statue; if (statue != null) { m_Type = statue.StatueType; m_IsRewardItem = statue.IsRewardItem; } LootType = LootType.Blessed; Weight = 1.0; }
public void Restore(CharacterStatue from) { m_Material = from.Material; m_Pose = from.Pose; Direction = from.Direction; CloneBody(from); CloneClothes(from); InvalidateHues(); InvalidatePose(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); if (version >= 1) { m_Type = (StatueType)reader.ReadInt(); } m_Statue = reader.ReadMobile() as CharacterStatue; m_IsRewardItem = reader.ReadBool(); }
protected override void OnTarget(Mobile from, object targeted) { IPoint3D p = targeted as IPoint3D; Map map = from.Map; if (p == null || map == null || m_Maker == null || m_Maker.Deleted) { return; } if (m_Maker.IsChildOf(from.Backpack)) { SpellHelper.GetSurfaceTop(ref p); BaseHouse house = null; Point3D loc = new Point3D(p); if (targeted is Item && !((Item)targeted).IsLockedDown && !((Item)targeted).IsSecure && !(targeted is AddonComponent)) { from.SendLocalizedMessage(1076191); // Statues can only be placed in houses. return; } else if (from.IsBodyMod) { from.SendLocalizedMessage(1073648); // You may only proceed while in your original state... return; } AddonFitResult result = CouldFit(loc, map, from, ref house); if (result == AddonFitResult.Valid) { CharacterStatue statue = new CharacterStatue(from, m_Type); CharacterStatuePlinth plinth = new CharacterStatuePlinth(statue); house.Addons.Add(plinth); if (m_Maker is IRewardItem) { statue.IsRewardItem = ((IRewardItem)m_Maker).IsRewardItem; } statue.Plinth = plinth; plinth.MoveToWorld(loc, map); statue.InvalidatePose(); /* * TODO: Previously the maker wasn't deleted until after statue * customization, leading to redeeding issues. Exact OSI behavior * needs looking into. */ m_Maker.Delete(); statue.Sculpt(from); from.CloseGump(typeof(CharacterStatueGump)); from.SendGump(new CharacterStatueGump(m_Maker, statue, from)); } else if (result == AddonFitResult.Blocked) { from.SendLocalizedMessage(500269); // You cannot build that there. } else if (result == AddonFitResult.NotInHouse) { from.SendLocalizedMessage(1076192); // Statues can only be placed in houses where you are the owner or co-owner. } else if (result == AddonFitResult.DoorTooClose) { from.SendLocalizedMessage(500271); // You cannot build near the door. } } else { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } }
public DemolishEntry(CharacterStatue statue) : base(6275, 2) { m_Statue = statue; }