diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj
index 56868f07..87fbbaa4 100755
--- a/Source/FreeCS-CE.prj
+++ b/Source/FreeCS-CE.prj
@@ -1,5 +1,5 @@
-
+
@@ -25,7 +25,7 @@
-
+
@@ -60,7 +60,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
@@ -113,11 +113,37 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Globals.h b/Source/Globals.h
index bceb11ce..81c3e691 100755
--- a/Source/Globals.h
+++ b/Source/Globals.h
@@ -286,6 +286,7 @@ enum {
#define FL_CROUCHING 16384
#define FL_SEMI_TOGGLED 32768
#define FL_FROZEN 131072
+#define FL_REMOVEME 262144
float clamp(float d, float imin, float imax) {
float t;
diff --git a/Source/Menu/Defs.h b/Source/Menu/Defs.h
index c1af117c..3d7d0b67 100755
--- a/Source/Menu/Defs.h
+++ b/Source/Menu/Defs.h
@@ -174,8 +174,4 @@ typedef struct {
} fcsMenu;
void Menu_SetClipArea( vector vPosition, vector vRegion );
-void Menu_ResetClipArea( void );
-
-float Math_Lerp( float fA, float fB, float fPercent ) {
- return ( fA * ( 1 - fPercent ) ) + ( fB * fPercent );
-}
\ No newline at end of file
+void Menu_ResetClipArea( void );
\ No newline at end of file
diff --git a/Source/Server/FuncDoor.c b/Source/Server/FuncDoor.c
index e76a1f01..288152d8 100755
--- a/Source/Server/FuncDoor.c
+++ b/Source/Server/FuncDoor.c
@@ -206,7 +206,7 @@ void FuncDoor_Touch( void ) {
return;
}
- if ( other.classname == "player" ) {
+ if ( other.movetype == MOVETYPE_WALK ) {
FuncDoor_Trigger();
}
}
@@ -237,48 +237,48 @@ func_door
Spawn function of a moving door entity
====================
*/
-
void func_door( void ) {
+ static void func_door_respawn( void ) {
+ self.solid = SOLID_BSP;
+ self.movetype = MOVETYPE_PUSH;
+ setorigin( self, self.origin );
+ setmodel( self, self.model );
+
+ self.blocked = FuncDoor_Blocked;
+ self.vUse = FuncDoor_Trigger;
+
+ if ( self.wait == -1 ) {
+ self.spawnflags = self.spawnflags | SF_MOV_TOGGLE;
+ }
+
+ if ( !self.speed ) {
+ self.speed = 100;
+ }
+
+ if ( !self.dmg ) {
+ self.dmg = 2;
+ }
+
+ if ( self.spawnflags & SF_MOV_USE ) {
+ self.iUsable = TRUE;
+ } else {
+ self.touch = FuncDoor_Touch;
+ }
+
+ self.state = STATE_LOWERED;
+ self.pos1 = self.origin;
+ self.pos2 = ( self.pos1 + self.movedir * ( fabs( self.movedir * self.size ) - self.lip ) );
+
+ if ( self.spawnflags & SF_MOV_OPEN ) {
+ setorigin( self, self.pos2 );
+ self.pos2 = self.pos1;
+ self.pos1 = self.origin;
+ }
+ }
+
FuncDoor_PrecacheSounds();
Entities_SetMovementDirection();
-
- self.solid = SOLID_BSP;
-
- self.movetype = MOVETYPE_PUSH;
- setorigin( self, self.origin );
- setmodel( self, self.model );
-
- self.blocked = FuncDoor_Blocked;
- self.vUse = FuncDoor_Trigger;
-
- if ( self.wait == -1 ) {
- self.spawnflags = self.spawnflags | SF_MOV_TOGGLE;
- }
-
- if ( !self.speed ) {
- self.speed = 100;
- }
-
- if ( !self.dmg ) {
- self.dmg = 2;
- }
-
- if ( self.spawnflags & SF_MOV_USE ) {
- self.iUsable = TRUE;
- } else {
- self.touch = FuncDoor_Touch;
- }
-
-
- self.pos1 = self.origin;
- self.pos2 = ( self.pos1 + self.movedir * ( fabs( self.movedir * self.size ) - self.lip ) );
-
- if ( self.spawnflags & SF_MOV_OPEN ) {
- setorigin( self, self.pos2 );
- self.pos2 = self.pos1;
- self.pos1 = self.origin;
- }
-
- self.state = STATE_LOWERED;
+ func_door_respawn();
+ Entities_InitRespawnable( func_door_respawn );
Entities_RenderSetup();
}
diff --git a/Source/Server/FuncDoorRotating.c b/Source/Server/FuncDoorRotating.c
index 48ccfa88..20a45f1d 100755
--- a/Source/Server/FuncDoorRotating.c
+++ b/Source/Server/FuncDoorRotating.c
@@ -177,7 +177,7 @@ void FuncDoorRotate_Touch( void ) {
return;
}
- if ( other.classname == "player" ) {
+ if ( other.movetype == MOVETYPE_WALK ) {
eActivator = other;
FuncDoorRotate_Trigger();
}
@@ -211,57 +211,59 @@ BrushRotate
=================
*/
void func_door_rotating( void ) {
+ static void func_door_rotating_respawn( void ) {
+ self.solid = SOLID_BSP;
+ self.movetype = MOVETYPE_PUSH;
+ setorigin( self, self.origin );
+ setmodel( self, self.model );
+
+ self.blocked = FuncDoorRotate_Blocked;
+ self.vUse = FuncDoorRotate_Trigger;
+
+ if ( self.spawnflags & SF_ROT_USE ) {
+ self.iUsable = TRUE;
+ } else {
+ self.touch = FuncDoorRotate_Touch;
+ }
+
+ if ( !self.speed ) {
+ self.speed = 100;
+ }
+
+ if ( self.wait == 0 ) {
+ self.wait = 4;
+ }
+
+ self.state = STATE_LOWERED;
+ self.pos1 = self.angles;
+
+ // Only do Y
+ if ( self.spawnflags & SF_ROT_XAXIS ) {
+ self.pos2_y = self.pos1_y + self.distance;
+
+ }
+
+ // Only do X
+ if ( self.spawnflags & SF_ROT_YAXIS ) {
+ self.pos2_x = self.pos1_x + self.distance;
+
+ }
+
+ // only do Y by default
+ if ( !( self.spawnflags & SF_ROT_YAXIS ) && !( self.spawnflags & SF_ROT_XAXIS ) ) {
+ self.pos2_y = self.pos1_y + self.distance;
+ }
+
+ if ( self.spawnflags & SF_ROT_OPEN ) {
+ vector vTemp = self.pos2;
+ self.pos2 = self.pos1;
+ self.pos1 = vTemp;
+ self.angles = self.pos1;
+ }
+ }
FuncDoor_PrecacheSounds();
Entities_SetMovementDirection();
- self.solid = SOLID_BSP;
- self.movetype = MOVETYPE_PUSH;
- setorigin( self, self.origin );
- setmodel( self, self.model );
-
- self.blocked = FuncDoorRotate_Blocked;
- self.vUse = FuncDoorRotate_Trigger;
-
- if ( self.spawnflags & SF_ROT_USE ) {
- self.iUsable = TRUE;
- } else {
- self.touch = FuncDoorRotate_Touch;
- }
-
- if ( !self.speed ) {
- self.speed = 100;
- }
-
- if ( self.wait == 0 ) {
- self.wait = 4;
- }
-
- self.pos1 = self.angles;
-
- // Only do Y
- if ( self.spawnflags & SF_ROT_XAXIS ) {
- self.pos2_y = self.pos1_y + self.distance;
-
- }
-
- // Only do X
- if ( self.spawnflags & SF_ROT_YAXIS ) {
- self.pos2_x = self.pos1_x + self.distance;
-
- }
-
- // only do Y by default
- if ( !( self.spawnflags & SF_ROT_YAXIS ) && !( self.spawnflags & SF_ROT_XAXIS ) ) {
- self.pos2_y = self.pos1_y + self.distance;
- }
-
- if ( self.spawnflags & SF_ROT_OPEN ) {
- vector vTemp = self.pos2;
- self.pos2 = self.pos1;
- self.pos1 = vTemp;
- self.angles = self.pos1;
- }
-
- self.state = STATE_LOWERED;
-
+ func_door_rotating_respawn();
+ Entities_InitRespawnable( func_door_rotating_respawn );
Entities_RenderSetup();
}
diff --git a/Source/Server/TraceAttack.c b/Source/Server/TraceAttack.c
index d6feba63..4b51f44f 100755
--- a/Source/Server/TraceAttack.c
+++ b/Source/Server/TraceAttack.c
@@ -36,7 +36,7 @@ void TraceAttack_FireSingle( vector vPos, vector vAngle ) {
TraceAttack_FireSingle( vPos, vAngle );
iTotalPenetrations++;
}
- traceline( vPos, vPos + ( vAngle * 2048 ), MOVE_HITMODEL, self);
+ traceline( vPos, vPos + ( vAngle * 8192 ), MOVE_HITMODEL, self);
if (trace_fraction != 1.0) {
if ( trace_ent.takedamage == DAMAGE_YES ) {
diff --git a/Source/Server/Triggers.c b/Source/Server/Triggers.c
index 6b507448..b4a70991 100755
--- a/Source/Server/Triggers.c
+++ b/Source/Server/Triggers.c
@@ -165,21 +165,48 @@ void trigger_hurt( void ) {
self.fAttackFinished = self.ltime + 0.5;
}
+ static void trigger_hurt_respawn( void ) {
+ self.angles = '0 0 0';
+ self.solid = SOLID_TRIGGER;
- self.angles = '0 0 0';
- self.solid = SOLID_TRIGGER;
-
- setmodel( self, self.model );
- self.model = 0;
-
- if ( self.spawnflags & SF_HURT_OFF ) {
- self.solid = SOLID_NOT;
+ setmodel( self, self.model );
+ self.model = 0;
+
+ if ( self.spawnflags & SF_HURT_OFF ) {
+ self.solid = SOLID_NOT;
+ }
+
+ self.vUse = trigger_hurt_use;
+ self.touch = trigger_hurt_touch;
}
- self.vUse = trigger_hurt_use;
- self.touch = trigger_hurt_touch;
+ trigger_hurt_respawn();
+ Entities_InitRespawnable( trigger_hurt_respawn );
}
+/*
+=================
+trigger_relay
+
+This entity acts as a relay between an event and its target.
+Its main advantage is that it can send a specific trigger state
+to its target (only turn it on, or only turn it off, as opposed
+to the toggling experienced with typical triggering).
+
+Attributes:
+Name (targetname)
+Target (target)
+Delay before trigger (delay)
+Trigger State (triggerstate) - Off (0), On (1), or Toggle (2)
+
+Flags:
+Remove On fire (1)
+=================
+*/
+void trigger_relay( void ) {
+
+}
+
/*
=================
multi_manager
diff --git a/Source/Shared/WeaponBase.c b/Source/Shared/WeaponBase.c
index bb3bd3ae..dfb17b26 100755
--- a/Source/Shared/WeaponBase.c
+++ b/Source/Shared/WeaponBase.c
@@ -91,7 +91,16 @@ void OpenCSGunBase_Draw( void ) {
}
void OpenCSGunBase_AccuracyCalc( void ) {
- self.fAccuracy = ( self.iShotMultiplier / wptTable[ self.weapon ].fAccuracyDivisor );
+
+ if ( wptTable[ self.weapon ].fAccuracyDivisor == -1 ) {
+ if ( self.viewzoom < 1.0f ) {
+ self.fAccuracy = 0.0f;
+ } else {
+ self.fAccuracy = 0.05f;
+ }
+ } else {
+ self.fAccuracy = ( self.iShotMultiplier / wptTable[ self.weapon ].fAccuracyDivisor );
+ }
}
// Returns whether or not to play an animation
diff --git a/freecs/default.cfg b/freecs/default.cfg
index ba90a01a..299b0a26 100755
--- a/freecs/default.cfg
+++ b/freecs/default.cfg
@@ -32,7 +32,6 @@ bind SHIFT +speed
bind b buy
bind m chooseteam
bind ESC togglemenu
-bind v noclip
// Movement Variables
seta sv_maxspeed 240
diff --git a/freecs/menu.dat b/freecs/menu.dat
index 9afa65d0..7c448289 100755
Binary files a/freecs/menu.dat and b/freecs/menu.dat differ
diff --git a/freecs/progs.dat b/freecs/progs.dat
index fe081e94..ea56b78a 100644
Binary files a/freecs/progs.dat and b/freecs/progs.dat differ