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 431 of file sv_buffs.qc.

432{
433 if (!autocvar_g_buffs)
434 {
435 delete(this);
436 return;
437 }
438
439 entity buff = this.buffdef;
440
441 // item_buff_random provides a null type so force randomization in that case
442 // otherwise replace the buff type if it's unavailable and the option is enabled
443 if (!buff || (autocvar_g_buffs_replace_available && !buff_Available(buff)))
444 {
445 buff_NewType(this);
446 buff = this.buffdef;
447 }
448
449 // the buff type is still invalid or unavailable, simply delete the item
450 if (!buff || !buff_Available(buff))
451 {
452 delete(this);
453 return;
454 }
455
456 this.classname = "item_buff";
457 this.solid = SOLID_TRIGGER;
458 this.flags = FL_ITEM;
459 this.bot_pickup = true;
460 this.bot_pickupevalfunc = generic_pickupevalfunc;
461 this.bot_pickupbasevalue = 1000;
462 IL_PUSH(g_items, this);
463 setthink(this, buff_Think);
464 settouch(this, buff_Touch);
465 setmodel(this, MDL_BUFF);
466 setsize(this, ITEM_D_MINS, ITEM_L_MAXS);
467 this.reset = buff_Reset;
468 this.nextthink = time + 0.1;
469 this.gravity = 1;
471 this.scale = 1;
472 this.skin = buff.m_skin;
475 setcefc(this, buff_Customize);
476 //this.gravity = 100;
477 this.color = buff.m_color;
478 this.glowmod = buff.m_color;
480 this.buff_active = !this.buff_activetime;
482 this.dtor = buff_Delete;
483
484 if (!this.buffs_finished)
485 this.buffs_finished = this.count; // legacy support
486
487 if (this.spawnflags & 1)
488 this.noalign = true;
489 if (this.noalign)
490 set_movetype(this, MOVETYPE_NONE); // reset by random location
491
492 buff_Reset(this);
493}
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:885
IntrusiveList g_items
Definition items.qh:119
bool noalign
Definition items.qh:37
void buff_Think(entity this)
Definition sv_buffs.qc:301
void buff_Delete(entity this)
Definition sv_buffs.qc:425
void buff_NewType(entity ent)
Definition sv_buffs.qc:267
float buff_Available(entity buff)
Definition sv_buffs.qc:254
void buff_SetCooldown(entity this, float cd)
Definition sv_buffs.qc:140
void buff_Reset(entity this)
Definition sv_buffs.qc:377
bool buff_Customize(entity this, entity client)
Definition sv_buffs.qc:404
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 buff_active
Definition sv_buffs.qh:39

References autocvar_g_buffs_cooldown_activate, autocvar_g_buffs_replace_available, bot_pickup, bot_pickupbasevalue, buff_active, buff_activetime, buff_Available(), buff_Customize(), buff_Delete(), buff_NewType(), buff_Reset(), 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 495 of file sv_buffs.qc.

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

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().