string fstrunzone(string s)
{
string sc;
- if not(s)
+ if (!s)
return s;
sc = strcat(s, "");
strunzone(s);
fclose(fh);
}
-string format_time(float seconds)
-{
- float days, hours, minutes;
- seconds = floor(seconds + 0.5);
- days = floor(seconds / 864000);
- seconds -= days * 864000;
- hours = floor(seconds / 36000);
- seconds -= hours * 36000;
- minutes = floor(seconds / 600);
- seconds -= minutes * 600;
- if (days > 0)
- return sprintf(_("%d days, %02d:%02d:%02d"), days, hours, minutes, seconds);
- else
- return sprintf(_("%02d:%02d:%02d"), hours, minutes, seconds);
-}
-
string mmsss(float tenths)
{
float minutes;
created_saved_value = 0;
- if not(tmp_cvar || tmp_value)
+ if (!(tmp_cvar || tmp_value))
{
dprint("Error: Invalid usage of cvar_settemp(string, string); !\n");
return 0;
if(!cvar_type(tmp_cvar))
{
- print(sprintf("Error: cvar %s doesn't exist!\n", tmp_cvar));
+ printf("Error: cvar %s doesn't exist!\n", tmp_cvar);
return 0;
}
++i;
}
else
- print(sprintf("Error: cvar %s doesn't exist anymore! It can still be restored once it's manually recreated.\n", e.netname));
+ printf("Error: cvar %s doesn't exist anymore! It can still be restored once it's manually recreated.\n", e.netname);
}
return i;
++carets;
// check if carets aren't all escaped
- if (carets == 1 || mod(carets, 2) == 1) // first check is just an optimization
+ if (carets & 1)
{
if(i+1 <= len)
if(strstrofs("0123456789", substring(s, i+1, 1), 0) >= 0)
if(strstrofs(strcat(",", pattern, ","), subpattern2, 0) < 0)
if(strstrofs(strcat(",", pattern, ","), subpattern3, 0) < 0)
{
- if not(subpattern4)
+ if (!subpattern4)
return 0;
if(strstrofs(strcat(",", pattern, ","), subpattern4, 0) < 0)
return 0;
error("fteqcc bug introduced with revision 3178 detected. Please upgrade fteqcc to a later revision, downgrade fteqcc to revision 3177, or pester Spike until he fixes it. You can set _allow_unacceptable_compiler_bugs 1 to skip this check, but expect stuff to be horribly broken then.");
string s = "";
- if not(s)
+ if (!s)
error("The empty string counts as false. We do not want that!");
}
}
get_model_parameters_fixbone = 0;
- if not(m)
+ if (!m)
return 1;
if(substring(m, -9, 5) == "_lod1" || substring(m, -9, 5) == "_lod2")
get_model_parameters_weight = stof(s);
if(c == "age")
get_model_parameters_age = stof(s);
+ if(c == "description")
+ get_model_parameters_description = s;
if(c == "bone_upperbody")
get_model_parameters_bone_upperbody = s;
if(c == "bone_weapon")
Therefore: there is an inflection point iff:
e outside (3 - s)/2 .. 3 - s*2
-
+
in other words, if (s,e) in triangle (1,1)(0,3)(0,1.5) or in triangle (1,1)(3,0)(1.5,0)
*/
}
queue_start.FindConnectedComponent_processing = 0;
}
+#ifdef SVQC
+vector combine_to_vector(float x, float y, float z)
+{
+ vector result; result_x = x; result_y = y; result_z = z;
+ return result;
+}
+
+vector get_corner_position(entity box, float corner)
+{
+ switch(corner)
+ {
+ case 1: return combine_to_vector(box.absmin_x, box.absmin_y, box.absmin_z);
+ case 2: return combine_to_vector(box.absmax_x, box.absmin_y, box.absmin_z);
+ case 3: return combine_to_vector(box.absmin_x, box.absmax_y, box.absmin_z);
+ case 4: return combine_to_vector(box.absmin_x, box.absmin_y, box.absmax_z);
+ case 5: return combine_to_vector(box.absmax_x, box.absmax_y, box.absmin_z);
+ case 6: return combine_to_vector(box.absmin_x, box.absmax_y, box.absmax_z);
+ case 7: return combine_to_vector(box.absmax_x, box.absmin_y, box.absmax_z);
+ case 8: return combine_to_vector(box.absmax_x, box.absmax_y, box.absmax_z);
+ default: return '0 0 0';
+ }
+}
+#endif
+
// todo: this sucks, lets find a better way to do backtraces?
#ifndef MENUQC
void backtrace(string msg)
switch(num)
{
case 10: return ANNCE_NUM_GAMESTART_10;
- case 9: return ANNCE_NUM_GAMESTART_9;
- case 8: return ANNCE_NUM_GAMESTART_8;
- case 7: return ANNCE_NUM_GAMESTART_7;
- case 6: return ANNCE_NUM_GAMESTART_6;
- case 5: return ANNCE_NUM_GAMESTART_5;
- case 4: return ANNCE_NUM_GAMESTART_4;
- case 3: return ANNCE_NUM_GAMESTART_3;
- case 2: return ANNCE_NUM_GAMESTART_2;
- case 1: return ANNCE_NUM_GAMESTART_1;
+ case 9: return ANNCE_NUM_GAMESTART_9;
+ case 8: return ANNCE_NUM_GAMESTART_8;
+ case 7: return ANNCE_NUM_GAMESTART_7;
+ case 6: return ANNCE_NUM_GAMESTART_6;
+ case 5: return ANNCE_NUM_GAMESTART_5;
+ case 4: return ANNCE_NUM_GAMESTART_4;
+ case 3: return ANNCE_NUM_GAMESTART_3;
+ case 2: return ANNCE_NUM_GAMESTART_2;
+ case 1: return ANNCE_NUM_GAMESTART_1;
}
break;
}
switch(num)
{
case 10: return ANNCE_NUM_IDLE_10;
- case 9: return ANNCE_NUM_IDLE_9;
- case 8: return ANNCE_NUM_IDLE_8;
- case 7: return ANNCE_NUM_IDLE_7;
- case 6: return ANNCE_NUM_IDLE_6;
- case 5: return ANNCE_NUM_IDLE_5;
- case 4: return ANNCE_NUM_IDLE_4;
- case 3: return ANNCE_NUM_IDLE_3;
- case 2: return ANNCE_NUM_IDLE_2;
- case 1: return ANNCE_NUM_IDLE_1;
+ case 9: return ANNCE_NUM_IDLE_9;
+ case 8: return ANNCE_NUM_IDLE_8;
+ case 7: return ANNCE_NUM_IDLE_7;
+ case 6: return ANNCE_NUM_IDLE_6;
+ case 5: return ANNCE_NUM_IDLE_5;
+ case 4: return ANNCE_NUM_IDLE_4;
+ case 3: return ANNCE_NUM_IDLE_3;
+ case 2: return ANNCE_NUM_IDLE_2;
+ case 1: return ANNCE_NUM_IDLE_1;
}
break;
}
switch(num)
{
case 10: return ANNCE_NUM_KILL_10;
- case 9: return ANNCE_NUM_KILL_9;
- case 8: return ANNCE_NUM_KILL_8;
- case 7: return ANNCE_NUM_KILL_7;
- case 6: return ANNCE_NUM_KILL_6;
- case 5: return ANNCE_NUM_KILL_5;
- case 4: return ANNCE_NUM_KILL_4;
- case 3: return ANNCE_NUM_KILL_3;
- case 2: return ANNCE_NUM_KILL_2;
- case 1: return ANNCE_NUM_KILL_1;
+ case 9: return ANNCE_NUM_KILL_9;
+ case 8: return ANNCE_NUM_KILL_8;
+ case 7: return ANNCE_NUM_KILL_7;
+ case 6: return ANNCE_NUM_KILL_6;
+ case 5: return ANNCE_NUM_KILL_5;
+ case 4: return ANNCE_NUM_KILL_4;
+ case 3: return ANNCE_NUM_KILL_3;
+ case 2: return ANNCE_NUM_KILL_2;
+ case 1: return ANNCE_NUM_KILL_1;
}
break;
}
switch(num)
{
case 10: return ANNCE_NUM_RESPAWN_10;
- case 9: return ANNCE_NUM_RESPAWN_9;
- case 8: return ANNCE_NUM_RESPAWN_8;
- case 7: return ANNCE_NUM_RESPAWN_7;
- case 6: return ANNCE_NUM_RESPAWN_6;
- case 5: return ANNCE_NUM_RESPAWN_5;
- case 4: return ANNCE_NUM_RESPAWN_4;
- case 3: return ANNCE_NUM_RESPAWN_3;
- case 2: return ANNCE_NUM_RESPAWN_2;
- case 1: return ANNCE_NUM_RESPAWN_1;
+ case 9: return ANNCE_NUM_RESPAWN_9;
+ case 8: return ANNCE_NUM_RESPAWN_8;
+ case 7: return ANNCE_NUM_RESPAWN_7;
+ case 6: return ANNCE_NUM_RESPAWN_6;
+ case 5: return ANNCE_NUM_RESPAWN_5;
+ case 4: return ANNCE_NUM_RESPAWN_4;
+ case 3: return ANNCE_NUM_RESPAWN_3;
+ case 2: return ANNCE_NUM_RESPAWN_2;
+ case 1: return ANNCE_NUM_RESPAWN_1;
}
break;
}
switch(num)
{
case 10: return ANNCE_NUM_ROUNDSTART_10;
- case 9: return ANNCE_NUM_ROUNDSTART_9;
- case 8: return ANNCE_NUM_ROUNDSTART_8;
- case 7: return ANNCE_NUM_ROUNDSTART_7;
- case 6: return ANNCE_NUM_ROUNDSTART_6;
- case 5: return ANNCE_NUM_ROUNDSTART_5;
- case 4: return ANNCE_NUM_ROUNDSTART_4;
- case 3: return ANNCE_NUM_ROUNDSTART_3;
- case 2: return ANNCE_NUM_ROUNDSTART_2;
- case 1: return ANNCE_NUM_ROUNDSTART_1;
+ case 9: return ANNCE_NUM_ROUNDSTART_9;
+ case 8: return ANNCE_NUM_ROUNDSTART_8;
+ case 7: return ANNCE_NUM_ROUNDSTART_7;
+ case 6: return ANNCE_NUM_ROUNDSTART_6;
+ case 5: return ANNCE_NUM_ROUNDSTART_5;
+ case 4: return ANNCE_NUM_ROUNDSTART_4;
+ case 3: return ANNCE_NUM_ROUNDSTART_3;
+ case 2: return ANNCE_NUM_ROUNDSTART_2;
+ case 1: return ANNCE_NUM_ROUNDSTART_1;
}
break;
}
switch(num)
{
case 10: return ANNCE_NUM_10;
- case 9: return ANNCE_NUM_9;
- case 8: return ANNCE_NUM_8;
- case 7: return ANNCE_NUM_7;
- case 6: return ANNCE_NUM_6;
- case 5: return ANNCE_NUM_5;
- case 4: return ANNCE_NUM_4;
- case 3: return ANNCE_NUM_3;
- case 2: return ANNCE_NUM_2;
- case 1: return ANNCE_NUM_1;
+ case 9: return ANNCE_NUM_9;
+ case 8: return ANNCE_NUM_8;
+ case 7: return ANNCE_NUM_7;
+ case 6: return ANNCE_NUM_6;
+ case 5: return ANNCE_NUM_5;
+ case 4: return ANNCE_NUM_4;
+ case 3: return ANNCE_NUM_3;
+ case 2: return ANNCE_NUM_2;
+ case 1: return ANNCE_NUM_1;
}
break;
}
return NOTIF_ABORT; // abort sending if none of these numbers were right
}
#endif
+
+#ifndef MENUQC
+float Mod_Q1BSP_SuperContentsFromNativeContents(float nativecontents)
+{
+ switch(nativecontents)
+ {
+ case CONTENT_EMPTY:
+ return 0;
+ case CONTENT_SOLID:
+ return DPCONTENTS_SOLID | DPCONTENTS_OPAQUE;
+ case CONTENT_WATER:
+ return DPCONTENTS_WATER;
+ case CONTENT_SLIME:
+ return DPCONTENTS_SLIME;
+ case CONTENT_LAVA:
+ return DPCONTENTS_LAVA | DPCONTENTS_NODROP;
+ case CONTENT_SKY:
+ return DPCONTENTS_SKY | DPCONTENTS_NODROP | DPCONTENTS_OPAQUE; // to match behaviour of Q3 maps, let sky count as opaque
+ }
+ return 0;
+}
+
+float Mod_Q1BSP_NativeContentsFromSuperContents(float supercontents)
+{
+ if(supercontents & (DPCONTENTS_SOLID | DPCONTENTS_BODY))
+ return CONTENT_SOLID;
+ if(supercontents & DPCONTENTS_SKY)
+ return CONTENT_SKY;
+ if(supercontents & DPCONTENTS_LAVA)
+ return CONTENT_LAVA;
+ if(supercontents & DPCONTENTS_SLIME)
+ return CONTENT_SLIME;
+ if(supercontents & DPCONTENTS_WATER)
+ return CONTENT_WATER;
+ return CONTENT_EMPTY;
+}
+#endif
+
+vector bezier_quadratic_getpoint(vector a, vector b, vector c, float t)
+{
+ return
+ (c - 2 * b + a) * (t * t) +
+ (b - a) * (2 * t) +
+ a;
+}
+
+vector bezier_quadratic_getderivative(vector a, vector b, vector c, float t)
+{
+ return
+ (c - 2 * b + a) * (2 * t) +
+ (b - a) * 2;
+}