1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\util_shared;
6 #using scripts\mp\_shoutcaster;
8 #insert scripts\shared\shared.gsh;
9 #insert scripts\shared\version.gsh;
11 #precache( "client_fx", "ui/fx_koth_marker_blue" );
12 #precache( "client_fx", "ui/fx_koth_marker_orng" );
13 #precache( "client_fx", "ui/fx_koth_marker_neutral" );
14 #precache( "client_fx", "ui/fx_koth_marker_contested" );
15 #precache( "client_fx", "ui/fx_koth_marker_blue_window" );
16 #precache( "client_fx", "ui/fx_koth_marker_orng_window" );
17 #precache( "client_fx", "ui/fx_koth_marker_neutral_window" );
18 #precache( "client_fx", "ui/fx_koth_marker_contested_window" );
19 #precache( "client_fx", "ui/fx_koth_marker_white" );
20 #precache( "client_fx", "ui/fx_koth_marker_white_window" );
25 #define KS_CONTESTED 3
32 level.current_zone = [];
33 level.current_state = [];
34 for( i = 0; i < 4; i++ )
36 level.current_zone[i] = 0;
37 level.current_state[i] = 0;
40 level.hardPoints = [];
42 level.hardPointFX = [];
47 level.effect_scriptbundles = [];
50 level.effect_scriptbundles[
"zoneEdgeMarkerWndw"] =
struct::get_script_bundle(
"teamcolorfx",
"teamcolorfx_koth_edge_marker_window" );
52 level._effect[
"zoneEdgeMarker"] = [];
53 level._effect[
"zoneEdgeMarker"][
KS_NEUTRAL] =
"ui/fx_koth_marker_neutral";
54 level._effect[
"zoneEdgeMarker"][
KS_ALLIES] =
"ui/fx_koth_marker_blue";
55 level._effect[
"zoneEdgeMarker"][
KS_AXIS] =
"ui/fx_koth_marker_orng";
56 level._effect[
"zoneEdgeMarker"][
KS_CONTESTED] =
"ui/fx_koth_marker_contested";
58 level._effect[
"zoneEdgeMarkerWndw"] = [];
59 level._effect[
"zoneEdgeMarkerWndw"][
KS_NEUTRAL] =
"ui/fx_koth_marker_neutral_window";
60 level._effect[
"zoneEdgeMarkerWndw"][
KS_ALLIES] =
"ui/fx_koth_marker_blue_window";
61 level._effect[
"zoneEdgeMarkerWndw"][
KS_AXIS] =
"ui/fx_koth_marker_orng_window";
62 level._effect[
"zoneEdgeMarkerWndw"][
KS_CONTESTED] =
"ui/fx_koth_marker_contested_window";
73 if ( GetDvarInt(
"tu11_programaticallyColoredGameFX") )
75 effects[
"zoneEdgeMarker"][
KS_ALLIES] =
"ui/fx_koth_marker_white";
76 effects[
"zoneEdgeMarker"][
KS_AXIS] =
"ui/fx_koth_marker_white";
77 effects[
"zoneEdgeMarkerWndw"][
KS_ALLIES] =
"ui/fx_koth_marker_white_window";
78 effects[
"zoneEdgeMarkerWndw"][
KS_AXIS] =
"ui/fx_koth_marker_white_window";
83 caster_effects[
"zoneEdgeMarker"] =
shoutcaster::get_color_fx( local_client_num, level.effect_scriptbundles[
"zoneEdgeMarker"] );
84 caster_effects[
"zoneEdgeMarkerWndw"] =
shoutcaster::get_color_fx( local_client_num, level.effect_scriptbundles[
"zoneEdgeMarkerWndw"] );
86 effects[
"zoneEdgeMarker"][
KS_ALLIES] = caster_effects[
"zoneEdgeMarker"][
"allies"];
87 effects[
"zoneEdgeMarker"][
KS_AXIS] = caster_effects[
"zoneEdgeMarker"][
"axis"];
88 effects[
"zoneEdgeMarkerWndw"][
KS_ALLIES] = caster_effects[
"zoneEdgeMarkerWndw"][
"allies"];
89 effects[
"zoneEdgeMarkerWndw"][
KS_AXIS] = caster_effects[
"zoneEdgeMarkerWndw"][
"axis"];
118 function get_fx( fx_name, fx_state, effects )
120 return effects[fx_name][fx_state];
133 effects[
"zoneEdgeMarker"] = level._effect[
"zoneEdgeMarker"];
134 effects[
"zoneEdgeMarkerWndw"] = level._effect[
"zoneEdgeMarkerWndw"];
137 if ( isdefined( level.hardPointFX[local_client_num] ) )
139 foreach ( fx
in level.hardPointFX[local_client_num] )
141 StopFx( local_client_num, fx );
144 level.hardPointFX[local_client_num] = [];
148 if ( isdefined( level.visuals[zone_index] ) )
152 foreach ( visual
in level.visuals[zone_index] )
154 if ( !isdefined(visual.script_fxid ) )
157 fxid =
get_fx( visual.script_fxid, fx_state, effects );
159 if ( isdefined(visual.angles) )
160 forward = AnglesToForward( visual.angles );
164 fxHandle = PlayFX( local_client_num, fxid, visual.origin, forward );
165 level.hardPointFX[local_client_num][level.hardPointFX[local_client_num].size] = fxHandle;
166 if ( isdefined( fxHandle ) )
170 SetFxTeam( local_client_num, fxHandle,
"allies" );
174 SetFxTeam( local_client_num, fxHandle,
"axis" );
178 SetFxTeam( local_client_num, fxHandle,
"free" );
188 function hardpoint(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
190 if ( level.hardPoints.size == 0 )
193 foreach( point
in hardpoints )
195 level.hardPoints[point.script_index] = point;
198 foreach( point
in level.hardPoints )
204 level.current_zone[localClientNum] = newVal;
205 level.current_state[localClientNum] = 0;
207 setup_hardpoint_fx( localClientNum, level.current_zone[localClientNum], level.current_state[localClientNum] );
210 function hardpoint_state(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
212 if ( newVal != level.current_state[localClientNum] )
214 level.current_state[localClientNum] = newVal;
215 setup_hardpoint_fx( localClientNum, level.current_zone[localClientNum], level.current_state[localClientNum] );
221 level notify(
"end_team_change_watch" );
222 level endon(
"end_team_change_watch" );
224 level waittill(
"team_changed" );
228 thread
setup_hardpoint_fx( localClientNum, level.current_zone[localClientNum], level.current_state[localClientNum] );