Exemple #1
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 public Object()
 {
     ++_numObjects;
     _createdBy = null;
     _itemType = ObjTemplate.ObjectType.trash;
     _material = 0;
     _size = 0;
     _volume = 0;
     _craftsmanship = 0;
     _wearLocation = 0;
     _weight = 0;
     _cost = 0;
     _level = 1;
     _timer = -1;
     _condition = 100;
     _flyLevel = CharData.FlyLevel.ground;
     int count;
     for( count = 0; count < Limits.NUM_ITEM_EXTRA_VECTORS; ++count )
         _extraFlags[ count ] = 0;
     for (count = 0; count < Limits.NUM_USE_FLAGS_VECTORS; ++count)
         _antiFlags[count] = 0;
     for (count = 0; count < Limits.NUM_WEAR_FLAGS_VECTORS; ++count)
         _wearFlags[count] = 0;
     for (count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count)
         _affectedBy[ count ] = 0;
     for( count = 0; count < 8; ++count )
         _values[ count ] = 0;
 }
Exemple #2
0
 void SetObjectFlyLevel(Object obj, CharData.FlyLevel newLevel)
 {
     obj.FlyLevel = newLevel;
     if (newLevel < 0 || newLevel > CharData.FlyLevel.high)
     {
         Log.Error("SetObjectFlyLevel: level out of range", 0);
         return;
     }
     foreach (Object item in obj.Contains)
     {
         SetObjectFlyLevel(item, newLevel);
     }
     return;
 }
Exemple #3
0
 void SetFlyLevel(CharData ch, CharData.FlyLevel new_level)
 {
     if (new_level < 0 || new_level > CharData.FlyLevel.high)
     {
         Log.Error("SetFlyLevel: level out of range", 0);
         return;
     }
     ch.FlightLevel = new_level;
     foreach (Object obj in ch.Carrying)
     {
         obj.FlyLevel = new_level;
     }
     return;
 }
Exemple #4
0
        /// <summary>
        /// Creates an object and initializes it to the parent object values.
        /// </summary>
        /// <param name="indexData"></param>
        public Object( ObjTemplate indexData )
        {
            if( indexData == null )
            {
                Log.Error( "Object.Object(ObjIndex *) called with null ObjIndex.", 0 );
                return;
            }

            ++_numObjects;
            _objIndexNumber = indexData.IndexNumber;
            _objIndexData = indexData;
            _wearLocation = ObjTemplate.WearLocation.none;
            _flyLevel = 0;
            _level = 1;
            _timer = -1;
            _createdBy = null;
            _extraDescription = indexData.ExtraDescriptions;
            _name = indexData.Name;
            _shortDescription = indexData.ShortDescription;
            _fullDescription = indexData.FullDescription;
            _specFun = indexData.SpecFun;
            _itemType = indexData.ItemType;
            int count;
            for( count = 0; count < Limits.NUM_ITEM_EXTRA_VECTORS; ++count )
                _extraFlags[ count ] = indexData.ExtraFlags[ count ];
            for( count = 0; count < Limits.NUM_AFFECT_VECTORS; ++count )
            {
                _affectedBy[ count ] = indexData.AffectedBy[ count ];
            }
            _wearFlags = indexData.WearFlags;
            _antiFlags = indexData.UseFlags;
            _material = indexData.Material;
            _size = indexData.Size;
            _volume = indexData.Volume;
            _craftsmanship = indexData.CraftsmanshipLevel;
            for( count = 0; count < 8; ++count )
                _values[ count ] = indexData.Values[ count ];
            _weight = indexData.Weight;
            _cost = indexData.Cost;
            _condition = indexData.Condition;
            _trap = indexData.Trap;

            // Create vehicle data for vehicles that are created.  The
            // bulk of the data is stored in the object - Xangis
            if( _itemType == ObjTemplate.ObjectType.vehicle || _itemType == ObjTemplate.ObjectType.ship )
            {
                Vehicle vehicle = new Vehicle();
                if( _itemType == ObjTemplate.ObjectType.ship )
                    vehicle.Type = Vehicle.VehicleType.ship_any_water;
                else
                    vehicle.Type = Vehicle.VehicleType.flat_land;
                // need to create virtual rooms for the rest of the data
                vehicle.HullPoints = _values[ 5 ];
                vehicle.FlyLevel = 0;
                vehicle.Direction = 0;
                vehicle.Speed = 0;
                vehicle.Occupants = 0;
                vehicle.MovementTimer = 0;
                vehicle.MovementDelay = 0;
                vehicle.MovementPointer = 0;
                vehicle.MovementScript = String.Empty;
                vehicle.ParentObject = this;
                vehicle.EntryRoomTemplateNumber = _values[ 1 ];
                vehicle.ControlPanelRoomTemplateNumber = _values[ 2 ];
            }

            ++indexData.QuantityLoaded;
            --indexData.Scarcity;

            Database.ObjectList.Add( this );

            return;
        }
Exemple #5
0
        /// <summary>
        /// Give an obj to a char.
        /// </summary>
        /// <param name="ch"></param>
        public void ObjToChar( CharData ch )
        {
            ch.Carrying.Add(this);
            _carriedBy = ch;
            ch.CarryNumber += 1;
            ch.CarryWeight += GetWeight();

            if( HasFlag( ObjTemplate.ITEM_LIT ) )
                ch.InRoom.Light++;
            _flyLevel = ch.FlightLevel;
        }
Exemple #6
0
        /// <summary>
        /// Gets the scan info for the provided room.
        /// </summary>
        /// <param name="ch"></param>
        /// <param name="room"></param>
        /// <param name="buffer"></param>
        /// <param name="flyLevel"></param>
        /// <returns></returns>
        public static int ScanThisRoom(CharData ch, Room room, string buffer, CharData.FlyLevel flyLevel)
        {
            int    numberFound = 0;
            string levelMsg;

            int diff = flyLevel - ch.FlightLevel;

            switch (diff)
            {
            case -3:
                levelMsg = String.Format("&n who is very far beneath you.");
                break;

            case -2:
                levelMsg = String.Format("&n who is not far beneath you.");
                break;

            case -1:
                levelMsg = String.Format("&n who is close by beneath you.");
                break;

            case 1:
                levelMsg = String.Format("&n who is flying close by above you.");
                break;

            case 2:
                levelMsg = String.Format("&n who is flying not far above you.");
                break;

            case 3:
                levelMsg = String.Format("&n who is flying very far above you.");
                break;

            default:
                levelMsg = String.Format("&n who is an unknown distance away from you.");
                break;
            }

            foreach (CharData target in room.People)
            {
                if (target.FlightLevel == flyLevel)
                {
                    Visibility visibility = Look.HowSee(ch, target);
                    switch (visibility)
                    {
                    case Visibility.sense_hidden:
                    case Visibility.invisible:
                    case Visibility.too_dark:
                    default:
                        break;

                    case Visibility.visible:
                        buffer += (target.ShowNameTo(ch, true));
                        buffer += levelMsg;
                        buffer += "&n\r\n";
                        numberFound++;
                        break;

                    case Visibility.sense_infravision:
                        buffer += "&+rYou sense a being within the darkness";
                        buffer += levelMsg;
                        buffer += "&n\r\n";
                        numberFound++;
                        break;
                    }
                }
            }
            return(numberFound);
        }