3 // Global list of effects, networked to CSQC by ID to save bandwidth and to use client particle numbers (allows mismatching effectinfos to some degree)
4 // Not too concerned about the order of this list, just keep the weapon effects together!
6 // EFFECT(istrail, EFFECT_NAME, "effectinfo_string")
8 EFFECT(0, EFFECT_EXPLOSION_SMALL, "explosion_small") \
9 EFFECT(0, EFFECT_EXPLOSION_MEDIUM, "explosion_medium") \
10 EFFECT(0, EFFECT_EXPLOSION_BIG, "explosion_big") \
11 EFFECT(1, EFFECT_VAPORIZER_RED, "TE_TEI_G3RED") \
12 EFFECT(1, EFFECT_VAPORIZER_RED_HIT, "TE_TEI_G3RED_HIT") \
13 EFFECT(1, EFFECT_VAPORIZER_BLUE, "TE_TEI_G3BLUE") \
14 EFFECT(1, EFFECT_VAPORIZER_BLUE_HIT, "TE_TEI_G3BLUE_HIT") \
15 EFFECT(1, EFFECT_VAPORIZER_YELLOW, "TE_TEI_G3YELLOW") \
16 EFFECT(1, EFFECT_VAPORIZER_YELLOW_HIT, "TE_TEI_G3YELLOW_HIT") \
17 EFFECT(1, EFFECT_VAPORIZER_PINK, "TE_TEI_G3PINK") \
18 EFFECT(1, EFFECT_VAPORIZER_PINK_HIT, "TE_TEI_G3PINK_HIT") \
19 EFFECT(1, EFFECT_VAPORIZER_NEUTRAL, "TE_TEI_G3NEUTRAL") \
20 EFFECT(1, EFFECT_VAPORIZER_NEUTRAL_HIT, "TE_TEI_G3NEUTRAL_HIT") \
21 EFFECT(0, EFFECT_ELECTRO_COMBO, "electro_combo") \
22 EFFECT(0, EFFECT_ELECTRO_IMPACT, "electro_impact") \
23 EFFECT(0, EFFECT_ELECTRO_MUZZLEFLASH, "electro_muzzleflash") \
24 EFFECT(0, EFFECT_HAGAR_BOUNCE, "hagar_bounce") \
25 EFFECT(0, EFFECT_HAGAR_MUZZLEFLASH, "hagar_muzzleflash") \
26 EFFECT(0, EFFECT_LASER_MUZZLEFLASH, "laser_muzzleflash") \
27 EFFECT(0, EFFECT_MACHINEGUN_MUZZLEFLASH, "uzi_muzzleflash") \
28 EFFECT(0, EFFECT_RIFLE_MUZZLEFLASH, "rifle_muzzleflash") \
29 EFFECT(0, EFFECT_RAPTOR_MUZZLEFLASH, "raptor_cannon_muzzleflash") \
30 EFFECT(0, EFFECT_RACER_MUZZLEFLASH, "wakizashi_gun_muzzleflash") \
31 EFFECT(0, EFFECT_RACER_ROCKETLAUNCH, "wakizashi_rocket_launch") \
32 EFFECT(0, EFFECT_SPIDERBOT_ROCKETLAUNCH, "spiderbot_rocket_launch") \
33 EFFECT(0, EFFECT_BIGPLASMA_MUZZLEFLASH, "bigplasma_muzzleflash") \
34 EFFECT(1, EFFECT_RIFLE, "tr_rifle") \
35 EFFECT(1, EFFECT_RIFLE_WEAK, "tr_rifle_weak") \
36 EFFECT(0, EFFECT_SEEKER_MUZZLEFLASH, "seeker_muzzleflash") \
37 EFFECT(0, EFFECT_SHOTGUN_MUZZLEFLASH, "shotgun_muzzleflash") \
38 EFFECT(0, EFFECT_GRENADE_MUZZLEFLASH, "grenadelauncher_muzzleflash") \
39 EFFECT(0, EFFECT_GRENADE_EXPLODE, "grenade_explode") \
40 EFFECT(0, EFFECT_FLAK_BOUNCE, "flak_bounce") \
41 EFFECT(0, EFFECT_CRYLINK_JOINEXPLODE, "crylink_joinexplode") \
42 EFFECT(0, EFFECT_CRYLINK_MUZZLEFLASH, "crylink_muzzleflash") \
43 EFFECT(0, EFFECT_VORTEX_MUZZLEFLASH, "nex_muzzleflash") \
44 EFFECT(0, EFFECT_HOOK_MUZZLEFLASH, "grapple_muzzleflash") \
45 EFFECT(0, EFFECT_HOOK_IMPACT, "grapple_impact") \
46 EFFECT(0, EFFECT_ROCKET_EXPLODE, "rocket_explode") \
47 EFFECT(0, EFFECT_ROCKET_GUIDE, "rocket_guide") \
48 EFFECT(0, EFFECT_ROCKET_MUZZLEFLASH, "rocketlauncher_muzzleflash") \
49 EFFECT(0, EFFECT_FIREBALL_LASER, "fireball_laser") \
50 EFFECT(0, EFFECT_FIREBALL_EXPLODE, "fireball_explode") \
51 EFFECT(0, EFFECT_FIREBALL_BFGDAMAGE, "fireball_bfgdamage") \
52 EFFECT(0, EFFECT_FIREBALL_MUZZLEFLASH, "fireball_muzzleflash") \
53 EFFECT(0, EFFECT_FIREBALL_PRE_MUZZLEFLASH, "fireball_preattack_muzzleflash") \
54 EFFECT(0, EFFECT_TELEPORT, "teleport") \
55 EFFECT(0, EFFECT_SPAWN_RED, "spawn_event_red") \
56 EFFECT(0, EFFECT_SPAWN_BLUE, "spawn_event_blue") \
57 EFFECT(0, EFFECT_SPAWN_YELLOW, "spawn_event_yellow") \
58 EFFECT(0, EFFECT_SPAWN_PINK, "spawn_event_pink") \
59 EFFECT(0, EFFECT_SPAWN_NEUTRAL, "spawn_event_neutral") \
60 EFFECT(0, EFFECT_NADE_RED_EXPLODE, "nade_red_explode") \
61 EFFECT(0, EFFECT_NADE_BLUE_EXPLODE, "nade_blue_explode") \
62 EFFECT(0, EFFECT_NADE_YELLOW_EXPLODE, "nade_yellow_explode") \
63 EFFECT(0, EFFECT_NADE_PINK_EXPLODE, "nade_pink_explode") \
64 EFFECT(0, EFFECT_NADE_NEUTRAL_EXPLODE, "nade_neutral_explode") \
65 EFFECT(0, EFFECT_ICEORGLASS, "iceorglass") \
66 EFFECT(0, EFFECT_ICEFIELD, "icefield") \
67 EFFECT(0, EFFECT_FIREFIELD, "firefield") \
68 EFFECT(0, EFFECT_HEALING, "healing_fx") \
69 EFFECT(1, EFFECT_LASER_BEAM_FAST, "nex242_misc_laser_beam_fast") \
70 EFFECT(0, EFFECT_RESPAWN_GHOST, "respawn_ghost") \
71 EFFECT(0, EFFECT_FLAG_RED_TOUCH, "redflag_touch") \
72 EFFECT(0, EFFECT_FLAG_BLUE_TOUCH, "blueflag_touch") \
73 EFFECT(0, EFFECT_FLAG_YELLOW_TOUCH, "yellowflag_touch") \
74 EFFECT(0, EFFECT_FLAG_PINK_TOUCH, "pinkflag_touch") \
75 EFFECT(0, EFFECT_FLAG_NEUTRAL_TOUCH, "neutralflag_touch") \
76 EFFECT(1, EFFECT_RED_PASS, "red_pass") \
77 EFFECT(1, EFFECT_BLUE_PASS, "blue_pass") \
78 EFFECT(1, EFFECT_YELLOW_PASS, "yellow_pass") \
79 EFFECT(1, EFFECT_PINK_PASS, "pink_pass") \
80 EFFECT(1, EFFECT_NEUTRAL_PASS, "neutral_pass") \
81 EFFECT(0, EFFECT_RED_CAP, "red_cap") \
82 EFFECT(0, EFFECT_BLUE_CAP, "blue_cap") \
83 EFFECT(0, EFFECT_YELLOW_CAP, "yellow_cap") \
84 EFFECT(0, EFFECT_PINK_CAP, "pink_cap") \
85 EFFECT(0, EFFECT_BALL_SPARKS, "kaball_sparks") \
86 EFFECT(0, EFFECT_ELECTRIC_SPARKS, "electricity_sparks") \
87 EFFECT(0, EFFECT_SPARKS, "sparks") \
88 EFFECT(0, EFFECT_RAGE, "rage") \
89 EFFECT(0, EFFECT_SMOKING, "smoking") \
90 EFFECT(0, EFFECT_SMOKE_RING, "smoke_ring") \
91 EFFECT(0, EFFECT_ITEM_PICKUP, "item_pickup") \
92 EFFECT(0, EFFECT_ITEM_RESPAWN, "item_respawn") \
93 EFFECT(0, EFFECT_JUMPPAD, "jumppad_activate") \
94 EFFECT(1, EFFECT_BULLET, "tr_bullet")
99 // --------------------
100 // --------------------------
101 // -----------------------------------
102 // ------------------------------------------|
103 // some stuff you don't need to care about...|
104 // ------------------------------------------|
105 // -----------------------------------
106 // --------------------------
107 // --------------------
109 .int eent_net_name; // id
110 .vector eent_net_location;
111 .vector eent_net_velocity;
113 .string eent_eff_name;
117 void Read_Effect(bool is_new);
119 void Send_Effect(string eff_name, vector eff_loc, vector eff_vel, int eff_cnt);
122 const int EFFECT_FIRST = 1;
125 const int MAX_EFFECTS = 512;
126 entity effects_ent[MAX_EFFECTS];
128 void Create_Effect_Entity(int eff_name, string eff_string, int eff_trail);
130 #define EFFECT(istrail,name,realname) \
132 void RegisterEffect_##name() \
134 SET_FIELD_COUNT(name, EFFECT_FIRST, EFFECT_COUNT) \
135 CHECK_MAX_COUNT(name, MAX_EFFECTS, EFFECT_COUNT, "EFFECT") \
136 Create_Effect_Entity(name, realname, istrail); \
138 ACCUMULATE_FUNCTION(RegisterEffects, RegisterEffect_##name);
140 void RegisterEffects_First()
143 #define dedi (server_is_dedicated ? "a dedicated " : "")
148 LOG_TRACEF("Beginning effect initialization on %s%s program...\n", dedi, PROGNAME);
152 void RegisterEffects_Done()
154 LOG_TRACE("Effects initialization successful!\n");
157 // NOW we actually activate the declarations
158 ACCUMULATE_FUNCTION(RegisterEffects, RegisterEffects_First);
160 ACCUMULATE_FUNCTION(RegisterEffects, RegisterEffects_Done);