46 #define MAX_TURRET_DISRUPT_TIME 7500
49 #define EMP_ACTIVE_LOCAL() (Emp_intensity > 0.0f)
52 #define EMP_WACKY_TEXT_LEN 256
60 #define NUM_RANDOM_CHARS 51
62 {
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'4',
'h',
'8',
'_',
'$',
')',
'-',
'~',
'u',
'q',
63 '.',
'x',
'h',
'&',
'%',
'*',
'1',
'3',
't',
'h',
'o',
'p',
'@',
'h',
'i',
'v',
'+',
'=',
64 '|',
'{',
'}',
':',
';',
'^',
'l',
'z',
'u',
'v',
'<',
'>',
'?',
'5',
'8' };
103 void emp_apply(
vec3d *
pos,
float inner_radius,
float outer_radius,
float emp_intensity,
float emp_time,
bool use_emp_time_for_capship_turrets)
105 float actual_intensity, actual_time;
139 if(dist_mag <= (outer_radius * 0.25
f)){
142 mprintf((
"EMP killing weapon\n"));
173 if(moveup->
next != NULL){
174 moveup = moveup->
next;
188 if(dist_mag > outer_radius){
190 moveup = moveup->
next;
196 if(dist_mag >= inner_radius){
197 scale_factor = 1.0f - (dist_mag / outer_radius);
202 if (scale_factor < 0.0
f) {
203 moveup = moveup->
next;
214 moveup = moveup->
next;
224 if(dist_mag > outer_radius){
230 if(dist_mag >= inner_radius){
231 scale_factor = 1.0f - (dist_mag / outer_radius);
236 if (scale_factor < 0.0
f) {
241 actual_intensity = emp_intensity * scale_factor;
242 actual_time = emp_time * scale_factor;
243 mprintf((
"EMP effect s : %f, i : %f, t : %f\n", scale_factor, actual_intensity, actual_time));
268 float start_intensity;
280 intensity = EMP_INTENSITY_MAX - 1.0f;
378 float start_intensity;
385 intensity = EMP_INTENSITY_MAX - 1.0f;
405 memset(Emp_wacky_text[idx].str, 0, 256);
498 va_start(args, format);
499 vsnprintf(tmp,
sizeof(tmp)-1, format, args);
501 tmp[
sizeof(tmp)-1] =
'\0';
539 wt = &Emp_wacky_text[gauge_id];
594 strcpy(text, wt->
str);
598 strcpy(text, wt->
str);
612 for(idx=0; idx<(
int)(strlen(str)-1); idx++){
639 DCF(zap,
"zap a ship with an EMP effect")
GLenum GLsizei GLenum format
void game_flash(float r, float g, float b)
int timestamp(int delta_ms)
#define MULTIPLAYER_CLIENT
model_subsystem * system_info
weapon Weapons[MAX_WEAPONS]
void ai_attack_object(object *attacker, object *attacked, ship_subsys *ssp)
float frand_range(float min, float max)
Return a floating point number in the range min..max.
weapon_info Weapon_info[MAX_WEAPON_TYPES]
float vm_vec_mag(const vec3d *v)
#define EMP_ACTIVE_LOCAL()
__inline void gr_string(int x, int y, const char *string, int resize_mode=GR_RESIZE_FULL)
void ship_subsys_set_disrupted(ship_subsys *ss, int time)
ai_info Ai_info[MAX_AI_INFO]
#define END_OF_LIST(head)
int Emp_wacky_target_timestamp
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
void emp_randomize_chars(char *str)
int iff_get_attackee_mask(int attacker_team)
DCF(zap,"zap a ship with an EMP effect")
void send_emp_effect(ushort net_sig, float intensity, float time)
int object_is_docked(object *objp)
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
void vm_vec_add2(vec3d *dest, const vec3d *src)
#define MAX_TURRET_DISRUPT_TIME
char str[EMP_WACKY_TEXT_LEN]
void emp_start_local(float intensity, float time)
int emp_should_blit_gauge()
void hud_lock_reset(float lock_time_scale)
float emp_current_intensity()
void emp_hud_jitter(int *x, int *y)
void emp_process_ship(ship *shipp)
#define EMP_WACKY_TEXT_LEN
void emp_apply(vec3d *pos, float inner_radius, float outer_radius, float emp_intensity, float emp_time, bool use_emp_time_for_capship_turrets)
vec3d * vm_vec_unrotate(vec3d *dest, const vec3d *src, const matrix *m)
GLint GLint GLint GLint GLint x
object Objects[MAX_OBJECTS]
bool end_string_at_first_hash_symbol(char *src)
#define GM_STANDALONE_SERVER
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
void dc_stuff_string_white(char *out_str, size_t maxlen)
Stuffs a whitespace delimited string to out_str from the command line, stopping at the end of the com...
char Emp_random_char[NUM_RANDOM_CHARS]
int set_target_objnum(ai_info *aip, int objnum)
void hud_start_text_flash(char *txt, int t, int interval)
void hud_target_random_ship()
char subobj_name[MAX_NAME_LEN]
int ship_get_random_targetable_ship()
wacky_text Emp_wacky_text[NUM_TEXT_STAMPS]
#define MULTIPLAYER_MASTER
An overhauled/updated debug console to allow monitoring, testing, and general debugging of new featur...
SCP_vector< ship_info > Ship_info
int nearest_locked_object
#define timestamp_elapsed(stamp)
void emp_hud_string(int x, int y, int gauge_id, const char *str, int resize_mode)
#define EMP_INTENSITY_MAX
int ship_name_lookup(const char *name, int inc_players)
int ship_get_random_team_ship(int team_mask, int flags, float max_dist)
struct wacky_text wacky_text
missile_obj Missile_obj_list
void emp_maybe_reformat_text(char *text, int max_len, int gauge_id)
void emp_start_ship(object *ship_objp, float intensity, float time)
char ship_name[NAME_LENGTH]
ship_subsys * set_targeted_subsys(ai_info *aip, ship_subsys *new_subsys, int parent_objnum)
void emp_hud_printf(int x, int y, int gauge_id, const char *format,...)
int current_target_is_locked