WellKnownKeys.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. /*
  2. ** Command & Conquer Generals Zero Hour(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: WellKnownKeys.h ///////////////////////////////////////////////////////////
  24. //-----------------------------------------------------------------------------
  25. //
  26. // Westwood Studios Pacific.
  27. //
  28. // Confidential Information
  29. // Copyright (C) 2001 - All Rights Reserved
  30. //
  31. //-----------------------------------------------------------------------------
  32. //
  33. // Project: RTS3
  34. //
  35. // File name: WellKnownKeys.h
  36. //
  37. // Created: Steven Johnson, November 2001
  38. //
  39. // Desc: Central repository for "well-known" Dict key definitions and descriptions.
  40. //
  41. //-----------------------------------------------------------------------------
  42. ///////////////////////////////////////////////////////////////////////////////
  43. #pragma once
  44. #ifndef _H_WELLKNOWNKEYS
  45. #define _H_WELLKNOWNKEYS
  46. #include "Common/NameKeyGenerator.h"
  47. #ifdef INSTANTIATE_WELL_KNOWN_KEYS
  48. #define DEFINE_KEY(NAME) extern const StaticNameKey TheKey_##NAME; const StaticNameKey TheKey_##NAME(#NAME);
  49. #else
  50. #define DEFINE_KEY(NAME) extern const StaticNameKey TheKey_##NAME;
  51. #endif
  52. // ---------------------------------------------------------------------------------------
  53. // well-known keys in Team dicts.
  54. // ---------------------------------------------------------------------------------------
  55. /**
  56. Which: Team
  57. Type: AsciiString
  58. Usage: name of team.
  59. */
  60. DEFINE_KEY(teamName)
  61. /**
  62. Which: Team
  63. Type: AsciiString
  64. Usage: name of the player-or-team that owns this team.
  65. */
  66. DEFINE_KEY(teamOwner)
  67. /**
  68. Which: Team
  69. Type: Bool
  70. Usage: if true, only one instance of this team can be made.
  71. */
  72. DEFINE_KEY(teamIsSingleton)
  73. /**
  74. Which: Team
  75. Type: AsciiString
  76. Usage: Name of waypoint where team spawns.
  77. */
  78. DEFINE_KEY(teamHome)
  79. /**
  80. Which: Team
  81. Type: AsciiString
  82. Usage: Thing name of first batch of units.
  83. */
  84. DEFINE_KEY(teamUnitType1)
  85. /**
  86. Which: Team
  87. Type: Int
  88. Usage: Minimum number of units of type 1 to build.
  89. */
  90. DEFINE_KEY(teamUnitMinCount1)
  91. /**
  92. Which: Team
  93. Type: Int
  94. Usage: Maximum number of units of type 1 to build.
  95. */
  96. DEFINE_KEY(teamUnitMaxCount1)
  97. /**
  98. Which: Team
  99. Type: AsciiString
  100. Usage: Thing name of second batch of units.
  101. */
  102. DEFINE_KEY(teamUnitType2)
  103. /**
  104. Which: Team
  105. Type: Int
  106. Usage: Minimum number of units of type 2 to build.
  107. */
  108. DEFINE_KEY(teamUnitMinCount2)
  109. /**
  110. Which: Team
  111. Type: Int
  112. Usage: Maximum number of units of type 2 to build.
  113. */
  114. DEFINE_KEY(teamUnitMaxCount2)
  115. /**
  116. Which: Team
  117. Type: AsciiString
  118. Usage: Thing name of third batch of units.
  119. */
  120. DEFINE_KEY(teamUnitType3)
  121. /**
  122. Which: Team
  123. Type: Int
  124. Usage: Minimum number of units of type 3 to build.
  125. */
  126. DEFINE_KEY(teamUnitMinCount3)
  127. /**
  128. Which: Team
  129. Type: Int
  130. Usage: Maximum number of units of type 3 to build.
  131. */
  132. DEFINE_KEY(teamUnitMaxCount3)
  133. /**
  134. Which: Team
  135. Type: AsciiString
  136. Usage: Thing name of fourth batch of units.
  137. */
  138. DEFINE_KEY(teamUnitType4)
  139. /**
  140. Which: Team
  141. Type: Int
  142. Usage: Minimum number of units of type 4 to build.
  143. */
  144. DEFINE_KEY(teamUnitMinCount4)
  145. /**
  146. Which: Team
  147. Type: Int
  148. Usage: Maximum number of units of type 4 to build.
  149. */
  150. DEFINE_KEY(teamUnitMaxCount4)
  151. /**
  152. Which: Team
  153. Type: AsciiString
  154. Usage: Thing name of fifth batch of units.
  155. */
  156. DEFINE_KEY(teamUnitType5)
  157. /**
  158. Which: Team
  159. Type: Int
  160. Usage: Minimum number of units of type 5 to build.
  161. */
  162. DEFINE_KEY(teamUnitMinCount5)
  163. /**
  164. Which: Team
  165. Type: Int
  166. Usage: Maximum number of units of type 5 to build.
  167. */
  168. DEFINE_KEY(teamUnitMaxCount5)
  169. /**
  170. Which: Team
  171. Type: AsciiString
  172. Usage: Thing name of sixth batch of units.
  173. */
  174. DEFINE_KEY(teamUnitType6)
  175. /**
  176. Which: Team
  177. Type: Int
  178. Usage: Minimum number of units of type 6 to build.
  179. */
  180. DEFINE_KEY(teamUnitMinCount6)
  181. /**
  182. Which: Team
  183. Type: Int
  184. Usage: Maximum number of units of type 6 to build.
  185. */
  186. DEFINE_KEY(teamUnitMaxCount6)
  187. /**
  188. Which: Team
  189. Type: AsciiString
  190. Usage: Thing name of seventh batch of units.
  191. */
  192. DEFINE_KEY(teamUnitType7)
  193. /**
  194. Which: Team
  195. Type: Int
  196. Usage: Minimum number of units of type 7 to build.
  197. */
  198. DEFINE_KEY(teamUnitMinCount7)
  199. /**
  200. Which: Team
  201. Type: Int
  202. Usage: Maximum number of units of type 7 to build.
  203. */
  204. DEFINE_KEY(teamUnitMaxCount7)
  205. /**
  206. Which: Team
  207. Type: AsciiString
  208. Usage: Name of script to execute when team is created for AI.
  209. */
  210. DEFINE_KEY(teamOnCreateScript)
  211. /**
  212. Which: Team
  213. Type: AsciiString
  214. Usage: Name of script to execute when AI team is in idle state.
  215. */
  216. DEFINE_KEY(teamOnIdleScript)
  217. /**
  218. Which: Team
  219. Type: Int
  220. Usage: Number of frames to wait after achieving the minimum number of units
  221. to try to recruit up to the maximum number of units.
  222. */
  223. DEFINE_KEY(teamInitialIdleFrames)
  224. /**
  225. Which: Team
  226. Type: AsciiString
  227. Usage: Name of a script to run each time a member on this team is destroyed.
  228. */
  229. DEFINE_KEY(teamOnUnitDestroyedScript)
  230. /**
  231. Which: Team
  232. Type: AsciiString
  233. Usage: Name of script to execute when team is destroyed.
  234. */
  235. DEFINE_KEY(teamOnDestroyedScript)
  236. /**
  237. Which: Team
  238. Type: Real
  239. Usage: Percent destroyed to trigger OnDamagedScript.
  240. 1.0 = 100% = trigger when team is all destroyed.
  241. 0 = 0% = trigger when first team member is destroyed.
  242. */
  243. DEFINE_KEY(teamDestroyedThreshold)
  244. /**
  245. Which: Team
  246. Type: Real
  247. Usage: Name of script to execute when enemy is sighted.
  248. */
  249. DEFINE_KEY(teamEnemySightedScript)
  250. /**
  251. Which: Team
  252. Type: Real
  253. Usage: Name of script to execute when all clear.
  254. */
  255. DEFINE_KEY(teamAllClearScript)
  256. /**
  257. Which: Team
  258. Type: Bool
  259. Usage: True if team auto reinforces.
  260. */
  261. DEFINE_KEY(teamAutoReinforce)
  262. /**
  263. Which: Team
  264. Type: Bool
  265. Usage: True if team can be recruited from by other ai teams.
  266. */
  267. DEFINE_KEY(teamIsAIRecruitable)
  268. /**
  269. Which: Team
  270. Type: Bool
  271. Usage: True if team can be recruited from by other ai teams.
  272. */
  273. DEFINE_KEY(teamIsBaseDefense)
  274. /**
  275. Which: Team
  276. Type: Bool
  277. Usage: True if team can be recruited from by other ai teams.
  278. */
  279. DEFINE_KEY(teamIsPerimeterDefense)
  280. /**
  281. Which: Team
  282. Type: Int
  283. Usage: The aggressiveness of the team: -2 Sleep, -1 Passive, 0 Normal, 1 Alert, 2 Aggressive
  284. */
  285. DEFINE_KEY(teamAggressiveness)
  286. /**
  287. Which: Team
  288. Type: Bool
  289. Usage: True if transports return to base.
  290. */
  291. DEFINE_KEY(teamTransportsReturn)
  292. /**
  293. Which: Team
  294. Type: Bool
  295. Usage: True if the team avoids threats.
  296. */
  297. DEFINE_KEY(teamAvoidThreats)
  298. /**
  299. Which: Team
  300. Type: Bool
  301. Usage: True if the team attacks the same target when auto-acquiring targets.
  302. */
  303. DEFINE_KEY(teamAttackCommonTarget)
  304. /**
  305. Which: Team
  306. Type: Int
  307. Usage: If a team is not singleton, max number of this team at one time.
  308. */
  309. DEFINE_KEY(teamMaxInstances)
  310. /**
  311. Which: Team
  312. Type: AsciiString
  313. Usage: Description comment field.
  314. */
  315. DEFINE_KEY(teamDescription)
  316. /**
  317. Which: Team
  318. Type: AsciiString
  319. Usage: Script that contains the conditions for team production.
  320. */
  321. DEFINE_KEY(teamProductionCondition)
  322. /**
  323. Which: Team
  324. Type: Int
  325. Usage: Team's production priority.
  326. */
  327. DEFINE_KEY(teamProductionPriority)
  328. /**
  329. Which: Team
  330. Type: Int
  331. Usage: Team's production priority increase on success amount.
  332. */
  333. DEFINE_KEY(teamProductionPrioritySuccessIncrease)
  334. /**
  335. Which: Team
  336. Type: Int
  337. Usage: Team's production priority decrease on failure amount.
  338. */
  339. DEFINE_KEY(teamProductionPriorityFailureDecrease)
  340. /**
  341. Which: Team
  342. Type: AsciiString
  343. Usage: Team's transport unit for reinforcements.
  344. */
  345. DEFINE_KEY(teamTransport)
  346. /**
  347. Which: Team
  348. Type: AsciiString
  349. Usage: Team's origin for reinforcements.
  350. */
  351. DEFINE_KEY(teamReinforcementOrigin)
  352. /**
  353. Which: Team
  354. Type: Bool
  355. Usage: Team's starts full flag (pack into transports) for reinforcement teams.
  356. */
  357. DEFINE_KEY(teamStartsFull)
  358. /**
  359. Which: Team
  360. Type: Bool
  361. Usage: Team's transports exit (leave the map) flag for reinforcement teams.
  362. */
  363. DEFINE_KEY(teamTransportsExit)
  364. /**
  365. Which: Team
  366. Type: Int
  367. Usage: What veterancy does this object have: 0 green, 1 normal, 2 veteran, 3 elite
  368. */
  369. DEFINE_KEY(teamVeterancy)
  370. /**
  371. Which: Team
  372. Type: Bool
  373. Usage: Does the team execute the actions in
  374. */
  375. DEFINE_KEY(teamExecutesActionsOnCreate)
  376. /**
  377. Which: Team
  378. Type: AsciiString
  379. Usage: This key is used in the same way that objectGrantUpgrades is used. See it for an explanation.
  380. */
  381. DEFINE_KEY(teamGenericScriptHook)
  382. // ---------------------------------------------------------------------------------------
  383. // well-known keys in MapObject dicts.
  384. // ---------------------------------------------------------------------------------------
  385. /**
  386. Which: MapObject Properties
  387. Type: AsciiString
  388. Usage: name of player or team that is to have ownership. if missing or null, owned by neutral player's default team.
  389. */
  390. DEFINE_KEY(originalOwner)
  391. /**
  392. Which: MapObject Properties
  393. Type: Real
  394. Usage: If unit is a light, how high the light is above the terrain.
  395. */
  396. DEFINE_KEY(lightHeightAboveTerrain)
  397. /**
  398. Which: MapObject Properties
  399. Type: Real
  400. Usage: If unit is a light, Outer bounds of the light. Reaches 0 intensity.
  401. */
  402. DEFINE_KEY(lightOuterRadius)
  403. /**
  404. Which: MapObject Properties
  405. Type: Real
  406. Usage: If unit is a light, Inside this radius the light is 100% intensity.
  407. */
  408. DEFINE_KEY(lightInnerRadius)
  409. /**
  410. Which: MapObject Properties
  411. Type: Int (RGB color in 0xAARRGGBB format)
  412. Usage: If unit is a light, Ambient color.
  413. */
  414. DEFINE_KEY(lightAmbientColor)
  415. /**
  416. Which: MapObject Properties
  417. Type: Int (RGB color in 0xAARRGGBB format)
  418. Usage: If unit is a light, Diffuse color.
  419. */
  420. DEFINE_KEY(lightDiffuseColor)
  421. /**
  422. Which: MapObject Properties
  423. Type: Ascii
  424. Usage: If unit is a waypoint, name of waypoint.
  425. */
  426. DEFINE_KEY(waypointName)
  427. /**
  428. Which: MapObject Properties
  429. Type: Int
  430. Usage: If unit is a waypoint, id of waypoint.
  431. */
  432. DEFINE_KEY(waypointID)
  433. /**
  434. Which: MapObject Properties
  435. Type: Int
  436. Usage: If unit is a waypoint, label for waypoint path.
  437. */
  438. DEFINE_KEY(waypointPathLabel1)
  439. /**
  440. Which: MapObject Properties
  441. Type: Int
  442. Usage: If unit is a waypoint, label for waypoint path.
  443. */
  444. DEFINE_KEY(waypointPathLabel2)
  445. /**
  446. Which: MapObject Properties
  447. Type: Int
  448. Usage: If unit is a waypoint, label for waypoint path.
  449. */
  450. DEFINE_KEY(waypointPathLabel3)
  451. /**
  452. Which: MapObject Properties
  453. Type: Bool
  454. Usage: If object is a waypoint, bi-directional flag.
  455. */
  456. DEFINE_KEY(waypointPathBiDirectional)
  457. /**
  458. Which: MapObject Properties
  459. Type: Ascii
  460. Usage: Name of unit.
  461. */
  462. DEFINE_KEY(objectName)
  463. /**
  464. Which: MapObject Properties
  465. Type: Bool
  466. Usage: Flag whether the object should be exported with a script list.
  467. */
  468. DEFINE_KEY(exportWithScript)
  469. /**
  470. Which: MapObject Properties
  471. Type: Int
  472. Usage: How much initial health this object has as percentage.
  473. */
  474. DEFINE_KEY(objectInitialHealth)
  475. /**
  476. Which: MapObject Properties
  477. Type: Int
  478. Usage: Override for default 'max' hitpoints for an object.
  479. */
  480. DEFINE_KEY(objectMaxHPs)
  481. /**
  482. Which: MapObject Properties
  483. Type: Bool
  484. Usage: Is the object enabled
  485. */
  486. DEFINE_KEY(objectEnabled)
  487. /**
  488. Which: MapObject Properties
  489. Type: Bool
  490. Usage: Can the object be destroyed
  491. */
  492. DEFINE_KEY(objectIndestructible)
  493. /**
  494. Which: MapObject Properties
  495. Type: Bool
  496. Usage: Can the AI sell this object for some loot
  497. */
  498. DEFINE_KEY(objectUnsellable)
  499. /**
  500. Which: MapObject Properties
  501. Type: Bool
  502. Usage: Can this object be acquired by the player (but not auto-acquired by AI).
  503. */
  504. DEFINE_KEY(objectTargetable)
  505. /**
  506. Which: MapObject Properties
  507. Type: Bool
  508. Usage: Does the object have power? It is thought this will not be used
  509. */
  510. DEFINE_KEY(objectPowered)
  511. /**
  512. Which: MapObject Properties
  513. Type: AsciiString
  514. Usage: The script attached to the object
  515. */
  516. DEFINE_KEY(objectScriptAttachment)
  517. /**
  518. Which: MapObject Properties
  519. Type: Int
  520. Usage: The aggressiveness of the object: -2 Sleep, -1 Passive, 0 Normal, 1 Alert, 2 Aggressive
  521. */
  522. DEFINE_KEY(objectAggressiveness)
  523. /**
  524. Which: MapObject Properties
  525. Type: Int
  526. Usage: How far does this object see? (This is actually how far out it will scan for targets)
  527. */
  528. DEFINE_KEY(objectVisualRange)
  529. /**
  530. Which: MapObject Properties
  531. Type: Int
  532. Usage: How far does this object clear the shroud/fog out to?
  533. */
  534. DEFINE_KEY(objectShroudClearingDistance)
  535. /**
  536. Which: MapObject Properties
  537. Type: Int
  538. Usage: Does this object belong to a control group: 0 no, 1-X That group number
  539. */
  540. DEFINE_KEY(objectGroupNumber)
  541. /**
  542. Which: MapObject Properties
  543. Type: Bool
  544. Usage: Can this object be recruited by the AI?
  545. */
  546. DEFINE_KEY(objectRecruitableAI)
  547. /**
  548. Which: MapObject Properties
  549. Type: Bool
  550. Usage: Can this object be selected?
  551. */
  552. DEFINE_KEY(objectSelectable)
  553. /**
  554. Which: MapObject Properties
  555. Type: Bool
  556. Usage: What veterancy does this object have: 0 green, 1 normal, 2 veteran, 3 elite
  557. */
  558. DEFINE_KEY(objectVeterancy)
  559. /**
  560. Which: MapObject Properties
  561. Type: Int
  562. Usage: 0 map default, 1 daytime, 2 nighttime
  563. */
  564. DEFINE_KEY(objectTime)
  565. /**
  566. Which: MapObject Properties
  567. Type: Int
  568. Usage: 0 map default, 1 normal, 2 snow
  569. */
  570. DEFINE_KEY(objectWeather)
  571. /**
  572. Which: MapObject Properties
  573. Type: Real
  574. Usage: What is the radius of this thing? (for Scorch Marks and the like)
  575. */
  576. DEFINE_KEY(objectRadius)
  577. /**
  578. Which: MapObject Properties
  579. Type: Int
  580. Usage: What is the type of scorch? (for Scorch Marks)
  581. */
  582. DEFINE_KEY(scorchType)
  583. /**
  584. Which: MapObject Properties
  585. Type: Real
  586. Usage: What is the stopping distance for this vehicle? (Anything with a locomotor)
  587. */
  588. DEFINE_KEY(objectStoppingDistance)
  589. /**
  590. Which: MapObject Properties
  591. Type: AsciiString
  592. Usage: What is the name of the layer that this thing lives on? (Empty means default)
  593. */
  594. DEFINE_KEY(objectLayer)
  595. /**
  596. Which: MapObject Properties
  597. Type: AsciiString
  598. Usage: This is the basis for many keys that are less well known, namely 0..(N - 1), where N
  599. is the number of upgrades that this unit gets on creation. These are done by taking this
  600. key name and appending a number on it. The first key that doesn't exist in this sequence
  601. signifies the end of the "You get this upgrade list."
  602. */
  603. DEFINE_KEY(objectGrantUpgrade)
  604. /**
  605. Which: MapObject Properties
  606. Type: AsciiString
  607. Usage: What is the unique ID (in the form of "templatename #") for this map object?
  608. */
  609. DEFINE_KEY(uniqueID)
  610. /**
  611. Which: MapObject Properties
  612. Type: AsciiString
  613. Usage: What ambient sound does this object have attached to it?
  614. Missing means "Use the default sound for object type from INI"
  615. Blank means "No ambient sound"
  616. */
  617. DEFINE_KEY(objectSoundAmbient)
  618. /**
  619. Which: MapObject Properties
  620. Type: Bool
  621. Usage: Does the ambient sound have customized flags & properties? Blank or false - use INI parameters for sound
  622. */
  623. DEFINE_KEY(objectSoundAmbientCustomized)
  624. /**
  625. Which: MapObject Properties
  626. Type: Bool
  627. Usage: Does the ambient sound start off playing?
  628. Blank -- use default of true for looping sounds, false for non-looping sounds
  629. */
  630. DEFINE_KEY(objectSoundAmbientEnabled)
  631. /**
  632. Which: MapObject Properties
  633. Type: Bool
  634. Usage: Does the ambient sound loop? Blank -- use default for sound
  635. */
  636. DEFINE_KEY(objectSoundAmbientLooping)
  637. /**
  638. Which: MapObject Properties
  639. Type: Int
  640. Usage: How many times does the sound loop (0 = forever)? Blank - use default for sound
  641. */
  642. DEFINE_KEY(objectSoundAmbientLoopCount)
  643. /**
  644. Which: MapObject Properties
  645. Type: Real
  646. Usage: Minimum volume of sound. Blank - use default for sound
  647. */
  648. DEFINE_KEY(objectSoundAmbientMinVolume)
  649. /**
  650. Which: MapObject Properties
  651. Type: Real
  652. Usage: Base volume of sound. Blank - use default for sound
  653. */
  654. DEFINE_KEY(objectSoundAmbientVolume)
  655. /**
  656. Which: MapObject Properties
  657. Type: Real
  658. Usage: Minimum range of sound. Within this area, sound plays at full volume. Blank - use default for sound
  659. */
  660. DEFINE_KEY(objectSoundAmbientMinRange)
  661. /**
  662. Which: MapObject Properties
  663. Type: Real
  664. Usage: Maximum range of sound. Sound drops to zero at this range Blank - use default for sound
  665. */
  666. DEFINE_KEY(objectSoundAmbientMaxRange)
  667. /**
  668. Which: MapObject Properties
  669. Type: Int
  670. Usage: Priority of sound using the enum AudioPriority Blank - use default for sound
  671. */
  672. DEFINE_KEY(objectSoundAmbientPriority)
  673. // ---------------------------------------------------------------------------------------
  674. // well-known keys in Player dicts.
  675. // ---------------------------------------------------------------------------------------
  676. /**
  677. Which: Player Properties
  678. Type: ascii
  679. Usage: internal identifier for player.
  680. NOTE: an empty string for playerName is reserved to denote the Neutral player.
  681. */
  682. DEFINE_KEY(playerName)
  683. /**
  684. Which: Player Properties
  685. Type: Bool
  686. Usage: true if this player is to be human-controlled. false if computer-controlled.
  687. */
  688. DEFINE_KEY(playerIsHuman)
  689. /**
  690. Which: Player Properties
  691. Type: Bool
  692. Usage: true if this player is in skirmish or multiplayer, rather than solo.
  693. */
  694. DEFINE_KEY(playerIsSkirmish)
  695. /**
  696. Which: Player Properties
  697. Type: unicode
  698. Usage: displayable name for player.
  699. */
  700. DEFINE_KEY(playerDisplayName)
  701. /**
  702. Which: Player Properties
  703. Type: ascii
  704. Usage: playertemplate to use to construct the player
  705. */
  706. DEFINE_KEY(playerFaction)
  707. /**
  708. Which: Player Properties
  709. Type: ascii
  710. Usage: whitespace-separated list of player(s) we start as enemies with
  711. */
  712. DEFINE_KEY(playerEnemies)
  713. /**
  714. Which: Player Properties
  715. Type: ascii
  716. Usage: whitespace-separated list of player(s) we start as allies with
  717. */
  718. DEFINE_KEY(playerAllies)
  719. /**
  720. Which: Player Properties
  721. Type: Int
  722. Usage: (optional) if present, amount of money the player starts with
  723. */
  724. DEFINE_KEY(playerStartMoney)
  725. /**
  726. Which: Player Properties
  727. Type: Int (color)
  728. Usage: (optional) if present, color to use for player (overrides player color)
  729. */
  730. DEFINE_KEY(playerColor)
  731. /**
  732. Which: Player Night Properties
  733. Type: Int (color)
  734. Usage: (optional) if present, color to use for player at night (overrides player color)
  735. */
  736. DEFINE_KEY(playerNightColor)
  737. /**
  738. Which: Player Properties
  739. Type: Int
  740. Usage: (optional) if present, Player_*_Start waypoint to use for player (overrides InitialCameraPosition)
  741. */
  742. DEFINE_KEY(multiplayerStartIndex)
  743. /**
  744. Which: Player Properties
  745. Type: Int
  746. Usage: (optional) if present, Difficulty level to use for player (overrides global difficulty)
  747. */
  748. DEFINE_KEY(skirmishDifficulty)
  749. /**
  750. Which: Player Properties
  751. Type: Bool
  752. Usage: (optional) if present, signifies if the player is the local player
  753. */
  754. DEFINE_KEY(multiplayerIsLocal)
  755. /**
  756. Which: Player Properties
  757. Type: Bool
  758. Usage: (optional) if present, signifies if the player has preordered
  759. */
  760. DEFINE_KEY(playerIsPreorder)
  761. // ---------------------------------------------------------------------------------------
  762. // well-known keys in the World dict.
  763. // ---------------------------------------------------------------------------------------
  764. /**
  765. Which: World Properties
  766. Type: Int
  767. Usage: (optional) if present, describes the weather. If not present, weather is "Normal"
  768. */
  769. DEFINE_KEY(weather)
  770. DEFINE_KEY(mapName)
  771. DEFINE_KEY(compression)
  772. // ---------------------------------------------------------------------------------------
  773. // well-known Waypoints.
  774. // ---------------------------------------------------------------------------------------
  775. DEFINE_KEY(InitialCameraPosition)
  776. DEFINE_KEY(Player_1_Start)
  777. DEFINE_KEY(Player_2_Start)
  778. DEFINE_KEY(Player_3_Start)
  779. DEFINE_KEY(Player_4_Start)
  780. DEFINE_KEY(Player_5_Start)
  781. DEFINE_KEY(Player_6_Start)
  782. DEFINE_KEY(Player_7_Start)
  783. DEFINE_KEY(Player_8_Start)
  784. // ---------------------------------------------------------------------------------------
  785. #endif // _H_WELLKNOWNKEYS