X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon.qh;h=ec6e14eb668d8ef63e33cb6aaf2577fc464033cb;hp=3dd2a8048af45223f5ddaf383d1a649f262861ec;hb=HEAD;hpb=d134ce0af0e04817a2a599f8187889d0a7bbc0ee diff --git a/qcsrc/common/weapons/weapon.qh b/qcsrc/common/weapons/weapon.qh index 3dd2a8048..cf0f637f0 100644 --- a/qcsrc/common/weapons/weapon.qh +++ b/qcsrc/common/weapons/weapon.qh @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #include #ifdef SVQC @@ -45,7 +45,7 @@ CLASS(Weapon, Object) /** control what happens when this weapon is spawned */ METHOD(Weapon, m_spawnfunc_hookreplace, Weapon(Weapon this, entity e)) { return this; } /** M: ammotype : main ammo type */ - ATTRIB(Weapon, ammo_type, int, RES_NONE); + ATTRIB(Weapon, ammo_type, Resource, RES_NONE); /** M: impulse : weapon impulse */ ATTRIB(Weapon, impulse, int, -1); /** M: flags : WEPSPAWNFLAG_... combined */ @@ -56,8 +56,14 @@ CLASS(Weapon, Object) ATTRIB(Weapon, wpcolor, vector, '0 0 0'); /** M: modelname : name of model (without g_ v_ or h_ prefixes) */ ATTRIB(Weapon, mdl, string, ""); +#ifdef GAMEQC /** M: model MDL_id_ITEM */ ATTRIB(Weapon, m_model, entity); + /** M: flash model MDL_id_MUZZLEFLASH */ + ATTRIB(Weapon, m_muzzlemodel, entity, MDL_Null); + /** M: flash effect EFFECT_id_MUZZLEFLASH */ + ATTRIB(Weapon, m_muzzleeffect, entity); +#endif /** M: crosshair : per-weapon crosshair: "CrosshairImage Size" */ ATTRIB(Weapon, w_crosshair, string, "gfx/crosshairmoustache"); /** A: crosshair : per-weapon crosshair size (argument two of "crosshair" field) */ @@ -70,6 +76,8 @@ CLASS(Weapon, Object) ATTRIB(Weapon, netname, string, ""); /** M: wepname : human readable name */ ATTRIB(Weapon, m_name, string, "AOL CD Thrower"); + /** M: deprecated refname : old reference name for compatibility with weapons that were renamed */ + ATTRIB(Weapon, m_deprecated_netname, string, ""); ATTRIB(Weapon, m_pickup, entity); @@ -111,7 +119,7 @@ CLASS(Weapon, Object) /** (CLIENT) weapon specific view model */ METHOD(Weapon, wr_viewmodel, string(Weapon this, entity wep)) { return string_null; } /** (BOTH) weapon specific glow */ - METHOD(Weapon, wr_glow, vector(Weapon this, entity actor, entity wepent)) { return '0 0 0'; } + METHOD(Weapon, wr_glow, vector(Weapon this, int actor_colors, entity wepent)) { return '0 0 0'; } /** (SERVER) the weapon is dropped */ METHOD(Weapon, wr_drop, void(Weapon this, entity actor, .entity weaponentity)) {} /** (SERVER) a weapon is picked up */ @@ -129,6 +137,9 @@ void weapon_defaultspawnfunc(entity this, Weapon e); #define SPAWNFUNC_WEAPON(name, weapon) \ spawnfunc(name) { weapon_defaultspawnfunc(this, weapon); } +#define SPAWNFUNC_WEAPON_COND(name, cond, wep1, wep2) \ + SPAWNFUNC_WEAPON(name, (cond ? wep1 : wep2)) + #else #define SPAWNFUNC_WEAPON(name, weapon) @@ -206,7 +217,6 @@ string weaponorder_byid; // functions: string W_FixWeaponOrder(string order, float complete); -string W_UndeprecateName(string s); string W_NameWeaponOrder(string order); string W_NumberWeaponOrder(string order); string W_FixWeaponOrder_BuildImpulseList(string o); @@ -214,11 +224,14 @@ string W_FixWeaponOrder_AllowIncomplete(entity this, string order); string W_FixWeaponOrder_ForceComplete(string order); WepSet W_RandomWeapons(entity e, WepSet remaining, int n); -string GetAmmoPicture(int ammotype); +string GetAmmoPicture(Resource ammotype); + +string GetAmmoName(Resource ammotype); + +entity GetAmmoItem(Resource ammotype); #ifdef CSQC -int GetAmmoTypeFromNum(int i); -int GetAmmoStat(int ammotype); +int GetAmmoStat(Resource ammotype); #endif string W_Sound(string w_snd);