Author Topic: A triplet of small patches  (Read 3578 times)

0 Members and 1 Guest are viewing this topic.

Offline Axem

  • 211
A triplet of small patches
Today on: Axem does tiny and trivial coding with sexps. (Some cleanup is probably needed since this patch was created before a few other sexps were added)

1:

Deprecates hud-set-active-gauge and hud-activate-gauge-type in favor of hud-set-custom-gauge-active and hud-set-retail-gauge active, which are clearer to understand and now accept INT_MAX number of gauges, instead of just 1.

Code: [Select]
Index: code/fred2/sexp_tree.cpp
===================================================================
--- code/fred2/sexp_tree.cpp (revision 9258)
+++ code/fred2/sexp_tree.cpp (working copy)
@@ -827,6 +827,8 @@
  // unlike the above operators, these are deprecated
  case OP_HITS_LEFT_SUBSYSTEM:
  case OP_CUTSCENES_SHOW_SUBTITLE:
+ case OP_HUD_GAUGE_SET_ACTIVE:
+ case OP_HUD_ACTIVATE_GAUGE_TYPE:
  j = Num_op_menus; // don't allow these operators to be visible
  break;
  }
@@ -865,6 +867,8 @@
  // unlike the above operators, these are deprecated
  case OP_HITS_LEFT_SUBSYSTEM:
  case OP_CUTSCENES_SHOW_SUBTITLE:
+ case OP_HUD_GAUGE_SET_ACTIVE:
+ case OP_HUD_ACTIVATE_GAUGE_TYPE:
  j = Num_submenus; // don't allow these operators to be visible
  break;
  }
Index: code/parse/sexp.cpp
===================================================================
--- code/parse/sexp.cpp (revision 9258)
+++ code/parse/sexp.cpp (working copy)
@@ -554,6 +554,8 @@
  //HUD Sub-Category
  { "hud-disable", OP_HUD_DISABLE, 1, 1 }, // Goober5000
  { "hud-disable-except-messages", OP_HUD_DISABLE_EXCEPT_MESSAGES, 1, 1 }, // Goober5000
+ { "hud-set-custom-gauge-active", OP_HUD_SET_CUSTOM_GAUGE_ACTIVE, 2, INT_MAX },
+ { "hud-set-retail-gauge-active", OP_HUD_SET_RETAIL_GAUGE_ACTIVE, 2, INT_MAX},
  { "hud-set-text", OP_HUD_SET_TEXT, 2, 2 }, //WMCoolmon
  { "hud-set-text-num", OP_HUD_SET_TEXT_NUM, 2, 2 }, //WMCoolmon
  { "hud-set-message", OP_HUD_SET_MESSAGE, 2, 2 }, //The E
@@ -561,9 +563,9 @@
  { "hud-set-frame", OP_HUD_SET_FRAME, 2, 2 }, //WMCoolmon
  { "hud-set-coords", OP_HUD_SET_COORDS, 3, 3 }, //WMCoolmon
  { "hud-set-color", OP_HUD_SET_COLOR, 4, 4 }, //WMCoolmon
- { "hud-display-gauge", OP_HUD_DISPLAY_GAUGE, 2, 2 },
- { "hud-gauge-set-active", OP_HUD_GAUGE_SET_ACTIVE, 2, 2 },
- { "hud-activate-gauge-type", OP_HUD_ACTIVATE_GAUGE_TYPE, 2, 2},
+ { "hud-display-gauge", OP_HUD_DISPLAY_GAUGE, 2, 2 },
+ { "hud-gauge-set-active", OP_HUD_GAUGE_SET_ACTIVE, 2, 2 }, //Deprecated
+ { "hud-activate-gauge-type", OP_HUD_ACTIVATE_GAUGE_TYPE, 2, 2}, //Deprecated
  { "hud-clear-messages", OP_HUD_CLEAR_MESSAGES, 0, 0}, // swifty
  { "hud-set-max-targeting-range", OP_HUD_SET_MAX_TARGETING_RANGE, 1, 1 }, // Goober5000
 
@@ -9710,6 +9712,23 @@
  }
 }
 
+void sexp_hud_set_custom_gauge_active(int node) {
+ HudGauge* hg;
+ bool activate = (is_sexp_true(node) > 0);
+ node = CDR(node);
+ for(; node >= 0; node = CDR(node)) {
+
+ char* name = CTEXT(node);
+ hg = hud_get_gauge(name);
+
+ if (hg != NULL) {
+ hg->updateActive(activate);
+ }
+
+ }
+
+}
+
 int hud_gauge_type_lookup(char* name) {
  for(int i = 0; i < Num_hud_gauge_types; i++) {
  if(!stricmp(name, Hud_gauge_types[i].name))
@@ -9741,6 +9760,37 @@
  }
 }
 
+void sexp_hud_set_retail_gauge_active(int node) {
+
+ bool activate = (is_sexp_true(node) > 0);
+ node = CDR(node);
+
+ for(; node >= 0; node = CDR(node)) {
+
+ int config_type = hud_gauge_type_lookup(CTEXT(node));
+
+ if (config_type != -1) {
+ if(Ship_info[Player_ship->ship_info_index].hud_gauges.size() > 0) {
+ size_t num_gauges = Ship_info[Player_ship->ship_info_index].hud_gauges.size();
+
+ for(size_t i = 0; i < num_gauges; i++) {
+ if (Ship_info[Player_ship->ship_info_index].hud_gauges[i]->getObjectType() == config_type)
+ Ship_info[Player_ship->ship_info_index].hud_gauges[i]->updateSexpOverride(!activate);
+ }
+ } else {
+ size_t num_gauges = default_hud_gauges.size();
+
+ for(size_t i = 0; i < num_gauges; i++) {
+ if (default_hud_gauges[i]->getObjectType() == config_type)
+ default_hud_gauges[i]->updateSexpOverride(!activate);
+ }
+ }
+ }
+
+ }
+
+}
+
 void multi_sexp_hud_display_gauge()
 {
  int show_for;
@@ -22986,6 +23036,11 @@
  sexp_hud_gauge_set_active(node);
  break;
 
+ case OP_HUD_SET_CUSTOM_GAUGE_ACTIVE:
+ sexp_val = SEXP_TRUE;
+ sexp_hud_set_custom_gauge_active(node);
+ break;
+
  case OP_HUD_CLEAR_MESSAGES:
  sexp_val = SEXP_TRUE;
  sexp_hud_clear_messages();
@@ -22996,6 +23051,11 @@
  sexp_hud_activate_gauge_type(node);
  break;
 
+ case OP_HUD_SET_RETAIL_GAUGE_ACTIVE:
+ sexp_val = SEXP_TRUE;
+ sexp_hud_set_retail_gauge_active(node);
+ break;
+
  case OP_ADD_TO_COLGROUP:
  sexp_val = SEXP_TRUE;
  sexp_manipulate_colgroup(node, true);
@@ -23982,6 +24042,8 @@
  case OP_SET_THRUSTERS:
  case OP_SET_PLAYER_THROTTLE_SPEED:
  case OP_DEBUG:
+ case OP_HUD_SET_CUSTOM_GAUGE_ACTIVE:
+ case OP_HUD_SET_RETAIL_GAUGE_ACTIVE:
  return OPR_NULL;
 
  case OP_AI_CHASE:
@@ -25944,6 +26006,18 @@
  else
  return OPF_BOOL;
 
+ case OP_HUD_SET_CUSTOM_GAUGE_ACTIVE:
+ if (argnum == 0)
+ return OPF_BOOL;
+ else
+ return OPF_HUD_GAUGE;
+
+ case OP_HUD_SET_RETAIL_GAUGE_ACTIVE:
+ if (argnum == 0)
+ return OPF_BOOL;
+ else
+ return OPF_HUD_GAUGE;
+
  case OP_GET_COLGROUP_ID:
  return OPF_SHIP;
 
@@ -27426,6 +27500,8 @@
 
  case OP_HUD_DISABLE:
  case OP_HUD_DISABLE_EXCEPT_MESSAGES:
+ case OP_HUD_SET_CUSTOM_GAUGE_ACTIVE:
+ case OP_HUD_SET_RETAIL_GAUGE_ACTIVE:
  case OP_HUD_SET_TEXT:
  case OP_HUD_SET_TEXT_NUM:
  case OP_HUD_SET_MESSAGE:
@@ -31031,7 +31107,7 @@
  "\t2:\tText that will be displayed. This text will be treated as directive text, meaning that references to mapped keys will be replaced with the user's preferences.\r\n"
  },
 
- {OP_HUD_GAUGE_SET_ACTIVE, "hud-gauge-set-active\r\n"
+ {OP_HUD_GAUGE_SET_ACTIVE, "hud-gauge-set-active (deprecated)\r\n"
  "\tActivates or deactivates a given custom gauge."
  "Takes 2 Arguments...\r\n"
  "\t1:\tHUD Gauge name\r\n"
@@ -31043,13 +31119,27 @@
  "Takes no arguments\r\n"
  },
 
- {OP_HUD_ACTIVATE_GAUGE_TYPE, "hud-activate-gauge-type\r\n"
+ {OP_HUD_ACTIVATE_GAUGE_TYPE, "hud-activate-gauge-type (deprecated)\r\n"
  "\tActivates or deactivates all hud gauges of a given type."
  "Takes 2 Arguments...\r\n"
  "\t1:\tGauge Type\r\n"
  "\t2:\tBoolean, whether or not to display this gauge\r\n"
  },
 
+ {OP_HUD_SET_CUSTOM_GAUGE_ACTIVE, "hud-set-custom-gauge-active\r\n"
+ "\tActivates or deactivates a custom hud gauge defined in hud_gauges.tbl."
+ "Takes 2 Arguments...\r\n"
+ "\t1:\tBoolean, whether or not to display this gauge\r\n"
+ "\tRest:\tHUD Gauge name\r\n"
+ },
+
+ {OP_HUD_SET_RETAIL_GAUGE_ACTIVE, "hud-set-custom-gauge-active\r\n"
+ "\tActivates or deactivates a retail hud gauge grouping."
+ "Takes 2 Arguments...\r\n"
+ "\t1:\tBoolean, whether or not to display this gauge\r\n"
+ "\tRest:\tHUD Gauge Group name\r\n"
+ },
+
  {OP_ADD_TO_COLGROUP, "add-to-collision-group\r\n"
  "\tAdds a ship to the specified collision group(s). Note that there are 32 collision groups,\r"
  "\tand that an object may be in several collision groups at the same time\r\n"
Index: code/parse/sexp.h
===================================================================
--- code/parse/sexp.h (revision 9258)
+++ code/parse/sexp.h (working copy)
@@ -643,8 +643,8 @@
 #define OP_SHIP_SUBSYS_VANISHED (0x00e1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
 #define OP_SHIP_SUBSYS_IGNORE_IF_DEAD (0x00e2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
 #define OP_HUD_SET_DIRECTIVE (0x00e3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
-#define OP_HUD_GAUGE_SET_ACTIVE (0x00e4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
-#define OP_HUD_ACTIVATE_GAUGE_TYPE (0x00e5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
+#define OP_HUD_GAUGE_SET_ACTIVE (0x00e4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E - slightly deprecated
+#define OP_HUD_ACTIVATE_GAUGE_TYPE (0x00e5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E - slightly deprecated
 #define OP_SET_OBJECT_ORIENTATION (0x00e6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
 #define OP_STRING_CONCATENATE (0x00e7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
 #define OP_INT_TO_STRING (0x00e8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
@@ -702,7 +702,9 @@
 #define OP_DEBUG (0x0017 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
 #define OP_SET_MISSION_MOOD (0x0018 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
 #define OP_NAV_SELECT (0x0019 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
-#define OP_NAV_DESELECT (0x0020 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
+#define OP_NAV_DESELECT (0x001A | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
+#define OP_HUD_SET_CUSTOM_GAUGE_ACTIVE (0x001B | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E, just revamped a bit by Axem
+#define OP_HUD_SET_RETAIL_GAUGE_ACTIVE (0x001C | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E, just revamped a bit by Axem
 
 // defined for AI goals
 #define OP_AI_CHASE (0x0000 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)

2.

Adds show-subtitle-message, accepts an ingame message as a subtitle parameter, allowing the FREDder to break the 32 character limit and making his subtitling a lot easier.

Code: [Select]
Index: sexp.cpp
===================================================================
--- sexp.cpp (revision 9296)
+++ sexp.cpp (working copy)
@@ -609,6 +609,7 @@
  { "reset-camera", OP_CUTSCENES_RESET_CAMERA, 0, 1, },
  { "show-subtitle", OP_CUTSCENES_SHOW_SUBTITLE, 4, 13, },
  { "show-subtitle-text", OP_CUTSCENES_SHOW_SUBTITLE_TEXT, 6, 13, },
+ { "show-subtitle-message", OP_CUTSCENES_SHOW_SUBTITLE_MSG, 6, 13, },
  { "show-subtitle-image", OP_CUTSCENES_SHOW_SUBTITLE_IMAGE, 8, 10, },
  { "clear-subtitles", OP_CLEAR_SUBTITLES, 0, 0},
  { "lock-perspective", OP_CUTSCENES_FORCE_PERSPECTIVE, 1, 2, },
@@ -20598,6 +20599,179 @@
 
 }
 
+void sexp_show_subtitle_msg(int node)
+{
+ int n = node;
+ char* text = CTEXT(n);
+ char message[MESSAGE_LENGTH];
+
+ for (int i = 0; i < Num_messages; i++) {
+ if ( !stricmp(text, Messages[i].name) ) {
+
+ strcpy_s(message, Messages[i].message);
+
+ sexp_replace_variable_names_with_values(message, MESSAGE_LENGTH);
+
+ break;
+ }
+
+ }
+
+ n = CDR(n);
+
+ int x_pct = eval_num(n);
+ n = CDR(n);
+
+ int y_pct = eval_num(n);
+ n = CDR(n);
+
+ bool center_x = is_sexp_true(n) != 0;
+ n = CDR(n);
+
+ bool center_y = is_sexp_true(n) != 0;
+ n = CDR(n);
+
+ float display_time = eval_num(n) / 1000.0f;
+ n = CDR(n);
+
+ float fade_time = 0.0f;
+ if (n >= 0)
+ {
+ fade_time = eval_num(n) / 1000.0f;
+ n = CDR(n);
+ }
+
+ int width_pct = 0;
+ if (n >= 0)
+ {
+ width_pct = eval_num(n);
+ n = CDR(n);
+ }
+
+ int red = 255;
+ if (n >= 0)
+ {
+ red = eval_num(n);
+ n = CDR(n);
+ }
+
+ int green = 255;
+ if (n >= 0)
+ {
+ green = eval_num(n);
+ n = CDR(n);
+ }
+
+ int blue = 255;
+ if (n >= 0)
+ {
+ blue = eval_num(n);
+ n = CDR(n);
+ }
+
+ int fontnum = -1;
+ if (n >= 0)
+ {
+ char *font = CTEXT(n);
+ n = CDR(n);
+
+ // perform font lookup
+ for (int i = 0; i < Num_fonts; i++)
+ {
+ if (!stricmp(font, Fonts[i].filename))
+ {
+ fontnum = i;
+ break;
+ }
+ }
+ }
+
+ bool post_shaded = false;
+ if (n >= 0)
+ {
+ post_shaded = is_sexp_true(n) != 0;
+ n = CDR(n);
+ }
+
+ // check bounds
+ if (x_pct < -100)
+ x_pct = -100;
+ if (x_pct > 100)
+ x_pct = 100;
+ if (y_pct < -100)
+ y_pct = -100;
+ if (y_pct > 100)
+ y_pct = 100;
+ if (width_pct > 100)
+ width_pct = 100;
+ if (red > 255)
+ red = 255;
+ if (green > 255)
+ green = 255;
+ if (blue > 255)
+ blue = 255;
+
+ color new_color;
+ gr_init_alphacolor(&new_color, red, green, blue, 255);
+
+ // calculate pixel positions
+ int x_pos = (int) (gr_screen.max_w * (x_pct / 100.0f));
+ int y_pos = (int) (gr_screen.max_h * (y_pct / 100.0f));
+ int width = (int) (gr_screen.max_w * (width_pct / 100.0f));
+
+ // add the subtitle
+ subtitle new_subtitle(x_pos, y_pos, message, NULL, display_time, fade_time, &new_color, fontnum, center_x, center_y, width, 0, post_shaded);
+ Subtitles.push_back(new_subtitle);
+
+ multi_start_callback();
+ multi_send_int(x_pos);
+ multi_send_int(y_pos);
+ multi_send_string(message);
+ multi_send_float(display_time);
+ multi_send_float(fade_time);
+ multi_send_int(red);
+ multi_send_int(green);
+ multi_send_int(blue);
+ multi_send_int(fontnum);
+ multi_send_bool(center_x);
+ multi_send_bool(center_y);
+ multi_send_int(width);
+ multi_send_bool(post_shaded);
+ multi_end_callback();
+}
+
+void multi_sexp_show_subtitle_msg()
+{
+ int x_pos, y_pos, width=0, fontnum;
+ char message[MESSAGE_LENGTH];
+ float display_time, fade_time=0.0f;
+ int red=255, green=255, blue=255;
+ bool center_x=false, center_y=false;
+ bool post_shaded = false;
+ color new_color;
+
+ multi_get_int(x_pos);
+ multi_get_int(y_pos);
+ multi_get_string(message);
+ multi_get_float(display_time);
+ multi_get_float(fade_time);
+ multi_get_int(red);
+ multi_get_int(green);
+ multi_get_int(blue);
+ multi_get_int(fontnum);
+ multi_get_bool(center_x);
+ multi_get_bool(center_y);
+ multi_get_int(width);
+ multi_get_bool(post_shaded);
+
+ gr_init_alphacolor(&new_color, red, green, blue, 255);
+
+ // add the subtitle
+ subtitle new_subtitle(x_pos, y_pos, message, NULL, display_time, fade_time, &new_color, fontnum, center_x, center_y, width, 0, post_shaded);
+ Subtitles.push_back(new_subtitle);
+
+}
+
 void sexp_show_subtitle_image(int node)
 {
  int n = node;
@@ -23494,6 +23668,10 @@
  sexp_val = SEXP_TRUE;
  sexp_show_subtitle_text(node);
  break;
+ case OP_CUTSCENES_SHOW_SUBTITLE_MSG:
+ sexp_val = SEXP_TRUE;
+ sexp_show_subtitle_msg(node);
+ break;
  case OP_CUTSCENES_SHOW_SUBTITLE_IMAGE:
  sexp_val = SEXP_TRUE;
  sexp_show_subtitle_image(node);
@@ -23837,6 +24015,10 @@
  multi_sexp_show_subtitle_text();
  break;
 
+ case OP_CUTSCENES_SHOW_SUBTITLE_MSG:
+ multi_sexp_show_subtitle_msg();
+ break;
+
  case OP_CUTSCENES_SHOW_SUBTITLE_IMAGE:
  multi_sexp_show_subtitle_image();
  break;
@@ -24515,6 +24697,7 @@
  case OP_CUTSCENES_RESET_CAMERA:
  case OP_CUTSCENES_SHOW_SUBTITLE:
  case OP_CUTSCENES_SHOW_SUBTITLE_TEXT:
+ case OP_CUTSCENES_SHOW_SUBTITLE_MSG:
  case OP_CUTSCENES_SHOW_SUBTITLE_IMAGE:
  case OP_CUTSCENES_SET_TIME_COMPRESSION:
  case OP_CUTSCENES_RESET_TIME_COMPRESSION:
@@ -26449,6 +26632,20 @@
  else if (argnum == 12)
  return OPF_BOOL;
 
+ case OP_CUTSCENES_SHOW_SUBTITLE_MSG:
+ if (argnum == 0)
+ return OPF_MESSAGE;
+ else if (argnum == 1 || argnum == 2)
+ return OPF_NUMBER;
+ else if (argnum == 3 || argnum == 4)
+ return OPF_BOOL;
+ else if (argnum >= 5 && argnum <= 10)
+ return OPF_POSITIVE;
+ else if (argnum == 11)
+ return OPF_FONT;
+ else if (argnum == 12)
+ return OPF_BOOL;
+
  case OP_CUTSCENES_SHOW_SUBTITLE_IMAGE:
  if (argnum == 0)
  return OPF_STRING;
@@ -28101,6 +28298,7 @@
  case OP_CUTSCENES_RESET_CAMERA:
  case OP_CUTSCENES_SHOW_SUBTITLE:
  case OP_CUTSCENES_SHOW_SUBTITLE_TEXT:
+ case OP_CUTSCENES_SHOW_SUBTITLE_MSG:
  case OP_CUTSCENES_SHOW_SUBTITLE_IMAGE:
  case OP_CLEAR_SUBTITLES:
  case OP_CUTSCENES_FORCE_PERSPECTIVE:
@@ -31476,6 +31674,25 @@
  "\t13:\tDrawn after shading? (optional)"
  },
 
+
+ { OP_CUTSCENES_SHOW_SUBTITLE_MSG, "show-subtitle-message\r\n"
+ "\tDisplays a subtitle in the form of text taken from an ingame message.\r\n"
+ "Takes 6 to 13 arguments...\r\n"
+ "\t1:\tMessage to display\r\n"
+ "\t2:\tX position, from 0 to 100% (positive measures from the left; negative measures from the right)\r\n"
+ "\t3:\tY position, from 0 to 100% (positive measures from the top; negative measures from the bottom)\r\n"
+ "\t4:\tCenter horizontally? (if true, overrides argument #2)\r\n"
+ "\t5:\tCenter vertically? (if true, overrides argument #3)\r\n"
+ "\t6:\tTime (in milliseconds) to be displayed, not including fade-in/fade-out\r\n"
+ "\t7:\tFade time (in milliseconds) to be used for both fade-in and fade-out (optional)\r\n"
+ "\t8:\tParagraph width, from 1 to 100% (optional; 0 uses default 200 pixels)\r\n"
+ "\t9:\tText red component (0-255) (optional)\r\n"
+ "\t10:\tText green component (0-255) (optional)\r\n"
+ "\t11:\tText blue component (0-255) (optional)\r\n"
+ "\t12:\tText font (optional)\r\n"
+ "\t13:\tDrawn after shading? (optional)"
+ },
+
  { OP_CUTSCENES_SHOW_SUBTITLE_IMAGE, "show-subtitle-image\r\n"
  "\tDisplays a subtitle in the form of an image.\r\n"
  "Takes 8 to 10 arguments...\r\n"
Index: sexp.h
===================================================================
--- sexp.h (revision 9296)
+++ sexp.h (working copy)
@@ -707,6 +707,7 @@
 #define OP_NAV_UNSELECT (0x001a | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
 #define OP_ALTER_SHIP_FLAG (0x001b | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
 #define OP_CHANGE_TEAM_COLOR (0x001c | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
+#define OP_CUTSCENES_SHOW_SUBTITLE_MSG (0x001d | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Axem
 
 // defined for AI goals
 #define OP_AI_CHASE (0x0000 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)

3.

Extended help for alter-ship-flag. As mjn so helpfully pointed out, the help descriptions of the new ship flags aren't present because they're now part of a larger sexp. So this just adds brief descriptions of each flag. Kara said he has some ingenious plan for this, but said to post the patch anyway.

Code: [Select]
Index: sexp.cpp
===================================================================
--- sexp.cpp (revision 9296)
+++ sexp.cpp (working copy)
@@ -30070,7 +30070,27 @@
  "\t1:\tShip flag name\r\n"
  "\t2:\tTrue if turning on, false if turning off\r\n"
  "\t3:\tTrue\\False - Apply this flag to future waves of this wing. Apply to ship if not present\r\n"
- "\tRest:\t (optional)Name of ships. If not supplied, will work on all ships in the mission" },
+ "\tRest:\t (optional)Name of ships. If not supplied, will work on all ships in the mission\r\n\r\n"
+ "Ship Flags:\r\n"
+ "invulnerable - Stops ship from taking any damage\r\n"
+ "protect-ship - Ship and Turret AI will ignore and not attack ship\r\n"
+ "beam-protect-ship - Turrets with beam weapons will ignore and not attack ship\r\n"
+ "no-shields - Ship will have no shields\r\n"
+ "targetable-as-bomb - Allows ship to be targetted with the bomb targetting key\r\n"
+ "flak-protect-ship - Turrets with flak weapons will ignore and not attack ship\r\n"
+ "laser-protect-ship - Turrets with laser weapons will ignore and not attack ship\r\n"
+ "missile-protect-ship - Turrets with missile weapons will ignore and not attack ship\r\n"
+ "immobile - Will not let a ship move or rotate in any fashion\r\n"
+ "vaporize - Causes a ship to vanish (no deathroll, no debris, no explosion) when destroyed\r\n"
+ "break-warp - Causes a ship's subspace drive to break. Can be repaired by a support ship\r\n"
+ "never-warp - Causes a ship's subspace drive to never work. Cannot be repaired by a support ship\r\n"
+ "afterburner-locked - Will stop a ship from firing their afterburner\r\n"
+ "primaries-locked - Will stop a ship from firing their primary weapons\r\n"
+ "secondaries-locked - Will stop a ship from firing their secondary weapons\r\n"
+ "no-subspace-drive - Will not allow a ship to jump into subspace\r\n"
+ "don't-collide-invisible - Will cause polygons with an invisible texture to stop colliding with objects\r\n"
+ "no-ets - Will not allow a ship to alter its ETS system\r\n"
+ "no-dynamic - Will stop allowing the AI to persue dynamic goals (eg: chasing ships it was not ordered to)\r\n"},
 
  { OP_SHIP_VISIBLE, "ship-visible\r\n"
  "\tCauses the ships listed in this sexpression to be visible with player sensors.\r\n\r\n"

That's all for now, nerds!

 

Offline mjn.mixael

  • Cutscene Master
  • 212
  • Chopped liver
    • Steam
    • Twitter
Re: A triplet of small patches
3.7 is out.. I'd like to see these move forward! :)
Cutscene Upgrade Project - Mainhall Remakes - Between the Ashes
Youtube Channel - P3D Model Box
Between the Ashes is looking for committed testers, PM me for details.
Freespace Upgrade Project See what's happening.

 

Offline Goober5000

  • HLP Loremaster
  • Moderator
  • 214
    • Goober5000 Productions
Re: A triplet of small patches
#2 and #3 are now done*.  I'll leave #1 for someone more familiar with the HUD code.

(*For #2, I had already planned to give set-subtitle-text the same treatment as set-death-message, that is, use an actual message if the text corresponded to a message name.  That avoids creating an extra sexp.)
« Last Edit: September 01, 2013, 11:54:02 pm by Goober5000 »

 
 

Offline Axem

  • 211
Re: A triplet of small patches
Could a FRED Lord also look at this patch? It greatly increases the size of all the briefing editor windows. They're all still smaller than the events window, so it shouldn't cause any small res laptop problems. :)

http://lazymodders.fsmods.net/files/fred.rc.patch

 

Offline Axem

  • 211
Re: A triplet of small patches
Bumping cause #1 was never looked at and my briefing text windows are still too tiny! (The sexps in #1 will probably edited so their hex numbers don't conflict with other added sexps)

 

Offline Shivan Hunter

  • 210
  • FRED needs lambdas!
Re: A triplet of small patches
It greatly increases the size of all the briefing editor windows.

I bow to your greatness, oh great Axem, the blameable

(devs pls get this in, the command briefing window is crazy)

 

Offline Axem

  • 211
Re: A triplet of small patches
Ba-bumper-bump (for kara or other FRED lords with commit access)

 

Offline karajorma

  • King Louie - Jungle VIP
  • Administrator
  • 214
    • Karajorma's Freespace FAQ
Re: A triplet of small patches
I gave the patch a try but it got rejected. Do you have a more recent version?
Karajorma's Freespace FAQ. It's almost like asking me yourself.

[ Diaspora ] - [ Seeds Of Rebellion ] - [ Mind Games ]

 

Offline Axem

  • 211
Re: A triplet of small patches
http://lazymodders.fsmods.net/files/fred.rc_2.patch

Hopefully this works! I notice you already redid the command briefing and debrief. This just changes the briefing editor and the campaign editor.

 

Offline karajorma

  • King Louie - Jungle VIP
  • Administrator
  • 214
    • Karajorma's Freespace FAQ
Re: A triplet of small patches
It's still getting rejected. But I can sort out the issues manually.
Karajorma's Freespace FAQ. It's almost like asking me yourself.

[ Diaspora ] - [ Seeds Of Rebellion ] - [ Mind Games ]

 

Offline niffiwan

  • 211
  • Eluder Class
Re: A triplet of small patches
And patch 1 is finally committed in r10489.
Creating a fs2_open.log | Red Alert Bug = Hex Edit | MediaVPs 2014: Bigger HUD gauges | 32bit libs for 64bit Ubuntu
----
Debian Packages (testing/unstable): Freespace2 | wxLauncher
----
m|m: I think I'm suffering from Stockholm syndrome. Bmpman is starting to make sense and it's actually written reasonably well...