Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement Mantis 3204 #2106

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 5 additions & 4 deletions code/mission/mission_flags.h
Expand Up @@ -27,10 +27,11 @@ namespace Mission {
No_builtin_command, // turns off Command without turning off pilots - Karajorma
Player_start_ai, // Player Starts mission under AI Control (NOT MULTI COMPATABLE) - Kazan
All_attack, // all teams at war - Goober5000
Use_ap_cinematics, // Kazan - use autopilot cinematics
Deactivate_ap, // KeldorKatarn - deactivate autopilot (patch approved by Kazan)
Always_show_goals, // Karajorma - Show the mission goals, even for training missions
End_to_mainhall, // niffiwan - Return to the mainhall after debrief
Use_ap_cinematics, // use autopilot cinematics - Kazan
Deactivate_ap, // deactivate autopilot - KeldorKatarn (patch approved by Kazan)
Always_show_goals, // Show the mission goals, even for training missions - Karajorma
End_to_mainhall, // Return to the mainhall after debrief - niffiwan
Override_hashcommand, // Override #Command with the Command info in Mission Specs - Goober5000

NUM_VALUES
};
Expand Down
8 changes: 8 additions & 0 deletions code/parse/sexp.cpp
Expand Up @@ -12006,6 +12006,10 @@ void sexp_send_message(int n)
priority = tmp;
}

// we might override the sender
if (The_mission.flags[Mission::Mission_Flags::Override_hashcommand] && !strcmp(who_from, "#Command"))
who_from = The_mission.command_sender;

sexp_send_one_message( name, who_from, priority, 0, 0 );
}

Expand Down Expand Up @@ -12054,6 +12058,10 @@ void sexp_send_message_list(int n)
return;
}

// we might override the sender
if (The_mission.flags[Mission::Mission_Flags::Override_hashcommand] && !strcmp(who_from, "#Command"))
who_from = The_mission.command_sender;

// send the message
sexp_send_one_message(name, who_from, priority, 1, delay);
}
Expand Down
29 changes: 18 additions & 11 deletions fred2/fred.rc
Expand Up @@ -868,17 +868,17 @@ BEGIN
CONTROL "Minimium speed to display",IDC_CONTRAIL_THRESHOLD_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,103,93,10
EDITTEXT IDC_CONTRAIL_THRESHOLD,262,102,48,14,ES_READONLY
GROUPBOX "Built-in Command Messages",IDC_STATIC,158,131,154,46
LTEXT "Sender",IDC_STATIC,165,145,40,8
COMBOBOX IDC_COMMAND_SENDER,209,143,99,140,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "Persona",IDC_STATIC,165,161,40,8
COMBOBOX IDC_COMMAND_PERSONA,209,160,99,140,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Mission Music",IDC_STATIC,157,188,154,47
LTEXT "Default",IDC_STATIC,161,200,40,8
COMBOBOX IDC_EVENT_MUSIC,207,199,99,140,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "If music pack is present",IDC_STATIC,161,213,43,16
COMBOBOX IDC_SUBSTITUTE_EVENT_MUSIC,207,215,99,140,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Flags",IDC_STATIC,325,20,154,198
GROUPBOX "Built-in Command Messages",IDC_STATIC,158,127,154,60
LTEXT "Sender",IDC_STATIC,165,141,40,8
COMBOBOX IDC_COMMAND_SENDER,209,139,99,140,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "Persona",IDC_STATIC,165,156,40,8
COMBOBOX IDC_COMMAND_PERSONA,209,155,99,140,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Mission Music",IDC_STATIC,157,192,154,47
LTEXT "Default",IDC_STATIC,161,204,40,8
COMBOBOX IDC_EVENT_MUSIC,207,203,99,140,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "If music pack is present",IDC_STATIC,161,217,43,16
COMBOBOX IDC_SUBSTITUTE_EVENT_MUSIC,207,219,99,140,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Flags",IDC_STATIC,321,20,158,198
CONTROL "All Teams at War",IDC_FULL_WAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,326,31,72,10
CONTROL "Red Alert Mission",IDC_RED_ALERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,326,41,78,10
CONTROL "Scramble Mission",IDC_SCRAMBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,326,51,72,10
Expand Down Expand Up @@ -916,6 +916,8 @@ BEGIN
CONTROL "Always Show Mission Goals In Briefing",IDC_ALWAYS_SHOW_GOALS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,326,180,142,10
CONTROL "Mission End to Mainhall",IDC_END_TO_MAINHALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,326,190,142,10
CONTROL "Override #Command in event messages",IDC_OVERRIDE_HASHCOMMAND,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,166,172,142,10
END

IDD_PREFERENCES DIALOG 0, 0, 333, 81
Expand Down Expand Up @@ -2783,6 +2785,11 @@ BEGIN
0
END

IDD_MISSION_NOTES AFX_DIALOG_LAYOUT
BEGIN
0
END


/////////////////////////////////////////////////////////////////////////////
//
Expand Down
7 changes: 6 additions & 1 deletion fred2/missionnotesdlg.cpp
Expand Up @@ -74,6 +74,7 @@ CMissionNotesDlg::CMissionNotesDlg(CWnd* pParent /*=NULL*/) : CDialog(CMissionNo
m_2d_mission = FALSE;
m_always_show_goals = FALSE;
m_end_to_mainhall = FALSE;
m_override_hashcommand = FALSE;
m_max_hull_repair_val = 0.0f;
m_max_subsys_repair_val = 100.0f;
m_contrail_threshold = CONTRAIL_THRESHOLD_DEFAULT;
Expand Down Expand Up @@ -126,6 +127,7 @@ void CMissionNotesDlg::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_DEACTIVATE_AUTOPILOT, m_no_autpilot);
DDX_Check(pDX, IDC_ALWAYS_SHOW_GOALS, m_always_show_goals);
DDX_Check(pDX, IDC_END_TO_MAINHALL, m_end_to_mainhall);
DDX_Check(pDX, IDC_OVERRIDE_HASHCOMMAND, m_override_hashcommand);
DDX_Text(pDX, IDC_MAX_HULL_REPAIR_VAL, m_max_hull_repair_val);
DDV_MinMaxFloat(pDX, m_max_hull_repair_val, 0, 100);
DDX_Text(pDX, IDC_MAX_SUBSYS_REPAIR_VAL, m_max_subsys_repair_val);
Expand All @@ -149,7 +151,7 @@ BEGIN_MESSAGE_MAP(CMissionNotesDlg, CDialog)
ON_BN_CLICKED(IDC_CUSTOM_WING_NAMES, OnCustomWingNames)
ON_BN_CLICKED(IDC_SOUND_ENVIRONMENT_BUTTON, OnSoundEnvironment)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMissionNotesDlg message handlers
Expand Down Expand Up @@ -292,6 +294,9 @@ void CMissionNotesDlg::OnOK()
// End to mainhall
The_mission.flags.set(Mission::Mission_Flags::End_to_mainhall, m_end_to_mainhall != 0);

// Override #Command
The_mission.flags.set(Mission::Mission_Flags::Override_hashcommand, m_override_hashcommand != 0);

if ( flags != The_mission.flags ){
set_modified();
}
Expand Down
1 change: 1 addition & 0 deletions fred2/missionnotesdlg.h
Expand Up @@ -65,6 +65,7 @@ class CMissionNotesDlg : public CDialog
BOOL m_2d_mission;
BOOL m_always_show_goals;
BOOL m_end_to_mainhall;
BOOL m_override_hashcommand;
float m_max_hull_repair_val;
float m_max_subsys_repair_val;
BOOL m_contrail_threshold_flag;
Expand Down
3 changes: 2 additions & 1 deletion fred2/resource.h
Expand Up @@ -1062,6 +1062,7 @@
#define IDC_ALWAYS_SHOW_GOALS2 1550
#define IDC_END_TO_MAINHALL 1550
#define IDC_NEW_TEXTURE 1551
#define IDC_OVERRIDE_HASHCOMMAND 1551
#define IDC_TEXTURES 1552
#define IDC_OLD_TEXTURE_LIST 1553
#define IDC_RESTRICT_ARRIVAL 1553
Expand Down Expand Up @@ -1488,7 +1489,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 327
#define _APS_NEXT_RESOURCE_VALUE 328
#define _APS_NEXT_COMMAND_VALUE 33098
#define _APS_NEXT_CONTROL_VALUE 1660
#define _APS_NEXT_SYMED_VALUE 105
Expand Down
12 changes: 10 additions & 2 deletions fred2/voiceactingmanager.cpp
Expand Up @@ -516,16 +516,17 @@ void VoiceActingManager::export_one_message(MMessage *message)
// replace file name
entry.Replace("$filename", message->wave_info.name);

// determine and replace persona
// replace message
entry.Replace("$message", message->message);

// determine and replace persona
if (message->persona_index >= 0)
entry.Replace("$persona", Personas[message->persona_index].name);
else
entry.Replace("$persona", "<none>");

// determine sender
char sender[NAME_LENGTH+1];

get_valid_sender(sender, sizeof(sender), message);

// replace sender (but print #Command as Command)
Expand All @@ -545,6 +546,13 @@ void VoiceActingManager::get_valid_sender(char *sender, size_t sender_size, MMes

strncpy(sender, get_message_sender(message->name), sender_size);

// check if we're overriding #Command
if (The_mission.flags[Mission::Mission_Flags::Override_hashcommand] && !strcmp("#Command", sender))
{
memset(sender, 0, sender_size);
strncpy(sender, The_mission.command_sender, sender_size);
}

// strip hash if present
if ( sender[0] == '#' ) {
size_t i = 1;
Expand Down