private static void ExecuteDeathAction(Item corpse, Mobile killer, string action) { if (action == null || action.Length <= 0 || corpse == null) { return; } string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null, 0); TheSpawn.TypeName = action; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, corpse, killer, action); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); Point3D loc = corpse.Location; Map map = corpse.Map; if (BaseXmlSpawner.IsTypeOrItemKeyword(typeName)) { BaseXmlSpawner.SpawnTypeKeyword(corpse, TheSpawn, typeName, substitutedtypeName, true, killer, loc, map, out status_str); } else { // its a regular type descriptor so find out what it is Type type = SpawnerType.GetType(typeName); try { string[] arglist = BaseXmlSpawner.ParseString(substitutedtypeName, 3, "/"); object o = Server.Mobiles.XmlSpawner.CreateObject(type, arglist[0]); if (o == null) { status_str = "invalid type specification: " + arglist[0]; } else if (o is Mobile) { Mobile m = (Mobile)o; if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; c.Home = loc; // Spawners location is the home point } m.Location = loc; m.Map = map; BaseXmlSpawner.ApplyObjectStringProperties(null, substitutedtypeName, m, killer, corpse, out status_str); } else if (o is Item) { Item item = (Item)o; BaseXmlSpawner.AddSpawnItem(null, corpse, TheSpawn, item, loc, map, killer, false, substitutedtypeName, out status_str); } } catch { } } }
/// <summary> /// Converts a BoxSpawn to an actual spawner object. This function is used to generate /// spawn groups created in Pandora's Box /// </summary> /// <param name="spawn">The BoxSpawn object describing the spawn that should be created</param> /// <returns>A Spawner object - null if not valid</returns> public static Item CreateBoxSpawn(BoxSpawn spawn) { if (spawn == null || spawn.Entries.Count == 0) { return(null); } XmlSpawner spawner = new XmlSpawner(); spawner.Amount = spawn.Count; spawner.MaxCount = spawn.Count; spawner.MinDelay = TimeSpan.FromSeconds(spawn.MinDelay); spawner.MaxDelay = TimeSpan.FromSeconds(spawn.MaxDelay); spawner.Team = spawn.Team; spawner.HomeRange = spawn.HomeRange; spawner.Running = false; spawner.Group = spawn.Group; XmlSpawner.SpawnObject[] spawnObjects = new Server.Mobiles.XmlSpawner.SpawnObject[spawn.Entries.Count]; for (int i = 0; i < spawnObjects.Length; i++) { BoxSpawnEntry entry = spawn.Entries[i] as BoxSpawnEntry; spawnObjects[i] = new Server.Mobiles.XmlSpawner.SpawnObject(entry.Type, entry.MaxCount); } spawner.SpawnObjects = spawnObjects; return(spawner); }
/// <summary> /// Converts a BoxSpawn to an actual spawner object. This function is used to generate /// spawn groups created in Pandora's Box /// </summary> /// <param name="spawn">The BoxSpawn object describing the spawn that should be created</param> /// <returns>A Spawner object - null if not valid</returns> public static Item CreateBoxSpawn( BoxSpawn spawn ) { if ( spawn == null || spawn.Entries.Count == 0 ) return null; XmlSpawner spawner = new XmlSpawner(); spawner.Amount = spawn.Count; spawner.MaxCount = spawn.Count; spawner.MinDelay = TimeSpan.FromSeconds( spawn.MinDelay ); spawner.MaxDelay = TimeSpan.FromSeconds( spawn.MaxDelay ); spawner.Team = spawn.Team; spawner.HomeRange = spawn.HomeRange; spawner.Running = false; spawner.Group = spawn.Group; XmlSpawner.SpawnObject[] spawnObjects = new Server.Mobiles.XmlSpawner.SpawnObject[ spawn.Entries.Count ]; for ( int i = 0; i < spawnObjects.Length; i++ ) { BoxSpawnEntry entry = spawn.Entries[ i ] as BoxSpawnEntry; spawnObjects[ i ] = new Server.Mobiles.XmlSpawner.SpawnObject( entry.Type, entry.MaxCount ); } spawner.SpawnObjects = spawnObjects; return spawner; }
private void ExecuteAction(Mobile mob, object target, string action) { if (action == null || action.Length <= 0) return; string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null, 0); TheSpawn.TypeName = action; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, target, mob, action); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); Point3D loc = new Point3D(0, 0, 0); Map map = null; if (target is Item) { Item ti = target as Item; if (ti.Parent == null) { loc = ti.Location; map = ti.Map; } else if (ti.RootParent is Item) { loc = ((Item)ti.RootParent).Location; map = ((Item)ti.RootParent).Map; } else if (ti.RootParent is Mobile) { loc = ((Mobile)ti.RootParent).Location; map = ((Mobile)ti.RootParent).Map; } } else if (target is Mobile) { Mobile ti = target as Mobile; loc = ti.Location; map = ti.Map; } if (BaseXmlSpawner.IsTypeOrItemKeyword(typeName)) { BaseXmlSpawner.SpawnTypeKeyword(target, TheSpawn, typeName, substitutedtypeName, true, mob, loc, map, out status_str); } else { // its a regular type descriptor so find out what it is Type type = SpawnerType.GetType(typeName); try { string[] arglist = BaseXmlSpawner.ParseString(substitutedtypeName, 3, "/"); object o = Server.Mobiles.XmlSpawner.CreateObject(type, arglist[0]); if (o == null) { status_str = "invalid type specification: " + arglist[0]; } else if (o is Mobile) { Mobile m = (Mobile)o; if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; c.Home = loc; // Spawners location is the home point } m.Location = loc; m.Map = map; BaseXmlSpawner.ApplyObjectStringProperties(null, substitutedtypeName, m, mob, target, out status_str); } else if (o is Item) { Item item = (Item)o; BaseXmlSpawner.AddSpawnItem(null, target, TheSpawn, item, loc, map, mob, false, substitutedtypeName, out status_str); } } catch { } } this.ReportError(mob, status_str); }
public static void ExecuteAction(Mobile trigmob, object attachedto, string action) { Point3D loc = Point3D.Zero; Map map = null; if (attachedto is IEntity) { loc = ((IEntity)attachedto).Location; map = ((IEntity)attachedto).Map; } if (action == null || action.Length <= 0 || attachedto == null || map == null) return; string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null, 0); TheSpawn.TypeName = action; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, attachedto, trigmob, action); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); if (BaseXmlSpawner.IsTypeOrItemKeyword(typeName)) { BaseXmlSpawner.SpawnTypeKeyword(attachedto, TheSpawn, typeName, substitutedtypeName, true, trigmob, loc, map, out status_str); } else { // its a regular type descriptor so find out what it is Type type = SpawnerType.GetType(typeName); try { string[] arglist = BaseXmlSpawner.ParseString(substitutedtypeName, 3, "/"); object o = Server.Mobiles.XmlSpawner.CreateObject(type, arglist[0]); if (o == null) { status_str = "invalid type specification: " + arglist[0]; } else if (o is Mobile) { Mobile m = (Mobile)o; if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; c.Home = loc; // Spawners location is the home point } m.Location = loc; m.Map = map; BaseXmlSpawner.ApplyObjectStringProperties(null, substitutedtypeName, m, trigmob, attachedto, out status_str); } else if (o is Item) { Item item = (Item)o; BaseXmlSpawner.AddSpawnItem(null, attachedto, TheSpawn, item, loc, map, trigmob, false, substitutedtypeName, out status_str); } } catch { } } }
private static void ExecuteDeathAction(Item corpse, Mobile killer, string action) { if (action == null || action.Length <= 0 || corpse == null) return; string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null, 0); TheSpawn.TypeName = action; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, corpse, killer, action); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); Point3D loc = corpse.Location; Map map = corpse.Map; if (BaseXmlSpawner.IsTypeOrItemKeyword(typeName)) { BaseXmlSpawner.SpawnTypeKeyword(corpse, TheSpawn, typeName, substitutedtypeName, true, killer, loc, map, out status_str); } else { // its a regular type descriptor so find out what it is Type type = SpawnerType.GetType(typeName); try { string[] arglist = BaseXmlSpawner.ParseString(substitutedtypeName, 3, "/"); object o = Server.Mobiles.XmlSpawner.CreateObject(type, arglist[0]); if (o == null) { status_str = "invalid type specification: " + arglist[0]; } else if (o is Mobile) { Mobile m = (Mobile)o; if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; c.Home = loc; // Spawners location is the home point } m.Location = loc; m.Map = map; BaseXmlSpawner.ApplyObjectStringProperties(null, substitutedtypeName, m, killer, corpse, out status_str); } else if (o is Item) { Item item = (Item)o; BaseXmlSpawner.AddSpawnItem(null, corpse, TheSpawn, item, loc, map, killer, false, substitutedtypeName, out status_str); } } catch { } } }
private void ExecuteGump(Mobile mob, string gumpstring) { if(gumpstring == null || gumpstring.Length <= 0) return; string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null,0); TheSpawn.TypeName = gumpstring; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, this, mob,gumpstring); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); Point3D loc = new Point3D(0,0,0); Map map = null; if(AttachedTo is Mobile) { Mobile m = AttachedTo as Mobile; loc = m.Location; map = m.Map; } else if(AttachedTo is Item && ((Item)AttachedTo).Parent == null) { Item i = AttachedTo as Item; loc = i.Location; map = i.Map; } if(typeName == "GUMP") { BaseXmlSpawner.SpawnTypeKeyword(this, TheSpawn, typeName, substitutedtypeName, true, mob, loc, map, new XmlGumpCallback(DialogGumpCallback), out status_str); // hold processing until the gump response is completed m_HoldProcessing = true; } else { status_str = "not a GUMP specification"; } ReportError(mob,status_str); }
private void ExecuteAction(Mobile mob, object target, string action) { if (action == null || action.Length <= 0) { return; } string status_str = null; Server.Mobiles.XmlSpawner.SpawnObject TheSpawn = new Server.Mobiles.XmlSpawner.SpawnObject(null, 0); TheSpawn.TypeName = action; string substitutedtypeName = BaseXmlSpawner.ApplySubstitution(null, target, mob, action); string typeName = BaseXmlSpawner.ParseObjectType(substitutedtypeName); Point3D loc = new Point3D(0, 0, 0); Map map = null; if (target is Item) { Item ti = target as Item; if (ti.Parent == null) { loc = ti.Location; map = ti.Map; } else if (ti.RootParent is Item) { loc = ((Item)ti.RootParent).Location; map = ((Item)ti.RootParent).Map; } else if (ti.RootParent is Mobile) { loc = ((Mobile)ti.RootParent).Location; map = ((Mobile)ti.RootParent).Map; } } else if (target is Mobile) { Mobile ti = target as Mobile; loc = ti.Location; map = ti.Map; } if (BaseXmlSpawner.IsTypeOrItemKeyword(typeName)) { BaseXmlSpawner.SpawnTypeKeyword(target, TheSpawn, typeName, substitutedtypeName, true, mob, loc, map, out status_str); } else { // its a regular type descriptor so find out what it is Type type = SpawnerType.GetType(typeName); try { string[] arglist = BaseXmlSpawner.ParseString(substitutedtypeName, 3, "/"); object o = Server.Mobiles.XmlSpawner.CreateObject(type, arglist[0]); if (o == null) { status_str = "invalid type specification: " + arglist[0]; } else if (o is Mobile) { Mobile m = (Mobile)o; if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; c.Home = loc; // Spawners location is the home point } m.Location = loc; m.Map = map; BaseXmlSpawner.ApplyObjectStringProperties(null, substitutedtypeName, m, mob, target, out status_str); } else if (o is Item) { Item item = (Item)o; BaseXmlSpawner.AddSpawnItem(null, target, TheSpawn, item, loc, map, mob, false, substitutedtypeName, out status_str); } } catch { } } ReportError(mob, status_str); }