#include "csqcprojectile.qh"
-#include <common/t_items.qh>
-
-#include "../command/common.qh"
-
#include <common/constants.qh>
#include <common/net_linked.qh>
+#include <common/stats.qh>
+#include <common/weapons/_all.qh>
#include <common/weapons/_all.qh>
+#include <server/command/common.qh>
+#include <server/items/items.qh>
.float csqcprojectile_type;
if(sf & 1)
{
- WriteCoord(MSG_ENTITY, this.origin.x);
- WriteCoord(MSG_ENTITY, this.origin.y);
- WriteCoord(MSG_ENTITY, this.origin.z);
+ WriteVector(MSG_ENTITY, this.origin);
if(sf & 0x80)
{
- WriteCoord(MSG_ENTITY, this.velocity.x);
- WriteCoord(MSG_ENTITY, this.velocity.y);
- WriteCoord(MSG_ENTITY, this.velocity.z);
+ WriteVector(MSG_ENTITY, this.velocity);
if(sf & 0x10)
WriteCoord(MSG_ENTITY, this.gravity);
}
WriteByte(MSG_ENTITY, fr);
}
- WriteByte(MSG_ENTITY, this.realowner.team);
+ if(teamplay)
+ WriteByte(MSG_ENTITY, this.realowner.team);
+ else
+ WriteByte(MSG_ENTITY, this.realowner.clientcolors); // NOTE: doesn't work on non-clients
}
if(sf & 2)
{
// send new origin data
e.SendFlags |= 0x01;
+ // send full data as the projectile may need resetting
+ // this is a workaround for client-side projectiles erroneously calling their SUB_Stop touch function occasionally
+ // when passing through a warpzone
+ e.SendFlags |= 2;
// mark as teleported
e.SendFlags |= 0x08;
}