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_marker_constructor();
00027 void snap_marker_destructor(float quiet);
00028 void snap_marker_touch();
00029
00030
00031
00032
00048 void snap_marker_constructor()
00049 {
00050 local entity new_agmarker;
00051 local string marker_number;
00052
00053
00054 if( self.agrip_aux.health > 19 )
00055 {
00056 snap_misc_m2m("The Arena Masters are angered at your marker-spammage!\n");
00057 return;
00058 }
00059
00060
00061 new_agmarker = spawn();
00062 new_agmarker.movetype = MOVETYPE_NONE;
00063 new_agmarker.solid = SOLID_TRIGGER;
00064 setorigin(new_agmarker, self.origin);
00065 setmodel(new_agmarker, "progs/s_light.spr");
00066
00067
00068 new_agmarker.message = "nav/marker.wav";
00069 new_agmarker.health = 2;
00070
00071
00072 new_agmarker.frags = stof(infokey(self, "agv_marker_volume_throttle"));
00073 if( new_agmarker.frags > 1 || new_agmarker.frags < 0 )
00074 new_agmarker.frags = 0.3;
00075
00076
00077 new_agmarker.owner = self;
00078
00079
00080 self.agrip_aux.health = self.agrip_aux.health + 1;
00081 new_agmarker.items = self.agrip_aux.health;
00082
00083
00084 new_agmarker.classname = "agrip_marker";
00085
00086
00087 new_agmarker.ammo_shells = time;
00088 new_agmarker.ammo_rockets = 2;
00089 new_agmarker.think = snap_se_loopedsound;
00090 new_agmarker.touch = snap_marker_touch;
00091 new_agmarker.nextthink = time + 0.1;
00092
00093
00094 marker_number = ftos(new_agmarker.items);
00095 snap_misc_m2m("Marker number ");
00096 sprint(self, 1, marker_number);
00097 sprint(self, 1, " created.\n");
00098 };
00099
00107 void snap_marker_destructor(float quiet)
00108 {
00109 local float exitflag;
00110 local entity find_start_ent;
00111 local entity found_ent;
00112 local string marker_number;
00113
00114
00115
00116
00117
00118
00119
00120 if( self.agrip_aux.health == 0 )
00121 {
00122
00123 snap_misc_m2m("No waypoint markers to delete.\n");
00124 safe_soundtoclient(self, self, CHAN_AUTO, "deny.wav", 1, ATTN_NORM);
00125 }
00126 else
00127 {
00128
00129 find_start_ent = world;
00130
00131
00132
00133
00134 while( !exitflag )
00135 {
00136 found_ent = find(find_start_ent, classname, "agrip_marker");
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 if( found_ent.owner == self
00149 && found_ent.items == self.agrip_aux.health )
00150 {
00151
00152
00153
00154
00155
00156
00157
00158
00159 remove(found_ent);
00160 if( !quiet )
00161 {
00162 marker_number = ftos(self.agrip_aux.health);
00163 snap_misc_m2m("Waypoint marker ");
00164 sprint(self, 1, marker_number);
00165 sprint(self, 1, " deleted.\n");
00166 }
00167 self.agrip_aux.health = self.agrip_aux.health - 1;
00168 exitflag = true;
00169 }
00170 else
00171 {
00172 find_start_ent = found_ent;
00173 }
00174 }
00175 }
00176
00177
00178
00179
00180
00181
00182 };
00183
00184
00185
00186
00187 void snap_marker_touch()
00188 {
00189 local string marker_number;
00190
00191 if( other == self.owner && time > self.ammo_shells + self.ammo_rockets )
00192 {
00193 marker_number = ftos(self.items);
00194 sprint(other, 1, "!You found marker ", marker_number, ".\n");
00195 self.ammo_shells = time;
00196 }
00197 };
00198
00199