Commit Graph
18303 Commits
Author SHA1 Message Date
Goober5000 5526f757ed Merge pull request #6221 from Goober5000/turret_ai_enhancements
create a `process_ship_subsystems` routine for subsystem operations
2024-12-02 00:18:18 -05:00
Goober5000 8115589941 address feedback 2024-11-29 23:22:43 -05:00
Goober5000 c33e21f1c2 create a process_ship_subsystems routine for subsystem operations
Many SEXP operators that work on subsystems use very similar code.  This new function allows the operator implementations to be streamlined and makes future modifications easier.  For example, the `change-ai-class` operator now works with names such as `<all turrets>` as well as specific subsystems.
2024-11-29 21:39:29 -05:00
Kestrellius 2735404b18 Makes it actually cycle properly 2024-11-29 10:16:21 -08:00
Kestrellius 630f6c29d7 Gives Type 3s higher priority. 2024-11-29 10:03:49 -08:00
Kestrellius 2fe9c94f63 Adds fix for missing Type 3 beam behavior. 2024-11-29 10:02:00 -08:00
Goober5000 d21fb62207 Merge pull request #6387 from Shivansps/custom-preferences-path
Support custom preferences path
2024-11-28 20:18:38 -05:00
Goober5000 fa30b464a2 Merge pull request #6385 from Goober5000/which_personas_to_sync
allow voice acting manager to handle non-wingman personas
2024-11-28 20:15:01 -05:00
Mike Nelson 0a312263cb Allow defining custom overhead line colors (#6341)
* Allow defining custom overhead line colors

* Update asserts
2024-11-27 18:50:47 +09:00
Mike Nelson 06b0966580 Ttf font scaling option (#6330)
* Add option to set a font size multiplier for ttf fonts

* remove the option if we have no scaling fonts

* Clang the conquerer strikes again

* Update XSTRs

* clang

* Clarify comments
2024-11-27 18:50:35 +09:00
Goober5000 5e57e5ec64 Merge pull request #6440 from Goober5000/small_fixes
several small fixes
2024-11-26 22:46:36 -05:00
Goober5000 0332bae95c fix bolt texture checks
Having a missing bolt texture is not fatal; TBP uses it for `b_invisible`.  Modify the bolt checks to display a non-fatal warning if the bolt texture is explicitly specified but not found.
2024-11-26 14:10:26 -05:00
Goober5000 403a067103 fix compile warnings for briefing icon scaling 2024-11-26 14:10:26 -05:00
Goober5000 c254f39247 remove these Verifys since new already throws an exception; use std::move since sorting does not require copying 2024-11-26 14:10:26 -05:00
Goober5000 854b9abc89 fix distinction between lasers and beams
Many beams are lumped into the #Primary Weapons section of weapons.tbl, which will mark them as WP_LASER.  Fix the few instances of code that are intended for beams that may have omitted most beams by mistake.

Randomization of weapon impact particle radius is also affected, but since this affects existing visual effects, it was not changed.
2024-11-26 14:10:26 -05:00
Asteroth c28842739e Allow beams to do energy leeching (#6377)
* allow beams to do esuck

* dont forget to use mult

* consistent comments
2024-11-26 19:13:54 +01:00
Goober5000 df6de0e0b8 enhance help text for script functions that do weapon category checks 2024-11-26 12:51:50 -05:00
Goober5000 d31c33ac29 allow $Distance Unit Multiplier: as a synonym for $Length Unit Multiplier: 2024-11-25 21:12:09 -05:00
Mike Nelson e31100da95 Add hud-set-xstr sexp (#6406) 2024-11-25 17:45:34 -05:00
BMagnu 68f3fa6d8c Actually compile with proper optimizations in a release build. (#6336)
* Change optimization to O3 and enable LTO

* Remove ODR violations

# Conflicts:
#	code/menuui/playermenu.cpp
#	code/osapi/osregistry.cpp

* Fix uninitialized structs

* Remove negative alloc warning

* O3 for mac

* Remove GCC13 warnings

* Fix warning

* Properly fix weapon alloc size

* Try to placate GCC9's Psnet_socket estimation

* remove warnin

* Fix safe fd set check
2024-11-25 20:10:38 +01:00
Goober5000 0bf30db7cd Merge pull request #6315 from Goober5000/fontmanager_improvements
fix memory management in FontManager
2024-11-25 13:30:55 -05:00
Goober5000 84f1b2be9f Merge pull request #6411 from Goober5000/all_the_consts
all the consts!
2024-11-23 14:36:56 -05:00
Goober5000 94e7ac84a5 use initializers and initialize m_specialCharacters; use default constructors and destructors 2024-11-22 23:32:48 -05:00
Goober5000 b3470af307 fix memory management in FontManager
This refactors FontManager to improve it in several ways:
1. Change all the dynamic memory management to use `new`, rather than mixing `new` and `vm_malloc`
2. Change the current font to use an index rather than a pointer
3. Take advantage of more C++11 features to avoid redundant lookups
4. Use case-insensitive name comparison
5. Avoid overflowing the `fnt->filename` field
6. Use `Warning` rather than `Error` in a non-critical error situation
2024-11-22 20:12:17 -05:00
Goober5000 f89085b5e9 improve bank-compatibility check
1. Don't set the `can_use_for_bank` flag to FALSE if the bank is primary but the weapon is secondary, or vice versa
2. Make sure to only restrict the weapons by bank if the ship has per-bank restrictions

In support of this, add `is_primary()` and `is_secondary()` helper functions to `weapon_info` and use them in logical places.

Follow-up to #6434.  Fixes a few subtle bugs from that PR.
2024-11-22 00:35:10 -05:00
Salvador Cipolla aadd55e501 Check portable_mode flag before get_flags
Because -get_flags prints the value of pref_path, and this changes depending if portable_mode is also set.
2024-11-21 20:13:41 -03:00
Goober5000 54c2bb95b1 Merge pull request #6434 from Goober5000/per_bank_weapon_enabling
enable or disable weapon icons according to bank compatibility
2024-11-21 17:21:51 -05:00
Goober5000 bcf23dbfe6 Merge pull request #6419 from Goober5000/barracks_stats
use proper stats in barracks (take two)
2024-11-21 17:21:27 -05:00
Goober5000 1ac580b9d3 enable or disable weapon icons according to bank compatibility
When clicking on a weapon bank, mark the weapons as enabled or disabled according to their compatibility for that bank.  Do not actually prevent the weapons from being selected and dragged, as they may be dropped on a bank that isn't selected.

Also add a new `TriStateBool` for situations where the value is true, false, or unknown.

Fixes #6398.
2024-11-21 00:33:47 -05:00
Goober5000 a939d5e15a Cycle expansion followup
A few addenda to PR #6364:
1. Use `std::swap` in the move constructor, since the fields are specifically being moved, not assigned
2. Fix off-by-one error when parsing firing patterns, and make the pattern count non-fatal
3. Standardize the setting of fire points since it's done in three different places, and in the case of `ship_set_default_weapons()`, `primary_firepoint_next_to_fire_index` was not reset to 0.  It might be useful to refactor this code into its own function.
4. Make the setting of `primary_firepoint_next_to_fire_index` consistent between forward and reverse cycling
5. Remove a couple redundant `.clear()` calls and fix a typo
2024-11-19 19:49:58 -05:00
Kestrellius 51fb24f558 Fixes pattern_index oversight. 2024-11-19 14:22:42 -08:00
Goober5000 c8210c9bac Merge pull request #6422 from Goober5000/protect_weapon_bank_overflow
protect against weapon bank overflow
2024-11-18 13:24:07 -05:00
Goober5000 8de03d1d27 Merge pull request #6425 from wookieejedi/fix-cycle-weapon-update
Fix CTD from recent cycle expansion
2024-11-18 13:23:51 -05:00
Goober5000 97bf652774 address feedback 2024-11-17 23:07:16 -05:00
wookieejedi 47fa82ef3f Update localize.cpp with xstr size comment 2024-11-17 14:34:28 -05:00
wookieejedi 217982b92c update xstrs for U and V axes 2024-11-17 14:33:32 -05:00
wookieejedi 24b0020e16 Merge branch 'master' into controls/moreaxis 2024-11-17 14:27:52 -05:00
wookieejedi 5e7af132fc Fix CTD from recent cycle expansion
The recent cycle expansion PR (#6364) causes a CTD when change-ship-type is used. This PR fixes that crash by using `pm->n_guns` instead of 'MAX_SHIP_PRIMARY_BANKS' and clarifies the definition comment for the  `pm->n_guns` to help avoid this kind of quandary in the furture.

Tested and works as expected.
2024-11-17 12:15:45 -05:00
Goober5000 b9964f3be3 Merge pull request #6403 from Goober5000/run_freespace_update
revise Run FreeSpace menu option
2024-11-14 19:54:46 -05:00
Goober5000 2c60b532a0 Merge pull request #6423 from Goober5000/mainhall_ambient
allow ambient sound to be specified on a per-main-hall basis
2024-11-14 19:53:04 -05:00
Goober5000 f612677b3e Merge pull request #6378 from Goober5000/fixed_ai_avoid_weapon_shockwave
fix ai behavior when avoiding ship and weapon shockwaves
2024-11-14 19:47:20 -05:00
Goober5000 b72d67c074 default to using Vasudan ambient sound in the Vasudan main hall 2024-11-14 19:30:19 -05:00
Goober5000 0deafdcb5c allow ambient sound to be specified on a per-main-hall basis
Adds a new `+Ambient Sound:` field to mainhall.tbl, allowing any interface sound (or even no interface sound) to be used for the main hall ambient sound.  The default ambient sound, as well as the sound played on the pilot select screen, is interface sound 12.

Implements #6421.
2024-11-14 13:39:39 -05:00
Goober5000 a8245a8fb4 protect against weapon bank overflow
If the mission is edited in a text editor, and a ship is given too many weapon banks, this can cause issues in the weapon firing code.  Protect against this by checking the number of banks when the ship is created.
2024-11-14 12:07:50 -05:00
Goober5000 1bcad06461 remove the avoid-shockwave flag when too far away from a weapon; and add a should-be-dead check 2024-11-14 00:07:26 -05:00
Goober5000 722ed575d2 only refine the expected homing pos if it really does need to be refined 2024-11-14 00:07:18 -05:00
Goober5000 5dfe398af2 add a cache for the expected homing pos 2024-11-14 00:07:06 -05:00
Kestrellius d6b444c9e6 Cycle expansion (#6364)
* Adds different firing patterns for weapons.

* cleanup

* further cleanup

* appeasement

* appeasement^3

* Requested changes.

* Deals with targeting flag issue.

* Resolves merge conflicts.

* blood for the blood god, tidy for the tidy throne

* Increments XSTR again.
2024-11-13 08:05:06 -05:00
Mike Nelson 17e857c819 Define whether or not to render the game strings on the mainhall 2024-11-12 10:59:38 -08:00
Goober5000 124293a92e use proper stats in medals screen
Related to the previous two commits, the medals screen should use the actual all-time stats from the pilot file instead of the active campaign stats.  This required tweaking the DCF "medals" debug command to work with the exported stats.  Also, some C casts were changed to C++ and an obsolete variable was removed.
2024-11-12 01:14:08 -05:00