00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 void snap_d5k_constructor();
00027 void snap_d5k_starter();
00028 void snap_d5k_main();
00029
00030
00031
00032
00039 void snap_d5k_constructor()
00040 {
00041 local entity new_agd5k;
00042
00043 new_agd5k = spawn();
00044
00045
00046 new_agd5k.movetype = MOVETYPE_NONE;
00047 new_agd5k.solid = SOLID_NOT;
00048
00049
00050
00051
00052
00053 new_agd5k.health = stof(infokey(self, "agv_d5k_interval"));
00054
00055
00056 new_agd5k.frags = stof(infokey(self, "agv_d5k_objdist"));
00057
00058
00059 new_agd5k.items = stof(infokey(self, "agv_d5k_volume_throttle"));
00060 if( new_agd5k.items > 1 || new_agd5k.items < 0 )
00061 new_agd5k.items = 1;
00062
00063
00064 new_agd5k.owner = self;
00065 self.agrip_d5k = new_agd5k;
00066
00067
00068 new_agd5k.think = snap_d5k_main;
00069 new_agd5k.nextthink = time + 0.1;
00070 };
00071
00078 void snap_d5k_starter()
00079 {
00080
00081 self.goalentity = findradius(self.owner.origin, self.frags);
00082
00083 self.think = snap_d5k_main;
00084 self.nextthink = time + 0.1;
00085
00086
00087 };
00088
00102 void snap_d5k_main()
00103 {
00104 local float sound_vol, matched;
00105 local vector switch_origin;
00106
00107 matched = false;
00108
00109 if(self.goalentity)
00110 {
00111 if( self.goalentity.classname != "func_button" )
00112 {
00113
00114 sound_vol = vlen(self.goalentity.origin - self.owner.origin) / self.frags;
00115 sound_vol = ( 1 - sound_vol ) * self.items;
00116
00117
00118 }
00119 else
00120 {
00121
00122
00123
00124
00125
00126 switch_origin = self.goalentity.mins - '0 0 1';
00127 if( pointcontents(switch_origin) != CONTENT_EMPTY )
00128 switch_origin = self.goalentity.maxs + '0 0 1';
00129
00130
00131 sound_vol = vlen(switch_origin - self.owner.origin) / self.frags;
00132 sound_vol = ( 1 - sound_vol ) * self.items;
00133
00134
00135 }
00136
00137
00138
00139
00140 if( sound_vol > 0.2 )
00141 {
00142
00143
00144
00145 if( ( self.goalentity.classname == "item_armor1"
00146 || self.goalentity.classname == "item_armor2"
00147 || self.goalentity.classname == "item_armorInv" )
00148 && snap_misc_ownervisible(self.goalentity.origin) )
00149 {
00150 matched = true;
00151 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/armor1.wav", sound_vol, ATTN_NORM);
00152 }
00153
00154 else if( self.goalentity.classname == "item_health"
00155 && snap_misc_ownervisible(self.goalentity.origin) )
00156 {
00157 matched = true;
00158 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/health1.wav", sound_vol, ATTN_NORM);
00159 }
00160
00161 else if( ( self.goalentity.classname == "item_shells"
00162 || self.goalentity.classname == "item_spikes"
00163 || self.goalentity.classname == "item_rockets"
00164 || self.goalentity.classname == "item_cells" )
00165 && snap_misc_ownervisible(self.goalentity.origin) )
00166 {
00167 matched = true;
00168 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "weapons/lock4.wav", sound_vol, ATTN_NORM);
00169 }
00170
00171 else if( self.goalentity.classname == ""
00172 && snap_misc_ownervisible(self.goalentity.origin) )
00173 {
00174 matched = true;
00175 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "d5k/backpack.wav", sound_vol, ATTN_NORM);
00176 }
00177
00178
00179 else if( self.goalentity.classname == "func_button"
00180 && snap_misc_ownervisible(switch_origin) )
00181 {
00182 matched = true;
00183
00184 if( self.goalentity.state == STATE_BOTTOM )
00185 {
00186 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "buttons/switch04.wav", sound_vol, ATTN_NORM);
00187 }
00188 else if( self.skin )
00189 {
00190 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "buttons/switch04.wav", sound_vol, ATTN_NORM);
00191 }
00192 }
00193
00194 else if( self.goalentity.classname == "item_artifact_envirosuit"
00195 && snap_misc_ownervisible(self.goalentity.origin) )
00196 {
00197 matched = true;
00198 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/suit.wav", sound_vol, ATTN_NORM);
00199 }
00200 else if( self.goalentity.classname == "item_artifact_invulnerability"
00201 && snap_misc_ownervisible(self.goalentity.origin) )
00202 {
00203 matched = true;
00204 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/protect.wav", sound_vol, ATTN_NORM);
00205 }
00206 else if( self.goalentity.classname == "item_artifact_invisibility"
00207 && snap_misc_ownervisible(self.goalentity.origin) )
00208 {
00209 matched = true;
00210 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/inv1.wav", sound_vol, ATTN_NORM);
00211 }
00212 else if( self.goalentity.classname == "item_artifact_super_damage"
00213 && snap_misc_ownervisible(self.goalentity.origin) )
00214 {
00215 matched = true;
00216 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "items/damage3.wav", sound_vol, ATTN_NORM);
00217 }
00218
00219 else if( ( self.goalentity.classname == "item_key1"
00220 || self.goalentity.classname == "item_key2" )
00221 && snap_misc_ownervisible(self.goalentity.origin) )
00222 {
00223 matched = true;
00224
00225 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "misc/talk.wav", sound_vol, ATTN_NORM);
00226 }
00227
00228 else if( ( self.goalentity.classname == "weapon_nailgun"
00229 || self.goalentity.classname == "weapon_supernailgun"
00230 || self.goalentity.classname == "weapon_supershotgun"
00231 || self.goalentity.classname == "weapon_rocketlauncher"
00232 || self.goalentity.classname == "weapon_grenadelauncher"
00233 || self.goalentity.classname == "weapon_lightning" )
00234 && snap_misc_ownervisible(self.goalentity.origin) )
00235 {
00236 matched = true;
00237 safe_soundtoclient(self.owner, self.goalentity, CHAN_ITEM, "weapons/pkup.wav", sound_vol, ATTN_NORM);
00238 }
00239 }
00240
00241 if( matched )
00242 {
00243 self.nextthink = time + 0.5;
00244
00245
00246
00247
00248
00249
00250
00251
00252 }
00253 else
00254 {
00255 self.nextthink = time + 0.01;
00256 }
00257
00258
00259 self.goalentity = self.goalentity.chain;
00260 }
00261 else
00262 {
00263
00264 self.think = snap_d5k_starter;
00265 self.nextthink = time + self.health;
00266 }
00267 };
00268
00269