Difference between revisions of "Messages.tbl"
(→#Messages: messages.tbl upgrades) |
|||
Line 203: | Line 203: | ||
{{Table3613| | {{Table3613| | ||
Must also end the optional Simulated Speech Overrides section with #End.}}<br> | Must also end the optional Simulated Speech Overrides section with #End.}}<br> | ||
+ | |||
+ | ==Filters== | ||
+ | {{Table232| | ||
+ | *Messages can be filtered with [[Messages.tbl#$Filter by subject:|$Filter by subject:]] or [[Messages.tbl#$Filter by subject:|$Filter by subject:]]. | ||
+ | *These can be applied multiple times for each filer. So the following example would match Vasudan or Shivan Bombers and nothing else. | ||
+ | <pre> | ||
+ | +Species: Vasudan | ||
+ | +Species: Shivan | ||
+ | +Type: Bomber | ||
+ | </pre>}} | ||
+ | |||
+ | ===+Ship name:=== | ||
+ | *Matches the name of the ship | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
+ | ===+Callsign:=== | ||
+ | *Matches the callsign of the ship | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
+ | ===+Class name:=== | ||
+ | *Matches the class of the ship | ||
+ | *Respects alt-names as defined in FRED | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
+ | ===+Wing name:=== | ||
+ | *Matches the wing that the ship is in | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
+ | ===+Species:=== | ||
+ | *Matches the species of the ship | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
+ | ===+Type:=== | ||
+ | *Matches the type of the ship as defined in [[objecttypes.tbl]] | ||
+ | *Syntax: '''''String''''' | ||
+ | |||
==Sample== | ==Sample== |
Revision as of 17:50, 24 March 2023
Revision information.....
- FSO Revision: 10943
List of Tables and related code files | |
---|---|
* Notes Modular Tables | |
** Notes tables which only use modular tables | |
Ai.tbl* | /ai/aicode.cpp |
Ai_profiles.tbl* | /ai/ai_profiles.cpp |
Animation.tbl** | /model/modelanimation.cpp |
Armor.tbl* | /ship/ship.cpp |
Asteroid.tbl* | /asteroid/asteroid.cpp |
Autopilot.tbl* | /autopilot/autopilot.cpp |
Cheats.tbl* | /cheats_table/cheats_table.cpp |
Colors.tbl* | /globalincs/alphacolors.cpp |
Curves.tbl* | /math/curves.cpp |
Controlconfigdefaults.tbl | /controlconfig/controlsconfigcommon.cpp |
Credits.tbl* | /menuui/credits.cpp |
Cutscenes.tbl* | /cutscene/cutscenes.cpp |
Decals.tbl** | /decals/decals.cpp |
Fireball.tbl* | /fireball/fireballs.cpp |
Fonts.tbl* | /graphics/font.cpp |
Game_settings.tbl* | /mod_table/mod_table.cpp |
Glowpoints.tbl* | /model/modelread.cpp |
Help.tbl* | /gamehelp/contexthelp.cpp |
Hud_gauges.tbl* | /hud/hudparse.cpp |
Icons.tbl* | /mission/missionbriefcommon.cpp |
Iff_defs.tbl* | /iff_defs/iff_defs.cpp |
Keywords.tbl* | Not In Codebase |
Lighting_Profiles.tbl* | /lighting/lighting_profiles.cpp |
Lightning.tbl* | /nebula/neblightning.cpp |
Mainhall.tbl* | /menuui/mainhallmenu.cpp |
Medals.tbl* | /stats/medals.cpp |
Messages.tbl* | /mission/missionmessage.cpp |
Mflash.tbl* | /weapon/muzzleflash.cpp |
Music.tbl* | /gamesnd/eventmusic.cpp |
Nebula.tbl* | /nebula/neb.cpp |
Objecttypes.tbl* | /ship/ship.cpp |
Options.tbl* | Not In Codebase |
Particle effects(-part.tbm)** | /particle/effects... |
Post_processing.tbl | /graphics/gropenglpostprocessing.cpp |
Rank.tbl* | /stats/scoring.cpp |
Scpui.tbl* | Not In Codebase |
Scripting.tbl* | /parse/scripting.cpp |
Ships.tbl* | /ship/ship.cpp |
Sexps.tbl** | /parse/sexp/sexp_lookup.cpp |
Sounds.tbl* | /gamesnd/gamesnd.cpp |
Species_defs.tbl* | /species_defs/species_defs.cpp |
Species.tbl* | /menuui/techmenu.cpp |
Ssm.tbl* | /hud/hudartillery.cpp |
Stars.tbl* | /starfield/starfield.cpp |
Strings.tbl* | /localization/localize.cpp |
Tips.tbl* | /menuui/playermenu.cpp |
Traitor.tbl* | /stats/scoring.cpp |
Tstrings.tbl* | /localization/localize.cpp |
Virtual_pofs.tbl* | /model/modelreplace.cpp |
Weapon_expl.tbl* | /weapon/weapons.cpp |
Weapons.tbl* | /weapon/weapons.cpp |
The messages.tbl is used to link actions, animations, and sounds of the messages received during the mission. Personas are used to group messages by the same talker, for example, all the Wingman 1 (Male Terran Pilot) messages go with a Wingman 1 persona.
Each message is composed of a text macro, and optionally a head .ani and/or an audio macro.
Contents
#Message Frequencies
$Name:
Required. Defines the message to augment.
- Syntax: String
- Available Values: See $Name in Messages.tbl
+Occurrence Chance:
Optional. Defines the % chance this message will be played when the associated event occurs. For example, if you score a kill, and the +Occurrence Chance: is 10 for a Praise message, then there is a 10% chance that you a Praise message will play.
- Syntax: Integer
- Available Values: Between 0 and 100
+Maximum Count:
Optional. Defines the maximum number of times this message will be played during a given mission.
- Syntax: Integer
+Minimum Delay:
Optional. Defines the minimum delay time between being queue by the game and the time the message actually plays. (This helps simulate "organic" AI's)
- Syntax: Integer in milliseconds
#Moods
$Mood:
Optional. The name of a mood to be attached to a message and set as a mission mood. Example: Happy, Vengeful, etc.
- Syntax: String
#End
#Personas
Required. The #Personas group is used to define the all of the personas used for the messages.
$Persona:
Required. Defines the name of the persona
- Syntax: String
$Type:
Required. Defines the type of the persona
- Syntax: String
- Available types:
- wingman
- support
- large
- command
+<Species>
Optional. The +<Species> (such as +Vasudan) can be used to assign personas to other species. If omitted, the Persona is assigned to the default species.
- Syntax: +String
$Allow substitution of missing messages:
- Syntax: Boolean
$No automatic assignment:
- Syntax: Boolean
#Messages
Required. The #Messages group contains all available messages.
$Name:
Required. Defines the type of the message
- Syntax: String
- Available types (types marked with * do not have code support) :
- Arrive Enemy
- Attack Target
- Check 6
- Engage
- Help
- Praise
- Backup
- Ignore Target
- No
- Oops 1 * (Only Command has code support in Retail)
- Permission *
- Stray *
- Depart
- yes
- Rearm on Way
- On way
- Rearm warping in
- No Target
- Docking Start *
- Repair Done
- Repair Aborted
- Traitor
- Rearm
- Disable Target
- Disarm Target
- Player Dead
- Death
- Support Killed
- All Clear *
- All Alone
- Repair
- Instructor Hit
- Instructor Attack
- Stray Warning
- Stray Warning Final
- AWACS at 75
- AWACS at 25
- Praise Self
- High Praise
- Primaries Low
- Attack Subsystem
- Protect Target
- Form on my wing
- Cover me
- The following have been deprecated. Use Filters instead.
- Beta Arrived
- Gamma Arrived
- Delta Arrived
- Epsilon Arrived
- The following have been deprecated. Use Filters instead.
$Message: and $MessageNew:
Defines the message shown in game screen when the message is triggered. Value is a reference to tstrings.tbl.
$Message: is used for single-line messages, while $MessageNew: is used for multi-line messages (but can also be used for single-line messages)
- $MessageNew: is preferred over $Message:
- Syntax: XSTR("string", integer)
+Persona:
Optional. Defines the persona associated with the message
- Syntax:
String
+AVI Name:
Optional. Determines the ANI file to be played when the message is triggered.
In FSO 3.7.4 and later, the game initially attempts to use the file <string>.ani with a persona message. In earlier versions, or if <string>.ani does not exist, the game picks one of <string>a.ani, <string>b.ani and <string>c.ani each time. So if you have defined +Avi Name: Head-Joe, and Head-Joe.ani does not exist, the game will attempt to use the files Head-Joea.ani, Head-Joeb.ani and Head-Joec.ani. For wingmen personas, the c variant is assumed to be a death animation.
- Syntax: String
+Wave Name:
Optional. Sets the sounds file that is played when the message is triggered
- Syntax: String
$Mood:
The mood where this message should ideally be played. It may be played on other moods as long as it is not excluded for them below, if no better matching message is found.
- Syntax: String
$Exclude Mood:
A list of moods not to play this message, ever. The list goes in parentheses. See Terran 'Attack Target' example below for usage.
- Syntax: String List
$Filter by sender:
- Applies the filters to the ship sending the message.
- Any number of filters can be used, including multiple of any type of filters.
- All filters must match for a message to be sent.
- Syntax: See Filters
$Filter by subject:
- Applies the filters to the ship the message is "about". For order confirmations, the subject is the target of the order. For Praise/High Praise/Praise Self messages, it's the ship that died. For Help and Check 6, it's the attacker. For arrival messages, it's the wing leader of the arriving wing.
- Any number of filters can be used, including multiple of any type of filters.
- All filters must match for a message to be sent.
- Syntax: See Filters
#End
#Simulated Speech Overrides
$File Name:
Optional. File name to add to the overrides list. Filenames provided here, however, must include an extension or a warning will be issues, for example msg_1.wav.
- Syntax: String
#End
Filters
- Messages can be filtered with $Filter by subject: or $Filter by subject:.
- These can be applied multiple times for each filer. So the following example would match Vasudan or Shivan Bombers and nothing else.
+Species: Vasudan +Species: Shivan +Type: Bomber
+Ship name:
- Matches the name of the ship
- Syntax: String
+Callsign:
- Matches the callsign of the ship
- Syntax: String
+Class name:
- Matches the class of the ship
- Respects alt-names as defined in FRED
- Syntax: String
+Wing name:
- Matches the wing that the ship is in
- Syntax: String
+Species:
- Matches the species of the ship
- Syntax: String
+Type:
- Matches the type of the ship as defined in objecttypes.tbl
- Syntax: String
Sample
This is a snippet of the retail FreeSpace 2 table, highlighting two major examples between a default (Terran) persona and a species (Vasudan) persona. Command, Support, and Large ship message examples are also included. Newer features have been added for extra clarification of their usage.
;; This is a list of moods that the game will use for builtin ;; messages. Any message without a mood is treated as General #Moods $Mood: Happy $Mood: Angry $Mood: Vengeful #End #Personas $Persona: Wingman 1 $Type: wingman $Persona: Wingman 6 $Type: wingman +Vasudan $Persona: Support Ship $Type: support $Persona: Support Ship Vasudan $Type: support +Vasudan $Persona: Large Ship $Type: large $Persona: Large Ship Vasudan $Type: large +Vasudan $Persona: Terran Command $Type: Command #Messages ;; ALL CLEAR .................................................................................. $Name: All Clear $Message: XSTR("Command, we have secured the area.", 2725) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_allclear.wav $Name: All Clear $Message: XSTR("All enemy forces negated.", 2730) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_allclear.wav ;; ARRIVAL (Enemy) ................................................................... $Name: Arrive Enemy $Message: XSTR("Bandits incoming!", 1079) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_arrival.wav $Name: Arrive Enemy $Message: XSTR("Reading hostile indicators.", 2734) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_arrival.wav $Name: Arrive Enemy $Message: XSTR("Incoming jump signature! Hostile configuration!", 2736) +Persona: Terran Command +Avi Name: Head-CM2 +Wave Name: TC_arrival.wav ;; ATTACK MY TARGET ........................................................................... $Name: Attack Target $Message: XSTR("Roger that, sir. Engaging your target.", 2737) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_attack.wav $Name: Attack Target $Message: XSTR("Yes sir, I'll make the bastards pay for Capella!", 2737) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_attack.wav $Mood: Vengeful $Exclude Mood: ( "Happy" ) $Name: Attack Target $Message: XSTR("Yes sir. I just love killing Shivans!", 2737) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_attack.wav $Mood: Angry $Exclude Mood: ( "Angry" "Vengeful" ) $Name: Attack Target $Message: XSTR("Affirmative. We will destroy your target.", 2742) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_attack.wav ;; BACKUP ARRIVAL (previously named "REINFORCEMENTS") ......................................... $Name: Backup $Message: XSTR("Reinforcements on station. Request status brief.", 2744) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_backup.wav $Name: Backup $Message: XSTR("We are here to assist. What is your status?", 2749) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_backup.wav ;; BETA WING ARRIVAL .......................................................................... $Name: Beta Arrived $Message: XSTR("Beta wing here. Standing by.", 2751) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_beta.wav $Name: Beta Arrived $Message: XSTR("Beta wing is on station.", 2756) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_beta.wav ;; CHECK YOUR SIX ............................................................................. $Name: Check 6 $Message: XSTR("Check your six!", 2758) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_Check6.wav $Name: Check 6 $Message: XSTR("Take evasive action, pilot!", 2763) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_Check6.wav ;; DEATH (previously wingman scream)................................................... $Name: Death $Message: XSTR("Noooooooo!!!", 2765) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_Death.wav $Name: Death $Message: XSTR("Avenge me!", 2770) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_Death.wav ;; DELTA WING ARRIVAL ......................................................................... $Name: Delta Arrived $Message: XSTR("This is Delta wing. What's your status?", 2772) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_Delta.wav $Name: Delta Arrived $Message: XSTR("Delta wing is ready to assist, pilot.", 2777) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_Delta.wav ;; DEPART (previously named "WARPOUT") ........................................................ $Name: Depart $Message: XSTR("Yes, sir! I'm outta here!", 2779) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_depart.wav $Name: Depart $Message: XSTR("We are departing as ordered.", 2784) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_depart.wav $Name: Depart $Message: XSTR("I copy. Engaging jump drive now.", 2786) +Persona: Support Ship +Avi Name: Head-TP3 +Wave Name: S_depart.wav $Name: Depart $Message: XSTR("Departing field of engagement.", 2787) +Persona: Support Ship Vasudan +Avi Name: Head-VP2 +Wave Name: VS_depart.wav $Name: Depart $Message: XSTR("We are departing as ordered.", 2788) +Persona: Large Ship Vasudan +Avi Name: Head-VP1 +Wave Name: 6_depart.wav ;; DISABLE TARGET ............................................................................. $Name: Disable Target $Message: XSTR("Roger that, sir. Disabling your target.", 2789) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_Disable.wav $Name: Disable Target $Message: XSTR("Affirmative. Disabling your target.", 2794) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_Disable.wav ;; DISARM TARGET .............................................................................. $Name: Disarm Target $Message: XSTR("Yes, sir! Targeting weapons now!", 2796) +Persona: Wingman 1 +Avi Name: Head-TP1 +Wave Name: 1_Disarm.wav $Name: Disarm Target $Message: XSTR("Acknowledged. Weapon subsystem targeted. ", 2801) +Persona: Wingman 6 +Avi Name: Head-VP1 +Wave Name: 6_Disarm.wav #End #Simulated Speech Overrides $File Name: msg_1.wav $File Name: msg_2.wav $File Name: msg_3.wav $File Name: msg_4.wav $File Name: msg_5.wav $File Name: msg_6.wav #End