// Start is called before the first frame update void Start() { actualState = State.Waiting; this.mapInstance = Map.instance; creatureSpawnerInstance = CreatureSpawner.instance; InvokeRepeating("UpdateTarget", 0f, 0.01f); }
internal static void ModifySpawn(CreatureSpawner spawner, GameObject spawn) { var template = LocalSpawnerManager.GetTemplate(spawner); if (template is null) { #if DEBUG Log.LogTrace($"Found no config for {spawn}."); #endif return; } Log.LogTrace($"Applying modifiers to spawn {spawn.name}"); var spawnZdo = ComponentCache.GetZdo(spawn); if (template.Modifiers is not null) { foreach (var modifier in template.Modifiers) { try { modifier?.Modify(spawn, spawnZdo); } catch (Exception e) { Log.LogError($"Error while attempting to apply modifier '{modifier?.GetType()?.Name}' to local spawner '{spawner.name}'", e); } } } }
// Called when the node enters the scene tree for the first time. public override void _Ready() { creatureGenerator = (PackedScene)GD.Load("res://Scenes/Creature.tscn"); // create some initial food foodGenerator_ = (PackedScene)GD.Load("res://Scenes/Food.tscn"); for (int i = 0; i < 20; i++) { Food food = (Food)foodGenerator_.Instance(); this.AddChild(food); this.foods.Add(food); float randomX = (float)GD.RandRange(0, this.width); float randomZ = (float)GD.RandRange(0, this.height); food.Translation = new Vector3(randomX, 0, randomZ); } // create food timer (spawns food periodically) foodTimer_ = new Timer(); this.AddChild(foodTimer_); foodTimer_.WaitTime = 1; foodTimer_.Connect("timeout", this, nameof(OnSpawnFood)); foodTimer_.Start(); // create stat timer (periodically reclaculates stats) statTimer_ = new Timer(); this.AddChild(statTimer_); statTimer_.WaitTime = 1; statTimer_.Connect("timeout", this, nameof(OnCalculateStats)); statTimer_.Start(); // connect gui GUI gui = (GUI)this.GetNode("GUI"); gui.Connect(nameof(GUI.CreateCreatures), this, nameof(OnCreateCreatures)); gui.Connect(nameof(GUI.SetFoodSpawnRate), this, nameof(OnSetFoodSpawnRate)); gui.Connect(nameof(GUI.SetTimeScale), this, nameof(OnSetTimeScale)); gui.Connect(nameof(GUI.SetWorldBounds), this, nameof(OnUpdateBounds)); gui.Connect(nameof(GUI.SetPaintFoodMode), this, nameof(OnSetFoodPaintMode)); gui.Connect(nameof(GUI.SetCreatureCreatureMode), this, nameof(OnSetCreateCreatureMode)); gui.Connect(nameof(GUI.SelectCreature), this, nameof(OnSelectCreaturePressed)); Menu menu = this.GetNode <Menu>(nameof(Menu)); menu.Connect(nameof(Menu.QuitApp), this, nameof(OnGUIQuit)); FoodPainter foodPainter = this.GetNode <FoodPainter>("FoodPainter"); foodPainter.Connect(nameof(FoodPainter.SpawnFood), this, nameof(OnFoodPainterSpawnFood)); CreatureSpawner creatureSpawner = this.GetNode <CreatureSpawner>("CreatureSpawner"); creatureSpawner.Connect(nameof(CreatureSpawner.SpawnCreature), this, nameof(OnCreateSingleCreature)); }
/// <summary> /// Creates creature spawn area. /// </summary> /// <remarks> /// Creates a spawner, that spawns a certain amount of monsters /// and respawns them after they died. The monsters can have random /// titles, and respawn delays, specifying how much time should be /// between death and respawn. /// </remarks> /// <param name="race">Race to spawn</param> /// <param name="amount">Maximum amount to spawn</param> /// <param name="regionId">Region to spawn in</param> /// <param name="delay">Initial spawn delay in seconds</param> /// <param name="delayMin">Minimum respawn delay in seconds</param> /// <param name="delayMax">Maximum respawn delay in seconds</param> /// <param name="titles">List of random titles to apply to creatures</param> /// <param name="coordinates">Even number of coordinates, specifying the spawn area</param> /// <returns>Id of the new spawner.</returns> protected int CreateSpawner(int race, int amount, int region, int delay = 0, int delayMin = 10, int delayMax = 20, int[] titles = null, int[] coordinates = null) { var spawner = new CreatureSpawner(race, amount, region, delay, delayMin, delayMax, titles, coordinates); ChannelServer.Instance.World.SpawnManager.Add(spawner); return(spawner.Id); }
public CreatureSpawner CreateSpawner() { CreatureSpawner spawner = new CreatureSpawner(m_Creature, m_Amount, (int)m_MinDelay.TotalSeconds, (int)m_MaxDelay.TotalSeconds, 20, 10); spawner.Murderer = true; spawner.MoveToWorld(this.Location, this.Map); return(spawner); }
void Awake() { if (instance != null) { Debug.LogError("More than one creature spawner in scene!"); return; } instance = this; }
public static LocalSpawnTemplate MatchMostSpecificTemplate(CreatureSpawner spawner) { var position = spawner.transform.position; string creatureName = ""; if (spawner.m_creaturePrefab.IsNotNull()) { creatureName = spawner.m_creaturePrefab.GetCleanedName(); } // Check room match var room = RoomManager.GetContainingRoom(position); if (room is not null) { #if DEBUG && TRUE Log.LogTrace($"Searching for local spawn template [{room.Name}.{creatureName}]"); #endif var roomTemplate = LocalSpawnTemplateManager.GetTemplate(new RoomIdentifier( room.Name, creatureName)); if (roomTemplate is not null) { return(roomTemplate); } #if DEBUG && TRUE else { Log.LogTrace($"Did not find template in:"); foreach (var identifier in LocalSpawnTemplateManager.TemplatesByRoom.Keys) { Log.LogTrace($"\t[{identifier.Room}.{identifier.PrefabName}]"); } } #endif } // Check location match. var location = LocationManager.GetLocation(position); if (location is not null) { var locationTemplate = LocalSpawnTemplateManager.GetTemplate(new LocationIdentifier( location.LocationName, creatureName)); if (locationTemplate is not null) { return(locationTemplate); } } // Check spawner name match return(LocalSpawnTemplateManager.GetTemplate(new SpawnerNameIdentifier(spawner.GetCleanedName()))); }
void OnSetCreateCreatureMode() { CreatureSpawner creatureSpawner = this.GetNode <CreatureSpawner>("CreatureSpawner"); creatureSpawner.On = true; Texture image = GD.Load <Texture>("res://Art/createCreatureCursor.png"); Vector2 imageCenter = new Vector2(image.GetWidth() / 2, image.GetHeight() / 2); Input.SetCustomMouseCursor(image, Input.CursorShape.Arrow, imageCenter); }
public void Start() { InventoryObject = GameObject.FindGameObjectWithTag("UI_Inventory"); InventoryObject.SetActive(false); CraftingObject = GameObject.FindGameObjectWithTag("UI_Crafting"); CraftingObject.SetActive(false); creatureSpawner = GameObject.FindGameObjectWithTag("Spawner"); creatureSpawnerScript = creatureSpawner.GetComponent <CreatureSpawner>(); }
internal static void ConfigureSpawner(CreatureSpawner spawner, LocalSpawnTemplate template) { if (template is null) { return; } if (!template.TemplateEnabled) { return; } Log.LogDebug($"Found and applying config for local spawner {spawner.name}"); var prefab = spawner.m_creaturePrefab; //Find creature prefab, if it needs to be overriden if (!string.IsNullOrWhiteSpace(template.PrefabName) && prefab.GetCleanedName() != template.PrefabName.Trim()) { try { prefab = ZNetScene.instance.GetPrefab(template.PrefabName); } catch (Exception) { Log.LogWarning($"Unable to find prefab for '{template.PrefabName}'. Skipping configuration of local spawner."); } if (prefab.IsNull()) { Log.LogWarning($"Unable to find prefab for {template.PrefabName}. Skipping configuration."); return; } } //Override existing config values: spawner.m_creaturePrefab = prefab.IsNotNull() ? prefab : spawner.m_creaturePrefab; spawner.m_maxLevel = template.MaxLevel ?? spawner.m_maxLevel; spawner.m_minLevel = template.MinLevel ?? spawner.m_minLevel; //__instance.m_requireSpawnArea = config.RequireSpawnArea.Value; //Disabled for now, since it isn't being used by the game. spawner.m_respawnTimeMinuts = (float)(template.SpawnInterval?.TotalMinutes ?? spawner.m_respawnTimeMinuts); spawner.m_setPatrolSpawnPoint = template.SetPatrolSpawn ?? spawner.m_setPatrolSpawnPoint; spawner.m_spawnAtDay = template.SpawnAtDay ?? spawner.m_spawnAtDay; spawner.m_spawnAtNight = template.SpawnAtNight ?? spawner.m_spawnAtNight; spawner.m_triggerDistance = template.ConditionPlayerDistance ?? spawner.m_triggerDistance; spawner.m_triggerNoise = template.ConditionPlayerNoise ?? spawner.m_triggerNoise; spawner.m_spawnInPlayerBase = template.AllowSpawnInPlayerBase ?? spawner.m_spawnInPlayerBase; }
internal static bool CheckConditionsValid(CreatureSpawner spawner) { #if DEBUG && VERBOSE Log.LogTrace($"Testing conditions of spawner '{spawner.name}:{spawner.transform.position}'"); #endif var template = LocalSpawnerManager.GetTemplate(spawner); if (template is not null && !template.Enabled) { return(false); } if (template?.SpawnConditions is null) { return(true); } var spawnerZdo = ComponentCache.GetZdo(spawner); if (spawnerZdo is null) { return(true); } SpawnSessionContext context = new(spawnerZdo); foreach (var condition in template.SpawnConditions) { try { var validCondition = condition?.IsValid(context) ?? true; if (!validCondition) { #if DEBUG && VERBOSE Log.LogTrace($"Local Spawner '{spawner.name}', Invalid condition '{condition.GetType().Name}'"); #endif return(false); } } catch (Exception e) { Log.LogError($"Error while attempting to check spawn condition '{condition?.GetType()?.Name}' for local spawner '{spawner.name}'. Ignoring condition", e); } } return(true); }
static void Prefix(ref CreatureSpawner __instance) { if (Settings.isDefaultDifficulty) { return; } __instance.m_minLevel = Settings.minMobLevel.Value; __instance.m_maxLevel = Settings.maxMobLevel.Value; __instance.m_levelupChance = Settings.mobLevelChance.Value; if (__instance.m_creaturePrefab.GetComponent(typeof(LevelEffects)) == null) { __instance.m_creaturePrefab.AddComponent(typeof(LevelEffects)); } }
private void SetSettings(CreatureSpawner spawner, int count, TimeSpan minDelay, TimeSpan maxDelay, int team, int homeRange, int spawnRange, string spawnName, bool cantWalk, bool group, bool active, bool blessed, bool murderer, bool scaledDelay, bool saturable) { spawner.Count = count; spawner.MinDelay = minDelay; spawner.MaxDelay = maxDelay; spawner.Team = team; spawner.HomeRange = homeRange; spawner.SpawnRange = spawnRange; spawner.SpawnName = spawnName; spawner.CantWalk = cantWalk; spawner.Group = group; spawner.Active = active; spawner.Blessed = blessed; spawner.Murderer = murderer; spawner.ScaledDelay = scaledDelay; spawner.Saturable = saturable; }
// Update is called once per frame void Update() { // recalc targetPosition CreatureSpawner tmp = this.GetComponentInParent <CreatureSpawner>(); //print (Vector3.Distance( player.transform.position, this.transform.parent.transform.position ) +" - "+ tmp.domeDiameter/2); float tmpDistance = Vector3.Distance(player.transform.position, this.transform.parent.transform.position); if (tmpDistance > tmp.domeDiameter / 2 || tmpDistance < 12) // normal behaviour (circle around center) { this.GetComponent <Rigidbody>().drag = 50; //this.transform.localPosition = targetPosition; targetPosition = new Vector3(Mathf.Cos(currentAngle) * distFromCenter, this.transform.localPosition.y, Mathf.Sin(currentAngle) * distFromCenter); this.GetComponent <Rigidbody>().MovePosition(this.transform.position + (targetPosition - this.transform.localPosition) / 5); currentAngle += defaultSpeed * Time.deltaTime; // deltaTime makes it frameRate-independent; currentAngle %= Mathf.PI * 2; } else // disturbed-by-player behaviour //this.rigidbody.mass=6; { this.GetComponent <Rigidbody>().drag = .0f; targetPosition = new Vector3(player.transform.position.x, this.transform.localPosition.y, player.transform.position.z); // if close to camera, move your ass from here if (Vector3.Distance(targetPosition, this.transform.position) > 5) { this.GetComponent <Rigidbody>().AddForce((targetPosition - this.transform.position) / 5, ForceMode.Force); } // else get to camera else { this.GetComponent <Rigidbody>().AddForce(this.GetComponent <Rigidbody>().velocity / 10, ForceMode.Force); } //this.rigidbody.MovePosition(this.transform.position + (targetPosition-this.transform.localPosition)/5); } // make tail GameObject tmpParent = Instantiate(tailParticle, this.transform.position - new Vector3(0, 0, 0), tailParticle.transform.rotation) as GameObject; tmpParent.transform.parent = GameObject.Find("creatureTailParent").transform; }
private static void Postfix(ref CreatureSpawner __instance) { Character creatureComp = __instance.GetComponent <Character>(); if (!creatureComp) { return; } string creatureText = creatureComp.m_name; string aName = ""; //Mod.Log.LogInfo(string.Format("[AMP - Characters] Found {0} at {1} {2} {3}", creatureText, creatureComp.transform.position.x, creatureComp.transform.position.y, creatureComp.transform.position.z)); switch (creatureText) { case "$enemy_serpent": if (Mod.pinSerpent.Value) { aName = "Serpent"; } break; default: aName = ""; break; } if (aName != "") { //__instance.gameObject.AddComponent<PinnedObject>().Init(aName, spawnComp.transform.position); if (!Mod.pinItems.ContainsKey(creatureComp.transform.position)) { Mod.pinItems.Add(creatureComp.transform.position, aName); } } }
private static void DumpSpawner(CreatureSpawner spawner) { if (spawner.SpawnName == "(invalid name)") { return; } var region = Region.Find(spawner.Location, spawner.Map); var regionName = GetRegionName(region); string directory = Path.Combine(Core.BaseDirectory, "Data", "Spawns", region.Map.Name); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } string filePath = Path.Combine(directory, regionName + ".xml"); var xml = AcquireWriter(filePath); spawner.XmlSerialize(xml); }
public static CSData GetData(this CreatureSpawner cs) => Serialization.Deserialize <CSData>(cs?.m_nview?.GetZDO()?.GetString("Areas CustomCS Data"));
public static void SetData(this CreatureSpawner cs, CSData data) => cs?.m_nview?.GetZDO()?.Set("Areas CustomCS Data", Serialization.Serialize(data));
public static string GetCtName(this CreatureSpawner cs) => cs?.m_nview?.GetZDO()?.GetString("Areas CustomCS CtName");
public static void SetCtName(this CreatureSpawner cs, string ctName) => cs?.m_nview?.GetZDO()?.Set("Areas CustomCS CtName", ctName);
public CreatureSpawnerGump(CreatureSpawner spawner) : base(25, 25) { m_Spawner = spawner; AddPage(0); // Gump Structure AddBackground(0, 0, 520, 510, 0x13BE); AddImageTiled(10, 10, 500, 30, 0xA40); AddImageTiled(10, 50, 500, 190, 0xA40); AddImageTiled(10, 250, 500, 190, 0xA40); AddImageTiled(10, 450, 500, 45, 0xA40); AddAlphaRegion(10, 10, 500, 485); // Title AddHtmlColor(10, 14, 500, 20, "<CENTER>CREATURE SPAWNER GUMP</CENTER>", FontColor, false, false); // Spawn Info AddTextEntry(116, 60, 145, 20, 1271, 10, m_Spawner.SpawnName); AddLabel(22, 60, 1259, "Spawn Name"); AddTextEntry(116, 85, 74, 20, 1271, 11, m_Spawner.Count.ToString()); AddLabel(22, 85, 1259, "Amount"); AddTextEntry(116, 110, 74, 20, 1271, 12, m_Spawner.SpawnRange.ToString()); AddLabel(22, 110, 1259, "Spawn Range"); AddTextEntry(116, 135, 74, 20, 1271, 13, m_Spawner.HomeRange.ToString()); AddLabel(22, 135, 1259, "Home Range"); AddTextEntry(116, 160, 74, 20, 1271, 14, m_Spawner.MinDelay.ToString()); AddLabel(22, 160, 1259, "Min Delay"); AddTextEntry(116, 185, 74, 20, 1271, 15, m_Spawner.MaxDelay.ToString()); AddLabel(22, 185, 1259, "Max Delay"); AddTextEntry(116, 210, 74, 20, 1271, 16, m_Spawner.Team.ToString()); AddLabel(22, 210, 1259, "Team"); AddCheck(376, 60, 210, 211, m_Spawner.Active, 19); AddLabel(282, 60, 1259, "Active"); AddCheck(376, 85, 210, 211, m_Spawner.CantWalk, 17); AddLabel(282, 85, 1259, "Cant Walk"); AddCheck(376, 110, 210, 211, m_Spawner.Group, 18); AddLabel(282, 110, 1259, "Group"); AddCheck(376, 135, 210, 211, m_Spawner.Blessed, 20); AddLabel(282, 135, 1259, "Blessed"); AddCheck(376, 160, 210, 211, m_Spawner.Murderer, 21); AddLabel(282, 160, 1259, "Murderer"); AddCheck(376, 185, 210, 211, m_Spawner.ScaledDelay, 22); AddLabel(282, 185, 1259, "Scaled Delay"); AddCheck(376, 210, 210, 211, m_Spawner.Saturable, 23); AddLabel(282, 210, 1259, "Saturable"); AddButton(20, 465, 247, 248, 20, GumpButtonType.Reply, 0); if (m_Spawner.Group && m_Spawner.TotalSpawned == 0) { AddLabel(220, 465, 0x481, String.Format("Next Group Spawn: {0}", (m_Spawner.NextGroupRespawn - DateTime.UtcNow).ToString())); } // Column header int offset = 255; AddLabelCropped(22, offset, 100, 20, LabelHue, "Mobile"); AddLabelCropped(192, offset, 120, 20, LabelHue, "State"); AddLabelCropped(252, offset, 120, 20, LabelHue, "Next Spawn"); AddLabelCropped(402, offset, 120, 20, LabelHue, "Saturation"); // Entry info offset += 30; List <SpawnInstance> instances = m_Spawner.Instances; int maxPage = (instances.Count - 1) / EntriesPerPage; for (int i = 0; i < instances.Count; i++) { int page = i / EntriesPerPage; int entry = i % EntriesPerPage; if (entry == 0) { AddPage(page + 1); offset = 285; if (page > 0) { AddButton(465, 252, 0x15E3, 0x15E7, 0, GumpButtonType.Page, page); } else { AddImage(465, 252, 0x25EA); } if (page < maxPage) { AddButton(482, 252, 0x15E1, 0x15E5, 0, GumpButtonType.Page, page + 2); } else { AddImage(482, 252, 0x25E6); } } SpawnInstance si = instances[i]; AddLabelCropped(22, offset, 120, 20, LabelHue, GetMobile(si)); AddLabelCropped(192, offset, 120, 20, LabelHue, GetState(si)); AddLabelCropped(252, offset, 210, 20, LabelHue, GetNextSpawn(si)); //if ( !si.IsSaturated ) AddLabelCropped(402, offset, 120, 20, GreenHue, "0%"); //else // AddLabelCropped( 402, offset, 120, 20, RedHue, "100%" ); offset += 20; } }
private static void CreateGizmo(CreatureSpawner __instance) { SphereGizmo.Create(__instance.transform.position, 3, Color.yellow); }
private static void EnsureSpawnerGetsConfigured(CreatureSpawner __instance) { LocalSpawnerManager.EnsureSpawnerConfigured(__instance); }
private static bool DelayUpdate(CreatureSpawner __instance) { return(!LocalSpawnerManager.ShouldDelaySpawnerUpdate(__instance)); }
internal static float GetChanceToLevelUp(float defaultChance, CreatureSpawner spawner) => LocalSpawnerManager.GetTemplate(spawner)?.LevelUpChance ?? defaultChance;
private static void GenQuest_Command(CommandEventArgs e) { e.Mobile.SendMessage("Creating KR Starting Quest..."); // var declarations KRStartingQuestTrigger trigger; KRStartingQuestContainer container; KRStartingQuestGate gate; KRWaypointRemover remover; KRStartingQuestTeleporter teleporter; CreatureSpawner spawner; trigger = new KRStartingQuestTrigger(3); trigger.MoveToWorld(new Point3D(3646, 2674, -1), Map.Trammel); trigger = new KRStartingQuestTrigger(3); trigger.MoveToWorld(new Point3D(3647, 2674, -2), Map.Trammel); trigger = new KRStartingQuestTrigger(3); trigger.MoveToWorld(new Point3D(3648, 2674, -2), Map.Trammel); trigger = new KRStartingQuestTrigger(3); trigger.MoveToWorld(new Point3D(3649, 2674, -2), Map.Trammel); trigger = new KRStartingQuestTrigger(4); trigger.MoveToWorld(new Point3D(3647, 2666, -3), Map.Trammel); trigger = new KRStartingQuestTrigger(4); trigger.MoveToWorld(new Point3D(3648, 2666, -3), Map.Trammel); trigger = new KRStartingQuestTrigger(4); trigger.MoveToWorld(new Point3D(3649, 2666, -2), Map.Trammel); trigger = new KRStartingQuestTrigger(5); trigger.MoveToWorld(new Point3D(3646, 2656, -2), Map.Trammel); trigger = new KRStartingQuestTrigger(5); trigger.MoveToWorld(new Point3D(3647, 2656, -4), Map.Trammel); trigger = new KRStartingQuestTrigger(5); trigger.MoveToWorld(new Point3D(3648, 2656, -3), Map.Trammel); for (int i = 0; i < 12; i++) { trigger = new KRStartingQuestTrigger(5); trigger.MoveToWorld(new Point3D(3649 + i, 2656, -2), Map.Trammel); } container = new KRStartingQuestContainer(0x9A9); container.MoveToWorld(new Point3D(3646, 2652, -3), Map.Trammel); container = new KRStartingQuestContainer(0xE3E); container.MoveToWorld(new Point3D(3649, 2650, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3650, 2650, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3651, 2650, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3643, 2649, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3644, 2648, 3), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3645, 2647, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3645, 2648, -1), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3648, 2644, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3650, 2642, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3648, 2642, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3648, 2641, 2), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3652, 2642, 3), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3653, 2642, 6), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3653, 2643, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3657, 2641, 3), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3657, 2642, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3657, 2643, 0), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3659, 2644, 7), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3660, 2644, 8), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3659, 2645, 7), Map.Trammel); container = new KRStartingQuestContainer(0xE3D); container.MoveToWorld(new Point3D(3660, 2645, 7), Map.Trammel); for (int i = 0; i < 6; i++) { trigger = new KRStartingQuestTrigger(9); trigger.MoveToWorld(new Point3D(3672, 2654 - i, 0), Map.Trammel); } spawner = new CreatureSpawner("HogarthTheKeeperOfOldHaven", 1, 300, 600, 0, 0); spawner.MoveToWorld(new Point3D(3672, 2653, 0), Map.Trammel); spawner.Active = true; Static sta; sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3668, 2647, 0), Map.Trammel); sta = new Static(0xB8C); sta.Movable = false; sta.MoveToWorld(new Point3D(3668, 2648, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3669, 2647, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3669, 2648, 0), Map.Trammel); sta = new Static(0xB8A); sta.Movable = false; sta.MoveToWorld(new Point3D(3670, 2647, 0), Map.Trammel); sta = new Static(0xB8B); sta.Movable = false; sta.MoveToWorld(new Point3D(3670, 2648, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3673, 2652, 0), Map.Trammel); sta = new Static(0xB8C); sta.Movable = false; sta.MoveToWorld(new Point3D(3673, 2653, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3674, 2652, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3674, 2653, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3675, 2652, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3675, 2653, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3676, 2652, 0), Map.Trammel); sta = new Static(0xB8D); sta.Movable = false; sta.MoveToWorld(new Point3D(3676, 2653, 0), Map.Trammel); sta = new Static(0xB8A); sta.Movable = false; sta.MoveToWorld(new Point3D(3677, 2652, 0), Map.Trammel); sta = new Static(0xB8B); sta.Movable = false; sta.MoveToWorld(new Point3D(3677, 2653, 0), Map.Trammel); remover = new KRWaypointRemover(15); remover.MoveToWorld(new Point3D(3665, 2631, 0), Map.Trammel); remover = new KRWaypointRemover(15); remover.MoveToWorld(new Point3D(3665, 2630, 0), Map.Trammel); remover = new KRWaypointRemover(15); remover.MoveToWorld(new Point3D(3665, 2629, 0), Map.Trammel); remover = new KRWaypointRemover(15); remover.MoveToWorld(new Point3D(3665, 2628, 0), Map.Trammel); gate = new KRStartingQuestGate(16, new Point3D(3663, 2629, 0)); gate.ItemID = 0x830; gate.MoveToWorld(new Point3D(3664, 2630, 0), Map.Trammel); gate = new KRStartingQuestGate(16, new Point3D(3663, 2629, 0)); gate.ItemID = 0x832; gate.MoveToWorld(new Point3D(3664, 2629, 0), Map.Trammel); spawner = new CreatureSpawner("WeakSkeleton", 10, 300, 600, 20, 10); spawner.MoveToWorld(new Point3D(3649, 2623, 0), Map.Trammel); spawner.Active = true; remover = new KRWaypointRemover(23); remover.MoveToWorld(new Point3D(3653, 2604, 0), Map.Trammel); remover = new KRWaypointRemover(23); remover.MoveToWorld(new Point3D(3654, 2604, 0), Map.Trammel); remover = new KRWaypointRemover(23); remover.MoveToWorld(new Point3D(3655, 2604, 0), Map.Trammel); remover = new KRWaypointRemover(23); remover.MoveToWorld(new Point3D(3656, 2604, 0), Map.Trammel); gate = new KRStartingQuestGate(24, new Point3D(3654, 2602, 0)); gate.ItemID = 0x82F; gate.MoveToWorld(new Point3D(3654, 2603, 0), Map.Trammel); gate = new KRStartingQuestGate(24, new Point3D(3654, 2602, 0)); gate.ItemID = 0x833; gate.MoveToWorld(new Point3D(3655, 2603, 0), Map.Trammel); spawner = new CreatureSpawner("Zombie", 20, 300, 600, 20, 10); spawner.MoveToWorld(new Point3D(3648, 2589, 0), Map.Trammel); spawner.Active = true; remover = new KRWaypointRemover(25); remover.MoveToWorld(new Point3D(3623, 2611, 0), Map.Trammel); remover = new KRWaypointRemover(25); remover.MoveToWorld(new Point3D(3623, 2612, 0), Map.Trammel); spawner = new CreatureSpawner("Healer", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(3619, 2618, 0), Map.Trammel); spawner.Active = true; for (int i = 0; i < 7; i++) { remover = new KRWaypointRemover(27); remover.MoveToWorld(new Point3D(3629 + i, 2578, 0), Map.Trammel); } teleporter = new KRStartingQuestTeleporter(28, new Point3D(3631, 2573, 0)); teleporter.AdvanceLevel = true; teleporter.MoveToWorld(new Point3D(3631, 2577, 0), Map.Trammel); teleporter = new KRStartingQuestTeleporter(28, new Point3D(3631, 2573, 0)); teleporter.AdvanceLevel = true; teleporter.MoveToWorld(new Point3D(3632, 2577, 0), Map.Trammel); DarkKnight dk = new DarkKnight(); dk.MoveToWorld(new Point3D(3631, 2568, 0), Map.Trammel); dk.Direction = Direction.South; Blocker b = new Blocker(); b.MoveToWorld(new Point3D(3631, 2576, 0), Map.Trammel); b = new Blocker(); b.MoveToWorld(new Point3D(3632, 2576, 0), Map.Trammel); Static st = new Static(0x3946); st.MoveToWorld(new Point3D(3631, 2576, 0), Map.Trammel); st = new Static(0x3946); st.MoveToWorld(new Point3D(3632, 2576, 0), Map.Trammel); st = new Static(0x3946); st.MoveToWorld(new Point3D(3631, 2565, 0), Map.Trammel); st = new Static(0x3946); st.MoveToWorld(new Point3D(3632, 2565, 0), Map.Trammel); trigger = new KRStartingQuestTrigger(31); trigger.MoveToWorld(new Point3D(3540, 2570, -1), Map.Trammel); trigger = new KRStartingQuestTrigger(31); trigger.MoveToWorld(new Point3D(3540, 2569, 0), Map.Trammel); trigger = new KRStartingQuestTrigger(31); trigger.MoveToWorld(new Point3D(3540, 2568, 0), Map.Trammel); trigger = new KRStartingQuestTrigger(31); trigger.MoveToWorld(new Point3D(3540, 2567, 0), Map.Trammel); teleporter = new KRStartingQuestTeleporter(31, new Point3D(3631, 2561, 0)); teleporter.MoveToWorld(new Point3D(3631, 2566, 0), Map.Trammel); teleporter = new KRStartingQuestTeleporter(31, new Point3D(3631, 2561, 0)); teleporter.MoveToWorld(new Point3D(3632, 2566, 0), Map.Trammel); e.Mobile.SendMessage("Generation completed!"); }
private void FindPlayer() { playerObject = GameObject.FindGameObjectWithTag("Player"); creatureSpawner = GameObject.FindGameObjectWithTag("Spawner").GetComponent <CreatureSpawner>(); }
private static void GenQuest_Command(CommandEventArgs e) { e.Mobile.SendMessage("Creating Humility Cloak Quest..."); // var declarations CreatureSpawner spawner; // Gareth spawner = new CreatureSpawner("Gareth", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(2024, 2838, 20), Map.Trammel); spawner.Active = true; // Maribel spawner = new CreatureSpawner("Maribel", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(1460, 1657, 10), Map.Trammel); spawner.Active = true; // Deirdre spawner = new CreatureSpawner("Deirdre", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(1460, 1657, 10), Map.Felucca); spawner.Active = true; // Jason spawner = new CreatureSpawner("Jason", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(607, 2170, 0), Map.Trammel); spawner.Active = true; // Walton spawner = new CreatureSpawner("Walton", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(607, 2170, 0), Map.Felucca); spawner.Active = true; // Nelson spawner = new CreatureSpawner("Nelson", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(3442, 2637, 28), Map.Trammel); spawner.Active = true; // Kevin spawner = new CreatureSpawner("Kevin", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(2468, 474, 15), Map.Trammel); spawner.Active = true; // Sean spawner = new CreatureSpawner("Sean", 1, 300, 600, 5, 1); spawner.MoveToWorld(new Point3D(2468, 474, 15), Map.Felucca); spawner.Active = true; // Triggers! HumilityCloakTrigger trigger; trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4273, 3697, 0), Map.Trammel); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4274, 3697, 0), Map.Trammel); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4273, 3696, 0), Map.Trammel); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4274, 3696, 0), Map.Trammel); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4273, 3697, 0), Map.Felucca); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4274, 3697, 0), Map.Felucca); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4273, 3696, 0), Map.Felucca); trigger = new HumilityCloakTrigger(); trigger.MoveToWorld(new Point3D(4274, 3696, 0), Map.Felucca); // Ilshenar WON'T work! :) e.Mobile.SendMessage("Generation completed!"); }
void Start() { instance = this; map = FindObjectOfType <Map>(); map.OnMapLoaded += () => InitialSpawn(); }
private static string GetPrefabFriendlyName(GameObject prefab) { HoverText hover = prefab.GetComponent <HoverText>(); if (hover) { return(hover.m_text); } ItemDrop item = prefab.GetComponent <ItemDrop>(); if (item) { return(item.m_itemData.m_shared.m_name); } Character chara = prefab.GetComponent <Character>(); if (chara) { return(chara.m_name); } RuneStone runestone = prefab.GetComponent <RuneStone>(); if (runestone) { return(runestone.m_name); } ItemStand itemStand = prefab.GetComponent <ItemStand>(); if (itemStand) { return(itemStand.m_name); } MineRock mineRock = prefab.GetComponent <MineRock>(); if (mineRock) { return(mineRock.m_name); } Pickable pickable = prefab.GetComponent <Pickable>(); if (pickable) { return(GetPrefabFriendlyName(pickable.m_itemPrefab)); } CreatureSpawner creatureSpawner = prefab.GetComponent <CreatureSpawner>(); if (creatureSpawner) { return(GetPrefabFriendlyName(creatureSpawner.m_creaturePrefab)); } SpawnArea spawnArea = prefab.GetComponent <SpawnArea>(); if (spawnArea && spawnArea.m_prefabs.Count > 0) { return(GetPrefabFriendlyName(spawnArea.m_prefabs[0].m_prefab)); } Piece piece = prefab.GetComponent <Piece>(); if (piece && !string.IsNullOrEmpty(piece.m_name)) { return(piece.m_name); } return(prefab.name); }
// Init Functions private void InitGameWorldBehaviour() { entityManager = new EntityManager(); entityManager.EffectsReleased += OnEffectsReleased; effectManager = new EffectManager(this); effectManager.EffectExpired += OnEffectExpired; creatureSpawner = new CreatureSpawner(); creatureSpawner.EntitySpawned += OnCreatureGenerated; creatureSpawner.CreatureCountNeeded += OnCreatureCountNeeded; perkSpawner = new PerkSpawner(); perkSpawner.EntitySpawned += OnPerkGenerated; lifeBeacons = new List<LifeSpawnBeacon>(); iconSlotManager = new IconSlotManager(); }