56         { { { -1.0f, 0.0f, 0.0f } } },
 
   57         { { { 1.0f, 0.70f, 0.0f } } },
 
   58         { { { 1.0f, -0.70f, 0.0f } } }  
 
   63         { { { -0.05f, 0.0f, 0.0f } } },
 
   64         { { { 0.05f, 0.035f, 0.0f } } },
 
   65         { { { 0.05f, -0.035f, 0.0f } } }        
 
   86 DCF(b_scale, 
"Sets the scale factor for debug nebula bolts")
 
   90 DCF(b_rand, 
"Sets the randomness factor for debug nebula bolts")
 
   94 DCF(b_shrink, 
"Sets the shrink factor for debug nebula bolts")
 
   98 DCF(b_poly_pct, 
"Sets b_poly_pct")
 
  106 DCF(b_strikes, 
"Sets num_strikes")
 
  110 DCF(b_noise, 
"Sets noise factor")
 
  114 DCF(b_bright, 
"Sets brightness factor")
 
  118 DCF(b_lifetime, 
"Sets lifetime duration")
 
  122 DCF(b_list, 
"Displays status of debug lightning commands")
 
  124         dc_printf(
"Debug lightning bolt settings :\n");
 
  140 DCF(lightning_intensity, 
"Sets lightning intensity between 0.0 and 1.0 (Default is 0.6667)")
 
  230                         Bolt_types.push_back(new_bolt_type);
 
  270                         Storm_types.push_back(new_storm_type);
 
  275                 mprintf((
"TABLES: Unable to parse '%s'!  Error message = %s.\n", 
"lightning.tbl", e.what()));
 
  317         if(index == (
size_t)-1)
 
  320         Storm = &Storm_types[
index];
 
  341                 b = &Nebl_bolts[
idx];           
 
  352                         if( b->
type >= Bolt_types.size() ){
 
  356                         bi = &Bolt_types[b->
type];
 
  420                                         float dist = 
fl_sqrt((x * x) + (y * y));                
 
  498                 for(idx=0; idx<num_bolts; idx++){
 
  512                                 if((s1 == 2) && (s2 == 2) && (s3 == 2)){
 
  516                                 if((e1 == 2) && (e2 == 2) && (e3 == 2)){
 
  522                         } 
while((s1 == e1) && (s2 == e2) && (s3 == e3));
 
  530                                 vec3d your_basic_hot_sauce;
 
  531                                 vm_vec_sub(&your_basic_hot_sauce, &strike, &start);
 
  539                                 float how_much_of_that_good_wing_sauce_to_add = 
vm_vec_normalize(&wing_sauce);
 
  543                                 if(how_much_of_that_good_wing_sauce_to_add > 1000.0
f){
 
  544                                         how_much_of_that_good_wing_sauce_to_add = 1000.0f;
 
  546                                 vm_vec_interp_constant(&the_mixture, &your_basic_hot_sauce, &wing_sauce, how_much_of_that_good_wing_sauce_to_add / 1000.0
f);
 
  582                 if(!Nebl_bolts[idx].used){
 
  591         if( type >= Bolt_types.size() ){
 
  594         bi = &Bolt_types[
type]; 
 
  597         bolt = &Nebl_bolts[
idx];        
 
  604         bolt->
type = (char)type;
 
  608         Nebl_bolt_start = *
start;
 
  609         Nebl_bolt_strike = *strike;
 
  612         if(bolt->
delay != -1){
 
  617         if(
vm_vec_same(&Nebl_bolt_start, &Nebl_bolt_strike)){
 
  618                 Nebl_bolt_strike.
xyz.z += 150.0f;
 
  621         vm_vec_sub(&dir, &Nebl_bolt_strike, &Nebl_bolt_start);
 
  633         if(!
nebl_gen(&Nebl_bolt_start, &Nebl_bolt_strike, 0, 4, 0, &bolt->
head, &tail)){
 
  634                 if(bolt->
head != NULL){
 
  672                 nprintf((
"lightning", 
"Out of lightning nodes!\n"));
 
  678         Assert( lp != &Nebl_free_list );                
 
  732         l_node *child_node = NULL;
 
  736         if ( d < 0.30
f || (depth > max_depth) ){
 
  739                 if(new_left == NULL){
 
  742                 new_left->
links[0] = NULL; new_left->
links[1] = NULL; new_left->
links[2] = NULL;
 
  745                 if(new_right == NULL){
 
  749                 new_right->
links[0] = NULL; new_right->
links[1] = NULL; new_right->
links[2] = NULL;
 
  760                 *l_right = new_right;
 
  783                 if(!
nebl_gen(&tmp, &tmp2, 0, 2, 1, &child_node, &argh)){
 
  784                         if(child_node != NULL){
 
  791         float scaler = 0.30f;
 
  792         tmp.
xyz.x += (
frand()-0.5f)*d*scaler;
 
  793         tmp.
xyz.y += (
frand()-0.5f)*d*scaler;
 
  794         tmp.
xyz.z += (
frand()-0.5f)*d*scaler;
 
  799         if(!
nebl_gen( left, &tmp, depth+1, max_depth, child, &ll, &lr )){
 
  800                 if(child_node != NULL){
 
  812         if(!
nebl_gen( &tmp, right, depth+1, max_depth, child, &rl, &rr )){
 
  813                 if(child_node != NULL){
 
  831         if(child_node != NULL){
 
  871         vertex *verts[4] = {&v[0], &v[1], &v[2], &v[3]};
 
  936         vec3d glow_a, glow_b;
 
  951         for(idx=0; idx<3; idx++){
 
  952                 memset(&tempv, 0, 
sizeof(tempv));
 
  968                 if (tempv.
codes == 0) {
 
  975                         memcpy(&c->
vex[idx], &tempv, 
sizeof(
vertex));
 
  991                 for(idx=0; idx<3; idx++){
 
 1006                         if (tempv.
codes == 0) {
 
 1013                                 memcpy(&cap->
vex[idx], &tempv, 
sizeof(
vertex));
 
 1099         if( b->
type >= Bolt_types.size() ){
 
 1102         bi = &Bolt_types[b->
type];
 
 1111         while(moveup != NULL){
 
 1123         for(
size_t idx=0; 
idx<Bolt_types.size(); 
idx++){
 
 1124                 if(!strcmp(name, Bolt_types[
idx].name)){
 
 1138         for(
size_t idx=0; 
idx<Storm_types.size(); 
idx++){
 
 1139                 if(!strcmp(name, Storm_types[
idx].name)){
 
void game_flash(float r, float g, float b)
 
int timestamp(int delta_ms)
 
struct screen3d::@234::@236 xyw
 
int nebl_get_active_bolts()
 
void vm_vec_scale_add(vec3d *dest, const vec3d *src1, const vec3d *src2, float k)
 
#define MISSION_FLAG_FULLNEB
 
float frand_range(float min, float max)
Return a floating point number in the range min..max. 
 
SCP_vector< game_snd > Snds
 
ubyte g3_transfer_vertex(vertex *dest, const vec3d *src)
 
float vm_vec_normalize_quick(vec3d *src)
 
int nebl_get_active_nodes()
 
GLint GLint GLsizei GLsizei GLsizei depth
 
#define list_append(head, elem)
 
vec3d Nebl_ring_pinched[3]
 
struct vec3d::@225::@227 xyz
 
int nebl_gen(vec3d *left, vec3d *right, float depth, float max_depth, int child, l_node **l_left, l_node **l_right)
 
#define TMAP_HTL_3D_UNLIT
 
vec3d * vm_vec_rotate(vec3d *dest, const vec3d *src, const matrix *m)
 
size_t bolt_types[MAX_BOLT_TYPES_PER_STORM]
 
cube_poof Neb2_cubes[MAX_CPTS][MAX_CPTS][MAX_CPTS]
 
#define MAX_LIGHTNING_NODES
 
void vm_vec_scale_add2(vec3d *dest, const vec3d *src, float k)
 
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
 
void nebl_bolt(size_t type, vec3d *start, vec3d *strike)
 
void stuff_float(float *f)
 
#define IS_VEC_NULL_SQ_SAFE(v)
 
#define SND_PRIORITY_DOUBLE_INSTANCE
 
SCP_vector< bolt_type > Bolt_types
 
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
 
matrix * vm_vector_2_matrix(matrix *m, const vec3d *fvec, const vec3d *uvec, const vec3d *rvec)
 
void vm_vec_add2(vec3d *dest, const vec3d *src)
 
#define GR_ALPHABLEND_FILTER
 
void vm_vec_scale(vec3d *dest, float s)
 
void nebl_jitter(l_bolt *b)
 
GLboolean GLboolean GLboolean GLboolean a
 
DCF(b_scale,"Sets the scale factor for debug nebula bolts")
 
void nebl_release(l_node *whee)
 
void stuff_string(char *outstr, int type, int len, char *terminators)
 
SCP_vector< storm_type > Storm_types
 
void nebl_render(bolt_type *bi, l_node *whee, float width, l_section *prev)
 
Thunder 1 sound in neblua. 
 
ubyte g3_rotate_vertex(vertex *dest, const vec3d *src)
 
int required_string(const char *pstr)
 
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
 
float vm_vec_dist(const vec3d *v0, const vec3d *v1)
 
int optional_string(const char *pstr)
 
Thunder 2 sound in neblua. 
 
void emp_apply(vec3d *pos, float inner_radius, float outer_radius, float emp_intensity, float emp_time, bool use_emp_time_for_capship_turrets)
 
void read_file_text(const char *filename, int mode, char *processed_text, char *raw_text)
 
size_t nebl_get_storm_index(char *name)
 
int g3_project_vertex(vertex *point)
 
GLint GLint GLint GLint GLint x
 
void vm_vec_interp_constant(vec3d *out, const vec3d *v0, const vec3d *v1, float t)
 
void vm_vec_copy_scale(vec3d *dest, const vec3d *src, float s)
 
#define TMAP_FLAG_CORRECT
 
void dc_stuff_float(float *f)
Stuffs a float to the given variable. 
 
void vm_vec_random_in_circle(vec3d *out, const vec3d *in, const matrix *orient, float radius, int on_edge)
 
void reset_parse(char *text)
 
void dc_stuff_int(int *i)
Stuffs an int to the given variable. Supports binary (0b), hexadecimal (0x), and octal (0o) formats...
 
GLuint const GLchar * name
 
#define MAX_BOLT_TYPES_PER_STORM
 
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later. 
 
void nebl_generate_section(bolt_type *bi, float width, l_node *a, l_node *b, l_section *c, l_section *cap, int pinch_a, int pinch_b)
 
GLboolean GLboolean GLboolean b
 
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
 
int vm_vec_same(const vec3d *v1, const vec3d *v2)
 
void nebl_render_section(bolt_type *bi, l_section *a, l_section *b)
 
float vm_vec_dist_quick(const vec3d *v0, const vec3d *v1)
 
float frand()
Return random value in range 0.0..1.0- (1.0- means the closest number less than 1.0) 
 
GLubyte GLubyte GLubyte GLubyte w
 
float vm_vec_copy_normalize(vec3d *dest, const vec3d *src)
 
#define MULTIPLAYER_MASTER
 
An overhauled/updated debug console to allow monitoring, testing, and general debugging of new featur...
 
vec3d * vm_vec_avg(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
#define TMAP_FLAG_TEXTURED
 
#define timestamp_elapsed(stamp)
 
#define list_remove(head, elem)
 
void nebl_delete(l_node *lp)
 
GLenum GLuint GLenum GLsizei length
 
#define GR_BITBLT_MODE_NORMAL
 
size_t nebl_get_bolt_index(char *name)
 
void dc_printf(const char *format,...)
Prints the given char string to the debug console. 
 
void nebl_calc_facing_pts_smart(vec3d *top, vec3d *bot, vec3d *fvec, vec3d *pos, float w, float z_add)
 
l_node Nebl_nodes[MAX_LIGHTNING_NODES]
 
vec3d * vm_vec_cross(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
#define MAX_LIGHTNING_BOLTS
 
int g3_draw_poly(int nv, vertex **pointlist, uint tmap_flags)
 
GLdouble GLdouble GLdouble GLdouble top
 
l_bolt Nebl_bolts[MAX_LIGHTNING_BOLTS]
 
void vm_vec_add(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
void send_lightning_packet(int bolt_type_internal, vec3d *start, vec3d *strike)
 
void nebl_set_storm(char *name)
 
float vm_vec_normalize(vec3d *v)