Exemplo n.º 1
0
        private static ArrayList GetBeacons(Mobile m, NavDestinations dest)
        {
            Map               map   = m.Map;
            ArrayList         list  = new ArrayList();
            IPooledEnumerable eable = map.GetItemsInRange(m.Location, 256);

            //add each NavBeacon found add it to are list
            foreach (Item n in eable)
            {
                if (n != null && n is NavBeacon && ((NavBeacon)n).Active && ((NavBeacon)n).GetWeight((int)dest) != -1)
                {
                    list.Add(n);
                }
            }
            return(list);
        }
Exemplo n.º 2
0
        public override void Deserialize(GenericReader reader)
        {
            TimeSpan ts = TimeSpan.Zero;

            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
            {
                m_LevelScale = reader.ReadDouble();
                goto case 2;
            }

            case 2:
            {
                m_LevelError = (LevelErrors)reader.ReadInt();
                goto case 1;
            }

            case 1:
            {
                ts = reader.ReadDeltaTime() - DateTime.Now;
                goto case 0;
            }

            case 0:
            {
                // read it all back in
                m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt());

                int a = reader.ReadInt();
                SpawnLevels = new ArrayList();

                // create new level array through deserialise constructors
                for (int i = 0; i < a; ++i)
                {
                    SpawnLevels.Add(new ChampLevelData(reader));
                }

                m_Monsters     = reader.ReadMobileList();
                m_FreeMonsters = reader.ReadMobileList();
                m_LevelCounter = reader.ReadInt();
                m_Kills        = reader.ReadInt();
                m_ExpireTime   = reader.ReadDateTime();
                m_NavDest      = (NavDestinations)reader.ReadInt();

                // the bools
                m_bActive   = reader.ReadBool();
                m_bGraphics = reader.ReadBool();

                // if graphics were on remake them thru deserialise constructor
                if (m_bGraphics)
                {
                    m_Graphics = new ChampGraphics(this, reader);
                }

                // and the restart...
                m_bRestart     = reader.ReadBool();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool() && !m_bActive && m_bRestart)
                {
                    // in this case the champ is activley in restart mode, so create new timer
                    //pla: 13/01/07
                    //changed so we don't lose time on restart
                    if (ts == TimeSpan.Zero)
                    {
                        DoTimer(m_RestartDelay);
                    }
                    else
                    {
                        DoTimer(ts);
                    }
                }
                else if (m_bActive)
                {
                    // if spawn was active then start the wheels turning...
                    StartSlice();
                }

                break;
            }
            }
        }
Exemplo n.º 3
0
			public static void AddRequest(Mobile m, NavDestinations nav)
			{
				NavList n = new NavList(m, nav);
				Navs.Add(n);
			}
Exemplo n.º 4
0
		public NavList(Mobile m, NavDestinations dest)
		{
			requester = m;
			Nav = dest;
		}
Exemplo n.º 5
0
			public Beacon_Sort(SortDirection direction, NavDestinations dest)
			{
				m_direction = direction;
				nav = dest;
			}
Exemplo n.º 6
0
		private static ArrayList GetBeacons(Mobile m, NavDestinations dest)
		{
			Map map = m.Map;
			ArrayList list = new ArrayList();
			IPooledEnumerable eable = map.GetItemsInRange(m.Location, 256);
                
			//add each NavBeacon found add it to are list
			foreach ( Item n in eable )
			{
				if(n !=null && n is NavBeacon && ((NavBeacon)n).Active && ((NavBeacon)n).GetWeight((int)dest) != -1 )
					list.Add(n);
			}
			return list;
		}
Exemplo n.º 7
0
		public override void Deserialize( GenericReader reader )
		{
            TimeSpan ts = TimeSpan.Zero;

			base.Deserialize( reader );

			int version = reader.ReadInt();
			
			switch ( version )
			{
				case 3:
					{
						m_LevelScale = reader.ReadDouble();
						goto case 2;
					}
        case 2:
        {
            m_LevelError = (LevelErrors)reader.ReadInt();
            goto case 1;
        }
        case 1:
        {                                      
            ts = reader.ReadDeltaTime() - DateTime.Now;                    
            goto case 0;
        }
				case 0:
				{

					// read it all back in									
					m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt());

					int a = reader.ReadInt();
					SpawnLevels  = new ArrayList();
					
					// create new level array through deserialise constructors
					for( int i = 0 ; i < a; ++i )
						SpawnLevels.Add( new ChampLevelData( reader ) );	

					m_Monsters = reader.ReadMobileList();
					m_FreeMonsters = reader.ReadMobileList();
					m_LevelCounter = reader.ReadInt();
					m_Kills = reader.ReadInt();
					m_ExpireTime = reader.ReadDateTime();
					m_NavDest = (NavDestinations)reader.ReadInt();
					
					// the bools
					m_bActive = reader.ReadBool();
					m_bGraphics = reader.ReadBool();					

					// if graphics were on remake them thru deserialise constructor
					if( m_bGraphics )
						m_Graphics = new ChampGraphics(this, reader);

					// and the restart...
					m_bRestart = reader.ReadBool();
					m_RestartDelay = reader.ReadTimeSpan();
					
					if( reader.ReadBool() && !m_bActive && m_bRestart )
					{
						// in this case the champ is activley in restart mode, so create new timer
						//pla: 13/01/07
						//changed so we don't lose time on restart
						if (ts == TimeSpan.Zero)
								DoTimer(m_RestartDelay);
						else
								DoTimer(ts);
					}
					else if( m_bActive )
					{					
						// if spawn was active then start the wheels turning...
						StartSlice();
					}
										
					break;
				}
				
			}

		}
Exemplo n.º 8
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_CurrentAI = (AIType)reader.ReadInt();
			m_DefaultAI = (AIType)reader.ReadInt();

			m_iRangePerception = reader.ReadInt();
			m_iRangeFight = reader.ReadInt();

			m_iTeam = reader.ReadInt();

			m_dActiveSpeed = reader.ReadDouble();
			m_dPassiveSpeed = reader.ReadDouble();
			m_dCurrentSpeed = reader.ReadDouble();

			double activeSpeed = m_dActiveSpeed;
			double passiveSpeed = m_dPassiveSpeed;

			//			SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

			bool isStandardActive = false;
			for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
				isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

			bool isStandardPassive = false;
			for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
				isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

			if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
				m_dCurrentSpeed = activeSpeed;
			else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
				m_dCurrentSpeed = passiveSpeed;

			if ( isStandardActive )
				m_dActiveSpeed = activeSpeed;

			if ( isStandardPassive )
				m_dPassiveSpeed = passiveSpeed;

			if ( m_iRangePerception == OldRangePerception )
				m_iRangePerception = DefaultRangePerception;

			m_pHome.X = reader.ReadInt();
			m_pHome.Y = reader.ReadInt();
			m_pHome.Z = reader.ReadInt();

			if ( version >= 1 )
			{
				m_iRangeHome = reader.ReadInt();

				int i, iCount;

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellAttack.Add( type );
					}
				}

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellDefense.Add( type );
					}
				}
			}
			else
			{
				m_iRangeHome = 0;
			}

			if ( version >= 2 )
			{
				m_FightMode = ( FightMode )reader.ReadInt();

				m_bControled = reader.ReadBool();
				m_ControlMaster = reader.ReadMobile();
				m_ControlTarget = reader.ReadMobile();
				m_ControlDest = reader.ReadPoint3D();
				m_ControlOrder = (OrderType) reader.ReadInt();

				m_dMinTameSkill = reader.ReadDouble();

				if ( version < 9 )
					reader.ReadDouble();

				m_bTamable = reader.ReadBool();
				m_bSummoned = reader.ReadBool();

				if ( m_bSummoned )
				{
					m_SummonEnd = reader.ReadDeltaTime();
					new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
				}

				m_iControlSlots = reader.ReadInt();
			}
			else
			{
				m_FightMode = FightMode.All | FightMode.Closest;

				m_bControled = false;
				m_ControlMaster = null;
				m_ControlTarget = null;
				m_ControlOrder = OrderType.None;
			}

			if ( version >= 3 ) // loyalty redo
			{
				m_Loyalty = (PetLoyalty)reader.ReadInt();

				if (version < 23)
					m_Loyalty = (PetLoyalty)((int)m_Loyalty * 10);
			}
			else
				m_Loyalty = PetLoyalty.WonderfullyHappy;


			if ( version >= 4 )
				m_CurrentWayPoint = reader.ReadItem() as WayPoint;

			if ( version >= 5 )
				m_SummonMaster = reader.ReadMobile();

			if ( version >= 6 )
			{
				m_HitsMax = reader.ReadInt();
				m_StamMax = reader.ReadInt();
				m_ManaMax = reader.ReadInt();
				m_DamageMin = reader.ReadInt();
				m_DamageMax = reader.ReadInt();
			}

			if ( version >= 7 && version < 18) // Adam: eliminate crazy resistances ver. 18
			{
				int dummy;
				dummy = reader.ReadInt();	// PhysicalResistance
				dummy = reader.ReadInt();	// PhysicalDamage
				dummy = reader.ReadInt();	// FireResistance
				dummy = reader.ReadInt();	// FireDamage
				dummy = reader.ReadInt();	// ColdResistance
				dummy = reader.ReadInt();	// ColdDamage
				dummy = reader.ReadInt();	// PoisonResistance
				dummy = reader.ReadInt();	// PoisonDamage
				dummy = reader.ReadInt();	// EnergyResistance
				dummy = reader.ReadInt();	// EnergyDamage
			}

			//if ( version >= 7 && version >= 18) // Adam: eliminate crazy resistances ver. 18
			//{
			//	m_PhysicalResistance = reader.ReadInt();
			//	m_PhysicalDamage = reader.ReadInt();
			//}

			if ( version >= 8 )
				m_Owners = reader.ReadMobileList();
			else
				m_Owners = new ArrayList();

			if ( version >= 10 )
			{
				m_IsDeadPet = reader.ReadBool();
				m_IsBonded = reader.ReadBool();
				m_BondingBegin = reader.ReadDateTime();
				m_OwnerAbandonTime = reader.ReadDateTime();
			}

			if ( version >= 11 )
				m_HasGeneratedLoot = reader.ReadBool();
			else
				m_HasGeneratedLoot = true;

			if( version >= 12 )
			{
				m_StatLossTime = reader.ReadDateTime();
			}

			if( version >= 13 ) //Pigpen - Addition for IOB Sytem
			{
				m_IOBAlignment = (IOBAlignment)reader.ReadInt();
			}

			if( version >= 14 ) //Pix: IOBLeader/IOBFollower
			{
				m_IOBFollower = reader.ReadBool();
				m_IOBLeader = reader.ReadMobile();
			}

			if( version >= 15 ) //Pix: Spawner
			{
				m_Spawner = (Spawner)reader.ReadItem();
			}

			if( version >= 16 ) //Pix: Lifespan
			{
				m_lifespan = reader.ReadDeltaTime();
			}
			if( version >= 17 && version < 30 ) //Kit: preferred target ai
			{	// eliminated in version 30
				//m_preferred = reader.ReadBool();
				//m_preferredTargetType = reader.ReadMobile();
				//Sortby = (SortTypes)reader.ReadInt();
				reader.ReadBool();
				reader.ReadMobile();
				reader.ReadInt();
			}
			if( version >= 18 ) //Adam: eliminate stupid resistances
			{
				// see above - version 7
			}
			if( version >= 19 ) //Kit: NavStar
			{
				Destination = reader.ReadPoint3D();

				dest = (NavDestinations)reader.ReadInt();

				Nav = (NavBeacon)reader.ReadItem();
			}
			if( version >= 20 ) //Adam: convert BardImmune from an override to a property
			{
				m_bBardImmune = reader.ReadBool();
			}

			if(version >= 21 )
			{
				loyaltyfeed = reader.ReadDateTime();
			}

			if(version >= 22)
			{
				m_Flags = (CreatureFlags)reader.ReadInt();
			}

			if (version >= 24)
			{
				m_ControlSlotModifier = reader.ReadDouble();
				m_Patience = reader.ReadInt();
				m_Wisdom = reader.ReadInt();
				m_Temper = reader.ReadInt();
				m_MaxLoyalty = reader.ReadInt();
			}

            if (version >= 25)
            {
                m_HitsRegenGene = reader.ReadDouble();
                m_ManaRegenGene = reader.ReadDouble();
                m_StamRegenGene = reader.ReadDouble();
            }

            // note the LESS THAN symbol instead of GTE
            // this is an example of run-once deserialization code - every old critter will run this once.
            if (version < 26)
                InitializeGenes();

            // version 27
            if (version >= 27)
                m_LifespanMinutes = reader.ReadInt();

			// we need to reset this because reading the Flags will have turned it off
			//	the flags value will obnly be valid when version >= 28
			if (version < 28)
				IsScaredOfScaryThings = true;

			/*	versions < 29 get their FightMode upgraded to the new [Flags] version
			public enum FightMode
			{
				None,			// Never focus on others
				Aggressor,		// Only attack Aggressors
				Strongest,		// Attack the strongest
				Weakest,		// Attack the weakest
				Closest, 		// Attack the closest
				Evil,			// Only attack aggressor -or- negative karma
				Criminal,		// Attack the criminals
				Player
			}
			 */
			if (version < 29)
			{
				switch ((int)m_FightMode)
				{	// now outdated values
					case 0: m_FightMode = (FightMode)0x00; break;	/*None*/
					case 1: m_FightMode = (FightMode)0x01; break;	/*Aggressor*/
					case 2: m_FightMode = (FightMode)0x02; break;	/*Strongest*/
					case 3: m_FightMode = (FightMode)0x04; break;	/*Weakest*/
					case 4: m_FightMode = (FightMode)0x08; break;	/*Closest*/
					case 5: m_FightMode = (FightMode)0x10; break;	/*Evil*/
					case 6: m_FightMode = (FightMode)0x20; break;	/*Criminal*/
					case 7: m_FightMode = (FightMode)0x40; break;	/*Player*/
				}
			}

			/* versions < 30 get their FightMode upgraded to the new [Flags] version
			public enum FightMode
			{
				None		= 0x00,		// Never focus on others
				Aggressor	= 0x01,		// Only attack Aggressors
				Strongest	= 0x02,		// Attack the strongest
				Weakest		= 0x04,		// Attack the weakest
				Closest		= 0x08, 	// Attack the closest
				Evil		= 0x10,		// Only attack aggressor -or- negative karma
				Criminal	= 0x20,		// Attack the criminals
				Player		= 0x40		// Attack Players (Vampires for feeding on blood)
			}
			 */
			if (version < 30)
			{
				switch ((int)m_FightMode)
				{
					case 0x00 /*None*/		: m_FightMode = FightMode.None; break;
					case 0x01 /*Aggressor*/	: m_FightMode = FightMode.Aggressor; break;
					case 0x02 /*Strongest*/	: m_FightMode = FightMode.All | FightMode.Strongest; break;
					case 0x04 /*Weakest*/	: m_FightMode = FightMode.All | FightMode.Weakest; break;
					case 0x08 /*Closest*/	: m_FightMode = FightMode.All | FightMode.Closest; break;
					case 0x10 /*Evil*/		: m_FightMode = FightMode.Aggressor | FightMode.Evil; break;
					case 0x20 /*Criminal*/	: m_FightMode = FightMode.Aggressor | FightMode.Criminal; break;
					case 0x40 /*Player*/	: m_FightMode = FightMode.All | FightMode.Closest; break;
				}
			}

			// new Fight Style for enhanced AI
			if (version >= 31)
				m_FightStyle = (FightStyle)reader.ReadInt();

			// version 32, read in the AI data, but we must construct the AI object first
			ChangeAIType(m_CurrentAI);
			if (version >= 32)
			{
				if (AIObject != null)
					AIObject.Deserialize(reader);
			}

			if (version >= 33)
			{
				m_ConstantFocus = reader.ReadMobile();
			}

			// -------------------------------
			// After all the reading is done
			// -------------------------------
			RefreshLifespan();
			CheckStatTimers();
			AddFollowers();
		}
Exemplo n.º 9
0
        public static void AddRequest(Mobile m, NavDestinations nav)
        {
            NavList n = new NavList(m, nav);

            Navs.Add(n);
        }
Exemplo n.º 10
0
 public NavList(Mobile m, NavDestinations dest)
 {
     requester = m;
     Nav       = dest;
 }
Exemplo n.º 11
0
 public Beacon_Sort(SortDirection direction, NavDestinations dest)
 {
     m_direction = direction;
     nav         = dest;
 }
Exemplo n.º 12
0
        private bool SetNavMenu()
        {
            List <MenuItem> output = new();

            Type type = typeof(Terminal);

            PropertyInfo[] terminalProps = type.GetProperties()
                                           .Where(p => p.PropertyType.GetInterfaces().Contains(typeof(INavegable)))
                                           .ToArray();

            int i = 0;

            foreach (PropertyInfo p in terminalProps)
            {
                LandingPageAttribute landingPage = (LandingPageAttribute)p.GetCustomAttributes(typeof(LandingPageAttribute)).FirstOrDefault();
                if (landingPage.IsEnabled)
                {
                    ButtonSettingsAttribute buttonSetting = (ButtonSettingsAttribute)p.GetCustomAttributes(typeof(ButtonSettingsAttribute)).FirstOrDefault();

                    MenuItem item = new(i, landingPage.Display, landingPage.IsSelected);
                    item.SetContet($"Views/{landingPage.Page}.xaml");

                    item.TextColor = new SolidColorBrush(buttonSetting.TextColor);

                    byte[]   bgcColorChannels = buttonSetting.BackgroundColor.ToChannelsBytes();
                    HSBColor middleColor      = HSBColor.FromARGB(bgcColorChannels);
                    middleColor.Desaturate(56);

                    item.BackgroundColor = new LinearGradientBrush(
                        new GradientStopCollection(new List <GradientStop>
                    {
                        new GradientStop(buttonSetting.BackgroundColor, 0.5),
                        new GradientStop(middleColor.ToARGB().ToMediaColor(), 0.75),
                        new GradientStop(buttonSetting.BackgroundColor, 1)
                    }),
                        new Point(0, 0),
                        new Point(0, 1)
                        );

                    output.Add(item);
                    i++;
                }
            }

            output.Reverse();
            NavDestinations = output.ToObservableCollection();

            if (NavDestinations.Count > 0)
            {
                Destination = NavDestinations.FirstOrDefault(m => m.DefaultSelected);
                if (Destination == null)
                {
                    Destination = NavDestinations[0];
                }
            }

            if (Destination != null)
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 13
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 11:
				{
					m_LootPack = reader.ReadItem();
					goto case 10;
				}
				case 10:
				{
					m_DynamicCopy = reader.ReadBool();
					goto case 9;
				}
				case 9:
				{
					m_TemplateMobile = reader.ReadMobile();
					m_TemplateItem = reader.ReadItem();
					m_TemplateEnabled = reader.ReadBool();
					
					goto case 8;
				}
				case 8:
				{
					
					m_MobVendorInvul = (BOOL)reader.ReadInt();
					goto case 7;
				}
				case 7:
				{
					int dummy = 0;
					bool b = reader.ReadBool();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					goto case 6;
				}
				case 6:
				{
					int dummy = 0;
					string s = reader.ReadString();
					dummy = reader.ReadInt();
					goto case 5;
				}
				case 5:
				{
					m_NavDest = (NavDestinations)reader.ReadInt();
					goto case 4;
				}
				case 4:
				{
					m_MobDirection = (Direction)reader.ReadInt();
					goto case 3;
				}
                case 3:
				{	// obsolete: m_FreezeDecay
					bool dmy = reader.ReadBool();
					goto case 2;
				}

				case 2:
				{
					m_WayPoint = reader.ReadItem() as WayPoint;

					goto case 1;
				}

				case 1:
				{
					m_Group = reader.ReadBool();
					
					goto case 0;
				}

				case 0:
				{
					m_MinDelay = reader.ReadTimeSpan();
					m_MaxDelay = reader.ReadTimeSpan();
					m_Count = reader.ReadInt();
					m_Team = reader.ReadInt();
					m_HomeRange = reader.ReadInt();
					m_Running = reader.ReadBool();

					TimeSpan ts = TimeSpan.Zero;

					if ( m_Running )
						ts = reader.ReadDeltaTime() - DateTime.Now;
					
					int size = reader.ReadInt();

					m_CreaturesName = new ArrayList( size );

					for ( int i = 0; i < size; ++i )
					{
						string typeName = reader.ReadString();

						m_CreaturesName.Add( typeName );

						if ( SpawnerType.GetType( typeName ) == null )
						{
							if ( m_WarnTimer == null )
								m_WarnTimer = new WarnTimer();

							m_WarnTimer.Add( Location, Map, typeName );
						}
					}

					int count = reader.ReadInt();

					m_Creatures = new ArrayList( count );

					for ( int i = 0; i < count; ++i )
					{
						IEntity e = World.FindEntity( reader.ReadInt() );

						if ( e != null )
							m_Creatures.Add( e );
					}

					if ( m_Running )
						DoTimer( ts );

					break;
				}
			}
		}