Commit Graph
956 Commits
Author SHA1 Message Date
Goober5000 fa10f8e8eb tweak object model/instance convenience functions
Make these convenient functions even more convenient:
1. Change `object_get_model()` to `object_get_model_num()` and `object_get_model_instance()` to `object_get_model_instance_num()` to more accurately reflect what they do
2. Add new `object_get_model()` and `object_get_model_instance()` functions to return `polymodel*` and `polymodel_instance*` values.
2025-01-16 01:10:53 -05:00
Goober5000 c38882a51e refactor AI_GOAL_* #defines into enums, and remove bitwise operations on them [non-FRED] 2025-01-02 14:05:21 -05:00
Asteroth ca243a0a6a Make explicit shield hit radius for ships and weapons (#6478)
* allow shield effect radius overrides

* this should be a float

* change variable name

* skip rendering 0 radius
2025-01-02 12:56:46 +01:00
KestrelliusandBMagnu 228fd17ff1 Modular curves for weapon attributes during lifetime (#6319)
* Partially builds weapon curves.

* Further curve implementation

* Implementation of more output types.

* Cleanup

* Adjusts warning.

* Appeases clang.

* further appeasement

* Appeasement and time-traveling review changes

* change the enum branch too that'd be good

* More requested changes

* Basic abstraction for generic modular curves

* Make curve list by output statically sized

* Make instance-randomization consistent and mapless

* Add parsing

* Add derived modular curve sets

* Fix incorrect unpack

* Split modular curve set and definition, properly comment struct usage

* Split off specific type-traits into own file

* Fix modular curves for multi-derive case

* Implement some basic weapon curves, as well as the damage multiplier hit curve

* Merges in generified system built by Lafiel.

* Fills out beam curvesets.

* Renames curvesets.

* Removes launch curves for now.

* Testing, bugfixing.

* Various cleanup

* Returns extern do_subobj_hit_stuff

* Fixes compile errors

* Beam flag checking

* Rearranges beam flag checking.

---------

Co-authored-by: BMagnu <[email protected]>
2024-12-10 23:32:46 +01: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
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 84f1b2be9f Merge pull request #6411 from Goober5000/all_the_consts
all the consts!
2024-11-23 14:36:56 -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
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 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
Goober5000 31a86e3f3d all the consts!
Some experimentation resulted in a lot of const-cascading.  This PR applies `const` to a large number of functions.
2024-11-07 23:33:13 -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
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
Kestrellius e87d311d92 further cleanup 2024-08-22 18:35:11 -07:00
Kestrellius a569bd9ab7 Cleanup 2024-08-22 07:01:23 -07:00
Kestrellius ca70a5a242 Adds support for explicit no-armor; cleanup 2024-08-20 12:31:13 -07:00
Kestrellius 5531dfc58d Adds warning if cond-impact armor type not found. 2024-08-19 10:10:00 -07:00
wookieejedi db13168729 Cleanup variable name in weapon_do_area_effect function (#6303)
* Cleanup variable name in `weapon_do_area_effect` function

Per discussion in #6302, this PR renames `other_obj` to `impacted_obj` to minimize confusion

* update other functions with impacted_obj naming

* nullptr

* appease clang's strange rules

* fighting clang continues

* use !empty check instead of > 0

* remove un-needed no lint comment
2024-08-18 20:59:18 +00:00
wookieejedi 908c1c7b32 Fixes CTD with new Friendly Fire Feature (#6302)
* Fixes CTD with new Friendly Fire Feature

On current master I was hitting a CTD when firing a weapon with a shockwave at close range (ie player is within the shockwave zone). The minidump showed `other_obj` was null, so this PR adds some safety checks.

Tested and this fixes the crashes.

* fix obj usage

* one more obj cleanup
2024-08-17 18:30:21 +00:00
Kestrellius 6da7830b7b Add offset for tabled particle effects (#6264)
* Adds particle effect offset.

* bugfixing

* Switches to a cleaner approach.

* Futureproofing for particle parenting.

* actually let's just bundle parenting into this one

* working on turrets

* grinding toward turret correctness

* still grinding toward correctness

* Gets turrets working correctly.

* Fixes merge artifact

* appeases clang-tidy

* Updates some comments.

* Updates some comments.

* Tiny bit of cleanup.

* Deduplicates comments.
2024-08-13 23:06:44 +02:00
Kestrellius 67a9f6f5b7 Friendly fire control flags and SEXP (#6265)
* Adds flags.

* Basic structures built; still needs work.

* Fills out SEXP.

* bugfixing

* appeases clang-tidy

* Adds flags.

* Basic structures built; still needs work.

* Fills out SEXP.

* bugfixing

* appeases clang-tidy

* further appeasement

* Makes implementation more consistent.

* Fixes and cleanup as requested.

* Adjusts is_nan handling.
2024-08-13 20:32:02 +02:00
Kestrellius d4cd767679 Beam slash curves (#6269)
* Adds curves for slash completion and rotation.

* Finalization.

* Fixes pointer comparison.

* Updates table parameter to better match behavior.

* Makes requested changes.

* Changes rotation amount to use raw curve.

* Sets curve-1.0 to be equal to full turn rotation.
2024-08-12 19:58:37 +02:00
Kestrellius 35db8e31c9 Adds weapon support, switches parse ordering (#6254) 2024-07-29 22:35:57 +02:00
Tyler Blount eeba1085c9 Merge pull request #6243 from MjnMixael/per_weapon_convergence
Per weapon auto convergence
2024-07-20 11:57:55 -07:00
Goober5000 f341987471 Merge pull request #6248 from Baezon/bugfix-invulnerability-time-again
Bug fix for aspect invulnerability timing... again
2024-07-11 21:19:33 -04:00
Goober5000 cdbf525877 Merge pull request #6233 from JohnAFernandez/Add-Insignia-Renderer
Fix Insignia Checkbox in the Lab
2024-07-11 21:19:01 -04:00
Asteroth b565376a02 account for original retail handling 2024-07-11 01:50:13 -04:00
mjn-mixael acccc90ded per weapon auto convergence 2024-07-08 14:06:56 -05: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
John Fernandez 1f834aa406 change render flags to uint64_t
32 more flags, yay!
2024-07-04 18:08:27 -04:00
Kestrellius d14b66456f Adds conditional impact functionality. (#6218)
* Adds conditional impact functionality.

* Changes as requested.

* Second batch of changes.

* Switches out insert_or_assign so the checks pass.
2024-07-01 21:45:48 +02:00
mjn-mixael 67ebeb438e custom strings for ships and weapons 2024-06-10 09:43:20 -05:00
Asteroth 230fdf4d03 assorted beam fixes 2024-06-04 17:32:30 -04:00
Goober5000 64c17f4830 fix compilation warnings
Fixes the few remaining compilation warnings in the current codebase.  Also adds comments to the various casting macros for clarity.
2024-06-03 22:19:29 -04:00
Goober5000 e4b5d5fb7e Merge pull request #6149 from Kestrellius/fix-headon-discrepancies
Make headon transition behavior consistent between laser and glow bitmaps
2024-05-31 21:46:45 -04:00
Kestrellius e710b651de Inlines headon glow render; converts some casts. 2024-05-28 10:58:59 -07:00
Kestrellius c6efd0a0a3 Makes random life factor of children configurable. (#6166)
* Makes random life factor of children configurable.

* Renames parameter and associated variables.
2024-05-26 20:42:53 +02:00
BMagnu 87704fc817 Refactor replacement texture to a modelinstance parameter (#6154)
* Move replacement textures from ship to modelinstance

* Actually set pmi

* Fix texture replace in fred as well

* Fix bad indent

* incorporate feedback
2024-05-21 17:18:32 +02:00
Kestrellius f1c521413c Makes headon transition rate consistent. 2024-05-15 12:34:10 -07:00
Goober5000 49777052ac Merge branch 'master' into min-pixel-per-weapon 2024-05-14 15:58:56 -04:00
Goober5000 0d1c86e0cd Merge pull request #6146 from Kestrellius/bolt-offset
Laser bolt offset
2024-05-14 15:49:52 -04:00
Kestrellius c14a62e9d3 Adds comments clarifying positioning details. 2024-05-13 11:25:11 -07:00
Kestrellius 3747a45dbe Adds three-dimensional bolt offset. 2024-05-12 16:07:24 -07:00
Kestrellius e2bf3bbd46 Adds one-dimensional bolt offset, with bugs. 2024-05-12 10:54:05 -07:00
Kestrellius 67999a3fe8 Clean version of shipfx move. 2024-05-11 15:29:24 -07:00
Kestrellius b5efed380f Adds muzzle effect functionality. 2024-05-10 19:47:51 -07:00
Kestrellius 62f25d7400 Changed variable names to specify laser. 2024-05-10 10:57:24 -07:00