Difference between revisions of "Equipment.plist"

From Elite Wiki
(Added a scriptInfo entry)
Line 5: Line 5:
 
== equipment structure ==
 
== equipment structure ==
  
The following equipment data are read in by oolite.
+
The following equipment data are read in by Oolite.
  
 +
In XML:
 
  <plist version="1.0">
 
  <plist version="1.0">
 
  <array>
 
  <array>
Line 23: Line 24:
 
  </plist>
 
  </plist>
  
 +
In ascii
 +
(
 +
    (
 +
      1,
 +
      300,
 +
      Missile,
 +
      "EQ_MISSILE",
 +
      "Faulcon de Lacy HM3 homing missile, fast and accurate when used in conjunction with standard targetting scanners.",
 +
        {
 +
          "available_to_all" = YES;
 +
        }
 +
    )
 +
)
  
 
1) The first entry is an integer that determines the technical level from witch the equipment can be bought. A level of 99 has a special meaning. Only this value can be changed by script. ''Please note that the number entered here should be one less than the level you wish it to apply for in the game. So if you want a type of equipment to be available at Technical Level 15 (the highest for a system in the strict version of Oolite) you must use the number 14 for this entry.''
 
1) The first entry is an integer that determines the technical level from witch the equipment can be bought. A level of 99 has a special meaning. Only this value can be changed by script. ''Please note that the number entered here should be one less than the level you wish it to apply for in the game. So if you want a type of equipment to be available at Technical Level 15 (the highest for a system in the strict version of Oolite) you must use the number 14 for this entry.''
Line 36: Line 50:
 
6) This is a dictionary that can contain several special features like:
 
6) This is a dictionary that can contain several special features like:
  
 +
In XML:
 
  <key>available_to_all</key>
 
  <key>available_to_all</key>
 
  <true/>
 
  <true/>
 +
 +
<key>conditions</key>
 +
      <array>
 +
              <string>systemGovernment_number morethan 3</string>
 +
      </array>
 
   
 
   
 
  <key>requires_empty_pylon</key>
 
  <key>requires_empty_pylon</key>
Line 62: Line 82:
 
  <key>conditions</key>
 
  <key>conditions</key>
 
  <string>systemGovernment_number morethan 3</string>
 
  <string>systemGovernment_number morethan 3</string>
 
<key>conditions</key>
 
      <array>
 
              <string>systemGovernment_number morethan 3</string>
 
      </array>
 
 
   
 
   
 
  <key>portable_between_ships</key>
 
  <key>portable_between_ships</key>
 
  <true/>
 
  <true/>
 
+
 +
<key>script_info</key>
 +
<dict>
 +
    <key>myCustomProperty</key>
 +
    <string>0</string>
 +
</dict>
 +
In ascii:
 +
{
 +
    "available_to_all" = 1;
 +
    conditions = (
 +
        "systemGovernment_number morethan 3"
 +
    );
 +
    "incompatible_with_equipment" = "EQ_FUEL_SCOOPS";
 +
    "portable_between_ships" = 1;
 +
    "requires_cargo_space" = 5;
 +
    "requires_clean" = 1;
 +
    "requires_empty_pylon" = 1;
 +
    "requires_equipment" = "EQ_FUEL_SCOOPS";
 +
    "requires_mounted_pylon" = 1;
 +
    "requires_not_clean" = 1;
 +
    "script_info" = { myCustomProperty = 0; };
 +
}
  
 
Most names will explain themselves. In this list the empty/mounted pylons are not necessary when the equipment ends on MINE or MISSILE. All keys are already available in version 1.65.
 
Most names will explain themselves. In this list the empty/mounted pylons are not necessary when the equipment ends on MINE or MISSILE. All keys are already available in version 1.65.
Line 81: Line 117:
  
 
NOTE: requires_cargo_space is only used to determine a condition to show an item on the list. Currently it uses no cargo space when bought. This makes it probably useless for other equipment than internal Oolite equipment that used this key.  
 
NOTE: requires_cargo_space is only used to determine a condition to show an item on the list. Currently it uses no cargo space when bought. This makes it probably useless for other equipment than internal Oolite equipment that used this key.  
 +
 +
NOTE2: "script_info" is added with test release 1.74. It contains a directory of custom entries that become properties of [[Oolite_JavaScript_Reference:_EquipmentInfo|EquipmentInfo.scriptInfo]]
  
 
[[Category:Oolite scripting]]
 
[[Category:Oolite scripting]]

Revision as of 10:12, 14 May 2010

using equipment

Player buyable equipment is stored in a equipment.plist file that resides in the config folder of a OXP. You can add equipment by adding arrays to this plist file. Every equipment array is build of an array of entries.

equipment structure

The following equipment data are read in by Oolite.

In XML:

<plist version="1.0">
<array>
    <array>
         <integer>1</integer>
         <integer>300</integer>
         <string>Missile</string>
         <string>EQ_MISSILE</string>
         <string>Faulcon de Lacy HM3 homing missile, fast and accurate when used in conjunction with standard targetting scanners.</string>
         <dict>
              <key>available_to_all</key>
              <true/>
         </dict>
    </array>
</array>
</plist>

In ascii

(
   (
      1,
      300,
      Missile,
      "EQ_MISSILE",
      "Faulcon de Lacy HM3 homing missile, fast and accurate when used in conjunction with standard targetting scanners.",
       {
          "available_to_all" = YES;
       }
    )
)

1) The first entry is an integer that determines the technical level from witch the equipment can be bought. A level of 99 has a special meaning. Only this value can be changed by script. Please note that the number entered here should be one less than the level you wish it to apply for in the game. So if you want a type of equipment to be available at Technical Level 15 (the highest for a system in the strict version of Oolite) you must use the number 14 for this entry.

2) The second entry is the costs of the equipment in tenths of a credit.

3) This is a string that shows the name of the equipment as seen by the player.

4) This is a string that shows the name of the equipment that is used by scripting. Must start with EQ_ and endings like _MISSILE or _MINE give it a special handling.

5) This string gives a short description of the item.

6) This is a dictionary that can contain several special features like:

In XML:

<key>available_to_all</key>
<true/>

<key>conditions</key>
      <array>
              <string>systemGovernment_number morethan 3</string>
      </array>

<key>requires_empty_pylon</key>
<true/>

<key>requires_mounted_pylon</key>
<true/>

<key>requires_clean</key>
<true/>

<key>requires_not_clean</key>
<true/>

<key>requires_cargo_space</key>
<integer>5</integer>

<key>requires_equipment</key>
<string>EQ_FUEL_SCOOPS</string>

<key>incompatible_with_equipment</key>
<string>EQ_FUEL_SCOOPS</string>

<key>conditions</key>
<string>systemGovernment_number morethan 3</string>

<key>portable_between_ships</key>
<true/>

<key>script_info</key>
<dict>
   <key>myCustomProperty</key>
   <string>0</string>
</dict>

In ascii:

{
   "available_to_all" = 1;
   conditions = (
       "systemGovernment_number morethan 3"
   );
   "incompatible_with_equipment" = "EQ_FUEL_SCOOPS";
   "portable_between_ships" = 1;
   "requires_cargo_space" = 5;
   "requires_clean" = 1;
   "requires_empty_pylon" = 1;
   "requires_equipment" = "EQ_FUEL_SCOOPS";
   "requires_mounted_pylon" = 1;
   "requires_not_clean" = 1;
   "script_info" = { myCustomProperty = 0; };
}

Most names will explain themselves. In this list the empty/mounted pylons are not necessary when the equipment ends on MINE or MISSILE. All keys are already available in version 1.65.

Conditions is new since Oolite 1.69. It can contain a single string with one condition or an array of condition strings. Conditions are only checked when the equipment would be available by the other criteria.

available_to_all means all ships can buy the item. When not set it is only buyable when the equipment is defined in the shipyard.plist under optional_equipment.

There is only a bug in versions until 1.71: requires_equipment triggers the incompatible_with_equipment key. This bug can be bypassed by also defining a EQ_DUMMY equipment for incompatible_with_equipment when using the requires_equipment.

NOTE: requires_cargo_space is only used to determine a condition to show an item on the list. Currently it uses no cargo space when bought. This makes it probably useless for other equipment than internal Oolite equipment that used this key.

NOTE2: "script_info" is added with test release 1.74. It contains a directory of custom entries that become properties of EquipmentInfo.scriptInfo