Fix some misc Damage_Apply calls in really old parts of the code. Add more useful PlayerConnect/PlayerDisconnect methods into the base gamerules.
This commit is contained in:
parent
3175ffe81c
commit
220b424e33
|
@ -37,7 +37,7 @@ GamePMove_WaterMove(player target)
|
||||||
} else if (target.underwater_time < time) {
|
} else if (target.underwater_time < time) {
|
||||||
/* we've been underwater... for too long. */
|
/* we've been underwater... for too long. */
|
||||||
if (target.pain_time < time) {
|
if (target.pain_time < time) {
|
||||||
Damage_Apply(target, world, 5, DMG_DROWN, 0);
|
Damage_Apply(target, world, 5, 0, DMG_DROWN);
|
||||||
target.pain_time = time + 1;
|
target.pain_time = time + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,12 +57,12 @@ GamePMove_WaterMove(player target)
|
||||||
if (target.watertype == CONTENT_LAVA) {
|
if (target.watertype == CONTENT_LAVA) {
|
||||||
if (target.pain_time < time) {
|
if (target.pain_time < time) {
|
||||||
target.pain_time = time + 0.2;
|
target.pain_time = time + 0.2;
|
||||||
Damage_Apply(target, world, 10*target.waterlevel, DMG_BURN, 0);
|
Damage_Apply(target, world, 10*target.waterlevel, 0, DMG_BURN);
|
||||||
}
|
}
|
||||||
} else if (target.watertype == CONTENT_SLIME) {
|
} else if (target.watertype == CONTENT_SLIME) {
|
||||||
if (target.pain_time < time) {
|
if (target.pain_time < time) {
|
||||||
target.pain_time = time + 1;
|
target.pain_time = time + 1;
|
||||||
Damage_Apply(target, world, 4*target.waterlevel, DMG_ACID, 0);
|
Damage_Apply(target, world, 4*target.waterlevel, 0, DMG_ACID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -32,100 +32,93 @@ NSSurfacePropEntity::Spawned(void)
|
||||||
|
|
||||||
/* networking */
|
/* networking */
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
|
|
||||||
|
#if INDEV
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
NETFIELD_BYTE,
|
||||||
|
NETFIELD_SHORT,
|
||||||
|
NETFIELD_FLOAT,
|
||||||
|
NETFIELD_INT,
|
||||||
|
NETFIELD_COORD,
|
||||||
|
NETFIELD_ANGLE,
|
||||||
|
NETFIELD_ENTITY,
|
||||||
|
NETFIELD_STRING
|
||||||
|
} nettype_e;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
.variant field;
|
||||||
|
.variant field_net;
|
||||||
|
int changedflag;
|
||||||
|
__variant defaultvalue;
|
||||||
|
nettype_e type;
|
||||||
|
} netinfo_t;
|
||||||
|
|
||||||
|
const netinfo_t n_NSSurfacePropEntity[] =
|
||||||
|
{
|
||||||
|
{origin[0], NSEntity::origin_net[0], SRFENT_CHANGED_ORIGIN, 0, NETFIELD_COORD},
|
||||||
|
{origin[1], NSEntity::origin_net[1], SRFENT_CHANGED_ORIGIN, 0, NETFIELD_COORD},
|
||||||
|
{origin[2], NSEntity::origin_net[2], SRFENT_CHANGED_ORIGIN, 0, NETFIELD_COORD},
|
||||||
|
{angles[0], NSEntity::angles_net[0], SRFENT_CHANGED_ANGLES, 0, NETFIELD_ANGLE},
|
||||||
|
{angles[1], NSEntity::angles_net[1], SRFENT_CHANGED_ANGLES, 0, NETFIELD_ANGLE},
|
||||||
|
{angles[2], NSEntity::angles_net[2], SRFENT_CHANGED_ANGLES, 0, NETFIELD_ANGLE},
|
||||||
|
{modelindex, NSEntity::modelindex_net, SRFENT_CHANGED_MODELINDEX, 0, NETFIELD_SHORT},
|
||||||
|
{solid, NSEntity::solid_net, SRFENT_CHANGED_SOLID, 0, NETFIELD_BYTE},
|
||||||
|
{movetype, NSEntity::movetype_net, SRFENT_CHANGED_MOVETYPE, 0, NETFIELD_BYTE},
|
||||||
|
{flags, NSEntity::flags_net, SRFENT_CHANGED_FLAGS, 0, NETFIELD_FLOAT},
|
||||||
|
{size[0], NSEntity::size_net[0], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
||||||
|
{size[1], NSEntity::size_net[1], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
||||||
|
{size[2], NSEntity::size_net[2], SRFENT_CHANGED_SIZE, 0, NETFIELD_SHORT},
|
||||||
|
{frame, NSRenderableEntity::frame_net, SRFENT_CHANGED_FRAME, 0, NETFIELD_SHORT},
|
||||||
|
{skin, NSRenderableEntity::skin_net, SRFENT_CHANGED_SKIN, 0, NETFIELD_BYTE},
|
||||||
|
{effects, NSRenderableEntity::effects_net, SRFENT_CHANGED_EFFECTS, 0, NETFIELD_SHORT},
|
||||||
|
{NSRenderableEntity::m_iBody, NSRenderableEntity::m_iBody_net, SRFENT_CHANGED_BODY, 0, NETFIELD_BYTE},
|
||||||
|
{scale, NSEntity::scale_net, SRFENT_CHANGED_SCALE, 0, NETFIELD_FLOAT},
|
||||||
|
{velocity[0], NSEntity::velocity_net[0], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
||||||
|
{velocity[1], NSEntity::velocity_net[1], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
||||||
|
{velocity[2], NSEntity::velocity_net[2], SRFENT_CHANGED_VELOCITY, 0, NETFIELD_ANGLE},
|
||||||
|
{NSRenderableEntity::m_iRenderMode, NSRenderableEntity::m_iRenderMode_net, SRFENT_CHANGED_RENDERMODE, 0, NETFIELD_BYTE},
|
||||||
|
{NSRenderableEntity::m_iRenderFX, NSRenderableEntity::m_iRenderFX_net, SRFENT_CHANGED_RENDERMODE, 0, NETFIELD_BYTE},
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
NSSurfacePropEntity::EvaluateEntity(void)
|
NSSurfacePropEntity::EvaluateEntity(void)
|
||||||
{
|
{
|
||||||
if (ATTR_CHANGED(origin)) {
|
for (int i = 0; i < n_NSSurfacePropEntity.length; i++) {
|
||||||
SetSendFlags(SRFENT_CHANGED_ORIGIN);
|
if (this.(n_NSSurfacePropEntity[i].field) != this.(n_NSSurfacePropEntity[i].field_net))
|
||||||
}
|
SetSendFlags(n_NSSurfacePropEntity[i].changedflag);
|
||||||
if (ATTR_CHANGED(angles)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_ANGLES);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(modelindex)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_MODELINDEX);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(solid)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_SOLID);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(movetype)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_MOVETYPE);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(flags)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_FLAGS);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(size)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_SIZE);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(frame)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_FRAME);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(skin)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_SKIN);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(effects)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_EFFECTS);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_iBody)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_BODY);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(scale)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_SCALE);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(velocity)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_VELOCITY);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_flBoneControl1)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_flBoneControl2)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_flBoneControl3)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_flBoneControl4)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
|
|
||||||
}
|
|
||||||
if (ATTR_CHANGED(m_flBoneControl5)) {
|
|
||||||
SetSendFlags(SRFENT_CHANGED_CONTROLLER);
|
|
||||||
}
|
|
||||||
|
|
||||||
SAVE_STATE(origin);
|
this.(n_NSSurfacePropEntity[i].field_net) = this.(n_NSSurfacePropEntity[i].field);
|
||||||
SAVE_STATE(angles);
|
}
|
||||||
SAVE_STATE(modelindex);
|
}
|
||||||
SAVE_STATE(solid);
|
#endif
|
||||||
SAVE_STATE(movetype);
|
|
||||||
SAVE_STATE(flags);
|
|
||||||
SAVE_STATE(size);
|
|
||||||
SAVE_STATE(frame);
|
|
||||||
SAVE_STATE(skin);
|
|
||||||
SAVE_STATE(effects);
|
|
||||||
SAVE_STATE(m_iBody);
|
|
||||||
SAVE_STATE(scale);
|
|
||||||
SAVE_STATE(velocity);
|
|
||||||
SAVE_STATE(m_flBoneControl1);
|
|
||||||
SAVE_STATE(m_flBoneControl2);
|
|
||||||
SAVE_STATE(m_flBoneControl3);
|
|
||||||
SAVE_STATE(m_flBoneControl4);
|
|
||||||
SAVE_STATE(m_flBoneControl5);
|
|
||||||
|
|
||||||
if (ATTR_CHANGED(m_iRenderMode)) {
|
void
|
||||||
SetSendFlags(SRFENT_CHANGED_RENDERMODE);
|
NSSurfacePropEntity::EvaluateEntity(void)
|
||||||
}
|
{
|
||||||
if (ATTR_CHANGED(m_iRenderFX)) {
|
EVALUATE_FIELD(origin, SRFENT_CHANGED_ORIGIN)
|
||||||
SetSendFlags(SRFENT_CHANGED_RENDERMODE);
|
EVALUATE_FIELD(angles, SRFENT_CHANGED_ANGLES)
|
||||||
}
|
EVALUATE_FIELD(modelindex, SRFENT_CHANGED_MODELINDEX)
|
||||||
|
EVALUATE_FIELD(solid, SRFENT_CHANGED_SOLID)
|
||||||
if (ATTR_CHANGED(m_vecRenderColor)) {
|
EVALUATE_FIELD(movetype, SRFENT_CHANGED_FLAGS)
|
||||||
SetSendFlags(SRFENT_CHANGED_RENDERCOLOR);
|
EVALUATE_FIELD(flags, SRFENT_CHANGED_FLAGS)
|
||||||
}
|
EVALUATE_FIELD(size, SRFENT_CHANGED_SIZE)
|
||||||
if (ATTR_CHANGED(m_flRenderAmt)) {
|
EVALUATE_FIELD(frame, SRFENT_CHANGED_FRAME)
|
||||||
SetSendFlags(SRFENT_CHANGED_RENDERAMT);
|
EVALUATE_FIELD(skin, SRFENT_CHANGED_SKIN)
|
||||||
}
|
EVALUATE_FIELD(effects, SRFENT_CHANGED_EFFECTS)
|
||||||
SAVE_STATE(m_iRenderMode);
|
EVALUATE_FIELD(m_iBody, SRFENT_CHANGED_BODY)
|
||||||
SAVE_STATE(m_iRenderFX);
|
EVALUATE_FIELD(scale, SRFENT_CHANGED_SCALE)
|
||||||
SAVE_STATE(m_vecRenderColor);
|
EVALUATE_FIELD(velocity, SRFENT_CHANGED_VELOCITY)
|
||||||
SAVE_STATE(m_flRenderAmt);
|
EVALUATE_FIELD(m_iRenderMode, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
EVALUATE_FIELD(m_iRenderFX, SRFENT_CHANGED_RENDERMODE)
|
||||||
|
EVALUATE_FIELD(m_vecRenderColor, SRFENT_CHANGED_RENDERCOLOR)
|
||||||
|
EVALUATE_FIELD(m_flRenderAmt, SRFENT_CHANGED_RENDERAMT)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl1, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl2, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl3, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl4, SRFENT_CHANGED_CONTROLLER)
|
||||||
|
EVALUATE_FIELD(m_flBoneControl5, SRFENT_CHANGED_CONTROLLER)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure StartFrame calls this */
|
/* Make sure StartFrame calls this */
|
||||||
|
|
|
@ -28,6 +28,20 @@
|
||||||
#include "route.h"
|
#include "route.h"
|
||||||
#include "way.h"
|
#include "way.h"
|
||||||
|
|
||||||
|
/* helper macros */
|
||||||
|
#define EVALUATE_FIELD(fieldname, changedflag) {\
|
||||||
|
if (ATTR_CHANGED(fieldname)) { \
|
||||||
|
SetSendFlags(changedflag); \
|
||||||
|
} \
|
||||||
|
SAVE_STATE(fieldname); \
|
||||||
|
}
|
||||||
|
#define EVALUATE_VECTOR(fieldname, id, changedflag) {\
|
||||||
|
if (VEC_CHANGED(fieldname, id)) { \
|
||||||
|
SetSendFlags(changedflag); \
|
||||||
|
} \
|
||||||
|
SAVE_STATE(fieldname);\
|
||||||
|
}
|
||||||
|
|
||||||
#define AREAPORTAL_CLOSED 0
|
#define AREAPORTAL_CLOSED 0
|
||||||
#define AREAPORTAL_OPEN 1
|
#define AREAPORTAL_OPEN 1
|
||||||
|
|
||||||
|
|
|
@ -39,17 +39,26 @@ CGameRules::ConsoleCommand(NSClientPlayer pl, string cmd)
|
||||||
void
|
void
|
||||||
CGameRules::PlayerConnect(NSClientPlayer pl)
|
CGameRules::PlayerConnect(NSClientPlayer pl)
|
||||||
{
|
{
|
||||||
//print("ClientConnect!\n");
|
if (Plugin_PlayerConnect(pl) == FALSE)
|
||||||
|
bprint(PRINT_HIGH, sprintf("%s connected\n", pl.netname));
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
CGameRules::PlayerDisconnect(NSClientPlayer pl)
|
CGameRules::PlayerDisconnect(NSClientPlayer pl)
|
||||||
{
|
{
|
||||||
//print("ClientDisconnect!\n");
|
bprint(PRINT_HIGH, sprintf("%s disconnected\n", pl.netname));
|
||||||
|
|
||||||
|
/* make the client 'unusable' */
|
||||||
|
pl.SetSolid(SOLID_NOT);
|
||||||
|
pl.SetMovetype(MOVETYPE_NONE);
|
||||||
|
pl.SetModelindex(0);
|
||||||
|
pl.SetHealth(0);
|
||||||
|
pl.SetTakedamage(DAMAGE_NO);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CGameRules::PlayerKill(NSClientPlayer pl)
|
CGameRules::PlayerKill(NSClientPlayer pl)
|
||||||
{
|
{
|
||||||
//print("PlayerKill!\n");
|
Damage_Apply(pl, pl, pl.health, 0, DMG_SKIP_ARMOR);
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
CGameRules::PlayerDeath(NSClientPlayer pl)
|
CGameRules::PlayerDeath(NSClientPlayer pl)
|
||||||
|
|
|
@ -169,7 +169,10 @@ NSTraceAttack::Fire(void)
|
||||||
m_iMultiValue = 0;
|
m_iMultiValue = 0;
|
||||||
|
|
||||||
while (m_iShots > 0) {
|
while (m_iShots > 0) {
|
||||||
vecDir = aim(m_eOwner, 100000);
|
if (m_eOwner.flags & FL_CLIENT)
|
||||||
|
vecDir = aim(m_eOwner, 100000);
|
||||||
|
else
|
||||||
|
vecDir = m_eOwner.v_angle;
|
||||||
|
|
||||||
#ifndef BULLETPATTERNS
|
#ifndef BULLETPATTERNS
|
||||||
vecDir += random(-1,1) * m_vecSpread[0] * v_right;
|
vecDir += random(-1,1) * m_vecSpread[0] * v_right;
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#define ATTR_CHANGED(x) (x ##_net != x)
|
#define ATTR_CHANGED(x) (x ##_net != x)
|
||||||
#define VEC_CHANGED(x,y) (x ##_net[y] != x[y])
|
#define VEC_CHANGED(x,y) (x ##_net[y] != x[y])
|
||||||
|
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@ NSClientPlayer::Physics_WaterMove(void)
|
||||||
} else if (underwater_time < time) {
|
} else if (underwater_time < time) {
|
||||||
/* we've been underwater... for too long. */
|
/* we've been underwater... for too long. */
|
||||||
if (pain_time < time) {
|
if (pain_time < time) {
|
||||||
Damage_Apply(this, world, 5, DMG_DROWN, 0);
|
Damage_Apply(this, world, 5, 0, DMG_DROWN);
|
||||||
pain_time = time + 1;
|
pain_time = time + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,12 +209,12 @@ NSClientPlayer::Physics_WaterMove(void)
|
||||||
if (watertype == CONTENT_LAVA) {
|
if (watertype == CONTENT_LAVA) {
|
||||||
if (pain_time < time) {
|
if (pain_time < time) {
|
||||||
pain_time = time + 0.2;
|
pain_time = time + 0.2;
|
||||||
Damage_Apply(this, world, 10*waterlevel, DMG_BURN, 0);
|
Damage_Apply(this, world, 10 * waterlevel, 0, DMG_BURN);
|
||||||
}
|
}
|
||||||
} else if (watertype == CONTENT_SLIME) {
|
} else if (watertype == CONTENT_SLIME) {
|
||||||
if (pain_time < time) {
|
if (pain_time < time) {
|
||||||
pain_time = time + 1;
|
pain_time = time + 1;
|
||||||
Damage_Apply(this, world, 4*waterlevel, DMG_ACID, 0);
|
Damage_Apply(this, world, 4 * waterlevel, 0, DMG_ACID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -464,7 +464,7 @@ void
|
||||||
SurfData_Impact(entity e, int fl, vector org, vector ang)
|
SurfData_Impact(entity e, int fl, vector org, vector ang)
|
||||||
{
|
{
|
||||||
static void SurfData_Impact_SurfaceParm(entity e, int fl, vector org, vector ang) {
|
static void SurfData_Impact_SurfaceParm(entity e, int fl, vector org, vector ang) {
|
||||||
#if 1
|
#ifndef NEW_MATERIALS
|
||||||
switch (serverkeyfloat("*bspversion")) {
|
switch (serverkeyfloat("*bspversion")) {
|
||||||
case BSPVER_HL:
|
case BSPVER_HL:
|
||||||
float surf;
|
float surf;
|
||||||
|
|
Loading…
Reference in New Issue