#include "calculations.qh"
#include "projectiles.qh"
#include <common/models/all.qh>
+#include <common/effects/all.qh>
#endif
#include <common/util.qh>
#define WepSet_FromWeapon(it) ((it).m_wepset)
WepSet _WepSet_FromWeapon(int i);
-GENERIC_COMMAND(dumpweapons, "Dump all weapons into weapons_dump.txt", false) // WEAPONTODO: make this work with other progs than just server
+#define DEFAULT_FILENAME "weapons_dump.cfg"
+// NOTE: dumpeffectinfo, dumpnotifs, dumpturrets and dumpweapons use similar code
+GENERIC_COMMAND(dumpweapons, "Dump all turrets into " DEFAULT_FILENAME, false) // WEAPONTODO: make this work with other progs than just server
{
switch(request)
{
if(filename == "")
{
- filename = "weapons_dump.cfg";
+ filename = DEFAULT_FILENAME;
wep_config_alsoprint = false;
}
else if(filename == "-")
{
- filename = "weapons_dump.cfg";
+ filename = DEFAULT_FILENAME;
wep_config_alsoprint = true;
}
wep_config_file = fopen(filename, FILE_WRITE);
LOG_INFOF("^1Error: ^7Could not open file '%s'!", filename);
}
#else
- LOG_INFO(_("Weapons dump command only works with sv_cmd."));
+ LOG_INFO("Weapons dump command only works with sv_cmd.");
#endif
return;
}
default:
case CMD_REQUEST_USAGE:
{
- LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " dumpweapons [filename]");
- LOG_HELP(" Where 'filename' is the file to write (default is weapons_dump.cfg),");
+ LOG_HELP("Usage:^3 ", GetProgramCommandPrefix(), " dumpweapons [<filename>]");
+ LOG_HELPF(" Where <filename> is the file to write (default is %s),", DEFAULT_FILENAME);
LOG_HELP(" if supplied with '-' output to console as well as default,");
LOG_HELP(" if left blank, it will only write to default.");
return;
}
}
}
+#undef DEFAULT_FILENAME
#ifdef SVQC
entity W_PROP_reloader;
#include "all.inc"
-// TODO: remove after 0.8.2. Retains impulse number compatibility because 0.8.1 clients don't reload the weapons.cfg
-#define WEP_HARDCODED_IMPULSES 20
-
-// TODO: invert after 0.8.2. Will require moving 'best weapon' impulses
+// TODO: invert after changes have been made to the hardcoded weapon impulses. Will require moving 'best weapon' impulses
#define WEP_IMPULSE_BEGIN 230
#define WEP_IMPULSE_END bound(WEP_IMPULSE_BEGIN, WEP_IMPULSE_BEGIN + (REGISTRY_COUNT(Weapons) - 1) - 1, 253)
else
inaccessible = strcat(inaccessible, "\n", it.netname);
});
- if (inaccessible) LOG_TRACEF("Impulse limit exceeded, weapon(s) will not be directly accessible: %s", inaccessible);
+ if (inaccessible != "" && autocvar_developer > 0) LOG_TRACEF("Impulse limit exceeded, weapon(s) will not be directly accessible: %s", inaccessible);
#ifdef CSQC
FOREACH(Weapons, true, it.wr_init(it));
#endif
.entity weaponchild;
.entity exteriorweaponentity;
-vector weaponentity_glowmod(Weapon wep, entity actor, int c, entity wepent)
+vector weaponentity_glowmod(Weapon wep, int c, entity wepent)
{
vector g;
- if (!(g = wep.wr_glow(wep, actor, wepent))) g = colormapPaletteColor(c & 0x0F, true) * 2;
+ if (!(g = wep.wr_glow(wep, c, wepent))) g = colormapPaletteColor(c & 0x0F, true);
return g;
}
//.int weapon; // current weapon
.string weaponname; // name of .weapon
+#ifdef SVQC
.vector spawnorigin; // for casings
+#endif
.vector movedir_aligned; // shot origin based on weapon alignment (unaffected by shootfromeye)
.WFRAME wframe;
#ifdef SVQC
+ string autocvar_g_shootfromfixedorigin;
#define G_SHOOTFROMFIXEDORIGIN autocvar_g_shootfromfixedorigin
#elif defined(CSQC)
string autocvar_cl_shootfromfixedorigin;
vector shotorg_adjust_values(vector vecs, bool y_is_right, bool visual, int algn);
void CL_WeaponEntity_SetModel(entity this, string name, bool _anim);
+REPLICATE_INIT(int, cvar_cl_gunalign);
+REPLICATE_INIT(bool, cvar_cl_weapon_switch_reload);
+REPLICATE_INIT(bool, cvar_cl_weapon_switch_fallback_to_impulse);
+REPLICATE_INIT(int, cvar_cl_weaponimpulsemode);
+
+REPLICATE_INIT(string, cvar_cl_weaponpriority);
+REPLICATE_INIT(string, cvar_cl_weaponpriorities[10]);
+
#ifdef CSQC
-bool cvar_cl_accuracy_data_share;
-REPLICATE(cvar_cl_accuracy_data_share, bool, "cl_accuracy_data_share");
-bool cvar_cl_accuracy_data_receive;
-REPLICATE(cvar_cl_accuracy_data_receive, bool, "cl_accuracy_data_receive");
+REPLICATE_INIT(bool, cvar_cl_accuracy_data_share);
+REPLICATE_INIT(bool, cvar_cl_accuracy_data_receive);
#endif
#ifdef SVQC
void wframe_send(entity actor, entity weaponentity, int wepframe, float attackrate, bool restartanim);
-#endif
-#ifdef SVQC
-void W_MuzzleFlash(entity actor, .entity weaponentity, entity eff, entity muzzlemodel, vector shotorg, vector shotdir);
+void W_MuzzleFlash(Weapon thiswep, entity actor, .entity weaponentity, vector shotorg, vector shotdir);
+
+string W_FixWeaponOrder_ForceComplete_AndBuildImpulseList(entity this, string wo);
+string W_FixWeaponOrder_AllowIncomplete(entity this, string order);
#endif
+
#endif