@@ -330,7 +330,9 @@ int Normal_key_set[] = {
330330 NAV_CYCLE ,
331331
332332 TOGGLE_GLIDING ,
333- CYCLE_PRIMARY_WEAPON_SEQUENCE
333+ CYCLE_PRIMARY_WEAPON_SEQUENCE ,
334+
335+ TOGGLE_AUTO_SHIELD_EQUALIZE ,
334336};
335337
336338int Dead_key_set[] = {
@@ -394,6 +396,7 @@ int Critical_key_set[] = {
394396 SHIELD_XFER_RIGHT ,
395397 XFER_SHIELD ,
396398 XFER_LASER ,
399+ TOGGLE_AUTO_SHIELD_EQUALIZE ,
397400};
398401
399402int Non_critical_key_set[] = {
@@ -465,7 +468,9 @@ int Non_critical_key_set[] = {
465468 AUTO_PILOT_TOGGLE ,
466469 NAV_CYCLE ,
467470 TOGGLE_GLIDING ,
468- CYCLE_PRIMARY_WEAPON_SEQUENCE
471+ CYCLE_PRIMARY_WEAPON_SEQUENCE ,
472+
473+ TOGGLE_AUTO_SHIELD_EQUALIZE ,
469474};
470475
471476int Ignored_keys[CCFG_MAX ];
@@ -2311,11 +2316,6 @@ int button_function(int n)
23112316 case CYCLE_PREV_PRIMARY : // cycle to previous primary weapon
23122317 case CYCLE_SECONDARY : // cycle to next secondary weapon
23132318 case CYCLE_NUM_MISSLES : // cycle number of missiles fired from secondary bank
2314- case SHIELD_EQUALIZE : // equalize shield energy to all quadrants
2315- case SHIELD_XFER_TOP : // transfer shield energy to front
2316- case SHIELD_XFER_BOTTOM : // transfer shield energy to rear
2317- case SHIELD_XFER_LEFT : // transfer shield energy to left
2318- case SHIELD_XFER_RIGHT : // transfer shield energy to right
23192319 case XFER_SHIELD : // transfer energy to shield from weapons
23202320 case XFER_LASER : // transfer energy to weapons from shield
23212321 return button_function_critical (n);
@@ -2334,6 +2334,18 @@ int button_function(int n)
23342334 }
23352335 return 1 ;
23362336 break ;
2337+
2338+ case SHIELD_EQUALIZE : // equalize shield energy to all quadrants
2339+ Player->flags &= ~PLAYER_FLAGS_AUTO_SHIELD_EQUALIZE_OVERRIDE ;
2340+ return button_function_critical (n);
2341+
2342+ case SHIELD_XFER_TOP : // transfer shield energy to front
2343+ case SHIELD_XFER_BOTTOM : // transfer shield energy to rear
2344+ case SHIELD_XFER_LEFT : // transfer shield energy to left
2345+ case SHIELD_XFER_RIGHT : // transfer shield energy to right
2346+ Player->flags |= PLAYER_FLAGS_AUTO_SHIELD_EQUALIZE_OVERRIDE ;
2347+ return button_function_critical (n);
2348+
23372349 }
23382350
23392351 /* *
@@ -2521,6 +2533,7 @@ int button_function(int n)
25212533 if (!Sel_NextNav ())
25222534 gamesnd_play_iface (SND_GENERAL_FAIL );
25232535 break ;
2536+
25242537 default :
25252538 keyHasBeenUsed = FALSE ;
25262539 break ;
@@ -2812,6 +2825,17 @@ int button_function(int n)
28122825 hud_escort_target_next ();
28132826 break ;
28142827
2828+ case TOGGLE_AUTO_SHIELD_EQUALIZE :
2829+ Players[Player_num].flags ^= PLAYER_FLAGS_AUTO_SHIELD_EQUALIZE ;
2830+ if (Players[Player_num].flags & PLAYER_FLAGS_AUTO_SHIELD_EQUALIZE ) {
2831+ Players[Player_num].flags &= ~PLAYER_FLAGS_AUTO_SHIELD_EQUALIZE_OVERRIDE ;
2832+ button_function (SHIELD_EQUALIZE );
2833+ HUD_printf (XSTR (" Auto shield equalization activated" , 1638 ));
2834+ } else {
2835+ HUD_printf (XSTR (" Auto shield equalization deactivated" , 1639 ));
2836+ }
2837+ break ;
2838+
28152839 default :
28162840 keyHasBeenUsed = FALSE ;
28172841 break ;
0 commit comments