Commit Graph
1235 Commits
Author SHA1 Message Date
Birk Magnussen e955a7f1be Merge branch 'master' into particle_cleanup 2024-12-10 23:41:07 +01:00
Goober5000 2b84233b91 Merge pull request #6439 from Goober5000/weapon_script_enhancements
add scripting support for weapon class "turret names"
2024-12-02 12:39:51 -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
Goober5000 df6de0e0b8 enhance help text for script functions that do weapon category checks 2024-11-26 12:51:50 -05:00
Goober5000 089c870ad8 add scripting support for weapon class "turret names"
A recent-ish FSO feature, `$Turret Name:`, allows turrets to be displayed differently on the HUD depending on the weapon they carry.  It is useful for scripts to be aware of this, so this PR adds a `TurretName` virtvar for weapon classes, as well as a `NameOnHUD` virtvar for subsystems.  The `NameOnHUD` virtvar shares exactly the same code as the HUD uses, so any future HUD modifications will be reflected in scripting as well.  This required a small amount of refactoring: changing `get_turret_subsys_name()` to return a value rather than stuffing a string, renaming it to `ship_subsys_get_name_on_hud()`, and moving it to ship.cpp.
2024-11-25 16:35:00 -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 e2f8de72e7 add hud drawing and pre-player-entry checks
1. add `hu.isOnHudDrawCalled()` and clarify documentation for `hu.HUDDrawn`
2. add `mn.isPrePlayerEntry()`
2024-11-10 12:58:02 -05:00
Mike Nelson 1a1bd84290 Grant lua access to countermeasure parameters (#6345)
* grant lua access to countermeasure parameters

* you win this round, Clang

* and Wookie wins the next round
2024-11-05 08:29:02 -05:00
Goober5000 89605651ca Merge pull request #6359 from Goober5000/waypoint_pointer_to_index
replace waypoint pointers with waypoint indexes
2024-11-04 13:37:20 -05:00
Goober5000 42de74a62e Merge pull request #6349 from Goober5000/hud_gauge_api_functions
add several useful hud gauge functions
2024-10-29 19:07:45 -04:00
Goober5000 c582f77965 Merge pull request #6405 from Goober5000/getBreedName_for_parse_objects
adds getBreedName() in a few places
2024-10-29 19:07:38 -04:00
Goober5000 e58f8f9a5b Merge pull request #6365 from Baezon/disambiguate-shockwave-damage
Disambiguate `ShockwaveDamage` cases
2024-10-29 19:07:30 -04:00
Goober5000 e3d28b7fb1 adds getBreedName() in a few places
There are a few places in the Lua script API where a variable could be some type of "object" or something that is not an "object" but is still useful - one example is the return value from oswpt:get().  With this function, scripts will be able to tell what the variable is without risking an exception.
2024-10-29 00:20:05 -04:00
BMagnu 80625fd307 Change Build to C++17 (#3710)
* Set ver to C++17

* remove deprecated shuffle

* Fix std::iterator being deprecated

* Work around codecvt deprecation

* Fix std::result_of deprecation

* Another random_shuffle

* another text conversion replacement
2024-10-28 17:27:14 +09:00
Goober5000 89e546099a Merge pull request #6332 from Goober5000/movie_hooks
add pre-movie hook
2024-10-27 23:15:55 -04:00
Goober5000 3d8fbc0e97 add pre-movie hook
Add an `$On Movie About To Play:` hook to match `$On Intro About To Play:`.  Also make the two hooks overridable, since that might be useful.

Additionally, change a few (nonexhaustive) `name` parameters to `filename` to make it clearer that the string is a filename.
2024-10-09 14:39:34 -04:00
mjn-mixael a1a5780104 return false if skip to string can't find the string 2024-10-07 16:17:49 -05:00
BMagnu 2f2e8b2e14 Remove particle_effect and ParticleType 2024-09-24 17:23:00 +02:00
BMagnu 97dbd2fa83 Removal of effects, pt. 2 2024-09-24 17:23:00 +02:00
Birk Magnussen 7d10ed44fa Removal of effects, pt. 1 2024-09-24 17:22:59 +02:00
Asteroth 649d458e83 fix spelling 2024-09-23 15:16:35 -04:00
Asteroth 40e334fc94 Disambiguate shockwave cases 2024-09-23 03:16:45 -04:00
Goober5000 62180212f5 derp
Counting is A-1 SUPAR.
2024-09-21 18:06:35 -04:00
Goober5000 385bf49b39 replace waypoint pointers with waypoint indexes
Several locations in the code (notably `ai_info` and `waypoint_h`) previously stored pointers for waypoints and waypoint lists that need to be valid for more than one frame.  Since both waypoint lists and waypoint paths may change size, resulting in vector reallocation, the information should be stored as indexes instead.

Fixes #6353.
2024-09-21 01:00:24 -04:00
Goober5000 24555ac739 add functions for getting swarm info and corkscrew info
Apparently virtvars can only return one value.  This deprecates the virtvars and adds function equivalents for getting weapon class swarm info and corkscrew info.  Fixes a bug reported by Woolie Wool in Discord.
2024-09-17 14:07:26 -04:00
Goober5000 0fd2e9396b add several useful hud gauge functions
1. a `hud-reset-color` SEXP operator, to complement the existing `hud-set-color` and set a gauge back to its configured color
2. `ConfigType` and `ObjectType` Lua virtvars which are essentially the built-in gauges' equivalents of `Name` for custom gauges
3. `getColor` and `setColor` Lua functions
2024-09-11 14:42:07 -04:00
Goober5000 dfe34ec58d update documentation 2024-09-11 02:03:40 -04:00
Mike Nelson 40bbced2f9 Reset hotkey lines before populating (#6318)
* reset hotkey lines before building

* clang is the most high maintenance partner i've ever had
2024-08-27 20:36:46 +02:00
EatThePath 32b69eda2a Merge pull request #6307 from naomimyselfandi/fix-weapon-class-swarm-info
Fix WeaponClass.SwarmInfo
2024-08-22 14:13:27 -04:00
Mike Nelson 397a1c84ba Grant access to shipclass shield hitpoints value (#6308) 2024-08-20 01:18:07 +02:00
Naomi Coffman ce6a6b447e Fix WeaponClass.SwarmInfo 2024-08-19 14:01:53 -04:00
Goober5000 8390304a6e Merge pull request #6292 from Goober5000/lua_tostring_nullcheck
safety check for lua_tostring()
2024-08-13 22:39:16 -04:00
Goober5000 f7e934440c parameter deconfliction (#6282)
Prevent compiler warnings caused by the `value` parameter of the external serializers hiding the `value` member of `std::integral_constant`.

Follow-up to #6276.
2024-08-13 23:17:28 +02:00
Goober5000 4cbd84d59e safety check for lua_tostring()
The return value of `lua_tostring()` is NULL if (and only if) the string conversion failed.  Many places in the code did not check for this situation, which led to the crash in #6290.

Fixes #6290.
2024-08-12 16:00:24 -04:00
Goober5000 e9592bc4d7 add scripting support for wing wave min/max delay (#6280)
There was scripting support for wing arrival/departure delays, but not for wave delays.  Now there is.
2024-08-12 19:58:25 +02:00
Goober5000 8dc1ffea94 Merge pull request #6260 from Goober5000/coverity_fixes
some coverity fixes
2024-08-11 17:01:39 -04:00
Goober5000 734efbdb54 variable checks and message enhancements 2024-07-29 16:04:23 -04:00
Birk Magnussen 500bf1c2ca Add clang NOLINTs
To explain: Clang's being stupid here, and seemingly does not recognize that the placement new in the deserializers requires a non-const ptr.
2024-07-29 19:59:02 +02:00
BMagnu 558f922209 add implicit-only includes 2024-07-29 10:26:59 +02:00
Birk Magnussen 7caef527d4 Slightly clean up RPC API 2024-07-28 11:15:02 +02:00
Mike Nelson 79d0c93ba5 Print in game options data to scripting output files (#6257) 2024-07-21 12:25:32 -04:00
Mike Nelson 70629876b9 allow accepting a pilot without changing gamestate (#6235) 2024-07-18 22:44:59 -04:00
Goober5000 2166c756ab per review, make the delta check silent 2024-07-16 20:59:30 -04:00
Goober5000 fe3b72b01e fix NextFireTimestamp
Changes `NextFireTimestamp` to work as advertised.  Fixes #6256.
2024-07-16 17:27:41 -04:00
Mike Nelson d9f9996c2d expose shockwave damage (#6245) 2024-07-13 09:29:48 -04:00
Goober5000 e90416e199 Several coverity fixes (#6232)
* coverity - using `std::move` instead of copying, and change some parameters from value to reference

* coverity - fix or mark potential copy-paste mistakes

* coverity - various checking of parameter and return values

* coverity - miscellaneous fixes, and change some 'intentional' markers to 'false positive' markers
2024-07-06 12:51:31 +02:00
Goober5000 630f479fd9 properly handle game sounds with numeric IDs (#6212)
Patches the gamesnd system in several ways to properly fix the bug identified in #6196.  Due to the way the new sound system was written, sounds with numeric IDs were not necessarily added in their indexed location, even though the code assumed (even prior to #6112) that this would be the case.  The code now uses the proper index for both old *and* new style sounds.  This is done by ensuring, in `gamesnd_parse_entry()`, that the vector contains an entry for the specified numeric ID before doing a search for that ID.

Due to the slightly modified population of the gamesnd vectors, the `Snds_iface_handle` vector is now populated after parsing the various sounds.tbl files rather than during parsing.

Separately, this makes consistent the handling of the `sound_entries` vector which could potentially be empty but also treated an empty state as an assertion failure.
2024-06-27 23:55:42 -04:00
John Fernandez e7a7c830f0 Merge pull request #6184 from MjnMixael/ship_wep_custom_strings
Custom Strings for ships and weapons
2024-06-27 10:21:01 -04:00
Mike Nelson d6e7d56081 expose method to kill all current voice messages (#6207) 2024-06-27 08:07:35 -04:00
Goober5000 ebeec69a6d add API for glow point banks (#6107)
* add API for glow point banks

Previously, a model API existed for glow points mounted on thrusters, but not glow points mounted on glow point banks.  This adds glow point bank support.  Also, this refactors and cleans up the implementation of the model API a bit.

* NULL -> nullptr
2024-06-17 21:28:40 +02:00