Exemplo n.º 1
0
 // 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);
                }
            }
        }
    }
Exemplo n.º 3
0
    // 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));
    }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
            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);
            }
Exemplo n.º 6
0
 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())));
    }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 12
0
            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));
                }
            }
Exemplo n.º 13
0
 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;
 }
Exemplo n.º 14
0
    // 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);
                }
            }
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
 public static CSData GetData(this CreatureSpawner cs) => Serialization.Deserialize <CSData>(cs?.m_nview?.GetZDO()?.GetString("Areas CustomCS Data"));
Exemplo n.º 18
0
 public static void SetData(this CreatureSpawner cs, CSData data) => cs?.m_nview?.GetZDO()?.Set("Areas CustomCS Data", Serialization.Serialize(data));
Exemplo n.º 19
0
 public static string GetCtName(this CreatureSpawner cs) => cs?.m_nview?.GetZDO()?.GetString("Areas CustomCS CtName");
Exemplo n.º 20
0
 public static void SetCtName(this CreatureSpawner cs, string ctName) => cs?.m_nview?.GetZDO()?.Set("Areas CustomCS CtName", ctName);
Exemplo n.º 21
0
        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;
            }
        }
Exemplo n.º 22
0
 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;
Exemplo n.º 26
0
        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!");
        }
Exemplo n.º 27
0
 private void FindPlayer()
 {
     playerObject    = GameObject.FindGameObjectWithTag("Player");
     creatureSpawner = GameObject.FindGameObjectWithTag("Spawner").GetComponent <CreatureSpawner>();
 }
Exemplo n.º 28
0
        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!");
        }
Exemplo n.º 29
0
 void Start()
 {
     instance         = this;
     map              = FindObjectOfType <Map>();
     map.OnMapLoaded += () => InitialSpawn();
 }
Exemplo n.º 30
0
        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);
        }
Exemplo n.º 31
0
    // 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();
    }