Files
fs2open.github.com/code/weapon/weapon_flags.h
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

133 lines
8.0 KiB
C++

#ifndef WEAPON_FLAGS_H
#define WEAPON_FLAGS_H
#include "globalincs/flagset.h"
namespace Weapon {
FLAG_LIST(Info_Flags) {
Homing_heat, // if set, this weapon homes via seeking heat
Homing_aspect, // if set, this weapon homes via chasing aspect
Electronics, // Takes out electronics systems.
Spawn, // Spawns projectiles on detonation.
Remote, // Can be remotely detonated by parent.
Puncture, // Punctures armor, damaging subsystems.
Supercap, // This is a weapon which does supercap class damage (meaning, it applies real damage to supercap ships)
Cmeasure, // Weapon acts as a countermeasure
Homing_javelin, // WC Saga Javelin HS style heatseeker, locks only on target's engines
Turns, // Set this if the weapon ever changes heading. If you don't set this and the weapon turns, collision detection won't work, I promise!
Swarm, // Missile "swarms".. ie changes heading and twists on way to target
Trail, // Has a trail
Big_only, // Only big ships (cruiser, capital, etc.) can arm this weapon
Child, // No ship can have this weapon. It gets created by weapon detonations.
Bomb, // Bomb-type missile, can be targeted
Huge, // Huge damage (generally 500+), probably only fired at huge ships.
No_dumbfire, // Missile cannot be fired dumbfire (ie requires aspect lock)
No_doublefire, // Disables linked firing for secondaries - EatThePath
Thruster, // Has thruster cone and/or glow
In_tech_database,
Player_allowed, // allowed to be on starting wing ships/in weaponry pool
Bomber_plus, // Fire this missile only at a bomber or big ship. But not a fighter.
Corkscrew, // corkscrew style missile
Particle_spew, // spews particles as it travels
Emp, // weapon explodes with a serious EMP effect
Energy_suck, // energy suck primary (impact effect)
Flak, // use for big-ship turrets - flak gun
Beam, // if this is a beam weapon : NOTE - VERY SPECIAL CASE
Tag, // this weapon has a tag effect when it hits
Shudder, // causes the weapon to shudder. shudder is proportional to the mass and damage of the weapon
Mflash, // has muzzle flash
Lockarm, // if the missile was fired without a lock, it does significanlty less damage on impact
Ballistic, // ballistic primaries - Goober5000
Pierce_shields, // shield pierceing -Bobboau
Default_in_tech_database, // this entry's default tech database status, as specified in weapons.tbl; used when the tech db is "reset to default" - Goober5000
Local_ssm, // localized ssm. ship that fires ssm is in mission. ssms also warp back in during mission
Tagged_only, // can only fire if target is tagged
Cycle, // will only fire from (shots (defalts to 1)) points at a time
Small_only, // can only be used against small ships like fighters or bombers
Same_turret_cooldown, // the weapon has the same cooldown time on turrets
Mr_no_lighting, // don't render with lighting, regardless of user options
Transparent, // render as transparent
Training, // Weapon does shield/hull damage, but doesn't hurt subsystems, whack you, or put marks on your ship.
Smart_spawn, // Spawn weapon that is fired via turrets like normal weapons
Inherit_parent_target, // child weapons home in on the target their parent is homing on.
No_emp_kill, // though weapon has hitpoints it can not be disabled by EMP
Variable_lead_homing, // allows user defined scaler to be added to lead (to enable, lead, pure or lag pursuit for missiles)
Untargeted_heat_seeker, // forces heat seeker to lose target immeadiately (and acquire a random new one)
No_radius_doubling, // removes the radius doubling effect bombs have for collisions
Non_subsys_homing, // spreads fired missiles around the target ships hull
No_life_lost_if_missed, // prevents game from shortening the lifeleft of the missed but still homing missiles
Custom_seeker_str, // sets the game to use custom seeker strengths instead of default values
Can_be_targeted, // allows non-bomb weapons to be targeted
Shown_on_radar, // allows non-bombs be visible on radar
Show_friendly, // allows friendly weapon radar dots be drawn
Capital_plus, // AI will not use this weapon on fighters or bombers
External_weapon_fp, // will try to use external models FPs if possible
External_weapon_lnch, // render external secondary as a launcher
Takes_blast_damage, // This weapon can take blast damage
Takes_shockwave_damage, // This weapon can take shockwave damage
Dont_show_on_radar, // Force a weapon to not show on radar
Render_flak, // Even though this is a flak weapon, render the shell
Ciws, // This weapons' burst and shockwave damage can damage bombs (Basically, a reverse for TAKES_BLAST/SHOCKWAVE_DAMAGE
Antisubsysbeam, // This beam can target subsystems as per normal
Nolink, // This weapon can not be linked with others
Use_emp_time_for_capship_turrets, // override MAX_TURRET_DISRUPT_TIME in emp.cpp - Goober5000
No_linked_penalty, // This weapon does not count into linked firing penalty
No_homing_speed_ramp, // Disables the 1s long speed ramping when firing locked-on secondaries
Cmeasure_aspect_home_on, // This countermeasure flag makes aspect seekers home on the countermeasure instead of going into dumbfire mode
Turret_Interceptable, // These two flags mark a weapon as being interceptable by the AI
Fighter_Interceptable, // (like WIF_BOMB), without forcing it to be tagetable -MageKing17
Aoe_Electronics, // Apply electronics effect across the weapon's entire area of effect instead of just on the impacted ship -MageKing17
Apply_Recoil, // Apply Recoil using weapon and ship info
Dont_spawn_if_shot, // Prevent shot down parent weapons from spawning children (DahBlount)
Die_on_lost_lock, // WIF_LOCKED_HOMING missiles will die if they lose their lock
Has_display_name, // Goober5000
No_impact_spew, // Goober5000
Require_exact_los, // If secondary or in turret, will only fire if ship has line of sight to target
Can_damage_shooter, // this weapon and any of its descendants can damage its shooter - Asteroth
Heals, // 'damage' heals instead of actually damaging - Asteroth
SecondaryNoAmmo, // Secondaries that only use energy
No_collide,
Multilock_target_dead_subsys,
No_evasion, // AI will not attempt to dodge this weapon - Asteroth
NUM_VALUES
};
FLAG_LIST(Weapon_Flags) {
Lock_warning_played, // set when a lock warning sound is played for the player (needed since we don't want to play multiple lock sounds)
Already_applied_stats, // for use in ship_apply_local and ship_apply_global damage functions so that we don't record multiple hits (stats) for one impact
Played_flyby_sound, // flyby sound has been played for this weapon
Consider_for_flyby_sound, // consider for flyby
Dead_in_water, // a missiles engines have died
Locked_when_fired, // fired with a lock
Destroyed_by_weapon, // destroyed by damage from other weapon
Spawned, //Spawned from a spawning type weapon
No_homing, // this weapon should ignore any homing behavior it'd usually have
Overridden_homing, // Homing is overridden by an external source (probably scripting)
Multi_homing_update_needed, // this is a newly spawned homing weapon which needs to update client machines
Multi_Update_Sent, // Marks this missile as already being updated once by the server
Begun_detonation, // The engine has set this weapon to detonate momentarily
NUM_VALUES
};
FLAG_LIST(Burst_Flags) {
Fast_firing,
Random_length,
Resets,
Num_firepoints_burst_shots, // Burst shots is set to however many firepoints the firer has
NUM_VALUES
};
FLAG_LIST(Beam_Info_Flags) {
Burst_share_random,
Track_own_texture_tiling,
NUM_VALUES
};
}
#endif