Ejemplo n.º 1
0
    public Transform GetValidSpawn(SpawnType forType)
    {
        photonView.RPC ("SetInvalid", PhotonTargets.Others);

        if (bIsValid && (spawnType == SpawnType.Both || forType == spawnType || forType == SpawnType.Both) )
        {
            bIsValid = false;
            return transform;
        }
        else
            return null;
    }
Ejemplo n.º 2
0
        public Spawn(Point p,float rot,float scale,int i,SpawnType t)
        {
            //if (scale == null) scale = 1;
            propertypanel = new SpawnProperty(this);
            type = t;
            head = new VertexMarker();
            head.Colour = Brushes.Yellow;
            head.setPosition(p);

            source = new VertexMarker();
            source.Colour = Brushes.Yellow;
            p.Offset(-(int)(scale * arrowLength * Math.Cos(rot) / Geometry.Geometry.scaleFactor), -(int)(scale * arrowLength * Math.Sin(rot) / Geometry.Geometry.scaleFactor));
            source.setPosition(p);
            Name = string.Format("Spawn {0}", i);

            setSelected(false);
        }
Ejemplo n.º 3
0
        public void CompileSettings()
        {
            ResetSettingValues();

            try
            {
                for ( int i = 0; i < SettingsList.Count; i++ )
                {
                    ArrayList setting = (ArrayList) SettingsList[i];
                    ArrayList List = new ArrayList();
                    int entryIndex = -1;

                    switch ( (Setting) setting[0] )
                    {
                        case Setting.OverrideIndividualEntries:
                        {
                            OverrideSpawnRange = (int)				setting[1];
                            OverrideWalkRange = (int)				setting[2];
                            OverrideAmount = (int)					setting[3];
                            OverrideMinDelay = (int)				setting[4];
                            OverrideMaxDelay = (int)				setting[5];
                            OverrideGroupSpawn = (bool)				setting[6];
                            OverrideEventAmbush = (bool)			setting[7];
                            OverrideSpawnType = (SpawnType)			setting[8];
                            OverrideEventKeyword = (string)			setting[9];
                            OverrideCaseSensitive = (bool)			setting[10];
                            OverrideEventRange = (int)				setting[11];
                            OverrideBeginTimeBasedHour = (int)		setting[12];
                            OverrideBeginTimeBasedMinute = (int)	setting[13];
                            OverrideEndTimeBasedHour = (int)		setting[14];
                            OverrideEndTimeBasedMinute = (int)		setting[15];
                            OverrideMinDespawn = (int)				setting[16];
                            OverrideMaxDespawn = (int)				setting[17];
                            OverrideDespawn = (bool)				setting[18];
                            OverrideDespawnGroup = (bool)			setting[19];
                            OverrideDespawnTimeExpire = (bool)		setting[20];

                            OverrideIndividualEntries = true;

                            OverrideBeginTimeBased = OverrideBeginTimeBasedHour * OverrideBeginTimeBasedMinute;
                            OverrideEndTimeBased = OverrideEndTimeBasedHour * OverrideEndTimeBasedMinute;

                            break;
                        }
                        case Setting.AddItem:{ entryIndex = (int) setting[2]; List = SetItemInfo( setting ); break; }
                        case Setting.AddContainer:
                        {
                            List = SetItemInfo( setting );

                            entryIndex = (int)				setting[2];

                            for ( int j = 6; j < setting.Count; j++ )
                            {
                                ArrayList ItemsList = (ArrayList) setting[j];

                                List.Add( ItemsList );
                            }

                            break;
                        }
                    }

                    if ( entryIndex != -1 )
                    {
                        AddItemRefList.Add( entryIndex );
                        AddItemList.Add( List );
                    }
                }
            }
            catch{}
        }
Ejemplo n.º 4
0
 public MapSpawn(int bx, int @by, SpawnType type)
 {
     BlockX = bx;
     BlockY = @by;
     Type = type;
 }
Ejemplo n.º 5
0
        private void GetArgsList()
        {
            Help = (bool)									ArgsList[0];
            DisplayMessages = (bool)						ArgsList[1];
            MessagesTitle = (string)						ArgsList[2];
            OldMessagesTitle = (string)						ArgsList[3];
            Messages = (string)								ArgsList[4];
            OldMessages = (string)							ArgsList[5];
            PageInfoList = (ArrayList)						ArgsList[12];
            MSEGCheckBoxesList = (ArrayList)				ArgsList[14];
            megaSpawner = (MegaSpawner)						ArgsList[19];
            ESGArgsList = (ArrayList)						ArgsList[21];
            PersonalConfigList = (ArrayList)				ArgsList[28];
            SEGArgsList = (ArrayList)						ArgsList[32];

            cpg = (int)	 									PageInfoList[4];
            pg = (int) 										PageInfoList[5];

            AddToSpawner = (bool) 							ESGArgsList[0];
            index = (int) 									ESGArgsList[1];
            activatedSwitch = (bool) 						ESGArgsList[2];
            spawnGroupSwitch = (bool) 						ESGArgsList[3];
            eventAmbushSwitch = (bool) 						ESGArgsList[4];
            spawnTypeSwitch = (SpawnType) 					ESGArgsList[5];

            if ( !bEntryType )
                entryType = (string) 						ESGArgsList[6];

            if ( !bSpawnRange )
                spawnRange = (int) 							ESGArgsList[7];

            if ( !bWalkRange )
                walkRange = (int) 							ESGArgsList[8];

            if ( !bAmount )
                amount = (int)								ESGArgsList[9];

            if ( !bMinDelayHour )
                minDelayHour = (int) 						ESGArgsList[10];

            if ( !bMinDelayMin )
                minDelayMin = (int) 						ESGArgsList[11];

            if ( !bMinDelaySec )
                minDelaySec = (int) 						ESGArgsList[12];

            if ( !bMaxDelayHour )
                maxDelayHour = (int) 						ESGArgsList[13];

            if ( !bMaxDelayMin )
                maxDelayMin = (int) 						ESGArgsList[14];

            if ( !bMaxDelaySec )
                maxDelaySec = (int) 						ESGArgsList[15];

            if ( !bEventRange )
                eventRange = (int) 							ESGArgsList[16];

            if ( !bBeginTimeBased )
            {
                beginTimeBasedHour = (int) 					ESGArgsList[17];
                beginTimeBasedMinute = (int) 				ESGArgsList[18];
            }

            if ( !bEndTimeBased )
            {
                endTimeBasedHour = (int) 					ESGArgsList[19];
                endTimeBasedMinute = (int) 					ESGArgsList[20];
            }

            keyword = (string) 								ESGArgsList[21];
            caseSensitiveSwitch = (bool)					ESGArgsList[22];

            if ( !bMinStackAmount )
                minStackAmount = (int)						ESGArgsList[23];

            if ( !bMaxStackAmount )
                maxStackAmount = (int)						ESGArgsList[24];

            movableSwitch = (bool)							ESGArgsList[25];

            if ( !bMinDespawnHour )
                minDespawnHour = (int) 						ESGArgsList[26];

            if ( !bMinDespawnMin )
                minDespawnMin = (int) 						ESGArgsList[27];

            if ( !bMinDespawnSec )
                minDespawnSec = (int) 						ESGArgsList[28];

            if ( !bMaxDespawnHour )
                maxDespawnHour = (int) 						ESGArgsList[29];

            if ( !bMaxDespawnMin )
                maxDespawnMin = (int) 						ESGArgsList[30];

            if ( !bMaxDespawnSec )
                maxDespawnSec = (int) 						ESGArgsList[31];

            despawnSwitch = (bool)							ESGArgsList[32];
            despawnGroupSwitch = (bool)						ESGArgsList[33];
            despawnTimeExpireSwitch = (bool)				ESGArgsList[34];

            StyleTypeConfig = (StyleType)					PersonalConfigList[0];
            BackgroundTypeConfig = (BackgroundType)			PersonalConfigList[1];
            ActiveTEBGTypeConfig = (BackgroundType)			PersonalConfigList[2];
            InactiveTEBGTypeConfig = (BackgroundType)		PersonalConfigList[3];
            DefaultTextColor = (TextColor)					PersonalConfigList[4];
            TitleTextColor = (TextColor)					PersonalConfigList[5];
            MessagesTextColor = (TextColor)					PersonalConfigList[6];
            CommandButtonsTextColor = (TextColor)			PersonalConfigList[7];
            PageNumberTextColor = (int)						PersonalConfigList[8];
            ActiveTextEntryTextColor = (int)				PersonalConfigList[9];
            InactiveTextEntryTextColor = (int)				PersonalConfigList[10];
            FlagTextColor = (TextColor)									PersonalConfigList[14];
        }
Ejemplo n.º 6
0
    public void SetSpawnType(SpawnType spawnType)
    {
        _spawnType = spawnType;
        switch (_spawnType)
        {
            case SpawnType.LINEAR:
                _curPool = 0;
                _curPoolIdx = 0;

                break;

            case SpawnType.RANDOM:
                EnemyIndex = Random.Range(0, _totalEnemies);

                break;

            case SpawnType.SHUFFLED:
                BuildShuffle();
                EnemyIndex = _shuffledOrder[0];

                break;

        }
    }
Ejemplo n.º 7
0
		public static bool EventSpawnAttempt( MegaSpawner megaSpawner, SpawnType st )
		{
			return ( megaSpawner.Active && megaSpawner.OverrideSpawnType == st && megaSpawner.OverrideTriggerEventNow );
		}
Ejemplo n.º 8
0
        private void CompileSettingInfo()
        {
            if ( setting.Count == 0 )
                return;

            theSetting = setting;

            InsideItemList.Clear();

            try
            {
                switch( (Setting) setting[0] )
                {
                    case Setting.OverrideIndividualEntries:
                    {
                        spawnRange = (int)						setting[1];
                        walkRange = (int)						setting[2];
                        amount = (int)							setting[3];
                        minDelay = (int)						setting[4];
                        maxDelay = (int)						setting[5];
                        spawnGroupSwitch = (bool)				setting[6];
                        eventAmbushSwitch = (bool)				setting[7];
                        spawnTypeSwitch = (SpawnType)			setting[8];
                        keyword = (string)						setting[9];
                        caseSensitiveSwitch = (bool)			setting[10];
                        eventRange = (int)						setting[11];
                        beginTimeBasedHour = (int)				setting[12];
                        beginTimeBasedMinute = (int)			setting[13];
                        endTimeBasedHour = (int)				setting[14];
                        endTimeBasedMinute = (int)				setting[15];
                        minDespawn = (int)						setting[16];
                        maxDespawn = (int)						setting[17];
                        despawnSwitch = (bool)					setting[18];
                        despawnGroupSwitch = (bool)				setting[19];
                        despawnTimeExpireSwitch = (bool)		setting[20];

                        pg = 3;
                        OverrideIndividualEntriesClicked = true;

                        minDelayHour = (int) minDelay / 3600;
                        minDelayMin = ( (int) minDelay - ( minDelayHour * 3600 ) ) / 60;
                        minDelaySec = ( (int) minDelay - ( minDelayHour * 3600 ) - ( minDelayMin * 60 ) );
                        maxDelayHour = (int) maxDelay / 3600;
                        maxDelayMin = ( (int) maxDelay - ( maxDelayHour * 3600 ) ) / 60;
                        maxDelaySec = ( (int) maxDelay - ( maxDelayHour * 3600 ) - ( maxDelayMin * 60 ) );

                        minDespawnHour = (int) minDespawn / 3600;
                        minDespawnMin = ( (int) minDespawn - ( minDespawnHour * 3600 ) ) / 60;
                        minDespawnSec = ( (int) minDespawn - ( minDespawnHour * 3600 ) - ( minDespawnMin * 60 ) );
                        maxDespawnHour = (int) maxDespawn / 3600;
                        maxDespawnMin = ( (int) maxDespawn - ( maxDespawnHour * 3600 ) ) / 60;
                        maxDespawnSec = ( (int) maxDespawn - ( maxDespawnHour * 3600 ) - ( maxDespawnMin * 60 ) );

                        setting = new ArrayList();

                        break;
                    }
                    case Setting.AddItem:
                    {
                        SetItemInfo();

                        pg = 6;
                        AddItemClicked = true;

                        setting = new ArrayList();

                        break;
                    }
                    case Setting.AddContainer:
                    {
                        SetItemInfo();

                        for ( int i = 6; i < setting.Count; i++ )
                        {
                            ArrayList ItemsList = (ArrayList) setting[i];

                            InsideItemList.Add( ItemsList );
                        }

                        pg = 6;
                        AddItemClicked = true;

                        setting = new ArrayList();

                        break;
                    }
                }
            }
            catch( Exception ex )
            {
                MessagesTitle = "Update Setting";
                Messages = String.Format( "Error reading setting info:\n{0}", ex );
            }
        }
Ejemplo n.º 9
0
    public void spawn(int amount, SpawnType spawnType)
    {
        float[]     toSpawn = new float[amount];
        BlockType[] types   = new BlockType[amount];

        //print(spawnType.ToString());

        switch (spawnType)
        {
        case SpawnType.Centre:

            for (int i = 0; i < toSpawn.Length; i++)
            {
                toSpawn[i] = 0;
                types[i]   = BlockType.Normal;
            }

            break;

        case SpawnType.Random:
            //add the max and min for random spawning

            for (int i = 0; i < toSpawn.Length; i++)
            {
                toSpawn[i] = Random.Range(-randomRange, randomRange);
            }

            break;

        case SpawnType.Snake:
            for (int i = 0; i < toSpawn.Length; i++)
            {
                //print(player.position.x);

                toSpawn[i] = prevSpawn + Random.Range(-0.3f, 0.3f);
                toSpawn[i] = Mathf.Clamp(toSpawn[i], player.position.x / blockWidth - 0.75f, player.position.x / blockWidth + 0.75f);
                // if (toSpawn[i] > 1.2f) toSpawn[i] = 1.2f;
                // if (toSpawn[i] < -1.2f) toSpawn[i] = -1.2f;
            }
            break;

        case SpawnType.Test1:
            break;

        case SpawnType.Test2:
            break;

        case SpawnType.Left:

            for (int i = 0; i < toSpawn.Length; i++)
            {
                toSpawn[i] = prevSpawn;
                types[i]   = BlockType.LeftWedge;
            }

            break;

        case SpawnType.Right:

            for (int i = 0; i < toSpawn.Length; i++)
            {
                toSpawn[i] = prevSpawn;
                types[i]   = BlockType.RightWedge;
            }

            break;

        default:
            break;
        }

        spawnBlocks(toSpawn, types);
    }
Ejemplo n.º 10
0
 public List <Spawn> GetSpawns(SpawnType type)
 {
     return(Spawns.Select(x => x).Where(x => x.SpawnType == type).ToList());
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Function which finds spawnpoints for one or more troops
        /// </summary>
        /// <param name="playerNumber">Determines how many co-ordinates should be returned</param>
        /// <param name="spawnType">Deterines how the co-ordinates should relate to each other and the map</param>
        /// <returns></returns>
        public List <Point> DeterminSpawnPoint(int playerNumber, SpawnType spawnType)
        {
            List <Point> toReturn = new List <Point>();

            switch (spawnType)
            {
            case SpawnType.road:
            {
                if (goals.Count <= 1)
                {
                    for (int i = 0; i < playerNumber; i++)
                    {
                        int x;
                        int y;
                        int n = World.World.random.Next(4);
                        if (n == 0)
                        {
                            x = 0;
                            y = World.World.random.Next(map.GetUpperBound(1));
                        }
                        else if (n == 1)
                        {
                            x = World.World.random.Next(map.GetUpperBound(0));
                            y = 0;
                        }
                        else if (n == 2)
                        {
                            x = map.GetUpperBound(0);
                            y = World.World.random.Next(map.GetUpperBound(1));
                        }
                        else
                        {
                            x = World.World.random.Next(map.GetUpperBound(0));
                            y = map.GetUpperBound(1);
                        }

                        toReturn.Add(new Point(x, y));
                    }
                    break;
                }
            }
                //Determin which road spawn point to start
                List <MapTile> _goals = new List <MapTile>(goals);
                while (_goals.Count != 0 && playerNumber != 0)
                {
                    MapTile pathPoint = _goals[World.World.random.Next(_goals.Count)];
                    _goals.Remove(pathPoint);
                    toReturn.Add(pathPoint.position);
                    playerNumber--;
                    if (playerNumber == 0)
                    {
                        break;
                    }
                    foreach (MapTile possible in pathPoint.neighbours.rawMaptiles.Where(m => m.type.type == MapTileTypeEnum.road))
                    {
                        toReturn.Add(possible.position);
                        playerNumber--;
                        if (playerNumber == 0)
                        {
                            break;
                        }
                    }
                }
                break;

            case SpawnType.random:
                for (int i = 0; i < playerNumber; i++)
                {
                    Point p = new Point();
                    while (true)
                    {
                        p = new Point(World.World.random.Next(map.GetUpperBound(0)),
                                      World.World.random.Next(map.GetUpperBound(1)));
                        //Determine is viable
                        if (!troops.Exists(t => t.Position.X == p.X &&
                                           t.Position.Y == p.Y) &&
                            !toReturn.Exists(c => c.X == p.X && c.Y == p.Y))
                        {
                            break;
                        }
                    }
                    toReturn.Add(p);
                }
                break;

            case SpawnType.randomLand:
                FindRandomLandTile(playerNumber, ref toReturn);
                break;

            case SpawnType.heighestField:

                var ordered = from field in map.Cast <MapTile>()
                              orderby field.Height descending
                              select field;
                toReturn = ordered.Take(playerNumber).ToList().ConvertAll(f => f.position);
                break;

            case SpawnType.centralRoad:
            {
                int x, y, count = 50;
                for (int i = 0; i < playerNumber; i++)
                {
                    do
                    {
                        x = World.World.random.Next((int)(0.2 * map.GetUpperBound(0)), (int)(0.8 * map.GetUpperBound(0)));
                        y = World.World.random.Next((int)(0.2 * map.GetUpperBound(1)), (int)(0.8 * map.GetUpperBound(1)));
                        count--;
                        if (count == 0)
                        {
                            count = 100;
                            do
                            {
                                x = World.World.random.Next(0, map.GetUpperBound(0));
                                y = World.World.random.Next(0, map.GetUpperBound(1));
                                count--;
                            } while (map[x, y].type.type != MapTileTypeEnum.road && count > 0 && toReturn.Contains(new Point(x, y)));
                            break;
                        }
                    } while (map[x, y].type.type != MapTileTypeEnum.road && toReturn.Contains(new Point(x, y)));
                    toReturn.Add(new Point(x, y));
                }
                break;
            }

            case SpawnType.randomRoughCircle:
            {
                int x, y;
                x = World.World.random.Next((int)(0.2 * map.GetUpperBound(0)), (int)(0.8 * map.GetUpperBound(0)));
                y = World.World.random.Next((int)(0.2 * map.GetUpperBound(1)), (int)(0.8 * map.GetUpperBound(1)));
                for (int i = 0; i < playerNumber; i++)
                {
                    int _x = 0, _y = 0, tempX, tempY, minDistance = 100;
                    for (int t = 0; t < 10; t++)
                    {
                        tempX = World.World.random.Next((int)(0.2 * map.GetUpperBound(0)), (int)(0.8 * map.GetUpperBound(0)));
                        tempY = World.World.random.Next((int)(0.2 * map.GetUpperBound(1)), (int)(0.8 * map.GetUpperBound(1)));
                        int distance = Math.Abs(tempX - x) + Math.Abs(tempY - y);
                        if (distance < minDistance && !toReturn.Contains(new Point(tempX, tempY)))
                        {
                            _x          = tempX;
                            _y          = tempY;
                            minDistance = distance;
                        }
                    }
                    toReturn.Add(new Point(_x, _y));
                }
                break;
            }

            case SpawnType.randomRoughRoadCircle:
            {
                int x, y, count = 100;
                do
                {
                    x = World.World.random.Next((int)(0.2 * map.GetUpperBound(0)), (int)(0.8 * map.GetUpperBound(0)));
                    y = World.World.random.Next((int)(0.2 * map.GetUpperBound(1)), (int)(0.8 * map.GetUpperBound(1)));
                    count--;
                } while (map[x, y].type.type != MapTileTypeEnum.road && count > 0);
                toReturn.Add(new Point(x, y));
                for (int i = 0; i < playerNumber; i++)
                {
                    int _x = 0, _y = 0, tempX, tempY, minDistance = 100;
                    for (int t = 0; t < 10; t++)
                    {
                        tempX = World.World.random.Next((int)(0.2 * map.GetUpperBound(0)), (int)(0.8 * map.GetUpperBound(0)));
                        tempY = World.World.random.Next((int)(0.2 * map.GetUpperBound(1)), (int)(0.8 * map.GetUpperBound(1)));
                        int distance = Math.Abs(tempX - x) + Math.Abs(tempY - y);
                        if (distance < minDistance && !toReturn.Contains(new Point(tempX, tempY)))
                        {
                            _x          = tempX;
                            _y          = tempY;
                            minDistance = distance;
                        }
                    }
                    toReturn.Add(new Point(_x, _y));
                }
                break;
            }

            default:
                break;
            }
            return(toReturn);
        }
Ejemplo n.º 12
0
 public void Activate(SpawnType spawnTf, NpcTypes type)
 {
     base.Activate(transform, spawnTf);
     // TODO set sprite based on NPC type
 }
Ejemplo n.º 13
0
 public int NumberSpawnsInWave(SpawnType type, int waveIndex)
 {
     waveIndex = Mathf.Clamp(waveIndex, 0, MaxWaveIndex);
     return(WorkingLevelData.NumSpawns(type, waveIndex));
 }
Ejemplo n.º 14
0
 public int NumberSpawnsInCurrentWave(SpawnType type)
 {
     return(NumberSpawnsInWave(type, CurrentWaveIndex));
 }
Ejemplo n.º 15
0
 public void Activate(SpawnType spawnTf, bool bDropEnabled)
 {
     base.Activate(transform, spawnTf);
     _web.SpecialWeb = bDropEnabled;
 }
Ejemplo n.º 16
0
        private void SubmitSetting( RelayInfo info, bool submit, int command )
        {
            int settingNum = 0;

            string oldMessages = Messages;

            if ( submit )
            {
                if ( AddSetting )
                    MessagesTitle = "Submit Setting";
                else
                    MessagesTitle = "Update Setting";

                Messages = null;
            }

            if ( OverrideIndividualEntriesClicked )
                settingNum = 1;

            if ( AddItemClicked )
                settingNum = 2;

            switch ( settingNum )
            {
                case 0:
                {
                    Messages = "You must select a setting before submitting.";

                    UpdatePage( command );

                    break;
                }
                case 1: // Override Individual Entries
                {
                    bool invalid = false;

                    bool fSpawnRange=false, fWalkRange=false, fAmount=false, fMinDelayHour=false, fMinDelayMin=false, fMinDelaySec=false, fMaxDelayHour=false, fMaxDelayMin=false, fMaxDelaySec=false, fEventRange=false, fBeginTimeBased=false, fEndTimeBased=false, fMinDespawnHour=false, fMinDespawnMin=false, fMinDespawnSec=false, fMaxDespawnHour=false, fMaxDespawnMin=false, fMaxDespawnSec=false;

                    string checkSpawnRange=null, checkWalkRange=null, checkAmount=null, checkMinDelayHour=null, checkMinDelayMin=null, checkMinDelaySec=null, checkMaxDelayHour=null, checkMaxDelayMin=null, checkMaxDelaySec=null, checkEventRange=null, checkBeginTimeBased=null, checkEndTimeBased=null, checkMinDespawnHour=null, checkMinDespawnMin=null, checkMinDespawnSec=null, checkMaxDespawnHour=null, checkMaxDespawnMin=null, checkMaxDespawnSec=null;

                    string stringBeginTimeBasedAMPM=null, stringEndTimeBasedAMPM=null;
                    int intSpawnRange=0, intWalkRange=0, intAmount=0, intMinDelayHour=0, intMinDelayMin=0, intMinDelaySec=0, intMaxDelayHour=0, intMaxDelayMin=0, intMaxDelaySec=0, intEventRange=0, intBeginTimeBasedHour=0, intBeginTimeBasedMinute=0, intEndTimeBasedHour=0, intEndTimeBasedMinute=0, intMinDespawnHour=0, intMinDespawnMin=0, intMinDespawnSec=0, intMaxDespawnHour=0, intMaxDespawnMin=0, intMaxDespawnSec=0;

                    if ( pg == 3 )
                    {
                        spawnGroupSwitch = info.IsSwitched( 1 );
                        eventAmbushSwitch = info.IsSwitched( 2 );
                        despawnSwitch = info.IsSwitched( 3 );
                        despawnGroupSwitch = info.IsSwitched( 4 );

                        checkSpawnRange = info.GetTextEntry( 2 ).Text;
                        checkWalkRange = info.GetTextEntry( 3 ).Text;
                        checkAmount = info.GetTextEntry( 4 ).Text;
                        checkMinDelayHour = info.GetTextEntry( 5 ).Text;
                        checkMinDelayMin = info.GetTextEntry( 6 ).Text;
                        checkMinDelaySec = info.GetTextEntry( 7 ).Text;
                        checkMaxDelayHour = info.GetTextEntry( 8 ).Text;
                        checkMaxDelayMin = info.GetTextEntry( 9 ).Text;
                        checkMaxDelaySec = info.GetTextEntry( 10 ).Text;
                        checkMinDespawnHour = info.GetTextEntry( 11 ).Text;
                        checkMinDespawnMin = info.GetTextEntry( 12 ).Text;
                        checkMinDespawnSec = info.GetTextEntry( 13 ).Text;
                        checkMaxDespawnHour = info.GetTextEntry( 14 ).Text;
                        checkMaxDespawnMin = info.GetTextEntry( 15 ).Text;
                        checkMaxDespawnSec = info.GetTextEntry( 16 ).Text;
                    }
                    else
                    {
                        checkSpawnRange = spawnRange.ToString();
                        checkWalkRange = walkRange.ToString();
                        checkAmount = amount.ToString();
                        checkMinDelayHour = minDelayHour.ToString();
                        checkMinDelayMin = minDelayMin.ToString();
                        checkMinDelaySec = minDelaySec.ToString();
                        checkMaxDelayHour = maxDelayHour.ToString();
                        checkMaxDelayMin = maxDelayMin.ToString();
                        checkMaxDelaySec = maxDelaySec.ToString();
                        checkMinDespawnHour = minDespawnHour.ToString();
                        checkMinDespawnMin = minDespawnMin.ToString();
                        checkMinDespawnSec = minDespawnSec.ToString();
                        checkMaxDespawnHour = maxDespawnHour.ToString();
                        checkMaxDespawnMin = maxDespawnMin.ToString();
                        checkMaxDespawnSec = maxDespawnSec.ToString();
                    }

                    if ( pg == 4 )
                    {
                        int switchNum = MC.GetSwitchNum( info, 1, 5 );
                        spawnTypeSwitch = (SpawnType) switchNum;

                        caseSensitiveSwitch = info.IsSwitched( 6 );
                        despawnTimeExpireSwitch = info.IsSwitched( 7 );

                        checkEventRange = info.GetTextEntry( 1 ).Text;
                        checkBeginTimeBased = info.GetTextEntry( 2 ).Text;
                        checkEndTimeBased = info.GetTextEntry( 3 ).Text;
                        keyword = info.GetTextEntry( 4 ).Text;
                    }
                    else
                    {
                        CalcTimeBased();

                        checkEventRange = eventRange.ToString();
                        checkBeginTimeBased = beginTimeBased.ToString();
                        checkEndTimeBased = endTimeBased.ToString();
                    }

            // *************** First Check ***************

                    try{ intSpawnRange = Convert.ToInt32( checkSpawnRange ); }
                    catch
                    {
                        invalid = true;
                        bSpawnRange = false;
                        fSpawnRange = true;
                        Messages = String.Format( "{0}Invalid input for [Spawn Range]. You must specify an integer only.\n", Messages );
                    }

                    try{ intWalkRange = Convert.ToInt32( checkWalkRange ); }
                    catch
                    {
                        invalid = true;
                        bWalkRange = false;
                        fWalkRange = true;
                        Messages = String.Format( "{0}Invalid input for [Walk Range]. You must specify an integer only.\n", Messages );
                    }

                    try{ intAmount = Convert.ToInt32( checkAmount ); }
                    catch
                    {
                        invalid = true;
                        bAmount = false;
                        fAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Amount To Spawn]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMinDelayHour = Convert.ToInt32( checkMinDelayHour ); }
                    catch
                    {
                        invalid = true;
                        bMinDelayHour = false;
                        fMinDelayHour = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Hours]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMinDelayMin = Convert.ToInt32( checkMinDelayMin ); }
                    catch
                    {
                        invalid = true;
                        bMinDelayMin = false;
                        fMinDelayMin = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Minutes]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMinDelaySec = Convert.ToInt32( checkMinDelaySec ); }
                    catch
                    {
                        invalid = true;
                        bMinDelaySec = false;
                        fMinDelaySec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Seconds]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDelayHour = Convert.ToInt32( checkMaxDelayHour ); }
                    catch
                    {
                        invalid = true;
                        bMaxDelayHour = false;
                        fMaxDelayHour = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Hours]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDelayMin = Convert.ToInt32( checkMaxDelayMin ); }
                    catch
                    {
                        invalid = true;
                        bMaxDelayMin = false;
                        fMaxDelayMin = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Minutes]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDelaySec = Convert.ToInt32( checkMaxDelaySec ); }
                    catch
                    {
                        invalid = true;
                        bMaxDelaySec = false;
                        fMaxDelaySec = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Seconds]. You must specify an integer only.\n", Messages );
                    }

                    try{ intEventRange = Convert.ToInt32( checkEventRange ); }
                    catch
                    {
                        invalid = true;
                        bEventRange = false;
                        fEventRange = true;
                        Messages = String.Format( "{0}Invalid input for [Event Range]. You must specify an integer only.\n", Messages );
                    }

                    string[] begin = checkBeginTimeBased.Split(':');
                    string[] end = checkEndTimeBased.Split(':');
                    string[] beginAMPM = null;
                    string[] endAMPM = null;

                    if ( begin.Length != 2 )
                    {
                        invalid = true;
                        bBeginTimeBased = false;
                        fBeginTimeBased = true;
                        Messages = String.Format( "{0}Invalid format for [Begin Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
                    }
                    else
                    {
                        beginAMPM = begin[1].Split(' ');
                    }

                    if ( end.Length != 2 )
                    {
                        invalid = true;
                        bEndTimeBased = false;
                        fEndTimeBased = true;
                        Messages = String.Format( "{0}Invalid format for [End Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
                    }
                    else
                    {
                        endAMPM = end[1].Split(' ');
                    }

                    try{ intBeginTimeBasedHour = Convert.ToInt32( begin[0] ); }
                    catch
                    {
                        if ( !fBeginTimeBased )
                        {
                            invalid = true;
                            bBeginTimeBased = false;
                            fBeginTimeBased = true;
                            Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Hour]. You must specify an integer only.\n", Messages );
                        }
                    }

                    try{ intBeginTimeBasedMinute = Convert.ToInt32( beginAMPM[0] ); }
                    catch
                    {
                        if ( !fBeginTimeBased )
                        {
                            invalid = true;
                            bBeginTimeBased = false;
                            fBeginTimeBased = true;
                            Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Minute]. You must specify an integer only.\n", Messages );
                        }
                    }

                    try{ intEndTimeBasedHour = Convert.ToInt32( end[0] ); }
                    catch
                    {
                        if ( !fEndTimeBased )
                        {
                            invalid = true;
                            bEndTimeBased = false;
                            fEndTimeBased = true;
                            Messages = String.Format( "{0}Invalid input for [End Time Based] [Hour]. You must specify an integer only.\n", Messages );
                        }
                    }

                    try{ intEndTimeBasedMinute = Convert.ToInt32( endAMPM[0] ); }
                    catch
                    {
                        if ( !fEndTimeBased )
                        {
                            invalid = true;
                            bEndTimeBased = false;
                            fEndTimeBased = true;
                            Messages = String.Format( "{0}Invalid input for [End Time Based] [Minute]. You must specify an integer only.\n", Messages );
                        }
                    }

                    if ( ( beginAMPM == null || beginAMPM.Length != 2 ) && !fBeginTimeBased )
                    {
                        invalid = true;
                        bBeginTimeBased = false;
                        fBeginTimeBased = true;
                        Messages = String.Format( "{0}Invalid format for [Begin Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
                    }
                    else
                        stringBeginTimeBasedAMPM = Convert.ToString( beginAMPM[1] ).ToUpper();

                    if ( ( endAMPM == null || endAMPM.Length != 2 ) && !fBeginTimeBased )
                    {
                        invalid = true;
                        bEndTimeBased = false;
                        fEndTimeBased = true;
                        Messages = String.Format( "{0}Invalid format for [End Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
                    }
                    else
                        stringEndTimeBasedAMPM = Convert.ToString( endAMPM[1] ).ToUpper();

                    try{ intMinDespawnHour = Convert.ToInt32( checkMinDespawnHour ); }
                    catch
                    {
                        invalid = true;
                        bMinDespawnHour = false;
                        fMinDespawnHour = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Hours]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMinDespawnMin = Convert.ToInt32( checkMinDespawnMin ); }
                    catch
                    {
                        invalid = true;
                        bMinDespawnMin = false;
                        fMinDespawnMin = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Minutes]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMinDespawnSec = Convert.ToInt32( checkMinDespawnSec ); }
                    catch
                    {
                        invalid = true;
                        bMinDespawnSec = false;
                        fMinDespawnSec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Seconds]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDespawnHour = Convert.ToInt32( checkMaxDespawnHour ); }
                    catch
                    {
                        invalid = true;
                        bMaxDespawnHour = false;
                        fMaxDespawnHour = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Hours]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDespawnMin = Convert.ToInt32( checkMaxDespawnMin ); }
                    catch
                    {
                        invalid = true;
                        bMaxDespawnMin = false;
                        fMaxDespawnMin = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Minutes]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxDespawnSec = Convert.ToInt32( checkMaxDespawnSec ); }
                    catch
                    {
                        invalid = true;
                        bMaxDespawnSec = false;
                        fMaxDespawnSec = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Seconds]. You must specify an integer only.\n", Messages );
                    }

            // *************** Second Check ***************

                    if ( intSpawnRange < 0 && !fSpawnRange )
                    {
                        invalid = true;
                        bSpawnRange = false;
                        fSpawnRange = true;
                        Messages = String.Format( "{0}Invalid input for [Spawn Range]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( intWalkRange < 0 && !fWalkRange )
                    {
                        invalid = true;
                        bWalkRange = false;
                        fWalkRange = true;
                        Messages = String.Format( "{0}Invalid input for [Walk Range]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( intAmount <= 0 && !fAmount )
                    {
                        invalid = true;
                        bAmount = false;
                        fAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Amount]. Must be greater than 0.\n", Messages );
                    }

                    if ( intMinDelayHour < 0  && !fMinDelayHour )
                    {
                        invalid = true;
                        bMinDelayHour = false;
                        fMinDelayHour = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( ( intMinDelayMin < 0 || intMinDelayMin > 59 ) && !fMinDelayMin )
                    {
                        invalid = true;
                        bMinDelayMin = false;
                        fMinDelayMin = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( ( intMinDelaySec < 0 || intMinDelaySec > 59 )  && !fMinDelaySec )
                    {
                        invalid = true;
                        bMinDelaySec = false;
                        fMinDelaySec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( intMaxDelayHour < 0 && !fMaxDelayHour )
                    {
                        invalid = true;
                        bMaxDelayHour = false;
                        fMaxDelayHour = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( ( intMaxDelayMin < 0 || intMaxDelayMin > 59 ) && !fMaxDelayMin )
                    {
                        invalid = true;
                        bMaxDelayMin = false;
                        fMaxDelayMin = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( ( intMaxDelaySec < 0 || intMaxDelaySec > 59 ) && !fMaxDelaySec )
                    {
                        invalid = true;
                        bMaxDelaySec = false;
                        fMaxDelaySec = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    int calcMinDelay=0, calcMaxDelay=0, calcBeginTimeBased=0, calcEndTimeBased=0;

                    if ( !fMinDelayHour && !fMinDelayMin && !fMinDelaySec && !fMaxDelayHour && !fMaxDelayMin && !fMaxDelaySec )
                    {
                        calcMinDelay = intMinDelaySec + ( intMinDelayMin * 60 ) + ( intMinDelayHour * 3600 );
                        calcMaxDelay = intMaxDelaySec + ( intMaxDelayMin * 60 ) + ( intMaxDelayHour * 3600 );
                    }

                    if ( calcMinDelay > calcMaxDelay )
                    {
                        invalid = true;
                        bMinDelayHour = false;
                        bMinDelayMin = false;
                        bMinDelaySec = false;
                        bMaxDelayHour = false;
                        bMaxDelayMin = false;
                        bMaxDelaySec = false;
                        fMinDelayHour = true;
                        fMinDelayMin = true;
                        fMinDelaySec = true;
                        fMaxDelayHour = true;
                        fMaxDelayMin = true;
                        fMaxDelaySec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn]. Must be less than or equal to [Max Delay To Next Spawn].\n", Messages );
                    }

                    if ( intEventRange < 0 && !fEventRange )
                    {
                        invalid = true;
                        bEventRange = false;
                        fEventRange = true;
                        Messages = String.Format( "{0}Invalid input for [Event Range]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( ( intBeginTimeBasedHour > 12 || intBeginTimeBasedHour < 1 ) && !fBeginTimeBased )
                    {
                        invalid = true;
                        bBeginTimeBased = false;
                        fBeginTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Hour]. Must be between 1 and 12.\n", Messages );
                    }

                    if ( ( intBeginTimeBasedMinute > 59 || intBeginTimeBasedMinute < 0 ) && !fBeginTimeBased )
                    {
                        invalid = true;
                        bBeginTimeBased = false;
                        fBeginTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Minute]. Must be between 00 and 59.\n", Messages );
                    }

                    if ( ( stringBeginTimeBasedAMPM != "AM" && stringBeginTimeBasedAMPM != "PM" ) && !fBeginTimeBased )
                    {
                        invalid = true;
                        bBeginTimeBased = false;
                        fBeginTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [Begin Time Based] [AM/PM]. Must be AM or PM only.\n", Messages );
                    }

                    if ( ( intEndTimeBasedHour > 12 || intEndTimeBasedHour < 1 ) && !fEndTimeBased )
                    {
                        invalid = true;
                        bEndTimeBased = false;
                        fEndTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [End Time Based] [Hour]. Must be between 1 and 12.\n", Messages );
                    }

                    if ( ( intEndTimeBasedMinute > 59 || intEndTimeBasedMinute < 0 ) && !fEndTimeBased )
                    {
                        invalid = true;
                        bEndTimeBased = false;
                        fEndTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [End Time Based] [Minute]. Must be between 00 and 59.\n", Messages );
                    }

                    if ( ( stringEndTimeBasedAMPM != "AM" && stringEndTimeBasedAMPM != "PM" ) && !fEndTimeBased )
                    {
                        invalid = true;
                        bEndTimeBased = false;
                        fEndTimeBased = true;
                        Messages = String.Format( "{0}Invalid input for [End Time Based] [AM/PM]. Must be AM or PM only.\n", Messages );
                    }

                    if ( !fBeginTimeBased )
                    {
                        int hourCheck = intBeginTimeBasedHour;

                        if ( stringBeginTimeBasedAMPM == "PM" && hourCheck < 12 )
                            hourCheck += 12;

                        if ( stringBeginTimeBasedAMPM == "AM" && hourCheck == 12 )
                            hourCheck = 0;

                        calcBeginTimeBased = ( hourCheck * 60 ) + intBeginTimeBasedMinute;
                    }

                    if ( !fEndTimeBased )
                    {
                        int hourCheck = intEndTimeBasedHour;

                        if ( stringEndTimeBasedAMPM == "PM" && hourCheck < 12 )
                            hourCheck += 12;

                        if ( stringEndTimeBasedAMPM == "AM" && hourCheck == 12 )
                            hourCheck = 0;

                        calcEndTimeBased = ( hourCheck * 60 ) + intEndTimeBasedMinute;
                    }

                    if ( intMinDespawnHour < 0  && !fMinDespawnHour )
                    {
                        invalid = true;
                        bMinDespawnHour = false;
                        fMinDespawnHour = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( ( intMinDespawnMin < 0 || intMinDespawnMin > 59 ) && !fMinDespawnMin )
                    {
                        invalid = true;
                        bMinDespawnMin = false;
                        fMinDespawnMin = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( ( intMinDespawnSec < 0 || intMinDespawnSec > 59 )  && !fMinDespawnSec )
                    {
                        invalid = true;
                        bMinDespawnSec = false;
                        fMinDespawnSec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( intMaxDespawnHour < 0 && !fMaxDespawnHour )
                    {
                        invalid = true;
                        bMaxDespawnHour = false;
                        fMaxDespawnHour = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
                    }

                    if ( ( intMaxDespawnMin < 0 || intMaxDespawnMin > 59 ) && !fMaxDespawnMin )
                    {
                        invalid = true;
                        bMaxDespawnMin = false;
                        fMaxDespawnMin = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    if ( ( intMaxDespawnSec < 0 || intMaxDespawnSec > 59 ) && !fMaxDespawnSec )
                    {
                        invalid = true;
                        bMaxDespawnSec = false;
                        fMaxDespawnSec = true;
                        Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
                    }

                    int calcMinDespawn=0, calcMaxDespawn=0;

                    if ( !fMinDespawnHour && !fMinDespawnMin && !fMinDespawnSec && !fMaxDespawnHour && !fMaxDespawnMin && !fMaxDespawnSec )
                    {
                        calcMinDespawn = intMinDespawnSec + ( intMinDespawnMin * 60 ) + ( intMinDespawnHour * 3600 );
                        calcMaxDespawn = intMaxDespawnSec + ( intMaxDespawnMin * 60 ) + ( intMaxDespawnHour * 3600 );
                    }

                    if ( calcMinDespawn > calcMaxDespawn )
                    {
                        invalid = true;
                        bMinDespawnHour = false;
                        bMinDespawnMin = false;
                        bMinDespawnSec = false;
                        bMaxDespawnHour = false;
                        bMaxDespawnMin = false;
                        bMaxDespawnSec = false;
                        fMinDespawnHour = true;
                        fMinDespawnMin = true;
                        fMinDespawnSec = true;
                        fMaxDespawnHour = true;
                        fMaxDespawnMin = true;
                        fMaxDespawnSec = true;
                        Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn]. Must be less than or equal to [Max Delay To Despawn].\n", Messages );
                    }

            // *************** Final Check ***************

                    if ( invalid )
                    {
                        if ( !fSpawnRange )
                        {
                            bSpawnRange = true;
                            spawnRange = intSpawnRange;
                        }

                        if ( !fWalkRange )
                        {
                            bWalkRange = true;
                            walkRange = intWalkRange;
                        }

                        if ( !fAmount )
                        {
                            bAmount = true;
                            amount = intAmount;
                        }

                        if ( !fMinDelayHour )
                        {
                            bMinDelayHour = true;
                            minDelayHour = intMinDelayHour;
                        }

                        if ( !fMinDelayMin )
                        {
                            bMinDelayMin = true;
                            minDelayMin = intMinDelayMin;
                        }

                        if ( !fMinDelaySec )
                        {
                            bMinDelaySec = true;
                            minDelaySec = intMinDelaySec;
                        }

                        if ( !fMaxDelayHour )
                        {
                            bMaxDelayHour = true;
                            maxDelayHour = intMaxDelayHour;
                        }

                        if ( !fMaxDelayMin )
                        {
                            bMaxDelayMin = true;
                            maxDelayMin = intMaxDelayMin;
                        }

                        if ( !fMaxDelaySec )
                        {
                            bMaxDelaySec = true;
                            maxDelaySec = intMaxDelaySec;
                        }

                        if ( !fEventRange )
                        {
                            bEventRange = true;
                            eventRange = intEventRange;
                        }

                        if ( !fBeginTimeBased )
                        {
                            bBeginTimeBased = true;

                            if ( stringBeginTimeBasedAMPM == "PM" && intBeginTimeBasedHour < 12 )
                                intBeginTimeBasedHour += 12;

                            if ( stringBeginTimeBasedAMPM == "AM" && intBeginTimeBasedHour == 12 )
                                intBeginTimeBasedHour = 0;

                            beginTimeBasedHour = intBeginTimeBasedHour;
                            beginTimeBasedMinute = intBeginTimeBasedMinute;
                        }

                        if ( !fEndTimeBased )
                        {
                            bEndTimeBased = true;

                            if ( stringEndTimeBasedAMPM == "PM" && intEndTimeBasedHour < 12 )
                                intEndTimeBasedHour += 12;

                            if ( stringEndTimeBasedAMPM == "AM" && intEndTimeBasedHour == 12 )
                                intEndTimeBasedHour = 0;

                            endTimeBasedHour = intEndTimeBasedHour;
                            endTimeBasedMinute = intEndTimeBasedMinute;
                        }

                        if ( !fMinDespawnHour )
                        {
                            bMinDespawnHour = true;
                            minDespawnHour = intMinDespawnHour;
                        }

                        if ( !fMinDespawnMin )
                        {
                            bMinDespawnMin = true;
                            minDespawnMin = intMinDespawnMin;
                        }

                        if ( !fMinDespawnSec )
                        {
                            bMinDespawnSec = true;
                            minDespawnSec = intMinDespawnSec;
                        }

                        if ( !fMaxDespawnHour )
                        {
                            bMaxDespawnHour = true;
                            maxDespawnHour = intMaxDespawnHour;
                        }

                        if ( !fMaxDespawnMin )
                        {
                            bMaxDespawnMin = true;
                            maxDespawnMin = intMaxDespawnMin;
                        }

                        if ( !fMaxDespawnSec )
                        {
                            bMaxDespawnSec = true;
                            maxDespawnSec = intMaxDespawnSec;
                        }

                        if ( !submit )
                            Messages = oldMessages;

                        UpdatePage( command );

                        return;
                    }

            // *************** Applying Settings ***************

                    spawnRange = intSpawnRange;
                    walkRange = intWalkRange;
                    amount = intAmount;
                    eventRange = intEventRange;

                    if ( stringBeginTimeBasedAMPM == "PM" && intBeginTimeBasedHour < 12 )
                        intBeginTimeBasedHour += 12;

                    if ( stringBeginTimeBasedAMPM == "AM" && intBeginTimeBasedHour == 12 )
                        intBeginTimeBasedHour = 0;

                    beginTimeBasedHour = intBeginTimeBasedHour;
                    beginTimeBasedMinute = intBeginTimeBasedMinute;

                    if ( stringEndTimeBasedAMPM == "PM" && intEndTimeBasedHour < 12 )
                        intEndTimeBasedHour += 12;

                    if ( stringEndTimeBasedAMPM == "AM" && intEndTimeBasedHour == 12 )
                        intEndTimeBasedHour = 0;

                    endTimeBasedHour = intEndTimeBasedHour;
                    endTimeBasedMinute = intEndTimeBasedMinute;

                    ArrayList settingList = new ArrayList();

                    settingList.Add( Setting.OverrideIndividualEntries );
                    settingList.Add( spawnRange );
                    settingList.Add( walkRange );
                    settingList.Add( amount );
                    settingList.Add( calcMinDelay );
                    settingList.Add( calcMaxDelay );
                    settingList.Add( spawnGroupSwitch );
                    settingList.Add( eventAmbushSwitch );
                    settingList.Add( spawnTypeSwitch );
                    settingList.Add( keyword );
                    settingList.Add( caseSensitiveSwitch );
                    settingList.Add( eventRange );
                    settingList.Add( beginTimeBasedHour );
                    settingList.Add( beginTimeBasedMinute );
                    settingList.Add( endTimeBasedHour );
                    settingList.Add( endTimeBasedMinute );
                    settingList.Add( calcMinDespawn );
                    settingList.Add( calcMaxDespawn );
                    settingList.Add( despawnSwitch );
                    settingList.Add( despawnGroupSwitch );
                    settingList.Add( despawnTimeExpireSwitch );

                    if ( AddSetting && submit )
                    {
                        megaSpawner.SettingsList.Add( settingList );

                        Messages = "Setting has been added.";

                        SettingsCheckBoxesList.Add( (bool) false );
                    }
                    else if ( submit )
                    {
                        megaSpawner.SettingsList[index] = settingList;

                        Messages = "Setting has been updated.";
                    }

                    if ( submit )
                    {
                        megaSpawner.DeleteEntries();

                        MegaSpawnerOverride.RemoveRespawnEntries( megaSpawner );

                        for ( int i = 0; i < amount; i++ )
                        {
                            megaSpawner.OverrideRespawnEntryList.Add( "" );
                            megaSpawner.OverrideRespawnTimeList.Add( 0 );
                            megaSpawner.OverrideSpawnCounterList.Add( DateTime.Now );
                            megaSpawner.OverrideSpawnTimeList.Add( 0 );
                            megaSpawner.OverrideDespawnTimeList.Add( 0 );
                        }

                        megaSpawner.OverrideSpawnedEntries.Clear();
                        megaSpawner.OverrideLastMovedList.Clear();

                        megaSpawner.CompileSettings();
                        megaSpawner.Respawn();

                        MegaSpawnerOverride.CheckDupedEntries( megaSpawner );

                        ArgsList[30] = 0;				// FromWhere

                        SetArgsList();

                        gumpMobile.SendGump( new SettingsGump( gumpMobile, ArgsList ) );

                        break;
                    }
                    else
                    {
                        minDelayHour = intMinDelayHour;
                        minDelayMin = intMinDelayMin;
                        minDelaySec = intMinDelaySec;
                        maxDelayHour = intMaxDelayHour;
                        maxDelayMin = intMaxDelayMin;
                        maxDelaySec = intMaxDelaySec;

                        minDespawnHour = intMinDespawnHour;
                        minDespawnMin = intMinDespawnMin;
                        minDespawnSec = intMinDespawnSec;
                        maxDespawnHour = intMaxDespawnHour;
                        maxDespawnMin = intMaxDespawnMin;
                        maxDespawnSec = intMaxDespawnSec;

                        if ( stringBeginTimeBasedAMPM == "PM" && intBeginTimeBasedHour < 12 )
                            intBeginTimeBasedHour += 12;

                        if ( stringBeginTimeBasedAMPM == "AM" && intBeginTimeBasedHour == 12 )
                            intBeginTimeBasedHour = 0;

                        beginTimeBasedHour = intBeginTimeBasedHour;
                        beginTimeBasedMinute = intBeginTimeBasedMinute;

                        if ( stringEndTimeBasedAMPM == "PM" && intEndTimeBasedHour < 12 )
                            intEndTimeBasedHour += 12;

                        if ( stringEndTimeBasedAMPM == "AM" && intEndTimeBasedHour == 12 )
                            intEndTimeBasedHour = 0;

                        endTimeBasedHour = intEndTimeBasedHour;
                        endTimeBasedMinute = intEndTimeBasedMinute;

                        Messages = oldMessages;

                        UpdatePage( command );
                    }

                    break;
                }
                case 2: // Add Item To Spawn Entry
                {
                    bool invalid = false;

                    bool fAddItem=false, fMinStackAmount=false, fMaxStackAmount=false;

                    string checkAddItem=null, checkMinStackAmount=null, checkMaxStackAmount=null;

                    int intMinStackAmount=0, intMaxStackAmount=0;
                    string stringAddItem=null;

                    TextRelay textInput;

                    if ( pg == 6 )
                    {
                        textInput = info.GetTextEntry( 1 );
                        checkAddItem = Convert.ToString( textInput.Text );

                        textInput = info.GetTextEntry( 2 );
                        checkMinStackAmount = Convert.ToString( textInput.Text );

                        textInput = info.GetTextEntry( 3 );
                        checkMaxStackAmount = Convert.ToString( textInput.Text );
                    }
                    else
                    {
                        checkMinStackAmount = minStackAmount.ToString();
                        checkMaxStackAmount = maxStackAmount.ToString();
                    }

            // *************** First Check ***************

                    if ( entryName == "" )
                    {
                        invalid = true;
                        Messages = String.Format( "{0}Invalid input for [Entry Name]. You must choose an entry to add the item to.\n", Messages );
                    }

                    if ( pg == 6 )
                    {
                        Type type = ScriptCompiler.FindTypeByName( checkAddItem );

                        if ( type != null )
                            stringAddItem = type.Name;

                        if ( type == null || MC.IsBadEntryType( checkAddItem ) || MC.IsMobile( checkAddItem ) )
                        {
                            invalid = true;
                            bAddItem = false;
                            fAddItem = true;
                            Messages = String.Format( "{0}Invalid input for [Item To Add]. You must specify a valid type. Type must be an item only. Specifying a mobile will result in an error.\n", Messages );
                        }
                    }

                    try{ intMinStackAmount = Convert.ToInt32( checkMinStackAmount ); }
                    catch
                    {
                        invalid = true;
                        bMinStackAmount = false;
                        fMinStackAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Stack Amount] [Minimum Amount]. You must specify an integer only.\n", Messages );
                    }

                    try{ intMaxStackAmount = Convert.ToInt32( checkMaxStackAmount ); }
                    catch
                    {
                        invalid = true;
                        bMaxStackAmount = false;
                        fMaxStackAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Stack Amount] [Maximum Amount]. You must specify an integer only.\n", Messages );
                    }

            // *************** Second Check ***************

                    if ( intMinStackAmount < 1 && !fMinStackAmount )
                    {
                        invalid = true;
                        bMinStackAmount = false;
                        fMinStackAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Stack Amount] [Minimum Amount]. Must be greater than 0.\n", Messages );
                    }

                    if ( intMaxStackAmount < 1 && !fMaxStackAmount )
                    {
                        invalid = true;
                        bMaxStackAmount = false;
                        fMaxStackAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Stack Amount] [Maximum Amount]. Must be greater than 0.\n", Messages );
                    }

                    if ( intMinStackAmount > intMaxStackAmount && !fMinStackAmount && !fMaxStackAmount )
                    {
                        invalid = true;
                        bMinStackAmount = false;
                        fMinStackAmount = true;
                        bMaxStackAmount = false;
                        fMaxStackAmount = true;
                        Messages = String.Format( "{0}Invalid input for [Stack Amount]. [Minimum Amount] must be less than or equal to [Maximum Amount].\n", Messages );
                    }

            // *************** Final Check ***************

                    if ( invalid )
                    {
                        if ( !fAddItem || command == 7 )
                        {
                            bAddItem = true;
                            addItem = checkAddItem;
                        }

                        if ( !fMinStackAmount )
                        {
                            bMinStackAmount = true;
                            minStackAmount = intMinStackAmount;
                        }

                        if ( !fMaxStackAmount )
                        {
                            bMaxStackAmount = true;
                            maxStackAmount = intMaxStackAmount;
                        }

                        if ( !submit )
                            Messages = oldMessages;

                        UpdatePage( command );

                        return;
                    }

            // *************** Applying Settings ***************

                    if ( stringAddItem != null )
                        addItem = stringAddItem;
                    else
                        addItem = checkAddItem;

                    minStackAmount = intMinStackAmount;
                    maxStackAmount = intMaxStackAmount;

                    bool notContainer = false;

                    ArrayList settingList = new ArrayList();

                    settingList.Add( Setting.AddItem );
                    settingList.Add( entryName );
                    settingList.Add( entryIndex );
                    settingList.Add( addItem );
                    settingList.Add( minStackAmount );
                    settingList.Add( maxStackAmount );

                    if ( MC.IsContainer( addItem ) )
                        settingList[0] = Setting.AddContainer;
                    else
                        settingList[0] = Setting.AddItem;

                    if ( !MC.IsContainer( addItem ) && InsideItemList.Count > 0 )
                    {
                        notContainer = true;
                    }
                    else
                    {
                        for ( int i = 0; i < InsideItemList.Count; i++ )
                        {
                            ArrayList List = (ArrayList) InsideItemList[i];

                            settingList.Add( List );
                        }
                    }

                    if ( AddSetting && submit )
                    {
                        megaSpawner.SettingsList.Add( settingList );
                        megaSpawner.CompileSettings();

                        Messages = String.Format( "Setting has been added.{0}", notContainer ? " The item being added is not a container, therefore, the items list was cleared." : "" );

                        SettingsCheckBoxesList.Add( (bool) false );
                    }
                    else if ( submit )
                    {
                        megaSpawner.SettingsList[index] = settingList;
                        megaSpawner.CompileSettings();

                        Messages = String.Format( "Setting has been updated.{0}", notContainer ? " The item being added is not a container, therefore, the items list was cleared." : "" );
                    }

                    if ( submit )
                    {
                        megaSpawner.SettingsList.Sort( new MC.SettingsSorter() );

                        if ( !MC.IsContainer( addItem ) )
                            InsideItemList.Clear();

                        ArgsList[30] = 0;				// FromWhere

                        SetArgsList();

                        gumpMobile.SendGump( new SettingsGump( gumpMobile, ArgsList ) );

                        break;
                    }
                    else
                    {
                        Messages = oldMessages;

                        UpdatePage( command );
                    }

                    break;
                }
            }
        }
Ejemplo n.º 17
0
 public WayPoint(Vector2 position, SpawnType spawnType, Submarine submarine, Gap gap = null)
     : this(new Rectangle((int)position.X - 3, (int)position.Y + 3, 6, 6), submarine)
 {
     this.spawnType = spawnType;
     ConnectedGap   = gap;
 }
Ejemplo n.º 18
0
		public static void CheckTimeExpire( MegaSpawner megaSpawner, SpawnType st )
		{
			if ( !megaSpawner.OverrideDespawnTimeExpire )
				return;

			switch ( st )
			{
				case SpawnType.GameTimeBased:
				{
					int UOHour, UOMinute, time;

					Server.Items.Clock.GetTime( megaSpawner.Map, megaSpawner.X, megaSpawner.Y, out UOHour, out UOMinute );

					if ( UOHour == 24 )
						UOHour = 0;

					time = ( UOHour * 60 ) + UOMinute;

					CheckDespawnTime( megaSpawner, time );

					break;
				}
				case SpawnType.RealTimeBased:
				{
					int time = ( DateTime.Now.Hour * 60 ) + DateTime.Now.Minute;

					CheckDespawnTime( megaSpawner, time );

					break;
				}
			}
		}
Ejemplo n.º 19
0
 public void AddWaveData(SpawnType spawnType, int count)
 {
     m_WaveData.Add(new WaveData(spawnType, count));
 }
Ejemplo n.º 20
0
 public Spawn(Point p,int i, SpawnType t)
     : this(p,0,1f,i,t)
 {
 }
Ejemplo n.º 21
0
 private void SpawnBoss(SpawnType spawnType)
 {
     switch (spawnType)
     {
         case SpawnType.Squid:
             var controller = AddActorController<SquidController>(ActorFactory.Create<SquidBoss>(ResourceDictionary.GetResource("SquidData"), new Vector2(7f, 1.75f)));
             controller.Zazumo = this._zazumo;
             break;
     }
 }
Ejemplo n.º 22
0
 public void Read(MpqFileStream stream)
 {
     this.SNOHandle = new SNOHandle(stream);
     this.SpawnType = (SpawnType)stream.ReadValueS32();
     this.I0 = stream.ReadValueS32();
     this.I1 = stream.ReadValueS32();
     this.I2 = stream.ReadValueS32();
     this.I3 = stream.ReadValueS32();
 }
Ejemplo n.º 23
0
        public void Draw(SpriteBatch spriteBatch, Vector2 drawPos)
        {
            Color clr = currentHull == null ? Color.CadetBlue : GUI.Style.Green;

            if (spawnType != SpawnType.Path)
            {
                clr = Color.Gray;
            }
            if (isObstructed)
            {
                clr = Color.Black;
            }
            if (IsHighlighted || IsHighlighted)
            {
                clr = Color.Lerp(clr, Color.White, 0.8f);
            }

            int iconSize = spawnType == SpawnType.Path ? WaypointSize : SpawnPointSize;

            if (ConnectedGap != null || Ladders != null || Stairs != null || SpawnType != SpawnType.Path)
            {
                iconSize = (int)(iconSize * 1.5f);
            }

            if (IsSelected || IsHighlighted)
            {
                int glowSize = (int)(iconSize * 1.5f);
                GUI.Style.UIGlowCircular.Draw(spriteBatch,
                                              new Rectangle((int)(drawPos.X - glowSize / 2), (int)(drawPos.Y - glowSize / 2), glowSize, glowSize),
                                              Color.White);
            }

            Sprite sprite = iconSprites[SpawnType.ToString()];

            if (spawnType == SpawnType.Human && AssignedJob?.Icon != null)
            {
                sprite = iconSprites["Path"];
            }
            else if (ConnectedDoor != null)
            {
                sprite = iconSprites["Door"];
            }
            else if (Ladders != null)
            {
                sprite = iconSprites["Ladder"];
            }
            sprite.Draw(spriteBatch, drawPos, clr, scale: iconSize / (float)sprite.SourceRect.Width, depth: 0.001f);
            sprite.RelativeOrigin = Vector2.One * 0.5f;
            if (spawnType == SpawnType.Human && AssignedJob?.Icon != null)
            {
                AssignedJob.Icon.Draw(spriteBatch, drawPos, AssignedJob.UIColor, scale: iconSize / (float)AssignedJob.Icon.SourceRect.Width * 0.8f, depth: 0.0f);
            }

            foreach (MapEntity e in linkedTo)
            {
                GUI.DrawLine(spriteBatch,
                             drawPos,
                             new Vector2(e.DrawPosition.X, -e.DrawPosition.Y),
                             (isObstructed ? Color.Gray : GUI.Style.Green) * 0.7f, width: 5, depth: 0.002f);
            }

            GUI.SmallFont.DrawString(spriteBatch,
                                     ID.ToString(),
                                     new Vector2(DrawPosition.X - 10, -DrawPosition.Y - 30),
                                     Color.WhiteSmoke);
        }
Ejemplo n.º 24
0
        private void SubmitEntry( RelayInfo info, bool submit, int command )
        {
            oldEntryType = entryType;

            string oldMessages = Messages;
            bool oldActivated = false;

            if ( submit )
            {
                if ( AddToSpawner )
                    MessagesTitle = "Submit Entry";
                else
                    MessagesTitle = "Update Entry";

                Messages = null;
            }

            bool invalid = false;

            bool fEntryType=false, fSpawnRange=false, fWalkRange=false, fAmount=false, fMinDelayHour=false, fMinDelayMin=false, fMinDelaySec=false, fMaxDelayHour=false, fMaxDelayMin=false, fMaxDelaySec=false, fEventRange=false, fBeginTimeBased=false, fEndTimeBased=false, fMinStackAmount=false, fMaxStackAmount=false, fMinDespawnHour=false, fMinDespawnMin=false, fMinDespawnSec=false, fMaxDespawnHour=false, fMaxDespawnMin=false, fMaxDespawnSec=false;

            string checkEntryType=null, checkSpawnRange=null, checkWalkRange=null, checkAmount=null, checkMinDelayHour=null, checkMinDelayMin=null, checkMinDelaySec=null, checkMaxDelayHour=null, checkMaxDelayMin=null, checkMaxDelaySec=null, checkEventRange=null, checkBeginTimeBased=null, checkEndTimeBased=null, checkMinStackAmount=null, checkMaxStackAmount=null, checkMinDespawnHour=null, checkMinDespawnMin=null, checkMinDespawnSec=null, checkMaxDespawnHour=null, checkMaxDespawnMin=null, checkMaxDespawnSec=null;

            string stringEntryType=null, stringBeginTimeBasedAMPM=null, stringEndTimeBasedAMPM=null;
            int intSpawnRange=0, intWalkRange=0, intAmount=0, intMinDelayHour=0, intMinDelayMin=0, intMinDelaySec=0, intMaxDelayHour=0, intMaxDelayMin=0, intMaxDelaySec=0, intEventRange=0, intBeginTimeBasedHour=0, intBeginTimeBasedMinute=0, intEndTimeBasedHour=0, intEndTimeBasedMinute=0, intMinStackAmount=0, intMaxStackAmount=0, intMinDespawnHour=0, intMinDespawnMin=0, intMinDespawnSec=0, intMaxDespawnHour=0, intMaxDespawnMin=0, intMaxDespawnSec=0;

            if ( pg == 1 )
            {
                checkEntryType  = info.GetTextEntry( 1 ).Text;
                checkMinStackAmount = info.GetTextEntry( 11 ).Text;
                checkMaxStackAmount = info.GetTextEntry( 12 ).Text;

                oldActivated = activatedSwitch;
                activatedSwitch = info.IsSwitched( 1 );
                movableSwitch = info.IsSwitched( 4 );
            }
            else
            {
                checkEntryType = entryType;
                checkMinStackAmount = minStackAmount.ToString();
                checkMaxStackAmount = maxStackAmount.ToString();
            }

            if ( !megaSpawner.OverrideIndividualEntries )
            {
                if ( pg == 1 )
                {
                    spawnGroupSwitch = info.IsSwitched( 2 );
                    eventAmbushSwitch = info.IsSwitched( 3 );
                    despawnSwitch = info.IsSwitched( 5 );
                    despawnGroupSwitch = info.IsSwitched( 6 );

                    checkSpawnRange = info.GetTextEntry( 2 ).Text;
                    checkWalkRange = info.GetTextEntry( 3 ).Text;
                    checkAmount = info.GetTextEntry( 4 ).Text;
                    checkMinDelayHour = info.GetTextEntry( 5 ).Text;
                    checkMinDelayMin = info.GetTextEntry( 6 ).Text;
                    checkMinDelaySec = info.GetTextEntry( 7 ).Text;
                    checkMaxDelayHour = info.GetTextEntry( 8 ).Text;
                    checkMaxDelayMin = info.GetTextEntry( 9 ).Text;
                    checkMaxDelaySec = info.GetTextEntry( 10 ).Text;
                    checkMinDespawnHour = info.GetTextEntry( 13 ).Text;
                    checkMinDespawnMin = info.GetTextEntry( 14 ).Text;
                    checkMinDespawnSec = info.GetTextEntry( 15 ).Text;
                    checkMaxDespawnHour = info.GetTextEntry( 16 ).Text;
                    checkMaxDespawnMin = info.GetTextEntry( 17 ).Text;
                    checkMaxDespawnSec = info.GetTextEntry( 18 ).Text;
                }
                else
                {
                    checkSpawnRange = spawnRange.ToString();
                    checkWalkRange = walkRange.ToString();
                    checkAmount = amount.ToString();
                    checkMinDelayHour = minDelayHour.ToString();
                    checkMinDelayMin = minDelayMin.ToString();
                    checkMinDelaySec = minDelaySec.ToString();
                    checkMaxDelayHour = maxDelayHour.ToString();
                    checkMaxDelayMin = maxDelayMin.ToString();
                    checkMaxDelaySec = maxDelaySec.ToString();
                    checkMinDespawnHour = minDespawnHour.ToString();
                    checkMinDespawnMin = minDespawnMin.ToString();
                    checkMinDespawnSec = minDespawnSec.ToString();
                    checkMaxDespawnHour = maxDespawnHour.ToString();
                    checkMaxDespawnMin = maxDespawnMin.ToString();
                    checkMaxDespawnSec = maxDespawnSec.ToString();
                }

                if ( pg == 2 )
                {
                    int switchNum = MC.GetSwitchNum( info, 1, 5 );
                    spawnTypeSwitch = (SpawnType) switchNum;

                    caseSensitiveSwitch = info.IsSwitched( 6 );
                    despawnTimeExpireSwitch = info.IsSwitched( 7 );

                    checkEventRange = info.GetTextEntry( 1 ).Text;
                    checkBeginTimeBased = info.GetTextEntry( 2 ).Text;
                    checkEndTimeBased = info.GetTextEntry( 3 ).Text;
                    keyword = info.GetTextEntry( 4 ).Text;
                }
                else
                {
                    CalcTimeBased();

                    checkEventRange = eventRange.ToString();
                    checkBeginTimeBased = beginTimeBased.ToString();
                    checkEndTimeBased = endTimeBased.ToString();
                }
            }
            else
            {
                if ( pg == 1 )
                {
                    checkAmount = info.GetTextEntry( 4 ).Text;
                }

                spawnTypeSwitch = SpawnType.Regular;
                spawnGroupSwitch = false;
                eventAmbushSwitch = true;

                checkSpawnRange = "10";
                checkWalkRange = "10";
                checkMinDelayHour = "0";
                checkMinDelayMin = "5";
                checkMinDelaySec = "0";
                checkMaxDelayHour = "0";
                checkMaxDelayMin = "10";
                checkMaxDelaySec = "0";
                checkEventRange = "10";
                checkBeginTimeBased = "12:00 AM";
                checkEndTimeBased = "12:00 AM";
                keyword = "";
                checkMinDespawnHour = "0";
                checkMinDespawnMin = "30";
                checkMinDespawnSec = "0";
                checkMaxDespawnHour = "1";
                checkMaxDespawnMin = "0";
                checkMaxDespawnSec = "0";
            }

            // *************** First Check ***************

            Type type = ScriptCompiler.FindTypeByName( checkEntryType );

            if ( type != null )
                stringEntryType = type.Name;

            if ( type == null || MC.IsBadEntryType( checkEntryType ) )
            {
                invalid = true;
                bEntryType = false;
                fEntryType = true;
                Messages = String.Format( "{0}Invalid input for [Entry Type]. You must specify a valid type.\n", Messages );
            }

            if ( AddToSpawner && submit && megaSpawner.OverrideIndividualEntries )
            {
                for ( int i = 0; i < megaSpawner.EntryList.Count; i++ )
                {
                    if ( checkEntryType.ToLower() == ( (string) megaSpawner.EntryList[i] ).ToLower() )
                    {
                        invalid = true;
                        bEntryType = false;
                        fEntryType = true;
                        Messages = String.Format( "{0}Invalid input for [Entry Type]. That entry already exists. You may not have duplicate entries when the Mega Spawner is overridden. Please choose another entry.\n", Messages );
                    }
                }
            }

            try{ intSpawnRange = Convert.ToInt32( checkSpawnRange ); }
            catch
            {
                invalid = true;
                bSpawnRange = false;
                fSpawnRange = true;
                Messages = String.Format( "{0}Invalid input for [Spawn Range]. You must specify an integer only.\n", Messages );
            }

            try{ intWalkRange = Convert.ToInt32( checkWalkRange ); }
            catch
            {
                invalid = true;
                bWalkRange = false;
                fWalkRange = true;
                Messages = String.Format( "{0}Invalid input for [Walk Range]. You must specify an integer only.\n", Messages );
            }

            try{ intAmount = Convert.ToInt32( checkAmount ); }
            catch
            {
                invalid = true;
                bAmount = false;
                fAmount = true;
                Messages = String.Format( "{0}Invalid input for [Amount To Spawn]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDelayHour = Convert.ToInt32( checkMinDelayHour ); }
            catch
            {
                invalid = true;
                bMinDelayHour = false;
                fMinDelayHour = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Hours]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDelayMin = Convert.ToInt32( checkMinDelayMin ); }
            catch
            {
                invalid = true;
                bMinDelayMin = false;
                fMinDelayMin = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Minutes]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDelaySec = Convert.ToInt32( checkMinDelaySec ); }
            catch
            {
                invalid = true;
                bMinDelaySec = false;
                fMinDelaySec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Seconds]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDelayHour = Convert.ToInt32( checkMaxDelayHour ); }
            catch
            {
                invalid = true;
                bMaxDelayHour = false;
                fMaxDelayHour = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Hours]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDelayMin = Convert.ToInt32( checkMaxDelayMin ); }
            catch
            {
                invalid = true;
                bMaxDelayMin = false;
                fMaxDelayMin = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Minutes]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDelaySec = Convert.ToInt32( checkMaxDelaySec ); }
            catch
            {
                invalid = true;
                bMaxDelaySec = false;
                fMaxDelaySec = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Seconds]. You must specify an integer only.\n", Messages );
            }

            try{ intEventRange = Convert.ToInt32( checkEventRange ); }
            catch
            {
                invalid = true;
                bEventRange = false;
                fEventRange = true;
                Messages = String.Format( "{0}Invalid input for [Event Range]. You must specify an integer only.\n", Messages );
            }

            string[] begin = checkBeginTimeBased.Split(':');
            string[] end = checkEndTimeBased.Split(':');
            string[] beginAMPM = null;
            string[] endAMPM = null;

            if ( begin.Length != 2 )
            {
                invalid = true;
                bBeginTimeBased = false;
                fBeginTimeBased = true;
                Messages = String.Format( "{0}Invalid format for [Begin Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
            }
            else
            {
                beginAMPM = begin[1].Split(' ');
            }

            if ( end.Length != 2 )
            {
                invalid = true;
                bEndTimeBased = false;
                fEndTimeBased = true;
                Messages = String.Format( "{0}Invalid format for [End Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
            }
            else
            {
                endAMPM = end[1].Split(' ');
            }

            try{ intBeginTimeBasedHour = Convert.ToInt32( begin[0] ); }
            catch
            {
                if ( !fBeginTimeBased )
                {
                    invalid = true;
                    bBeginTimeBased = false;
                    fBeginTimeBased = true;
                    Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Hour]. You must specify an integer only.\n", Messages );
                }
            }

            try{ intBeginTimeBasedMinute = Convert.ToInt32( beginAMPM[0] ); }
            catch
            {
                if ( !fBeginTimeBased )
                {
                    invalid = true;
                    bBeginTimeBased = false;
                    fBeginTimeBased = true;
                    Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Minute]. You must specify an integer only.\n", Messages );
                }
            }

            try{ intEndTimeBasedHour = Convert.ToInt32( end[0] ); }
            catch
            {
                if ( !fEndTimeBased )
                {
                    invalid = true;
                    bEndTimeBased = false;
                    fEndTimeBased = true;
                    Messages = String.Format( "{0}Invalid input for [End Time Based] [Hour]. You must specify an integer only.\n", Messages );
                }
            }

            try{ intEndTimeBasedMinute = Convert.ToInt32( endAMPM[0] ); }
            catch
            {
                if ( !fEndTimeBased )
                {
                    invalid = true;
                    bEndTimeBased = false;
                    fEndTimeBased = true;
                    Messages = String.Format( "{0}Invalid input for [End Time Based] [Minute]. You must specify an integer only.\n", Messages );
                }
            }

            if ( ( beginAMPM == null || beginAMPM.Length != 2 ) && !fBeginTimeBased )
            {
                invalid = true;
                bBeginTimeBased = false;
                fBeginTimeBased = true;
                Messages = String.Format( "{0}Invalid format for [Begin Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
            }
            else
                stringBeginTimeBasedAMPM = Convert.ToString( beginAMPM[1] ).ToUpper();

            if ( ( endAMPM == null || endAMPM.Length != 2 ) && !fBeginTimeBased )
            {
                invalid = true;
                bEndTimeBased = false;
                fEndTimeBased = true;
                Messages = String.Format( "{0}Invalid format for [End Time Based]. Example of the correct format is: 12:00 PM.\n", Messages );
            }
            else
                stringEndTimeBasedAMPM = Convert.ToString( endAMPM[1] ).ToUpper();

            try{ intMinStackAmount = Convert.ToInt32( checkMinStackAmount ); }
            catch
            {
                invalid = true;
                bMinStackAmount = false;
                fMinStackAmount = true;
                Messages = String.Format( "{0}Invalid input for [Stack Amount] [Minimum Amount]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxStackAmount = Convert.ToInt32( checkMaxStackAmount ); }
            catch
            {
                invalid = true;
                bMaxStackAmount = false;
                fMaxStackAmount = true;
                Messages = String.Format( "{0}Invalid input for [Stack Amount] [Maximum Amount]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDespawnHour = Convert.ToInt32( checkMinDespawnHour ); }
            catch
            {
                invalid = true;
                bMinDespawnHour = false;
                fMinDespawnHour = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Hours]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDespawnMin = Convert.ToInt32( checkMinDespawnMin ); }
            catch
            {
                invalid = true;
                bMinDespawnMin = false;
                fMinDespawnMin = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Minutes]. You must specify an integer only.\n", Messages );
            }

            try{ intMinDespawnSec = Convert.ToInt32( checkMinDespawnSec ); }
            catch
            {
                invalid = true;
                bMinDespawnSec = false;
                fMinDespawnSec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Seconds]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDespawnHour = Convert.ToInt32( checkMaxDespawnHour ); }
            catch
            {
                invalid = true;
                bMaxDespawnHour = false;
                fMaxDespawnHour = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Hours]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDespawnMin = Convert.ToInt32( checkMaxDespawnMin ); }
            catch
            {
                invalid = true;
                bMaxDespawnMin = false;
                fMaxDespawnMin = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Minutes]. You must specify an integer only.\n", Messages );
            }

            try{ intMaxDespawnSec = Convert.ToInt32( checkMaxDespawnSec ); }
            catch
            {
                invalid = true;
                bMaxDespawnSec = false;
                fMaxDespawnSec = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Seconds]. You must specify an integer only.\n", Messages );
            }

            // *************** Second Check ***************

            if ( intSpawnRange < 0 && !fSpawnRange )
            {
                invalid = true;
                bSpawnRange = false;
                fSpawnRange = true;
                Messages = String.Format( "{0}Invalid input for [Spawn Range]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( intWalkRange < 0 && !fWalkRange )
            {
                invalid = true;
                bWalkRange = false;
                fWalkRange = true;
                Messages = String.Format( "{0}Invalid input for [Walk Range]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( intAmount <= 0 && !fAmount )
            {
                invalid = true;
                bAmount = false;
                fAmount = true;
                Messages = String.Format( "{0}Invalid input for [Amount]. Must be greater than 0.\n", Messages );
            }

            if ( intMinDelayHour < 0  && !fMinDelayHour )
            {
                invalid = true;
                bMinDelayHour = false;
                fMinDelayHour = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( ( intMinDelayMin < 0 || intMinDelayMin > 59 ) && !fMinDelayMin )
            {
                invalid = true;
                bMinDelayMin = false;
                fMinDelayMin = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( ( intMinDelaySec < 0 || intMinDelaySec > 59 )  && !fMinDelaySec )
            {
                invalid = true;
                bMinDelaySec = false;
                fMinDelaySec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( intMaxDelayHour < 0 && !fMaxDelayHour )
            {
                invalid = true;
                bMaxDelayHour = false;
                fMaxDelayHour = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( ( intMaxDelayMin < 0 || intMaxDelayMin > 59 ) && !fMaxDelayMin )
            {
                invalid = true;
                bMaxDelayMin = false;
                fMaxDelayMin = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( ( intMaxDelaySec < 0 || intMaxDelaySec > 59 ) && !fMaxDelaySec )
            {
                invalid = true;
                bMaxDelaySec = false;
                fMaxDelaySec = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Next Spawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            int calcMinDelay=0, calcMaxDelay=0, calcBeginTimeBased=0, calcEndTimeBased=0;

            if ( !fMinDelayHour && !fMinDelayMin && !fMinDelaySec && !fMaxDelayHour && !fMaxDelayMin && !fMaxDelaySec )
            {
                calcMinDelay = intMinDelaySec + ( intMinDelayMin * 60 ) + ( intMinDelayHour * 3600 );
                calcMaxDelay = intMaxDelaySec + ( intMaxDelayMin * 60 ) + ( intMaxDelayHour * 3600 );
            }

            if ( calcMinDelay > calcMaxDelay )
            {
                invalid = true;
                bMinDelayHour = false;
                bMinDelayMin = false;
                bMinDelaySec = false;
                bMaxDelayHour = false;
                bMaxDelayMin = false;
                bMaxDelaySec = false;
                fMinDelayHour = true;
                fMinDelayMin = true;
                fMinDelaySec = true;
                fMaxDelayHour = true;
                fMaxDelayMin = true;
                fMaxDelaySec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Next Spawn]. Must be less than or equal to [Max Delay To Next Spawn].\n", Messages );
            }

            if ( intEventRange < 0 && !fEventRange )
            {
                invalid = true;
                bEventRange = false;
                fEventRange = true;
                Messages = String.Format( "{0}Invalid input for [Event Range]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( ( intBeginTimeBasedHour > 12 || intBeginTimeBasedHour < 1 ) && !fBeginTimeBased )
            {
                invalid = true;
                bBeginTimeBased = false;
                fBeginTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Hour]. Must be between 1 and 12.\n", Messages );
            }

            if ( ( intBeginTimeBasedMinute > 59 || intBeginTimeBasedMinute < 0 ) && !fBeginTimeBased )
            {
                invalid = true;
                bBeginTimeBased = false;
                fBeginTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [Begin Time Based] [Minute]. Must be between 00 and 59.\n", Messages );
            }

            if ( ( stringBeginTimeBasedAMPM != "AM" && stringBeginTimeBasedAMPM != "PM" ) && !fBeginTimeBased )
            {
                invalid = true;
                bBeginTimeBased = false;
                fBeginTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [Begin Time Based] [AM/PM]. Must be AM or PM only.\n", Messages );
            }

            if ( ( intEndTimeBasedHour > 12 || intEndTimeBasedHour < 1 ) && !fEndTimeBased )
            {
                invalid = true;
                bEndTimeBased = false;
                fEndTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [End Time Based] [Hour]. Must be between 1 and 12.\n", Messages );
            }

            if ( ( intEndTimeBasedMinute > 59 || intEndTimeBasedMinute < 0 ) && !fEndTimeBased )
            {
                invalid = true;
                bEndTimeBased = false;
                fEndTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [End Time Based] [Minute]. Must be between 00 and 59.\n", Messages );
            }

            if ( ( stringEndTimeBasedAMPM != "AM" && stringEndTimeBasedAMPM != "PM" ) && !fEndTimeBased )
            {
                invalid = true;
                bEndTimeBased = false;
                fEndTimeBased = true;
                Messages = String.Format( "{0}Invalid input for [End Time Based] [AM/PM]. Must be AM or PM only.\n", Messages );
            }

            if ( !fBeginTimeBased )
            {
                int hourCheck = intBeginTimeBasedHour;

                if ( stringBeginTimeBasedAMPM == "PM" && hourCheck < 12 )
                    hourCheck += 12;

                if ( stringBeginTimeBasedAMPM == "AM" && hourCheck == 12 )
                    hourCheck = 0;

                calcBeginTimeBased = ( hourCheck * 60 ) + intBeginTimeBasedMinute;
            }

            if ( !fEndTimeBased )
            {
                int hourCheck = intEndTimeBasedHour;

                if ( stringEndTimeBasedAMPM == "PM" && hourCheck < 12 )
                    hourCheck += 12;

                if ( stringEndTimeBasedAMPM == "AM" && hourCheck == 12 )
                    hourCheck = 0;

                calcEndTimeBased = ( hourCheck * 60 ) + intEndTimeBasedMinute;
            }

            if ( intMinStackAmount < 1 && !fMinStackAmount )
            {
                invalid = true;
                bMinStackAmount = false;
                fMinStackAmount = true;
                Messages = String.Format( "{0}Invalid input for [Stack Amount] [Minimum Amount]. Must be greater than 0.\n", Messages );
            }

            if ( intMaxStackAmount < 1 && !fMaxStackAmount )
            {
                invalid = true;
                bMaxStackAmount = false;
                fMaxStackAmount = true;
                Messages = String.Format( "{0}Invalid input for [Stack Amount] [Maximum Amount]. Must be greater than 0.\n", Messages );
            }

            if ( intMinStackAmount > intMaxStackAmount && !fMinStackAmount && !fMaxStackAmount )
            {
                invalid = true;
                bMinStackAmount = false;
                fMinStackAmount = true;
                bMaxStackAmount = false;
                fMaxStackAmount = true;
                Messages = String.Format( "{0}Invalid input for [Stack Amount]. [Minimum Amount] must be less than or equal to [Maximum Amount].\n", Messages );
            }

            if ( intMinDespawnHour < 0  && !fMinDespawnHour )
            {
                invalid = true;
                bMinDespawnHour = false;
                fMinDespawnHour = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( ( intMinDespawnMin < 0 || intMinDespawnMin > 59 ) && !fMinDespawnMin )
            {
                invalid = true;
                bMinDespawnMin = false;
                fMinDespawnMin = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( ( intMinDespawnSec < 0 || intMinDespawnSec > 59 )  && !fMinDespawnSec )
            {
                invalid = true;
                bMinDespawnSec = false;
                fMinDespawnSec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( intMaxDespawnHour < 0 && !fMaxDespawnHour )
            {
                invalid = true;
                bMaxDespawnHour = false;
                fMaxDespawnHour = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Hours]. Must be greater than or equal to 0.\n", Messages );
            }

            if ( ( intMaxDespawnMin < 0 || intMaxDespawnMin > 59 ) && !fMaxDespawnMin )
            {
                invalid = true;
                bMaxDespawnMin = false;
                fMaxDespawnMin = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Minutes]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            if ( ( intMaxDespawnSec < 0 || intMaxDespawnSec > 59 ) && !fMaxDespawnSec )
            {
                invalid = true;
                bMaxDespawnSec = false;
                fMaxDespawnSec = true;
                Messages = String.Format( "{0}Invalid input for [Max Delay To Despawn] [Seconds]. Must be greater than or equal to 0 and less than 60.\n", Messages );
            }

            int calcMinDespawn=0, calcMaxDespawn=0;

            if ( !fMinDespawnHour && !fMinDespawnMin && !fMinDespawnSec && !fMaxDespawnHour && !fMaxDespawnMin && !fMaxDespawnSec )
            {
                calcMinDespawn = intMinDespawnSec + ( intMinDespawnMin * 60 ) + ( intMinDespawnHour * 3600 );
                calcMaxDespawn = intMaxDespawnSec + ( intMaxDespawnMin * 60 ) + ( intMaxDespawnHour * 3600 );
            }

            if ( calcMinDespawn > calcMaxDespawn )
            {
                invalid = true;
                bMinDespawnHour = false;
                bMinDespawnMin = false;
                bMinDespawnSec = false;
                bMaxDespawnHour = false;
                bMaxDespawnMin = false;
                bMaxDespawnSec = false;
                fMinDespawnHour = true;
                fMinDespawnMin = true;
                fMinDespawnSec = true;
                fMaxDespawnHour = true;
                fMaxDespawnMin = true;
                fMaxDespawnSec = true;
                Messages = String.Format( "{0}Invalid input for [Min Delay To Despawn]. Must be less than or equal to [Max Delay To Despawn].\n", Messages );
            }

            // *************** Final Check ***************

            if ( invalid )
            {
                if ( !fEntryType || command == 6 )
                {
                    bEntryType = true;
                    entryType = checkEntryType;
                }

                if ( !fSpawnRange )
                {
                    bSpawnRange = true;
                    spawnRange = intSpawnRange;
                }

                if ( !fWalkRange )
                {
                    bWalkRange = true;
                    walkRange = intWalkRange;
                }

                if ( !fAmount )
                {
                    bAmount = true;
                    amount = intAmount;
                }

                if ( !fMinDelayHour )
                {
                    bMinDelayHour = true;
                    minDelayHour = intMinDelayHour;
                }

                if ( !fMinDelayMin )
                {
                    bMinDelayMin = true;
                    minDelayMin = intMinDelayMin;
                }

                if ( !fMinDelaySec )
                {
                    bMinDelaySec = true;
                    minDelaySec = intMinDelaySec;
                }

                if ( !fMaxDelayHour )
                {
                    bMaxDelayHour = true;
                    maxDelayHour = intMaxDelayHour;
                }

                if ( !fMaxDelayMin )
                {
                    bMaxDelayMin = true;
                    maxDelayMin = intMaxDelayMin;
                }

                if ( !fMaxDelaySec )
                {
                    bMaxDelaySec = true;
                    maxDelaySec = intMaxDelaySec;
                }

                if ( !fEventRange )
                {
                    bEventRange = true;
                    eventRange = intEventRange;
                }

                if ( !fBeginTimeBased )
                {
                    bBeginTimeBased = true;

                    if ( stringBeginTimeBasedAMPM == "PM" && intBeginTimeBasedHour < 12 )
                        intBeginTimeBasedHour += 12;

                    if ( stringBeginTimeBasedAMPM == "AM" && intBeginTimeBasedHour == 12 )
                        intBeginTimeBasedHour = 0;

                    beginTimeBasedHour = intBeginTimeBasedHour;
                    beginTimeBasedMinute = intBeginTimeBasedMinute;
                }

                if ( !fEndTimeBased )
                {
                    bEndTimeBased = true;

                    if ( stringEndTimeBasedAMPM == "PM" && intEndTimeBasedHour < 12 )
                        intEndTimeBasedHour += 12;

                    if ( stringEndTimeBasedAMPM == "AM" && intEndTimeBasedHour == 12 )
                        intEndTimeBasedHour = 0;

                    endTimeBasedHour = intEndTimeBasedHour;
                    endTimeBasedMinute = intEndTimeBasedMinute;
                }

                if ( !fMinStackAmount )
                {
                    bMinStackAmount = true;
                    minStackAmount = intMinStackAmount;
                }

                if ( !fMaxStackAmount )
                {
                    bMaxStackAmount = true;
                    maxStackAmount = intMaxStackAmount;
                }

                if ( !fMinDespawnHour )
                {
                    bMinDespawnHour = true;
                    minDespawnHour = intMinDespawnHour;
                }

                if ( !fMinDespawnMin )
                {
                    bMinDespawnMin = true;
                    minDespawnMin = intMinDespawnMin;
                }

                if ( !fMinDespawnSec )
                {
                    bMinDespawnSec = true;
                    minDespawnSec = intMinDespawnSec;
                }

                if ( !fMaxDespawnHour )
                {
                    bMaxDespawnHour = true;
                    maxDespawnHour = intMaxDespawnHour;
                }

                if ( !fMaxDespawnMin )
                {
                    bMaxDespawnMin = true;
                    maxDespawnMin = intMaxDespawnMin;
                }

                if ( !fMaxDespawnSec )
                {
                    bMaxDespawnSec = true;
                    maxDespawnSec = intMaxDespawnSec;
                }

                if ( !submit )
                    Messages = oldMessages;

                UpdatePage( command );

                return;
            }

            // *************** Applying Settings ***************

            if ( stringEntryType != null )
                entryType = stringEntryType;
            else
                entryType = checkEntryType;

            spawnRange = intSpawnRange;
            walkRange = intWalkRange;
            amount = intAmount;
            eventRange = intEventRange;
            minStackAmount = intMinStackAmount;
            maxStackAmount = intMaxStackAmount;

            if ( AddToSpawner && submit )
            {
                megaSpawner.EntryList.Add( entryType );
                megaSpawner.SpawnRangeList.Add( spawnRange );
                megaSpawner.WalkRangeList.Add( walkRange );
                megaSpawner.AmountList.Add( amount );
                megaSpawner.MinDelayList.Add( calcMinDelay );
                megaSpawner.MaxDelayList.Add( calcMaxDelay );
                megaSpawner.SpawnTypeList.Add( spawnTypeSwitch );
                megaSpawner.ActivatedList.Add( activatedSwitch );
                megaSpawner.EventRangeList.Add( eventRange );
                megaSpawner.EventKeywordList.Add( keyword );
                megaSpawner.KeywordCaseSensitiveList.Add( caseSensitiveSwitch );
                megaSpawner.TriggerEventNowList.Add( (bool) true );
                megaSpawner.EventAmbushList.Add( eventAmbushSwitch );
                megaSpawner.BeginTimeBasedList.Add( calcBeginTimeBased );
                megaSpawner.EndTimeBasedList.Add( calcEndTimeBased );
                megaSpawner.GroupSpawnList.Add( spawnGroupSwitch );
                megaSpawner.MinStackAmountList.Add( minStackAmount );
                megaSpawner.MaxStackAmountList.Add( maxStackAmount );
                megaSpawner.MovableList.Add( movableSwitch );
                megaSpawner.MinDespawnList.Add( calcMinDespawn );
                megaSpawner.MaxDespawnList.Add( calcMaxDespawn );
                megaSpawner.DespawnList.Add( despawnSwitch );
                megaSpawner.DespawnGroupList.Add( despawnGroupSwitch );
                megaSpawner.DespawnTimeExpireList.Add( despawnTimeExpireSwitch );

                megaSpawner.SpawnedEntries.Add( new ArrayList() );
                megaSpawner.LastMovedList.Add( new ArrayList() );

                MSEGCheckBoxesList.Add( (bool) false );

                Messages = String.Format( "\"{0}\" entry has been added.", entryType );
            }
            else if ( submit )
            {
                if ( oldEntryType != entryType )
                    megaSpawner.DeleteEntries( index );

                megaSpawner.EntryList[index] = entryType;
                megaSpawner.SpawnRangeList[index] = spawnRange;
                megaSpawner.WalkRangeList[index] = walkRange;
                megaSpawner.AmountList[index] = amount;
                megaSpawner.MinDelayList[index] = calcMinDelay;
                megaSpawner.MaxDelayList[index] = calcMaxDelay;
                megaSpawner.SpawnTypeList[index] = spawnTypeSwitch;
                megaSpawner.ActivatedList[index] = activatedSwitch;
                megaSpawner.EventRangeList[index] = eventRange;
                megaSpawner.EventKeywordList[index] = keyword;
                megaSpawner.KeywordCaseSensitiveList[index] = caseSensitiveSwitch;
                megaSpawner.TriggerEventNowList[index] = (bool) true;
                megaSpawner.EventAmbushList[index] = eventAmbushSwitch;
                megaSpawner.BeginTimeBasedList[index] = calcBeginTimeBased;
                megaSpawner.EndTimeBasedList[index] = calcEndTimeBased;
                megaSpawner.GroupSpawnList[index] = spawnGroupSwitch;
                megaSpawner.MinStackAmountList[index] = minStackAmount;
                megaSpawner.MaxStackAmountList[index] = maxStackAmount;
                megaSpawner.MovableList[index] = movableSwitch;
                megaSpawner.MinDespawnList[index] = calcMinDespawn;
                megaSpawner.MaxDespawnList[index] = calcMaxDespawn;
                megaSpawner.DespawnList[index] = despawnSwitch;
                megaSpawner.DespawnGroupList[index] = despawnGroupSwitch;
                megaSpawner.DespawnTimeExpireList[index] = despawnTimeExpireSwitch;

                if ( !megaSpawner.OverrideIndividualEntries )
                {
                    megaSpawner.RemoveRespawnEntries( index );
                    megaSpawner.RecompileSettings( index );
                }

                if ( entryType == oldEntryType )
                    Messages = String.Format( "\"{0}\" entry has been updated.", oldEntryType );
                else
                    Messages = String.Format( "\"{0}\" entry has been updated and changed to \"{1}\" entry.", oldEntryType, entryType );
            }

            if ( submit )
            {
                if ( megaSpawner.OverrideIndividualEntries )
                {
                    MegaSpawnerOverride.DeleteEntries( megaSpawner );
                    MegaSpawnerOverride.RemoveRespawnEntries( megaSpawner );
                    megaSpawner.OverrideSpawnedEntries.Clear();
                    megaSpawner.OverrideLastMovedList.Clear();

                    for ( int i = 0; i < megaSpawner.OverrideAmount; i++ )
                    {
                        megaSpawner.OverrideRespawnEntryList.Add( "" );
                        megaSpawner.OverrideRespawnTimeList.Add( 0 );
                        megaSpawner.OverrideSpawnCounterList.Add( DateTime.Now );
                        megaSpawner.OverrideSpawnTimeList.Add( 0 );
                        megaSpawner.OverrideDespawnTimeList.Add( 0 );
                    }
                }
                else
                {
                    ArrayList respawnEntryList = new ArrayList();
                    ArrayList respawnTimeList = new ArrayList();
                    ArrayList spawnCounterList = new ArrayList();
                    ArrayList spawnTimeList = new ArrayList();
                    ArrayList respawnOnSaveList = new ArrayList();
                    ArrayList despawnTimeList = new ArrayList();

                    for ( int i = 0; i < amount; i++ )
                    {
                        respawnEntryList.Add( entryType );
                        respawnTimeList.Add( 0 );
                        spawnCounterList.Add( DateTime.Now );
                        spawnTimeList.Add( 0 );
                        respawnOnSaveList.Add( (bool) false );
                        despawnTimeList.Add( 0 );
                    }

                    if ( AddToSpawner )
                    {
                        megaSpawner.RespawnEntryList.Add( respawnEntryList );
                        megaSpawner.RespawnTimeList.Add( respawnTimeList );
                        megaSpawner.SpawnCounterList.Add( spawnCounterList );
                        megaSpawner.SpawnTimeList.Add( spawnTimeList );
                        megaSpawner.RespawnOnSaveList.Add( respawnOnSaveList );
                        megaSpawner.DespawnTimeList.Add( despawnTimeList );
                    }
                    else
                    {
                        megaSpawner.RespawnEntryList[index] = respawnEntryList;
                        megaSpawner.RespawnTimeList[index] = respawnTimeList;
                        megaSpawner.SpawnCounterList[index] = spawnCounterList;
                        megaSpawner.SpawnTimeList[index] = spawnTimeList;
                        megaSpawner.RespawnOnSaveList[index] = respawnOnSaveList;
                        megaSpawner.DespawnTimeList[index] = despawnTimeList;
                    }
                }

                if ( megaSpawner.Active )
                {
                    if ( oldActivated && !activatedSwitch )
                        megaSpawner.DeleteEntries( index );

                    if ( !megaSpawner.OverrideIndividualEntries )
                    {
                        if ( !AddToSpawner )
                            megaSpawner.Respawn( index );
                        else
                            megaSpawner.Respawn( megaSpawner.EntryList.Count - 1 );
                    }
                    else
                    {
                        megaSpawner.Respawn();
                    }

                    megaSpawner.CheckProximityType();
                    megaSpawner.CheckSpeechType();
                }

                SetArgsList();

                gumpMobile.SendGump( new MegaSpawnerEditGump( gumpMobile, ArgsList ) );
            }
            else
            {
                minDelayHour = intMinDelayHour;
                minDelayMin = intMinDelayMin;
                minDelaySec = intMinDelaySec;
                maxDelayHour = intMaxDelayHour;
                maxDelayMin = intMaxDelayMin;
                maxDelaySec = intMaxDelaySec;

                minDespawnHour = intMinDespawnHour;
                minDespawnMin = intMinDespawnMin;
                minDespawnSec = intMinDespawnSec;
                maxDespawnHour = intMaxDespawnHour;
                maxDespawnMin = intMaxDespawnMin;
                maxDespawnSec = intMaxDespawnSec;

                if ( stringBeginTimeBasedAMPM == "PM" && intBeginTimeBasedHour < 12 )
                    intBeginTimeBasedHour += 12;

                if ( stringBeginTimeBasedAMPM == "AM" && intBeginTimeBasedHour == 12 )
                    intBeginTimeBasedHour = 0;

                beginTimeBasedHour = intBeginTimeBasedHour;
                beginTimeBasedMinute = intBeginTimeBasedMinute;

                if ( stringEndTimeBasedAMPM == "PM" && intEndTimeBasedHour < 12 )
                    intEndTimeBasedHour += 12;

                if ( stringEndTimeBasedAMPM == "AM" && intEndTimeBasedHour == 12 )
                    intEndTimeBasedHour = 0;

                endTimeBasedHour = intEndTimeBasedHour;
                endTimeBasedMinute = intEndTimeBasedMinute;

                Messages = oldMessages;

                UpdatePage( command );
            }
        }
Ejemplo n.º 25
0
 public Spawn(Point p, int i, SpawnType t) : this(p, 0, 1f, i, t)
 {
 }
Ejemplo n.º 26
0
        /// <summary>
        /// Initializes the particle System. 
        /// The Particle will spawn at the specified POINT with the defined SpawnType, 
        /// with the specified Directions, speed and the specified Gravity
        /// </summary>
        /// <param name="fontaine">Determines the spawnType:
        /// Fontain: The particles will spawn continously at the specified Point
        /// Explosion: The particles will spawn all at once at the specified Point</param>
        /// <param name="pnumParticles">Maximum particle number</param>
        /// <param name="particle_s">Spawntype:
        /// Fontain: The Particle per second (must be >= 60 to spawn any particles), also controls the particle lifetime = numParticles/particle_s
        /// Explosion: The particles Lifetime</param>
        /// <param name="Size">The Size of the Particles</param>
        /// <param name="pStdColor">The Color of the Particles</param>
        /// <param name="src">The Point where the particles are going to spawn</param>
        /// <param name="pdirections">Determines the Directions in which the particles are going to go</param>
        /// <param name="maxSpeed">The Maxmimum x and y speed</param>
        /// <param name="tex">The Texture of the particles</param>
        /// <param name="Gravity">The Gravity Type.
        /// OverallForce: all particles will be forced in that direction
        /// Point: All particles are going to move to that direction
        /// Newton: All particles are going to have planetary Gravity, Masses can be defined with the AddNewtonMass() method</param>
        /// <param name="gravAim">
        /// Gravity Type:
        /// Overall Force: The force which will be applied.
        /// Point: The Point, the particles are heading to.
        /// Newton: No affect
        /// </param>
        /// <param name="pfriction">Particles speed will bei divided by this when they collided with sth.</param>
        /// <param name="collison">Defines if the particles can collide or not</param>
        public void Initialize(bool bla, SpawnType fontaine, int pnumParticles, float particle_s, int Size, Color pStdColor, Vector2 src,
			SpawnDirections pdirections, Vector2 maxSpeed, Texture2D tex, GravityType Gravity, Vector2 gravAim,
			float pfriction, CollisionType collison)
        {
            Initialize(false,
                fontaine,
                pnumParticles,
                particle_s,
                Size,
                pStdColor,
                src,
                src,
                pdirections,
                maxSpeed,
                tex,
                Gravity,
                gravAim,
                pfriction,
                collison);
        }
Ejemplo n.º 27
0
 /// <summary>
 /// Initializes a Default Particle System with <c>numParticles</c> Particles and no Startspeed or Gravity
 /// </summary>
 /// <param name="numParticles">The Number of Particles</param>
 /// <param name="lifeTime"><c>type</c>=Explosion: LifeTime in seconds
 /// <c>type</c> =Fontaine: Particle spawning per second</param>
 /// <param name="type"></param>
 /// <param name="Size"></param>
 /// <param name="tex"></param>
 /// <param name="src"></param>
 public void Initialize(bool bla, int numParticles, float lifeTime, SpawnType type, int Size, Texture2D tex, Vector2 src)
 {
     Initialize(false,
         type,
         numParticles,
         lifeTime,
         Size,
         Color.White,
         src,
         SpawnDirections.Normal,
         Vector2.Zero,
         tex,
         GravityType.OverallForce,
         Vector2.Zero,
         1,
         CollisionType.None);
 }
Ejemplo n.º 28
0
        public void CheckTimeExpire( int index, SpawnType st )
        {
            if ( !(bool) DespawnTimeExpireList[index] )
                return;

            switch ( st )
            {
                case SpawnType.GameTimeBased:
                {
                    int UOHour, UOMinute, time;

                    Server.Items.Clock.GetTime( Map, X, Y, out UOHour, out UOMinute );

                    if ( UOHour == 24 )
                        UOHour = 0;

                    time = ( UOHour * 60 ) + UOMinute;

                    CheckDespawnTime( index, time );

                    break;
                }
                case SpawnType.RealTimeBased:
                {
                    int time = ( DateTime.Now.Hour * 60 ) + DateTime.Now.Minute;

                    CheckDespawnTime( index, time );

                    break;
                }
            }
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Initializes the particle System. 
        /// The Particle will spawn at the specified RECTANGLE with the defined SpawnType, 
        /// with the specified Directions, speed and the specified Gravity
        /// </summary>
        /// <param name="fontaine">Determines the spawnType:
        /// Fontain: The particles will spawn continously at the specified Point
        /// Explosion: The particles will spawn all at once at the specified Point</param>
        /// <param name="pnumParticles">Maximum particle number</param>
        /// <param name="particle_s">Spawntype:
        /// Fontain: The Particle per second (must be >= 60 to spawn any particles), also controls the particle lifetime = numParticles/particle_s
        /// Explosion: The particles Lifetime</param>
        /// <param name="Size">The Size of the Particles</param>
        /// <param name="pStdColor">The Color of the Particles</param>
        /// <param name="startpos">The Startpoint of the Rectangle where the particles are going to spawn</param>
        /// <param name="endpos">The Endpos of the Rectangle where the particles are going to spawn</param>
        /// <param name="pdirections">Determines the Directions in which the particles are going to go</param>
        /// <param name="maxSpeed">The Maxmimum x and y speed</param>
        /// <param name="tex">The Texture of the particles</param>
        /// <param name="Gravity">The Gravity Type.
        /// OverallForce: all particles will be forced in that direction
        /// Point: All particles are going to move to that direction
        /// Newton: All particles are going to have planetary Gravity, Masses can be defined with the AddNewtonMass() method</param>
        /// <param name="gravAim">
        /// Gravity Type:
        /// Overall Force: The force which will be applied.
        /// Point: The Point, the particles are heading to.
        /// Newton: No affect
        /// </param>
        /// <param name="pfriction">Particles speed will bei divided by this when they collided with sth.</param>
        /// <param name="collison">Defines if the particles can collide or not</param>
        public void Initialize(bool bla, SpawnType fontaine, int pnumParticles, float particle_s, int Size, Color pStdColor, Vector2 startpos, Vector2 endpos,
	SpawnDirections pdirections, Vector2 maxSpeed, Texture2D tex, GravityType Gravity, Vector2 gravAim,
	float pfriction, CollisionType collison)
        {
            if (startpos != endpos)
                spawnsource = SpawnSource.Rectangle;
            else
                spawnsource = SpawnSource.Point;

            masses = new List<NewtonMass>();
            collisiontype = collison;
            spawntype = fontaine;
            gravtype = Gravity;
            spawndirections = pdirections;

            size = Size;

            rand = new Random((int)DateTime.Now.Ticks);
            stdcolor = pStdColor;
            spawn = startpos;
            spawnend = endpos;
            maxspeed = maxSpeed;
            spawnperS = particle_s;
            numParticles = pnumParticles;
            positions = new Vector2[numParticles];
            velocities = new Vector2[numParticles];
            lifetimes = new float[numParticles];
            rects = new Rectangle[numParticles];
            Rotations = new float[numParticles];
            alphas = new byte[numParticles];
            floatalphas = new float[numParticles];
            collisionrectangles = new List<Rectangle>();
            collisionrectangles.Add(new Rectangle(-500000000, 0, 0, 0));
            particletex = tex;
            gravtype = Gravity;
            friction = MathHelper.Clamp(pfriction, float.Epsilon, float.MaxValue);
            gravity = gravAim;
            duration = new TimeSpan[numThreads];
            if (fontaine == SpawnType.Fontaine)
            {
                totallifetime = pnumParticles / particle_s;
            }
            else
            {
                totallifetime = particle_s;
            }
            for (int i = 0; i < pnumParticles; i++)
            {
                ResetParticle(i);
                lifetimes[i] = totallifetime + 1;
            }
            running = true;
            updatethread = new Thread[numThreads];
            newframe = new bool[numThreads];
            for (int i = 0; i < numThreads; i++)
            {
                updatethread[i] = new Thread((new ParameterizedThreadStart(UpdateThread)));
                updatethread[i].Name = "ParticleThread#" + i.ToString();
            }
            initialized = true;
            airFriction = 1;

            newSpawners = 0;
            InitalizeCUDA();
        }
Ejemplo n.º 30
0
 public bool EventSpawnAttempt( int index, SpawnType st )
 {
     return ( Active && (SpawnType) SpawnTypeList[index] == st && (bool) TriggerEventNowList[index] );
 }
Ejemplo n.º 31
0
 /// <summary>
 /// Initializes a new instance of <see cref="SpawnPoint"/>.
 /// </summary>
 /// <param name="in_position">The location of this point.</param>
 /// <param name="in_whatToSpawn">The entity that spawns in this location.</param>
 public SpawnPoint(Point in_position, SpawnType in_whatToSpawn) : base(in_position)
     => WhatToSpawn = in_whatToSpawn;