1 #using scripts\codescripts\struct;
3 #using scripts\shared\system_shared;
4 #using scripts\shared\array_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
9 #precache( "fx", "destruct/fx_dest_k_rail" );
23 level.floor_models = [];
25 foreach(
struct in positions)
27 if(IsDefined(
struct.model))
29 array::add(level.floor_models,
struct.model,
false);
30 struct.modelname =
struct.model;
34 array::add(level.floor_models,
"p6_dest_floor",
false);
35 struct.modelname =
"p6_dest_floor";
39 if(level.floor_models.size == 0)
41 level.floor_models =
array(
"p6_dest_floor");
50 if(!IsDefined(level.floor_damage_percentage))
52 level.floor_damage_percentage = randomfloatrange(.4,.6);
56 positions = array::randomize(positions);
59 for( i = 0; i < positions.size; i++)
61 if(!IsDefined(positions[i].angles))
63 positions[i].angles = (0, 0, 0);
67 if(level.floor_damage_percentage >= ((i+1) / positions.size))
69 if(!IsDefined(positions[i].script_width))
71 positions[i].script_width = 128;
73 if(!IsDefined(positions[i].script_length))
75 positions[i].script_length = 128;
77 if(!IsDefined(positions[i].hlth))
79 if(IsDefined(positions[i].script_float))
81 positions[i].hlth = positions[i].script_float;
86 positions[i].hlth = 20;
90 flr_model[i] =
spawn(
"script_model", positions[i].origin, 1 );
91 flr_model[i].angles = positions[i].angles;
92 flr_model[i] SetModel( positions[i].modelname +
"_damaged" );
93 flr_model[i].modelname = positions[i].modelname;
95 if(IsDefined(positions[i].target))
97 flr_model[i].clip = GetEnt(positions[i].target,
"targetname");
98 flr_model[i].clip SetMovingPlatformEnabled(
true );
102 flr_model[i].trig =
Spawn(
"trigger_box", positions[i].origin, 0, positions[i].script_width, positions[i].script_length, 64);
103 flr_model[i].hlth = positions[i].hlth;
105 if(!Isdefined(flr_model[i].break_fx))
106 flr_model[i].break_fx = level._effect[
"floor_destruct" ];
113 flr_model[i] =
spawn(
"script_model", positions[i].origin, 1 );
114 flr_model[i].angles = positions[i].angles;
115 flr_model[i] SetModel( positions[i].modelname );
117 if(IsDefined(positions[i].target))
119 flr_model[i].clip = GetEnt(positions[i].target,
"targetname");
120 flr_model[i].clip SetMovingPlatformEnabled(
true );
131 self endon(
"destroyed");
133 level waittill(
"prematch_over" );
139 self.trig waittill(
"trigger", who);
144 if(who GetStance() ==
"prone")
148 else if(who GetStance() ==
"crouch")
154 if(isdefined( who.sprinting ) && who.sprinting == 1 )
160 self.hlth =
self.hlth - amount;
166 nduration = (amount / 10);
170 nduration = waittime;
174 nMagnitude = (0.04 * amount);
177 Earthquake( nMagnitude, nDuration, v_pos, nRadius );
182 self SetModel(
self.modelname +
"_destroyed" );
186 PlayFx(
self.break_fx,
self.origin);
190 if(IsDefined(
self.clip))
194 Self DisconnectPaths();
196 self notify(
"destroyed");
205 self endon(
"destroyed");
207 self setcandamage(
true);
212 self waittill(
"damage", amount, who, direction_vec, point, type, modelName, tagName, partName );
214 self.hlth =
self.hlth - amount;
217 self SetModel(
self.modelname +
"_destroyed" );
221 PlayFx(
self.break_fx,
self.origin);
225 if(IsDefined(
self.clip))
229 Self DisconnectPaths();
231 self notify(
"destroyed");
242 level._effect[
"floor_destruct" ] =
"destruct/fx_dest_k_rail";