**Tutorial** - making Story missions
This tutorial is for making your own story missions - either replacing or modifying existing ones. Note that this is not the solution to the commonly asked question of "how do I get the random missions to work?", that's something else entirely.
Firstly, a warning - making story missions is a big undertaking, there's a lot that has to be done to make one work. And that's just one - it appears to be hardcoded into the game that there are 13 exactly, so unless your first story mission "conveniently" ends up on Pittsburgh, you'll be left drifting aimlessly for ever, not being able to gain another level. As Hovis says, "and you don't wanna do that"
Anyway, to the tutorial proper. First, as a sort of reference section, a list of important things and their usage:
These conditions and actions are basically "If X occurs, do Y"
There are 42 different Conditions:
Cnd_True
Cnd_Destroyed
Cnd_CommComplete
Cnd_SpaceEnter
Cnd_Timer
Cnd_SpaceExit
Cnd_BaseEnter
Cnd_LocEnter
Cnd_RTCDone
Cnd_PopUpDialog
Cnd_CharSelect
Cnd_MsnResponse
Cnd_BaseExit
Cnd_ProjHit
Cnd_DistShip
Cnd_WatchTrigger
Cnd_PlayerManeuver
Cnd_TLEntered
Cnd_TLExited
Cnd_DistVec
Cnd_NPCSystemEnter
Cnd_LaunchComplete
Cnd_DistVecLbL
Cnd_HealthDec
Cnd_ProjHitShipToLbl
Cnd_InSpace
Cnd_SystemExit
Cnd_CargoScanned
Cnd_LootAcquired
Cnd_LocExit
Cnd_HasMsn
Cnd_SystemEnter
Cnd_JumpInComplete
Cnd_PlayerLaunch
Cnd_TetherBroke
Cnd_InTradelane
Cnd_WatchVibe
Cnd_InZone
Cnd_DistCircle
Cnd_ProjHitShiptoLbl
Cnd_EncLaunched
Cnd_DistVecLbl
And 86 Actions:
Act_ActTrig
Act_NagDistLeaving
Act_Invulnerable
Act_MarkObj
Act_PlayerCanTradelane
Act_ChangeState
Act_DeactTrig
Act_SendComm
Act_PlayerCanDock
Act_PlayMusic
Act_SpawnShip
Act_SetVibe
Act_SpawnSolar
Act_GCSClamp
Act_RandomPop
Act_MovePlayer
Act_CallThorn
Act_PlaySoundEffect
Act_StartDialog
Act_GiveObjList
Act_Destroy
Act_SetVibeLblToShip
Act_Cloak
Act_RelocateShip
Act_LightFuse
Act_SetVibeLbl
Act_ForceLand
Act_SetShipAndLoadout
Act_AddAmbient
Act_AddRTC
Act_NNIds
Act_Popupdialog
Act_SetNNObj
Act_RemoveRTC
Act_SetOffer
Act_SetTitle
Act_RemoveAmbient
Act_NagOff
Act_RpopAttClamp
Act_PobjIdle
Act_NagClamp
Act_LockDock
Act_SpawnFormation
Act_SetVibeShipToLbl
Act_NagGreet
Act_EtherComm
Act_EnableManeuver
Act_RevertCam
Act_Save
Act_PlayerEnemyClamp
Act_AdjHealth
Act_SpawnLoot
Act_LockManeuvers
Act_HostileClamp
Act_DisableTradelane
Act_NagDistTowards
Act_SetLifetime
Act_AdjAcct
Act_SetNNState
Act_SetNNHidden
Act_GiveNNObjs
Act_EnableEnc
Act_DebugMsg
Act_RandomPopSphere
Act_SetVibeShiptoLbl
Act_SetInitialPlayerPos
Act_StaticCam
Act_SetVibeOfferBaseHack
Act_NNPath
Act_PopUpDialog
Act_SetOrient
Act_RemoveCargo
Act_SetRep
Act_DisableFriendlyFire
Act_SetLifeTime
Act_SetVibeLbltoShip
Act_Jumper
Act_Ethercomm
Act_GiveMB
Act_Lightfuse
Act_SetPriority
Act_PObjIdle
Act_RpopTLAttacksEnabled
Act_DockRequest
Act_Forceland
Act_DisableEnc
Most of them are self explanatory, I'll explain how to use them as we come onto them. Now, a mistake I made was to try to 'alter' the first mission into what I wanted. Big mistake. It's FAR easier to start from scratch. So, we'll do that. Get yourself an open Notepad document and head it up as follows:
[Mission
mission_title = 1
mission_offer = 1
reward = 2000 <-- Change this for a different payout at the end...cheater
npc_ship_file = missions\m01a\npcships.ini
That identifies it as a mission. The next thing to do is to declare NPCs that will appear in the mission. Here's a typical NPC entry:
[NPC
nickname = transport1_m01a <-- this is important to spell right in the rest of the file
affiliation = co_me_grp <-- faction the ship belongs to
npc_ship_arch = MSN01a_Large_Transport <-- what ship they fly NOTE: this is NOT in shiparch.ini
space_costume = li_hatcher_head, pl_female2_peasant_body, prop_neuralnet_E_right <-- what you'll see in the little box if they talk to you
voice = pilot_f_leg_f01 <- the associated voice
individual_name = 216008 <-- the name they'll have
Now, bear in mind that you can use NPCs as many times as you want. The next thing is to declare the ship they fly. The associated entry from above:
[MsnShip
nickname = transport1 <-- this is the name you'll need to refer to in the actual mission
NPC = transport1_m01a <-- name of the NPC
label = transports <-- this is a label, read about them below
label = transportleadlabel
label = us
Labels are very useful and allow you to manipulate large groups of ships very precisely. A single ship can have as many labels as it needs, there's no limit. Usually, there is an "us" label, which identifies ships that fly with the player.
Now, to make your mission seem "living", you'll want to declare a good number of Mission Ships, friends, foes and neutral wanderers alike. You only need to create one NPC per class of ship you include (LF, HF, FR, gunboat etc), but you need to enter a MsnShip for every ship that appears in the mission. Less than about 20 and your mission is likely to seem empty. Bear that in mind. Having declared ships, do the same for Solars (stationary objects). A typical entry would be like this:
[MsnSolar
nickname = base <-- refer to it later by this moniker
string_id = 216120 <-- this is its name
faction = fc_lr_grp <-- faction affliated with
system = Li01 <-- the system this Solar is in
position = 57147, 0, -52081 <-- its position in the system
archetype = d_depot <-- what it looks like
loadout = depot <-- the weapons it's armed with
pilot = MSN01b_Weapon_Platform <-- the pilot (ie weapon skill)
base = Li01_01_Base <-- not sure about this, becaus that line means Manhattan...
label = lbl_base <-- labels
radius = 0 <-- not sure about this
visit = UNKNOWABLE <-- this means it will not appear on your nav map
It's not necessary to include Solars, it depends on what your mission will involve. For example, a mission where you attack something will likely feature Weapon Platforms, or a station, but an exploring mission might not feature anything of the sort. These are all things to consider.
Whew. Enough for one post. There'll be more later.
EDIT - feedback welcome, also if you want to know how to make a certain kind of mission, post here and I'll adapt the tutorial
"There are 10 kinds of people in this world: those who understand binary and those who don't"
Edited by - Darkstone on 4/21/2004 11:45:43 AM