38 Commits
Author SHA1 Message Date
Mike Nelson 31f77e5a32 Mines weapon type & weapon proximity triggers (#7461)
* new mine weapon type

* some fixes and cleanup

* fix some parsing issues

* make sure mines get plotted

* make mine spawned objects can get a correct target

* some cleanup and additional features

* chasing mines

* some Lua tweaks

* generalize proximity detonations

* minor tweaks

* collapse namespace

* address feedback
2026-06-05 14:06:00 +09:00
Asteroth 730b294d7b add 'direct fire lead target' 2025-08-29 20:39:06 -04:00
Mike Nelson 25dbfc666b Misc hud config fixes (#6727)
* Fix crash when clicking inside the hud area but not on a gauge

* add dogfight_variant weapon flag for sorting purposes

* fix weapon display for default hud and skip dogfight weapons on auto-select

* cleanup the mouse check function
2025-05-27 08:55:12 -04:00
Mike Nelson 5078826340 Lab Weapon Viewer (#6704)
* Activate Lab Weapon viewer

* Allow displaying weapon tech models

* check for a valid tech model when switching

* enable render options for weapons and tech models

* Some cleanup

* Clang

* address feedback
2025-05-26 07:40:08 -04:00
Asteroth 3b5668c4e5 Add freespace 1 style missile behavior (#6681)
* add fs1 style missile behavior

* add weapon flag, and various tweaks

* remove superfluous check
2025-04-17 21:45:45 -04: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
Asteroth 13170a235e add start/loop/end sounds for weapons 2023-11-13 17:52:50 -05:00
Mike Nelson 3ca26587eb add default player weapon flag (#5600) 2023-10-22 13:23:30 -04:00
Mike Nelson f3dfc85c0f weapon ignores countermeasures flag (#5628) 2023-10-19 07:49:06 -04:00
Goober5000 e91d6ed17b 'detonate on expiration' weapon flag
For mods which want primary weapons to 'detonate', setting the detonation range is not reliable because, due to rounding imprecision, either the range (which detonates) or the lifetime (which does not) may happen first.  So this adds a flag to always detonate a weapon when its lifetime expires.  Secondary weapons have this flag by default, but primary weapons can add this flag in the $Flags list.  Additionally, if the detonation range and the predicted range due to lifetime are equal, the flag is added automatically.

Resolves #5521.
2023-07-29 18:23:38 -04:00
Goober5000 c40764b65c add no_fred flag for weapons, and patch no_fred for ships
The new `no_fred` flag prevents weapons from being listed in the dropdown lists in the weapon dialog.  Also this fixes `no_fred` ships to not appear either: previously they were hidden in the main window dropdown but still appeared in the ship editor.

In order to vastly simplify the dropdown list code, the weapon dialog was refactored to use arrays of variables rather than one hardcoded variable per bank.

Implements #3643.
2022-11-22 21:30:25 -05:00
Strygon 91eb48c5b8 Setting up Vampirism again... again (#4911)
* Setting up Vampirism again
2022-11-20 17:07:27 -05:00
Kiloku d0c76a7eaa New options for lead indicators (#4411)
* Adds Lead Indicator Behavior option to game_settings.tbl

* Adds dont merge lead indicators flag to weapons, allowing homing secondaries to have their own lead indicators no matter what.

* Removed unused variable that was added just for testing

* add explicit int to float conversion to appease build checks

* Move some things around to avoid potentially undefined values

* Clean-up + address feedback

* Remove redundancy
2022-09-11 23:57:40 +09:00
Goober5000 67b3c6ce46 fix use of default tech database flags
The "default" tech database flags indicate whether entries are in the tech room by default, that is when the table is originally parsed and the campaign is started.  Flags may be changed later, so that when the tech database is "reset to default" the flags can be returned to the known state as specified in the tables.

A bug was introduced back in commit c924e3997a (!) based on a misinterpretation of what "default" meant.  This fixes the bug and clarifies the flags.

Fixes #4390.
2022-06-11 18:03:21 -04:00
Goober5000 29a0736d34 fix missile detonation for computers with high FPS
There is a bit of code that detonates a missile if it misses impacting on a subsystem.  On Nyctaeus's Arachnas model, missiles could reach the center point of the main beam turret submodel without actually hitting any part of the submodel.  The fail-safe code would set the missile to detonate in that case, but on low-FPS systems the weapon would be able to actually hit the turret before it detonated.  On high-FPS systems, there is a clean miss.

This reworks the code to delay the missile detonation until it reaches the other side of the submodel, so it has time to hit some other part of it.  It also reduces the detonation time from 1/100 of a second (which is more than one frame on 120 FPS systems) to 1/1000 of a second (which is always less than one frame).
2022-02-06 17:53:19 -05:00
Asteroth 375e1caca9 Remove 'stream' weapon handling (#3720)
* remove stream handling

* unused variable

* turn stream' into an unused flag

* yes really whitespace changes just for clang tidy
2021-10-22 16:15:56 +09:00
Asteroth 8604f783fb add no evasion flag (#3677) 2021-10-06 12:39:04 -04:00
BMagnu 2b63097c12 Exclude dead subsys from targeting (#3614)
* Exclude dead subsys from targeting

* Put behaviour behind flags

* Make ML lock disappear when subsys dies

* Flip flag to change default behaviour
2021-10-03 03:57:40 +09:00
BMagnu a6093dd8c4 Add ammoless secondaries (#3589)
* Add ammoless secondaries

* Macroify 'ammo>0 || no ammo' check
2021-10-02 04:40:03 +09:00
Baezon 3481032ae5 add num_firepoints_burst_shots flag 2021-07-08 17:08:56 -04:00
Baezon 59d30157d8 add no collide for weapons 2021-05-31 22:50:00 -04:00
Asteroth d49e24fa0c Add healing weapons (#2873)
* basic proof of concept: healing weapons

* implement healing weapons

* remove unused parameter

* travis

* more travis

* endless travis

* earlier multi client return

* update find_submodel_instance_world_point

* review tweaks
2021-05-25 23:03:20 -04:00
JohnAFernandez 42c19cdfee Fix Missile Syncing Between Server and Client 2021-03-23 20:31:04 -04:00
Baezon 0fcfe68164 add self-damaging weapons 2021-03-03 11:08:04 -05:00
Birk Magnussen b4791b3b10 Add flag for beams to track uoffset individually 2021-02-28 14:40:25 +09:00
Baezon d3d016602d rename beam_flags -> beam_info_flags 2021-01-28 02:46:40 -05:00
Baezon d9a7e786b5 Merge remote-tracking branch 'upstream/master' into burst-seed 2021-01-15 12:52:25 -05:00
Birk Magnussen d72ea2c213 Add require exact los weapon flag 2020-12-06 04:05:40 +09:00
Baezon 7add73f27f rename hard_target_bomb and only warn for not interceptable 2020-10-31 01:12:30 -04:00
Baezon 3db3dade77 implement "resets" burst flag 2020-10-27 01:39:35 -04:00
Goober5000 18c93f2b5a add No_impact_spew weapon flag
If you want to make a weapon that doesn't generate smoke particles on impact.
2020-10-02 22:12:59 -04:00
Baezon 9b3905a4bb v1 2020-10-02 02:53:13 -04:00
Goober5000 f6ca9cddfa support zero-length display names
Previously the code assumed that an empty display name was the same as no display name.  This adds a flag so that empty names are allowed.
2020-09-07 14:38:16 -04:00
David Gibson f13faf4cba added new flags and flag loading for the doublefire disabling options 2020-04-28 13:57:44 -05:00
asarium b825f57bf4 Add scripting API support for model paths
This adds a scripting API for querying the paths of a model.
2019-12-14 09:15:44 +01:00
TRBlount f9704ebd89 Remove second instance of apply recoil flag in Weapon_Info_Flags 2017-12-19 12:41:53 -07:00
Fabian Woltermann 127976cd74 Weapon info flags conversion (#851) 2016-08-18 23:17:41 -07:00
Fabian Woltermann 770fce8de5 Bitset flags -- take 2 (#775)
This introduces a new mechanism for handling bit flags. Instead of using an int (or two, or three) to write bits into, this uses the std::bitset in a wrapper class that accepts an enum class as input. This means that certain classes of errors we've had a few of in the engine, where a coder used the wrong set of flags or checked them against the wrong variable (SF_STEALTH vs SIF_STEALTH, for example) can now be detected at a compiler level rather than not at all.
2016-08-12 16:13:50 -07:00