home *** CD-ROM | disk | FTP | other *** search
/ Star Trek - Starship Creator / CREATOR.ISO / pc / Writing.txt < prev   
Text File  |  1998-09-30  |  35KB  |  1,131 lines

  1. WRITING YOUR OWN MISSIONS
  2. To enjoy the program, it is not required for you to write original missions. 
  3. But if want to expand your mission library, and you're willing to do some 
  4. programming, read on...
  5.  
  6.  
  7. Contents:
  8. 1. Starship Mission Language Glossary
  9. 2. Mission Script Structure
  10. 3. Map Tags
  11. 4. Overlays
  12. 5. Importing Your Mission
  13.  
  14.  
  15. Created by Imergy(r) for Simon & Schuster Interactive.
  16. Copyright 1998 All Rights Reserved.
  17. SSML Author: Laurence Tietz
  18. Director for Imergy: Peter Mackey
  19. Executive Producer for Simon & Schuster Interactive: Liz Braswell
  20.  
  21.  
  22. ___________________________________________________________
  23. BEFORE YOU BEGIN
  24.  
  25. Knowing that the possibilities in the Star Trek universe are infinite, we 
  26. wanted to give intrepid aficionados access to the programming language we 
  27. created for the mission simulator portion of Starship Creator.
  28.  
  29. Using these instructions, and the IMPORT MISSION feature on the FLEET screen, 
  30. you can expand your library of missions to include many different scenarios. 
  31. Of course, you will encounter a few limitations to what is possible, but with 
  32. a bit of imagination and creative writing you should discover many interesting 
  33. possibilities.
  34.  
  35. As with all programming languages, exact precision is essential. One misplaced 
  36. comma can cause anything from a temporal anomaly to a frozen interface. Don't 
  37. worry, you can't "break" anything with a typo, but if your script isn't 
  38. formatted exactly the way the program expects it to be, the outcome may vary 
  39. from what you intended. Just follow the rule all software developers use and 
  40. save any open files before you test-run a new script.
  41.  
  42. We hope this information gives anyone interested in making the effort the 
  43. power to create their own simulations. If you develop a mission you'd like to 
  44. share with others (or with us!) please do so.
  45.  
  46. ___________________________________________________________
  47.  
  48.  
  49.  
  50. StarShip Mission Language
  51. 1.
  52. GLOSSARY
  53.  
  54.  
  55. A StarShip Mission command consists of 2 parts.
  56. #symbol, message,
  57.  
  58. The #symbol triggers an event in the simulator.
  59.  
  60. The message for most symbols can be:
  61.     A simple text "log entry" which will show up on the screen.
  62. OR
  63.     A "message tag" ( example: MSG07 ) which refers to text in a separate 
  64. "message table", which can contain log entries and-or map tags.
  65. OR
  66.     A  hyphen " - "  (used like this: #symbol,-, ) which indicates you want 
  67. no message to accompany the event.
  68.  
  69. For symbols shown below with ,-, you may replace the hyphen with simple text 
  70. or a MSG code. Although for clarity the hyphens are surrounded by commas, in 
  71. practice no spaces are used.
  72.  
  73. Certain #symbols require special messages, which contain information needed 
  74. for the #symbol to be interpreted fully. You cannot attach text messages or 
  75. tags to those symbols.
  76.  
  77. Where you see pairs of 000 000, a point coordinate is expected, indicating a 
  78. location in space. (The map is 2000 wide by 1000 high, with 0 0 in the upper 
  79. left corner. Note this differs from Cartesian space.) The first number is the 
  80. horizontal coordinate, the second the vertical, separated by a space, with a 
  81. few exceptions noted below.
  82.  
  83. Also, certain #symbols may be followed by a then/else sequence, explained 
  84. below. (also see the examples)
  85.  
  86. And, a few #symbols require particular supporting symbols to follow them 
  87. immediately in the command sequence. 
  88.  
  89. All these special cases are indicated below.
  90. ___________________________________________________________
  91.  
  92.  
  93.  
  94. --•• Power Generators
  95. #impulsePwrOff, - ,
  96. #impulsePwrOn, - , 
  97. #warpPwrOff, - ,
  98. #warpPwrOn, - ,
  99.  
  100. --•• Propulsion
  101. (you normally don't have to specify these, they are executed within the 
  102. simulator as part of larger operations)
  103. #engageStrucInteField, - ,
  104. #disengageStrucIntegField, - ,
  105. #engageNavDeflector, - ,
  106. #disengageNavDeflector, - ,
  107.  
  108. #disengageImpulseEng, - ,
  109.    (disengage engines and disengage StrucIntegField)
  110.  
  111. #engageImpulseEng, - ,
  112.    (engage engines and EngageStrucIntegField and  SetCourse)
  113.    
  114. #engageWarpEng, - ,
  115.     [then/else]
  116.     adjusts warp speed to the strength of the struc integ fld 
  117.     (else, occurs when no SI field is present, or the SI field is too weak 
  118. for even warp 1)
  119.  
  120. #disengageWarpEng, - ,
  121.  
  122. #useMainPwrSupply, - ,
  123.     [then/else]
  124.        available for certain specialized scripting cases where you want to 
  125. vary the dialog depending on the ship’s power status
  126.  
  127. #useAuxPwrSupply, - ,
  128.     [then/else]
  129.        available for certain specialized scripting cases where you want to 
  130. vary the dialog depending on the ship’s power status
  131.  
  132.  
  133. --•• general ship cmds
  134.  
  135. #waitAbit, - ,
  136.     simple delay
  137.  
  138. #hover, - ,
  139.     (disengageImpulseEng and disengageWarpEng)
  140.    
  141. #dock, - ,
  142.     (disengageWarpEng, disengageNavDeflector, lowerShields, a delay, then 
  143. disengageImpulseEng)
  144.  
  145. #unDock, - ,
  146.     (impulsePwrOn, warpPwrOn, engageImpulseEng, sets velocity)
  147.  
  148. #departArea, - ,
  149.     (engageImpulseEng)
  150.  
  151. #gotoWarp, - ,
  152.     (disengageImpulseEng and engageWarpEng)
  153.    
  154. #plotNewCoords, 0000:0000,
  155. #returnStarBase, 0000:0000,
  156.     similar commands, require a pair of map coordinates in the message 
  157. portion (notice that unlike all other coordinates, these are separated by a 
  158. ":" and not a space)
  159.  
  160. #testManeuverability, - ,
  161.     [then/else]
  162.       ship classes defined as more maneuverable will return positive
  163.  
  164. #testHitTarget , - ,
  165.     use this "-" for this command, don't attach text
  166.     watches progress of the ship until it reaches the destination
  167.     usually placed immedaitely after #goToWarp
  168.  
  169. #testHome , - ,
  170.     like #testhittarget but only used after #returnStarBase
  171.  
  172. --•• Command and Control System
  173.    
  174. #UseInternalCommSys, - ,
  175.     [then/else]
  176.    
  177. #UseRFTransciver, - , 
  178.     [then/else]
  179.    
  180. #UseSubSpaceRadio, - , 
  181.     [then/else]
  182.    
  183. #UseUTranslator, - ,  
  184.     [then/else]
  185.    
  186.  
  187. --•• Tactical 
  188.  
  189. #raiseShields, - ,
  190.  
  191. #lowerShields, - ,
  192.  
  193. #cloak, - ,
  194.     [then/else]
  195.       if installed, activating the Defiant’s cloaking device guarantees that 
  196. #evadeDetection will always be successful
  197.  
  198. #unCloak, - , 
  199.     [then/else]
  200.  
  201.  
  202. --•• Events
  203.    
  204. #blackHole, - ,
  205. #asteroid, - ,
  206. #wearNTear, - , 
  207. #fireDrill, - ,
  208.     nothing particular happens with these except #asteroid automatically 
  209. triggers an "insert" animation
  210.       these are placed in the time and location event overlays where you may 
  211. attach appropriate messages
  212.  
  213.  
  214. #damageIncident, 00000 aSystem,
  215.     replace the 00000 with a number from 1 to 50000 indicating damage
  216.     aSystem must be one of these terms:
  217.         crew   science   transportation   powerPlant
  218.         propulsion   weapons   commandControl 
  219.         structureSystem  navigation   sickBay   supportSystems
  220.  
  221.  
  222. --•• Science CMDs
  223.  
  224. #longRangeScan, 0000 0000,
  225.     [then/else]
  226.     replace the 0000s with a point coordinate (see "scan overlays")
  227.     requires sensor palette #1 to succeed
  228.  
  229. #freqScan, 0000 0000,
  230.     [then/else]
  231.     replace the 0000s with a point coordinate (see "scan overlays")
  232.     requires sensor palette #1 to succeed
  233.  
  234. #partSpectraScan, 0000 0000,
  235.     [then/else]
  236.     replace the 0000s with a point coordinate (see "scan overlays")
  237.     requires sensor palette #1 to succeed
  238.  
  239. #gravimetrScan, 0000 0000,
  240.     [then/else]
  241.     replace the 0000s with a point coordinate (see "scan overlays")
  242.     requires sensor palette #2 to succeed
  243.  
  244. #protspectScan, 0000 0000,
  245.     [then/else]
  246.     replace the 0000s with a point coordinate (see "scan overlays")
  247.     requires sensor palette #2 to succeed
  248.  
  249. #lifeFormScan, 0000 0000,
  250.     [then/else]
  251.     replace the 0000s with a point coordinate (see "scan overlays")
  252.     requires sensor palette #3 to succeed
  253.  
  254. #subSpaceScan, 0000 0000,
  255.     [then/else]
  256.     replace the 0000s with a point coordinate (see "scan overlays")
  257.     requires sensor palette #4 to succeed
  258.  
  259. #opticalScan, 0000 0000,
  260.     [then/else]
  261.     replace the 0000s with a point coordinate (see "scan overlays")
  262.     requires sensor palette #5 to succeed
  263.  
  264. #gravitonScan, 0000 0000,
  265.     [then/else]
  266.     replace the 0000s with a point coordinate (see "scan overlays")
  267.     requires sensor palette #5 to succeed
  268.  
  269. #gammaScan, 0000 0000,
  270.     [then/else]
  271.     replace the 0000s with a point coordinate (see "scan overlays")
  272.     requires sensor palette #6 to succeed
  273.  
  274. #infraRedScan, 0000 0000,
  275.     replace the 0000s with a point coordinate (see "scan overlays")
  276.     [then/else]
  277.     requires sensor palette #6 to succeed
  278.  
  279. #partclMapScan, 0000 0000,
  280.     replace the 0000s with a point coordinate (see "scan overlays")
  281.     [then/else]
  282.     requires sensor palette #6 to succeed
  283.    
  284.  
  285. #launchProbe, 0000 0000 aPurpose,
  286.     [then/else]
  287.     replace the 0000s with a point coordinate of the target of the probe
  288.     aPurpose must be one of these:
  289.         CulturalAnalysis,
  290.         SampleRecovery,
  291.         LongTermObservation,
  292.         SpectralData,
  293.         EnergyData,
  294.         GeologicalData,
  295.         GravimetricData,
  296.         CommBeacon,
  297.         MessageProbe,
  298.         CommBeacon,
  299.     special case: inside the "then" branch, you can call #getProbeData
  300.       (The mission waits until the probe reaches its target.)
  301.  
  302. #getProbeData, - ,
  303.     [then/else]
  304.     only makes sense inside the "then" branch of #launchProbe
  305.     gives a positive "then" result if the probe was able to read info from 
  306. the probe data overlay (see explanation of "overlays")
  307.  
  308. To accomplish each task, at least one of these classes of probes must be 
  309. installed...
  310.         CulturalAnalysis: Class 7, 8, or 9
  311.         SampleRecovery: Class 3, or 5
  312.         LongTermObservation: Class 5, or 7
  313.         SpectralData: Class 1, 2, or 4
  314.         EnergyData: Class 1, 2, or 4
  315.         GeologicalData: Class 3
  316.         GravimetricData: Class 1, 2, 8, or 9
  317.         CommBeacon: Class 6, 8, or 9
  318.         MessageProbe: Class 8, or 9 
  319.  
  320.  
  321. #useLab, aLab,
  322.     aLab is one of these:
  323.         Cartography
  324.         Cybernetics
  325.         CulturalAnthropology
  326.         PlanetaryScience
  327.         Exobiology
  328.     [then/else]
  329.  
  330.  
  331. --••Transport
  332.  
  333. #beamAwayTeam, - ,
  334. #crewComp, 0 0 0 0 0 0,
  335.     these two commands must go together
  336.     the 0s are the number of crewmembers being transported, in this order:
  337.       command    engineers  civillians   scientists  support   tactical
  338.     [then/else]
  339.  
  340. #beamCargo, - ,
  341. #loadData, 1,
  342.     these two commands must go together
  343.     loadData is presumed to be tons of cargo (we suggest using 1 for now)
  344.     [then/else]
  345.    
  346. #engageTractorbeams, - ,  
  347.     [then/else]
  348.  
  349. #disengageTractorbeams, - ,
  350.    
  351. #launchShuttleCraft, 0000 0000 aType ,
  352.     [then/else]
  353.     0000s are a point coordinate of the destination 
  354.       aType must be one of:
  355.     Defense   Impulse   Cargo   Passengers   Warp   Thrusters
  356.     ("Thrusters" is how you use the Sphinx Workpod)
  357.       (The mission waits until the shuttle reaches its target relative to the 
  358. ship’s current location.)
  359.    
  360.  
  361. --••Crew
  362.    
  363. #testCaptainSkill, - ,
  364.     [then/else]
  365.    
  366. #testChiefEngSkill, - ,
  367.     [then/else]
  368.    
  369. #testFirstOfcrSkill, - ,
  370.     [then/else]
  371.    
  372. #testCommsOfcrSkill, - ,
  373.     [then/else]
  374.    
  375. #testChMedOfcrSkill, - ,
  376.     [then/else]
  377.    
  378. #testScienceOfcrSkill, - ,
  379.     [then/else]
  380.    
  381. #testSecurityOfcrSkill, - ,
  382.     [then/else]
  383.    
  384. #testCounsellorSkill, - ,
  385.     [then/else]
  386.    
  387.  
  388. --•• Facilities
  389.  
  390. #useSalon, - ,
  391.     [then/else] 
  392.  
  393. #useHoloDeck, - ,
  394.     [then/else] 
  395.  
  396. #useLounge, - ,
  397.     [then/else]
  398.  
  399. #useArboretum, - ,
  400.     [then/else]
  401.  
  402.  
  403. --•• Weapons and Battle
  404.    
  405.  
  406. #evadeDetection, - ,
  407.     [then/else]
  408.    
  409. #encounterAlien, - ,
  410.     triggers conflict (see "conflict overlay" explanation)
  411.     the command sequence doesn't return to the command following this one 
  412. until the conflict is over
  413.  
  414. __discrete firing events (such as as targets or nonbattle events)
  415.  
  416. #fireAnyTorpedo,-,
  417.     attempts to automatically issue a #fireQuantumTorpedo command
  418.     if your vessel is not so equipped (and only Defiant and Sovereign can be), 
  419. then a #firePhotonTorpedo command is given instead
  420.  
  421. #firePhotonTorpedo, - ,
  422.     [then/else]
  423.    
  424. #firePhaser, - ,
  425.     [then/else]
  426.    
  427. #fireQuantumTorpedo, - ,
  428.     [then/else]
  429.  
  430.  
  431. --•• Messages and Report CMDs
  432.  
  433. __use any of these as a medium to pass log messages and map tags:
  434.  
  435. #getGenMessage, - ,
  436. #reportStatus, - ,
  437.  
  438.   (these commands also force a brief delay into the simulation):
  439. #captainSpeaks, - ,
  440. #otherSpeaks, - ,
  441.  
  442. #getAwayTeamReport, - ,
  443. #getMedicalTeamReport, - ,
  444.  
  445.  
  446. --•• Command Flow
  447.  
  448. #setGoals,MSG00,
  449.     expects the MSG00 tag to look exactly like this:
  450.     if you have one goal: 
  451.       <MSG00 = [1:"Arrived in Sector 8."]>
  452.     if you have more than one goal: 
  453.       <MSG00 = [1:"Arrived in Sector 8.", 2:"Scanned the planet."]>
  454.     (This can be any MSG number, not only 00.)
  455.  
  456. #goalXachieved, - ,
  457.     where X is actually the goal number listed in your #setGoals tag, 
  458. example #goal2achieved, - ,
  459.  
  460.  
  461. #executePhase, - ,
  462.     normally comes at the end of the Initial Phase sequence (the <ICMD = 
  463. ...> tag
  464.     REQUIRED to move the command sequence to the next group of commands 
  465. labelled <MO_CO_EG = ... >, the Execute Phase.
  466.    
  467.  
  468. #closeMission, - ,
  469.     normally comes at the end of the Execute Phase sequence (the <MO_CO_EG = 
  470. ...> tag
  471.     REQUIRED to move the command sequence to the Closing Phase group of 
  472. commands labelled <CCMD = ... >
  473.    
  474.  
  475. #linkMission, aScriptName,
  476.    ! very Special Case : aScriptName is the field name of a new mission script 
  477. (not implemented for imported scripts)
  478.  
  479. #die, -,
  480.     triggers #simOver
  481.  
  482. #simOver, - ,
  483.     triggers halt to the mission simulation
  484.     causes evaluation of the ship's performance and calculation of any 
  485. cRedits earned (which are proportional to the total number of goals set vs. 
  486. achieved)
  487.  
  488.  
  489.  
  490. [then/else] where indicated, means the command may be followed by a 
  491. conditional branching structure. This way, you can cause certain commands to 
  492. be executed only when a command is successful, and others if it is not. (You 
  493. may omit the then/else structure, otherwise use the then/else as a pair.) 
  494.  
  495. sample format (also see examples):
  496.  
  497. <aCommand>,-,
  498.    #thenCmd,0,
  499.       <aCommand>,-,
  500.       ...one or more commands you want executed if a positive result
  501.    #elseCmd,0,
  502.       <aCommand>,-,
  503.       ...one or more commands you want executed if a negative result
  504.  
  505. replace each 0 with the number of commands in each group 
  506. (this count must be exact or unexpected command sequences will result)
  507.  
  508.  
  509. -o-
  510.  
  511.  
  512. StarShip Mission Language
  513. 2.
  514. MISSION SCRIPT STRUCTURE
  515.  
  516. To create a script which the program interpreter can understand, you need to 
  517. arrange the commands described in the Glossary into "tags".
  518.  
  519. A script contains a series of "tags" which start with  <  and end with  > .
  520. You tell the script interpreter what kind of tag it is by using an identifier 
  521. code, which looks like  WXYZ= .
  522.  
  523. Here are some examples of the kinds of tags the script interpreter 
  524. understands:
  525.  
  526. <ICMD =
  527.     #captainSpeaks,MSG01,
  528.     #setGoals,MSG00,
  529.     #unDock,MSG02, 
  530.     #gotoWarp,MSG03,
  531.     #testHitTarget,-,
  532.     #reportStatus,MSG04, 
  533.     #executeGoal,MSG19,>
  534.  
  535. <MSG76 = Red Alert. Battle stations!>
  536.  
  537. <MO_SN_SS = 0900,800,1000,1000,#something, Significant spatial anomalies. ;>
  538.  
  539. As you can see, each type of tag has a different structure, suited to its 
  540. purpose.
  541.  
  542. There is also a comment mark // which you can use to insert notes to yourself 
  543. or other readers of your script but which the interpreter will ignore. (Hint: 
  544. Do not include the "#" mark inside your comments.)
  545.  
  546.  
  547. Here is a very basic mission script, with very simple commands, just to help 
  548. you see the structure. It is full of comments -- those lines starting with // 
  549. -- to help further explain the sections of the script. Note that the comments 
  550. are ignored by the program when the file is being read.
  551.  
  552. (For a sample mission script. For a complete version of an importable script 
  553. and profile, see the "sector8.txt" file in the IMPORT folder inside the 
  554. ShipMain folder. It has very few comments in it and is thus easier to see the 
  555. structure.)
  556.  
  557. The indenting and spacing are ignored by the interpreter.
  558.  
  559. //=========================================================
  560. // Sample Mission
  561. // Launching a Probe
  562.  
  563. //This is the script header tag. _(required)_______________
  564. //After DES you insert your destination and its name.
  565. //The rest of this you can leave as it is.
  566.  
  567. <MISS = EAR, DES = 205:185:Near Starbase,  RAR= 001,TIL= 048,>
  568.  
  569. //Initial Phase tag_(required)_____________________________
  570. //This is what happens first...
  571.  
  572. <ICMD =  
  573.          #captainSpeaks,MSG01,
  574.          #setGoals,MSG00,
  575.          //the next 7 commands are a good way to get started
  576.          #impulsePwrOn,-,
  577.          #engageNavDeflector,-,
  578.          #warpPwrOn,-,
  579.          #engageImpulseEng,-,
  580.          #unDock,-,
  581.          #goToWarp,MSG03,
  582.          #testHitTarget,-,
  583.          //here the author chooses to force some damage
  584.          #damageIncident, 9999 structureSystem,
  585.          #otherSpeaks,MSG04,  
  586.          #executeGoal,MSG20,>
  587.  
  588. //That "executeGoal" command triggers a link to this tag...
  589. //Execute Phase tag_(required)______________________________
  590. <MO_CO_EG = 
  591.          #hover,-, 
  592.          #captainSpeaks, Ready the probe for launch.,
  593.          //if ok probe countdown begins BEFORE thenCmds
  594.          #launchProbe, 208 191 GravimetricData,
  595.              #thenCmd,8,
  596.                 #otherSpeaks,MSG23,   
  597.                 #getProbeData,-,
  598.                      #thenCmd,3,
  599.                          #goal1achieved,-,
  600.                          #captainSpeaks,MSG24,
  601.                          #HQcmd2,-,
  602.                      #elseCmd,1,
  603.                          #otherSpeaks,Probe returns nothing useful Captain.,
  604.              #elseCmd,2,
  605.                 #captainSpeaks,MSG47,
  606.                 #HQCmd4,-, 
  607.  
  608.        #closeMission,-,>
  609.  
  610. //That "closeMission" command triggers a link to this tag...
  611. //Close Mission tag_(required)_____________________________
  612. <CCMD =
  613.        #captainSpeaks,MSG49,
  614.        #HQCmd3,-,
  615.        #returnStarBase,200:200,
  616.        #departArea,-,
  617.        #gotowarp,-,
  618.        #testHome,-,
  619.  
  620.        #disengageWarpEng,-,
  621.        #lowerShields,-,
  622.        #engageImpulseEng,-,
  623.        #disengageNavDeflector,-,
  624.        #dock,-,
  625.  
  626.        #simOver,-,>
  627.  
  628. // The "message table"_____________________________________
  629. //Notice that simple text messgages with no commas can be put right next to
  630. //the commands themselves. Otherwise use this table. 
  631.  
  632. <MSG00 = [1:"Analyzed target region of space."]>
  633. <MSG01 = Let's get under way. <HEAR=process>>
  634. <MSG03 = >
  635. <MSG04 = Severe gravity field discontinuties in the area. Looks like the hull 
  636. is weakening.<FLYB=BluCloudBG;warp>>
  637. <MSG20 = Unusual anomaly ahead. <SWAP=Target;alienGasCloud_icon>>
  638. <MSG23 = <HEAR=action>>
  639. <MSG24 = That would indicate an extremely unstable area of space. Make a note 
  640. to avoid this region and notify Starfleet.>
  641. <MSG47 = No response from that system. Looks like that type of probe may not 
  642. be installed. Open a channel to starbase.>
  643. <MSG49 = We've done all we can here.<SWAP=Target;DestMark_icon>>
  644. <MSG83 = Set course for starbase.<SWAP=Target;Starbase_icon>>
  645. <MSG89 = <HEAR=link>>
  646.  
  647.  
  648. // HQ Alert Dialog list____________________________________
  649. // Use these to trigger "Headquarters Alert" boxes
  650.  
  651. // The following tag must be present in all scripts
  652. // Replace the "4" with whatever number of HQ alerts you have defined
  653.  
  654. <MO_HQ_EV0 = 4,>
  655.  
  656. //Now insert the tags for the various alert boxes 
  657. // (see the item in "OVERLAYS" for more detail)
  658.  
  659. <MO_HQ_EV1 =Vessel suffered an unrepairable failure. Mission cannot proceed. 
  660. Make sure appropriate systems and crew are present, and that crew complement 
  661. is adequate.,
  662.             #simOver,-,Acknowledged., #simOver,-,, #HQCmd1,>
  663.  
  664. <MO_HQ_EV2 =Note to the Admiral. We have detected a region of severely 
  665. distorted gravity. Advise that no vessel proceed into this area. Uploading 
  666. coordinates.,
  667.             #closeMission,-, Noted. Thanks for the alert., #nothing,-,, 
  668. #HQCmd2,>
  669.  
  670. <MO_HQ_EV3 = What are our orders?,
  671.             #otherSpeaks,-,Return to base., #simOver,-,Stay there., #HQCmd3,>
  672.  
  673. <MO_HQ_EV4 =Captain to Admiral: It looks like this class of vessel may not be 
  674. able to do the scientific analysis the mission requires. Request permission to 
  675. return to starbase.,
  676.             #nothing,-,, #closeMission,-,Don't be concerned. Come home., 
  677. #HQCmd4,>
  678.  
  679.  
  680. // Environment Overlays__________________________________________________
  681.  
  682. // Location event map
  683. <LEVTMAP = #blackHole,30,50,Black hole in area, #asteroid,80,100,Asteroid 
  684. field,>
  685.  
  686. // Time event map
  687. <TEVTMAP = #wearNTear,9999,-, #fireDrill,9999,-,>
  688.  
  689. // System failure tag
  690. <MO_CO_SYSFAIL = #HQCmd1,-,>
  691.  
  692.  
  693.  
  694. // Scan and Probe Result Overlay_________________________________________
  695. // (most are empty since we are doing no scans in this mission)
  696.  
  697. // Scan types (you must list all of these)
  698.  
  699. // <MO_SN_LR> is a long range scan
  700. <MO_SN_LR = 0,0,0,0,#nothing, ;>
  701. // <MO_SN_RF> is a freq (RF) scan
  702. <MO_SN_RF = 0,0,0,0,#nothing, ;>
  703. // <MO_SN_PA> is a Partical Spectrometry scan
  704. <MO_SN_PA = 0,0,0,0,#nothing, ;>
  705. // <MO_SN_GM> is a Gravimetric Scan 
  706. <MO_SN_GM = 0,0,0,0,#nothing, ;>
  707. // <MO_SN_PR> is a Proton Spec Scan
  708. <MO_SN_PR = 0,0,0,0,#nothing, ;>
  709. // <MO_SN_LF> is a Life Form Scan
  710. <MO_SN_LF = 0,0,0,0,#nothing, ;>
  711. // <MO_SN_SS> is a Sub-Space Scan
  712. <MO_SN_SS = 0,0,0,0,#nothing, ;>
  713. // <MO_SN_OP> is a Optical Scan
  714. <MO_SN_OP = 0,0,0,0,#nothing, ;>
  715. // <MO_SN_GF> is a Graviton Flux Scan
  716. <MO_SN_GF = 0,0,0,0,#nothing, ;>
  717. // <MO_SN_GR> is a Gamma Radiation Scan
  718. <MO_SN_GR = 0,0,0,0,#nothing, ;>
  719. // <MO_SN_IR> is a InfraRed Scan
  720. <MO_SN_IR = 0,0,0,0,#nothing, ;>
  721. // <MO_SN_PM> is a Particle Map Scan
  722. <MO_SN_PM = 0,0,0,0,#nothing, ;>
  723.  
  724. // Probe data overlays for any type of probe look like this...
  725. <MO_PRB_DATA = 180,180,220,220,#something,Inverse-polarity graviton field 
  726. detected.;>
  727.  
  728. //end
  729. //make sure there is a <return> character after the last line of your script
  730.  
  731.  
  732. That's it.
  733. All of the tag identifiers you see above are required, the exception being the 
  734. MSG table. Those MSG's are only required if you refer to such a MSG in the 
  735. message part of your commands.
  736. Other tags, notably Conflict Resolution, are optional, depending on the 
  737. mission. Read all about Conflict Resolution overlays below.
  738.  
  739. -o-
  740.  
  741.  
  742.  
  743. StarShip Mission Language
  744.  
  745. 3.
  746. MAP TAGS
  747.  
  748. As you've seen, the normal structure of a message tag is:
  749. <MSG23 = Captain, what shall we do now?>
  750. This presents the text message as a log entry on the screen.
  751.  
  752. You may also insert into such a message tag another tag for triggering map 
  753. events and music cues. We call these "Map Tags".
  754.  
  755. Here are some examples, followed by the dictionary of map events you can 
  756. trigger.
  757.  
  758.  
  759. <MSG36 = Engage.<FLYB=CloudyEarthBG;ByOut>>
  760. This map tag makes your ship fly toward you past the "CloudyEarthBG" artwork.
  761.  
  762. <MSG01 = Let's get under way. <SWAP=Target;BluePlanet_icon@HEAR=action>>
  763. This map tag makes the Target icon, which is normally an orange bracket, 
  764. become a Blue Planet. This tag also causes the program to select an "action" 
  765. style music cue and play it.
  766.  
  767. <MSG32 = <NSRT=parasites2> Captain! The crew lounge is being infested!>>
  768. This map tag plays the animation named "parasites2", temporarily covering the 
  769. star map.
  770.  
  771. <MSG26 = <SPOT=romulan;754;470> We've encountered a Romulan border patrol. 
  772. Shields up!>
  773. This map tag places a new icon, the "romulan" symbol, onto the map at 
  774. coordinates 754x470. It will stay there until another tag elsewhere in the 
  775. script is encountered saying <CANC=romulan>.
  776.  
  777.  
  778. Notice that you *nest* a map tag inside the MSG tag.
  779. The number of opening brackets and closing brackets must match.
  780. Only one map tag per MSG tag is possible. Use the @ symbol if you want more 
  781. than one. No extra spaces please.
  782.  
  783. Other map tag examples
  784. <SWAP=Target;XYZ123_icon@SWAP=active_ship;icon> 
  785. <SPOT=romulan;754;470>
  786. <FLYB=EarthBG;ByOut>
  787. <SWAP=Target;DestMark_icon>
  788. <HEAR=action>
  789.  
  790.  
  791. ___________________________________________________________
  792. Map Tag Dictionary
  793.  
  794. ••-------------------------------------
  795. "HEAR" <HEAR=aStyle>
  796. Play a music cue 
  797. Replace aStyle with one of:
  798.     action  link  success  fail  open  process 
  799.  
  800. ••-------------------------------------
  801. "NSRT": <NSRT=aAnim>
  802. Insert-shot cutaway animations, star map switches to an animation 
  803. Replace aAnim with one of:
  804.     Asteroids   beam_algage  melt_ice   targetRange   blackHole
  805.     Decontaminate   locateSurfaceProbes   surfaceProbes2
  806.     KurlanDig   militarySurveillance   Minefield1   Minefield2
  807.     parasites1   parasites2   WormholeProbe
  808.  
  809.  
  810. ••-------------------------------------
  811. "FLYB"  <FLYB=aBackground;aMove>
  812. Like an "insert", star map temporarily switches to animation of your ship 
  813. flying thru the frame 
  814.  
  815. Replace aBackground with:
  816.    DeadMoonBG     BluJupiterBG   SunBG    EarthBG
  817.    BluePlntBG     CloudyEarthBG   SmStarbaseBG    HotSunBG
  818.    BlueCircNebBG  BluCloudBG     PinkNebBG   StarfieldBG
  819.    GreenNebBG     orangeNebBG    pinkFlowerBG
  820. (If your ship is not at starbase and you have specified smStarbaseBG, the 
  821. program will atuomatically use the generic StarfieldBG instead.)
  822.  
  823. Replace aMove with:
  824.     #ByOut  (ship moves out of the distance toward you, L to R)
  825.     #warp  (ship moves from the R foreground into the distance)
  826.  
  827.  
  828. ••-------------------------------------
  829. "SPOT"  <SPOT=anIcon;000;000>
  830. Places an icon on the map
  831. Not necessary for your ship, just other icons in the mission
  832. Replace anIcon with one of:
  833.     DestMark    the standard generic target (its ID is Target)
  834.     Federation
  835.     XYZ123    a prometheus ship
  836.     DeepS9     space station
  837.     HotRed     planet or star
  838.     Earth     planet
  839.     GasGiant     planet (jupiter)
  840.     RedPlanet     planet (mars)
  841.     BluePlanet     planet
  842.     Romulan    these are symbols of the various races
  843.     Borg
  844.     Bajoran
  845.     Cardassian
  846.     Dominion
  847.     Ferengi
  848.     Kazon
  849.     Klingon
  850.     Maquis
  851.  
  852. ••-------------------------------------
  853. "CANC" <CANC=romulan>
  854. Removes a previously SPOTted icon
  855.  
  856. ••-------------------------------------
  857. "SWAP"  <SWAP=aIDname;aState>
  858.  Changes the state of an existing Icon
  859.  
  860.     example: Target;XYZ123_icon OR activeShip;icon
  861.  
  862.     1st item   aIDname:   needs to be an established id name 
  863.       eg Target, Romulan, activeShip, CTN324 
  864.       (may use activeShip generically to indicate 
  865.        whichever shipID is "foreground" at the moment)
  866.       ("Target" is automatically assigned to the destination
  867.        location, and the "DestMark" icon - the orange 
  868.        bracket - is automatically placed. But you can change it.)
  869.           
  870.     2nd item   aState:  new art to use, either:
  871.         name_type ...selects any given art
  872.                   eg Romulan_boom
  873.     OR  type      ...selects type version of the IDname art
  874.          "icon" resets to base version of IDname art
  875.          "scan" shows the scan version of the IDname art (ships only)
  876.  
  877.      if you dont use the "_" character the program will assume you just want 
  878. to change the version of the current art
  879. -o-
  880.  
  881.  
  882.  
  883.  
  884.  
  885. StarShip Mission Language
  886. 4.
  887. OVERLAYS
  888.  
  889.  
  890. "Headquarters Alerts"
  891.  
  892. Example:
  893. <MO_HQ_EV3 = What are our orders?,
  894.             #otherSpeaks,-,Return to base., #simOver,-,Stay there., #HQCmd3,>
  895.  
  896. Format:
  897. <MO_HQ_EVn = Text in the alert area,
  898.             #aCommand,optionalmessage,Text for the first button, 
  899. #aCommand,optionalmessage,Text for the second button, #HQCmdn,>
  900.  
  901. where n is the arbitrary yet sequential number of this tag. Note that it 
  902. appears in 2 places. (eg: MO_HQ_EV3 and #HQCmdn) You use the #HQCmd3 in the 
  903. script somewhere to trigger the appearance of this box.
  904.  
  905. If you want only one button to appear make the "Text for the button" space 
  906. void, ie, just the two commas. MO_HQ_EV4 in the sample above does this.
  907.  
  908.  
  909.  
  910. "Environments"
  911.  
  912. The Location Event tag is used to define a set of up to 10 events 
  913. that will be triggered by the ship crossing a specific point on the map
  914.  
  915. Example:
  916. <LEVTMAP = #blackHole,30,50,Black hole in area, #asteroid,80,100,Asteroid 
  917. field,>
  918.  
  919. Format:
  920. <LEVTMAP = #aCommand,horizCoord,vertCoord,Text message,>
  921.  
  922. A valid horizCoord is 0 to 2000. A valid vertCoord is 0 to 1000.
  923.  
  924.  
  925. This Time Event tag is used to define a set of up to 10 events 
  926. that will be triggered at specific times relative to the start of a mission. 
  927. Time is expressed in ticks (60 ticks / sec)
  928.  
  929. Example:
  930. <TEVTMAP = #disengageWarpEng,9999,For some reason we just dropped out of 
  931. warp!,>
  932. The format for this tag is similar to the Location Event tag, except the 
  933. numerical value expected here is ticks, not a rectangle in space.
  934.  
  935.  
  936.  
  937. "Other Event Tags"
  938.  
  939. Unrecoverable failures. The System Failure tag is triggered by the simulator 
  940. when it senses that the engineering staff is unable to repair anything. 
  941. Typically used to trigger an alert box...
  942.  
  943. <MO_CO_SYSFAIL = #HQCmd3,-,>
  944.  
  945.  
  946. The Shields Malfunction response tag is triggered by the simulator when it 
  947. senses that the shields are no longer able to protect the ship from 
  948. externally-inflicted damage. This usually happens during a conflict. This 
  949. example assumes that. If you have a script with no enemies, it is advisable to 
  950. leave out the "fightEnemy" command in here!
  951.  
  952. <MO_CO_SMF = #otherSpeaks,The shields are going down. Keep fighting 
  953. anyway.,#fightEnemy,-,>
  954.  
  955.  
  956.  
  957.  
  958. "Scans and Probes"
  959.  
  960. When you send a command to launch a probe or try a scan, such commands include 
  961. parameters that specify points in space. These overlays "catch" those points 
  962. and determine what if any feedback is given.
  963.  
  964. Example:
  965. <MO_SN_IR = 180,70,220,450,#something,Thermal emissions detected.;>
  966.  
  967. The command symbol #something will cause a positive result to be fed back. If 
  968. you place a #nothing command there then the feedback is false. You may also 
  969. use #debris, #interstellarDust, or #distortion to partially obscure the signal 
  970. (debris has the least interfering effect distortion the most).
  971.  
  972. Example of that:
  973. <MO_SN_LR = 0400,0600,0500,0700,#interstellarDust,A cloud of microparticles is 
  974. obscuring the signal.; 0400,0600,0500,0700,#something,Long range scan picks up 
  975. a possible stellar fragment.;>
  976. If the ship's installed equipment is sensitive enough it will read "through" 
  977. the layer of dust to see "something". Notice how the rectangles are identical.
  978.  
  979. The format for an scan-environment tag is:
  980.  
  981. <MO_SN_aa = L1,T1,R1,B1,cmd1,"dsp text1";L2,T2,R2,B2,cmd2,"dsp text 
  982. 2;....;Ln,Tn,Rn,Bn,cmdn,"dsp testn>
  983.  
  984. where L=Left, T=Top, R=Right, B=Bottom which define a rectangle target
  985.  
  986. Only the tags that will be triggered by a scan request cmd that you have
  987. included within the main script need to be defined with specific data.
  988. For the ones that you are not using just place a null Rect (0,0,0,0) with 
  989. #nothing cmd and blank message data.
  990.  
  991.  
  992.  
  993. "Conflict Resolution"
  994. or How to Pick a Fight...
  995.  
  996. If your starship encounters an alien ship during the execution of a mission 
  997. (which you trigger with an #encounterAlien command) it will make use of a set 
  998. of tags associated with conflict resolution. You will need to define these 
  999. tags so that the starship will "know" how to conduct itself durring a 
  1000. conflict.
  1001.  
  1002. These tags may be omitted if your ship will never encounter an alien ship. 
  1003.  
  1004. The following is a set of suggested commands for each of the Mission Overlay 
  1005. Conflict Resolution tags. This set will produce a battle between the star ship 
  1006. and the enemy ship. (The MSGxx's are here as examples.)
  1007.  
  1008. Notice how each group of tags is read by the simulator in response to a 
  1009. particular command. Depending on conditions, one of the group of tags is 
  1010. selected by the simulator for execution.
  1011.  
  1012.  
  1013. #encounterAlien evokes one of 3 possible response tags:
  1014.  
  1015. // 1 Enemy is Friendly
  1016. <MO_CR_FC = #executeGoal,MSG39,>
  1017.  
  1018. // 2 Enemy is Hostile-- use the #hostile command to trigger #fightEnemy
  1019. <MO_CR_HC = #otherSpeaks,MSG40,#hostile,-,>
  1020.  
  1021. // 3 Enemy Attacks you-- use the #attacked command to trigger #enemyFire
  1022. <MO_CR_AC = #otherSpeaks,MSG41,#attacked,-,>
  1023.  
  1024.  
  1025.  
  1026. #enemyFire causes the enemy to be classified as either 
  1027. Strong, Weak, or Damaged.
  1028.  
  1029. // if the enemy is Strong, you probably want to continue fighting:
  1030. <MO_CR_SNG = #fightEnemy,MSG46,>
  1031.  
  1032. // if the enemy is Weak you can declare them destroyed
  1033. <MO_CR_WEK = #targetDestroyed,MSG42,#goal1achieved,-,#closeMission,-,>
  1034.  
  1035. // if the enemy is Damaged you can declare them destroyed too
  1036. <MO_CR_DMG = #targetDestroyed,MSG42,#goal1achieved,-,#closeMission,-,>
  1037.  
  1038. When the sim gets the #targetDestroyed command, the conflict ends.
  1039.  
  1040.  
  1041.  
  1042. #fightEnemy causes an attempt to #firePhasers
  1043. If successful, one of these tags is selected:
  1044.  
  1045. //target is deemed Invincible.... 
  1046. <MO_CR_INV =  #enemyFire,MSG47,> 
  1047.  
  1048. //targetDestroyed-->conflict ends
  1049. <MO_CR_TD = #targetDestroyed,We have vaporized the invading vessel.,>
  1050.  
  1051. //targetDisabled-->conflict ends
  1052. <MO_CR_TDA = #targetDisabled,The invading vessel is disabled and no longer a 
  1053. threat.,>
  1054.  
  1055. //targetImpacted-->automatically causes #enemyFire
  1056. <MO_CR_TIP = #targetImpacted,We've done some damage to them.,>
  1057.  
  1058. //targetTouched or 'dented'-->automatically causes #enemyFire
  1059. <MO_CR_TDNT = #targetTouched,Invading vessel barely felt that one.,>
  1060.  
  1061. //targetUnaffected-->automatically causes #enemyFire
  1062. <MO_CR_TUNE = #targetUnaffected,Our firepower is having no effect.,>
  1063.  
  1064.  
  1065. If Phasers arent ready, the sim looks for this tag to see what else it should 
  1066. do:
  1067. <MO_CR_NOPHS = #firePhotonTorpedo, Phasers not online. Try a photon torpedo.,>
  1068.  
  1069. And if Photon Torpedos arent ready, the sim looks for this tag to see what 
  1070. else it should do...
  1071. <MO_CR_NOPTP  =  #otherSpeaks,Torpedos not firing!,>
  1072.  
  1073. Or no Quantum Torpedos...
  1074. <MO_CR_NOQTP  =  #otherSpeaks,Quantum torpedos offline.,>
  1075.  
  1076.  
  1077. The core of a battle sequence is the exchange of #enemyFire and #fightEnemy 
  1078. commands. That happens automatically when the conflict resolution tags are 
  1079. written this way.
  1080.  
  1081.  
  1082.  
  1083. StarShip Mission Language
  1084.  
  1085. 5.
  1086. IMPORTING YOUR MISSION
  1087.  
  1088. An importable mission script needs to start with a Mission Profile, which 
  1089. looks like this...
  1090.  
  1091. NAME=Take Position in Sector 8
  1092. LEVEL=x
  1093. ERA=x
  1094. TYPE=Sample
  1095. KEYS=Basic Equipment
  1096. DESC=
  1097. Fly to Sector 8 and request further instructions. Your mission will be 
  1098. successful if you can make it there.
  1099. @
  1100.  
  1101. The labels in capitals, followed by the =, must be in the file just as shown, 
  1102. as lines of their own. The Level and Era lines need to be in there, but are 
  1103. ignored. It is helpful to others who may see your Mission to describe in 
  1104. "Keys" what critical systems will be use during the mission. 
  1105.  
  1106. Please do not use the @ character anywhere in your document except as the 
  1107. separator symbol, as described next.
  1108.  
  1109. Note how, in the "Sector8.txt" sample file in the Import folder, the mission 
  1110. profile text preceeds the actual script, separated by a lone @ on a line by 
  1111. itself (that is, type a <return>, then type @, then type another <return>).
  1112.  
  1113. Also, double check that if you have a comment line (one that starts with //) 
  1114. at the end of your script, there is a <return> following it.
  1115.  
  1116. The program expects to read a Plain Text document. Be sure you have saved it 
  1117. this way.
  1118.  
  1119. We recommended that the file be put in the Import folder that is in the same 
  1120. folder (ShipMain) as Starship Creator. (That is not essential however as a 
  1121. dialog box will prompt for the file's location.)  Once imported, the file is 
  1122. not needed by the program, so you can remove it from the Import folder, but 
  1123. keep it somewhere as a backup.
  1124.  
  1125. Adding the new script to your list of available missions happens on the FLEET 
  1126. screen. Use the Import Mission button.
  1127.  
  1128.  
  1129. 9/27/1998
  1130.  
  1131.