Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
buffs.qh File Reference
Include dependency graph for buffs.qh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Buff

Macros

#define BUFF_SPAWNFUNC(e, b, t)
#define BUFF_SPAWNFUNC_Q3COMPAT(o, r)
#define BUFF_SPAWNFUNCS(e, b)
#define REGISTER_BUFF(id, inst)

Functions

string Buff_CompatName (string buffname)
void buff_Init (entity ent)
void buff_Init_Compat (entity ent, entity replacement)
 REPLICATE_INIT (bool, cvar_cl_buffs_autoreplace)
 STATIC_INIT (REGISTER_BUFFS)

Variables

entity buffdef
int team_forced

Macro Definition Documentation

◆ BUFF_SPAWNFUNC

#define BUFF_SPAWNFUNC ( e,
b,
t )
Value:
spawnfunc(item_buff_##e) \
{ \
this.buffdef = b; \
if (teamplay) \
this.team_forced = t; \
buff_Init(this); \
}
int team_forced
Definition buffs.qh:61
entity buffdef
Definition buffs.qh:60
#define spawnfunc(id)
Definition spawnfunc.qh:96
bool teamplay
Definition teams.qh:59

Definition at line 64 of file buffs.qh.

64 #define BUFF_SPAWNFUNC(e, b, t) \
65 spawnfunc(item_buff_##e) \
66 { \
67 this.buffdef = b; \
68 if (teamplay) \
69 this.team_forced = t; \
70 buff_Init(this); \
71 }

◆ BUFF_SPAWNFUNC_Q3COMPAT

#define BUFF_SPAWNFUNC_Q3COMPAT ( o,
r )
Value:
spawnfunc(o) \
{ \
buff_Init_Compat(this, r); \
}

Definition at line 78 of file buffs.qh.

78 #define BUFF_SPAWNFUNC_Q3COMPAT(o, r) \
79 spawnfunc(o) \
80 { \
81 buff_Init_Compat(this, r); \
82 }

Referenced by REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), and REGISTER_BUFF().

◆ BUFF_SPAWNFUNCS

#define BUFF_SPAWNFUNCS ( e,
b )
Value:
BUFF_SPAWNFUNC(e, b, 0) \
BUFF_SPAWNFUNC(e##_team1, b, NUM_TEAM_1) \
BUFF_SPAWNFUNC(e##_team2, b, NUM_TEAM_2) \
BUFF_SPAWNFUNC(e##_team3, b, NUM_TEAM_3) \
BUFF_SPAWNFUNC(e##_team4, b, NUM_TEAM_4)
#define BUFF_SPAWNFUNC(e, b, t)
Definition buffs.qh:64
const int NUM_TEAM_2
Definition teams.qh:14
const int NUM_TEAM_4
Definition teams.qh:16
const int NUM_TEAM_3
Definition teams.qh:15
const int NUM_TEAM_1
Definition teams.qh:13

Definition at line 72 of file buffs.qh.

72 #define BUFF_SPAWNFUNCS(e, b) \
73 BUFF_SPAWNFUNC(e, b, 0) \
74 BUFF_SPAWNFUNC(e##_team1, b, NUM_TEAM_1) \
75 BUFF_SPAWNFUNC(e##_team2, b, NUM_TEAM_2) \
76 BUFF_SPAWNFUNC(e##_team3, b, NUM_TEAM_3) \
77 BUFF_SPAWNFUNC(e##_team4, b, NUM_TEAM_4)

Referenced by REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), and REGISTER_BUFF().

◆ REGISTER_BUFF

#define REGISTER_BUFF ( id,
inst )
Value:
REGISTER(StatusEffects, BUFF_##id, m_id, inst)
int m_id
Definition effect.qh:19
#define REGISTER(...)
Register a new entity with a registry.
Definition registry.qh:87

Definition at line 14 of file buffs.qh.

Referenced by REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), REGISTER_BUFF(), and REGISTER_BUFF().

Function Documentation

◆ Buff_CompatName()

string Buff_CompatName ( string buffname)

Definition at line 10 of file buffs.qc.

11{
12 switch (buffname)
13 {
14 case "ammoregen": return "ammo"; // Q3TA ammoregen
15 case "doubler": return "inferno"; // Q3TA doubler
16 case "scout": return "bash"; // Q3TA scout
17 case "guard": return "resistance"; // Q3TA guard
18 case "revival": case "regen": return "medic"; // WOP revival, Q3A regen
19 case "jumper": return "jump"; // WOP jumper
20 case "invulnerability": return "vampire"; // Q3TA invulnerability
21 case "kamikaze": return "vengeance"; // Q3TA kamikaze
22 case "teleporter": return "swapper"; // Q3A personal teleporter
23 default: return buffname;
24 }
25}

Referenced by GiveItems().

◆ buff_Init()

void buff_Init ( entity ent)

Definition at line 427 of file sv_buffs.qc.

428{
429 if (!autocvar_g_buffs)
430 {
431 delete(this);
432 return;
433 }
434
435 entity buff = this.buffdef;
436
437 // item_buff_random provides a null type so force randomization in that case
438 // otherwise replace the buff type if it's unavailable and the option is enabled
439 if (!buff || (autocvar_g_buffs_replace_available && !buff_Available(buff)))
440 {
441 buff_NewType(this);
442 buff = this.buffdef;
443 }
444
445 // the buff type is still invalid or unavailable, simply delete the item
446 if (!buff || !buff_Available(buff))
447 {
448 delete(this);
449 return;
450 }
451
452 this.classname = "item_buff";
453 this.solid = SOLID_TRIGGER;
454 this.flags = FL_ITEM;
455 this.bot_pickup = true;
456 this.bot_pickupevalfunc = generic_pickupevalfunc;
457 this.bot_pickupbasevalue = 1000;
458 IL_PUSH(g_items, this);
459 setthink(this, buff_Think);
460 settouch(this, buff_Touch);
461 setmodel(this, MDL_BUFF);
462 setsize(this, ITEM_D_MINS, ITEM_L_MAXS);
463 this.reset = buff_Reset;
464 this.nextthink = time + 0.1;
465 this.gravity = 1;
467 this.scale = 1;
468 this.skin = buff.m_skin;
471 setcefc(this, buff_Customize);
472 //this.gravity = 100;
473 this.color = buff.m_color;
474 this.glowmod = buff.m_color;
476 this.buff_active = !this.buff_activetime;
478 this.dtor = buff_Delete;
479
480 if (!this.buffs_finished)
481 this.buffs_finished = this.count; // legacy support
482
483 if (this.spawnflags & 1)
484 this.noalign = true;
485 if (this.noalign)
486 set_movetype(this, MOVETYPE_NONE); // reset by random location
487
489 buff_Respawn(this);
490}
float bot_pickup
Definition api.qh:43
float bot_pickupbasevalue
Definition bot.qh:68
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
float count
Definition powerups.qc:22
float gravity
Definition items.qh:17
int spawnflags
Definition ammo.qh:15
float buffs_finished
Definition item.qh:95
const vector ITEM_L_MAXS
Definition item.qh:84
const vector ITEM_D_MINS
Definition item.qh:82
#define setmodel(this, m)
Definition model.qh:26
float game_starttime
Definition stats.qh:82
const int FL_ITEM
Definition constants.qh:77
string classname
float flags
const float EF_STARDUST
const float SOLID_TRIGGER
float DPCONTENTS_SOLID
float DPCONTENTS_BODY
const float EF_FULLBRIGHT
float effects
float skin
float time
float nextthink
const float EF_NOSHADOW
float dphitcontentsmask
const float PFLAGS_FULLDYNAMIC
vector glowmod
float pflags
vector color
Definition dynlight.qc:15
solid
Definition ent_cs.qc:165
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
float max(float f,...)
void set_movetype(entity this, int mt)
Definition movetypes.qc:4
const int MOVETYPE_NONE
Definition movetypes.qh:129
const int MOVETYPE_TOSS
Definition movetypes.qh:135
float scale
Definition projectile.qc:14
#define setthink(e, f)
#define setcefc(e, f)
#define settouch(e, f)
Definition self.qh:73
float generic_pickupevalfunc(entity player, entity item)
Definition items.qc:884
IntrusiveList g_items
Definition items.qh:125
bool noalign
Definition items.qh:36
void buff_Think(entity this)
Definition sv_buffs.qc:303
void buff_Delete(entity this)
Definition sv_buffs.qc:421
void buff_NewType(entity ent)
Definition sv_buffs.qc:269
float buff_Available(entity buff)
Definition sv_buffs.qc:256
void buff_SetCooldown(entity this, float cd)
Definition sv_buffs.qc:140
void buff_Reset(entity this)
Definition sv_buffs.qc:387
bool buff_Customize(entity this, entity client)
Definition sv_buffs.qc:400
void buff_Respawn(entity this)
Definition sv_buffs.qc:153
void buff_Touch(entity this, entity toucher)
Definition sv_buffs.qc:189
float autocvar_g_buffs_cooldown_activate
Definition sv_buffs.qh:32
float buff_activetime
Definition sv_buffs.qh:40
bool autocvar_g_buffs_replace_available
Definition sv_buffs.qh:30
bool autocvar_g_buffs_random_location
Definition sv_buffs.qh:26
bool buff_active
Definition sv_buffs.qh:39

References autocvar_g_buffs_cooldown_activate, autocvar_g_buffs_random_location, autocvar_g_buffs_replace_available, bot_pickup, bot_pickupbasevalue, buff_active, buff_activetime, buff_Available(), buff_Customize(), buff_Delete(), buff_NewType(), buff_Reset(), buff_Respawn(), buff_SetCooldown(), buff_Think(), buff_Touch(), buffdef, buffs_finished, classname, color, count, DPCONTENTS_BODY, DPCONTENTS_SOLID, dphitcontentsmask, EF_FULLBRIGHT, EF_NOSHADOW, EF_STARDUST, effects, entity(), FL_ITEM, flags, g_items, game_starttime, generic_pickupevalfunc(), glowmod, gravity, IL_PUSH(), ITEM_D_MINS, ITEM_L_MAXS, max(), MOVETYPE_NONE, MOVETYPE_TOSS, nextthink, noalign, pflags, PFLAGS_FULLDYNAMIC, scale, set_movetype(), setcefc, setmodel, setthink, settouch, skin, solid, SOLID_TRIGGER, spawnflags, and time.

Referenced by buff_Init_Compat(), buff_SpawnReplacement(), and buffs_DelayedInit().

◆ buff_Init_Compat()

void buff_Init_Compat ( entity ent,
entity replacement )

Definition at line 492 of file sv_buffs.qc.

493{
494 if (teamplay)
495 {
496 if (ent.spawnflags & 2)
497 ent.team_forced = NUM_TEAM_1;
498 else if (ent.spawnflags & 4)
499 ent.team_forced = NUM_TEAM_2;
500 }
501
502 ent.buffdef = replacement;
503
504 buff_Init(ent);
505}
void buff_Init(entity this)
Definition sv_buffs.qc:427

References buff_Init(), entity(), NUM_TEAM_1, NUM_TEAM_2, and teamplay.

◆ REPLICATE_INIT()

REPLICATE_INIT ( bool ,
cvar_cl_buffs_autoreplace  )

◆ STATIC_INIT()

STATIC_INIT ( REGISTER_BUFFS )

Definition at line 52 of file buffs.qh.

53{
54 FOREACH(StatusEffects, it.instanceOfBuff, {
55 it.m_sprite = strzone(strcat("buff-", it.netname));
56 });
57}
#define FOREACH(list, cond, body)
Definition iter.qh:19

References FOREACH, and STATIC_INIT.

Variable Documentation

◆ buffdef

entity buffdef

Definition at line 60 of file buffs.qh.

Referenced by buff_Customize(), buff_Init(), buff_Think(), buff_Touch(), and spawnfunc().

◆ team_forced

int team_forced

Definition at line 61 of file buffs.qh.

Referenced by buff_Customize(), buff_Think(), and buff_Touch().