mirror of
https://github.com/blendogames/thirtyflightsofloving.git
synced 2025-02-21 11:10:58 +00:00
Added missing settable spawn health for info_player_start
Added support for attenuation = -2 player only for target_speaker Added header file for Coconut Monkey vulture monster
This commit is contained in:
parent
f1b6052f15
commit
0a88219a83
8 changed files with 286 additions and 57 deletions
|
@ -60,9 +60,9 @@ void AI_SetSightClient (void)
|
|||
// Do NOT do this for players using a
|
||||
// target_monitor, though... in this case
|
||||
// both player and fake player are ignored.
|
||||
if(ent->client && ent->client->camplayer)
|
||||
if (ent->client && ent->client->camplayer)
|
||||
{
|
||||
if(ent->client->spycam)
|
||||
if (ent->client->spycam)
|
||||
{
|
||||
level.sight_client = ent->client->camplayer;
|
||||
return;
|
||||
|
|
|
@ -100,9 +100,9 @@ void camera_on (edict_t *ent)
|
|||
// "viewer" can control camera aim (2nd player to come along and use
|
||||
// camera cannot)
|
||||
camera = ent->client->spycam;
|
||||
if(camera->monsterinfo.aiflags & AI_ACTOR)
|
||||
if (camera->monsterinfo.aiflags & AI_ACTOR)
|
||||
camera->flags |= FL_ROBOT;
|
||||
if(!camera->viewer)
|
||||
if (!camera->viewer)
|
||||
camera->viewer = ent;
|
||||
|
||||
// save current viewangles and restore them with camera_off
|
||||
|
@ -162,16 +162,17 @@ void camera_on (edict_t *ent)
|
|||
|
||||
// check to see if we're the enemy of any monster. If so, make the
|
||||
// faker the enemy
|
||||
for(i=maxclients->value+1, monster=g_edicts+i; i<globals.num_edicts; i++, monster++) {
|
||||
if(!monster->inuse) continue;
|
||||
if(!(monster->svflags & SVF_MONSTER)) continue;
|
||||
if(monster->enemy == ent) {
|
||||
for (i=maxclients->value+1, monster=g_edicts+i; i<globals.num_edicts; i++, monster++)
|
||||
{
|
||||
if (!monster->inuse) continue;
|
||||
if (!(monster->svflags & SVF_MONSTER)) continue;
|
||||
if (monster->enemy == ent) {
|
||||
monster->enemy = faker;
|
||||
FoundTarget(monster);
|
||||
}
|
||||
}
|
||||
|
||||
if(ent->client->spycam->viewmessage)
|
||||
if (ent->client->spycam->viewmessage)
|
||||
gi.centerprintf(ent,ent->client->spycam->viewmessage);
|
||||
}
|
||||
|
||||
|
|
|
@ -3063,8 +3063,8 @@ void train_move_prox (edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
//Knightmare- this function moves the movewith chilren
|
||||
//Most of this code is by David Hyde, he got tired of just helping me piecemeal...
|
||||
// Knightmare- this function moves the movewith children
|
||||
// Most of this code is by David Hyde, he got tired of just helping me piecemeal...
|
||||
void turret_stand (edict_t *self);
|
||||
void train_move_children (edict_t *self)
|
||||
{
|
||||
|
@ -3080,30 +3080,30 @@ void train_move_children (edict_t *self)
|
|||
if (!self->targetname)
|
||||
return;
|
||||
|
||||
ent = g_edicts+1; // skip the worldspawn
|
||||
ent = g_edicts+1; // Skip the worldspawn
|
||||
for (i = 1; i < globals.num_edicts; i++, ent++)
|
||||
{
|
||||
if (!ent->classname)
|
||||
continue;
|
||||
if (!ent->movewith)
|
||||
continue;
|
||||
if(!ent->inuse)
|
||||
if (!ent->inuse)
|
||||
return;
|
||||
if (!strcmp(ent->movewith, self->targetname))
|
||||
{
|
||||
ent->movewith_ent = self;
|
||||
//backup and set movetype to push
|
||||
if (ent->movetype && (ent->movetype != MOVETYPE_PUSH)) //backup only non-push movetypes
|
||||
// Backup and set movetype to push
|
||||
if (ent->movetype && (ent->movetype != MOVETYPE_PUSH)) // backup only non-push movetypes
|
||||
ent->oldmovetype = ent->movetype;
|
||||
ent->movetype = MOVETYPE_PUSH;
|
||||
|
||||
//set rotational offset
|
||||
// Set rotational offset
|
||||
if (!ent->movewith_set)
|
||||
{
|
||||
VectorCopy(ent->mins, ent->org_mins);
|
||||
VectorCopy(ent->maxs, ent->org_maxs);
|
||||
VectorSubtract (ent->s.origin, self->s.origin, ent->movewith_offset);
|
||||
//Remeber child's and parent's angles when child was attached
|
||||
// Remeber child's and parent's angles when child was attached
|
||||
VectorCopy(self->s.angles, ent->parent_attach_angles);
|
||||
VectorCopy(ent->s.angles, ent->child_attach_angles);
|
||||
|
||||
|
@ -3113,32 +3113,33 @@ void train_move_children (edict_t *self)
|
|||
|
||||
ent->movewith_set = 1;
|
||||
}
|
||||
//Get change in parent's angles from when child was attached, this tells us how far we need to rotate
|
||||
// Get change in parent's angles from when child was attached, this tells us how far we need to rotate
|
||||
VectorSubtract(self->s.angles, ent->parent_attach_angles, parent_angle_change);
|
||||
AngleVectors(parent_angle_change, forward, right, up);
|
||||
VectorNegate(right, right);
|
||||
|
||||
//if(!strncmp(ent->classname,"monster_",8))
|
||||
// if (!strncmp(ent->classname,"monster_",8))
|
||||
if(ent->svflags & SVF_MONSTER)
|
||||
is_monster = true;
|
||||
else
|
||||
is_monster = false;
|
||||
|
||||
/*My old rotational movement code, the children always hanged off a bit...
|
||||
//get length of offset
|
||||
/* My old rotational movement code, the children always hanged off a bit...
|
||||
// Get length of offset
|
||||
offset_length = VectorLength (ent->movewith_offset);
|
||||
//get angular vector
|
||||
// Get angular vector
|
||||
vectoangles (ent->movewith_offset, dir);
|
||||
//get rotation for this server frame
|
||||
// Get rotation for this server frame
|
||||
VectorScale (self->avelocity, FRAMETIME, amove);
|
||||
//add rotation
|
||||
// Add rotation
|
||||
VectorAdd (dir, amove, dir);
|
||||
//reduce to angular vector
|
||||
// Reduce to angular vector
|
||||
AngleVectors (dir, dir, NULL, NULL);
|
||||
//restore to original length
|
||||
// Restore to original length
|
||||
VectorScale (dir, offset_length, ent->movewith_offset);
|
||||
//add to origin of parent
|
||||
VectorAdd (self->s.origin, ent->movewith_offset, ent->s.origin);*/
|
||||
// Add to origin of parent
|
||||
VectorAdd (self->s.origin, ent->movewith_offset, ent->s.origin);
|
||||
*/
|
||||
|
||||
// For all but buttons, doors, and plats, move origin and match velocities
|
||||
if( strcmp(ent->classname,"func_door") && strcmp(ent->classname,"func_button")
|
||||
|
@ -3155,23 +3156,23 @@ void train_move_children (edict_t *self)
|
|||
|
||||
// If parent is spinning, add appropriate velocities
|
||||
VectorSubtract(ent->s.origin, self->s.origin, offset);
|
||||
if(self->avelocity[PITCH] != 0)
|
||||
if (self->avelocity[PITCH] != 0)
|
||||
{
|
||||
ent->velocity[2] -= offset[0] * self->avelocity[PITCH] * M_PI / 180;
|
||||
ent->velocity[0] += offset[2] * self->avelocity[PITCH] * M_PI / 180;
|
||||
}
|
||||
if(self->avelocity[YAW] != 0)
|
||||
if (self->avelocity[YAW] != 0)
|
||||
{
|
||||
ent->velocity[0] -= offset[1] * self->avelocity[YAW] * M_PI / 180.;
|
||||
ent->velocity[1] += offset[0] * self->avelocity[YAW] * M_PI / 180.;
|
||||
}
|
||||
if(self->avelocity[ROLL] != 0)
|
||||
if (self->avelocity[ROLL] != 0)
|
||||
{
|
||||
ent->velocity[1] -= offset[2] * self->avelocity[ROLL] * M_PI / 180;
|
||||
ent->velocity[2] += offset[1] * self->avelocity[ROLL] * M_PI / 180;
|
||||
}
|
||||
VectorScale (self->avelocity, FRAMETIME, amove);
|
||||
//match angular velocities
|
||||
// Match angular velocities
|
||||
if (self->turn_rider)
|
||||
{
|
||||
if (!strcmp(ent->classname,"func_rotating"))
|
||||
|
@ -3182,7 +3183,8 @@ void train_move_children (edict_t *self)
|
|||
// ent->s.angles[1] += amove[1];
|
||||
ent->s.angles[1] += (ent->child_attach_angles[1] + parent_angle_change[1]);
|
||||
else if(ent->movedir[2] > 0)
|
||||
ent->s.angles[1] = self->s.angles[1];*/
|
||||
ent->s.angles[1] = self->s.angles[1];
|
||||
*/
|
||||
float cr, sr;
|
||||
float cy, sy;
|
||||
|
||||
|
@ -3190,17 +3192,17 @@ void train_move_children (edict_t *self)
|
|||
sy = sin((ent->s.angles[1]-parent_angle_change[1])*M_PI/180);
|
||||
cr = cos((ent->s.angles[2]-parent_angle_change[2])*M_PI/180);
|
||||
sr = sin((ent->s.angles[2]-parent_angle_change[2])*M_PI/180);
|
||||
if(ent->movedir[0] > 0)
|
||||
if (ent->movedir[0] > 0)
|
||||
{
|
||||
ent->s.angles[1] = parent_angle_change[1];
|
||||
}
|
||||
else if(ent->movedir[1] > 0)
|
||||
else if (ent->movedir[1] > 0)
|
||||
{
|
||||
ent->s.angles[1] += amove[1];
|
||||
ent->s.angles[2] = parent_angle_change[2]*cy;
|
||||
ent->s.angles[0] = -parent_angle_change[2]*sy;
|
||||
}
|
||||
else if(ent->movedir[2] > 0)
|
||||
else if (ent->movedir[2] > 0)
|
||||
{
|
||||
ent->s.angles[1] = parent_angle_change[0]*-sy;
|
||||
}
|
||||
|
@ -3209,9 +3211,9 @@ void train_move_children (edict_t *self)
|
|||
else if (!is_monster)
|
||||
{ // Not a monster/actor. We want monsters/actors to be able to turn on
|
||||
// their own.
|
||||
if(!ent->do_not_rotate)
|
||||
if (!ent->do_not_rotate)
|
||||
{
|
||||
if(!strcmp(ent->classname,"turret_breach") || !strcmp(ent->classname,"turret_base"))
|
||||
if (!strcmp(ent->classname,"turret_breach") || !strcmp(ent->classname,"turret_base"))
|
||||
VectorCopy(self->avelocity, ent->avelocity);
|
||||
else if (!strcmp(ent->classname,"func_door_rotating"))
|
||||
{
|
||||
|
@ -3230,13 +3232,13 @@ void train_move_children (edict_t *self)
|
|||
}
|
||||
//don't move child's angles if not moving self
|
||||
else if (ent->solid == SOLID_BSP) //&& (VectorLength(self->velocity) || VectorLength(self->avelocity)) )
|
||||
{ // brush models always start out with angles=0,0,0 (after G_SetMoveDir).
|
||||
{ // Brush models always start out with angles=0,0,0 (after G_SetMoveDir).
|
||||
// Use more accuracy here.
|
||||
VectorCopy(self->avelocity, ent->avelocity);
|
||||
// VectorCopy(self->s.angles, ent->s.angles);
|
||||
VectorAdd(ent->child_attach_angles, parent_angle_change, ent->s.angles);
|
||||
}
|
||||
else if(ent->movetype == MOVETYPE_NONE)
|
||||
else if (ent->movetype == MOVETYPE_NONE)
|
||||
{
|
||||
VectorCopy(self->avelocity, ent->avelocity);
|
||||
// VectorCopy(self->s.angles, ent->s.angles);
|
||||
|
@ -3270,8 +3272,8 @@ void train_move_children (edict_t *self)
|
|||
if (ent->s.frame < 2)
|
||||
VectorAdd(ent->child_attach_angles, parent_angle_change, ent->s.angles);
|
||||
// update aiming
|
||||
//else if (!strcmp(self->classname, "func_rotating") || !strcmp(self->classname, "func_rotating_dh"))
|
||||
// TurretAim (ent);
|
||||
// else if (!strcmp(self->classname, "func_rotating") || !strcmp(self->classname, "func_rotating_dh"))
|
||||
// TurretAim (ent);
|
||||
}
|
||||
// otherwise don't re-angle turrets
|
||||
//else if (strcmp(ent->classname,"monster_turret"))
|
||||
|
@ -3288,7 +3290,7 @@ void train_move_children (edict_t *self)
|
|||
{
|
||||
VectorAdd(ent->s.angles, ent->org_angles, angles);
|
||||
G_SetMovedir (angles, ent->movedir);
|
||||
//Knightmare- these entities need special calculations
|
||||
// Knightmare- these entities need special calculations
|
||||
if (!strcmp(ent->classname,"monster_turret") || !strcmp(ent->classname,"turret_wall"))
|
||||
{
|
||||
vec3_t eforward, tangles;
|
||||
|
@ -3326,7 +3328,7 @@ void train_move_children (edict_t *self)
|
|||
VectorScale(eforward, ent->length, eforward);
|
||||
else
|
||||
VectorScale(eforward, ent->length * -1 , eforward);
|
||||
if (ent->spawnflags & 32) //SEC_MOVE_RIGHT
|
||||
if (ent->spawnflags & 32) // SEC_MOVE_RIGHT
|
||||
VectorScale(eright, ent->width, eright);
|
||||
else
|
||||
VectorScale(eright, ent->width * -1, eright);
|
||||
|
@ -3438,7 +3440,7 @@ void train_move_children (edict_t *self)
|
|||
FMOD_UpdateSpeakerPos(ent);
|
||||
|
||||
// Correct func_door_rotating start/end positions
|
||||
/* if (!strcmp(ent->classname,"func_door_rotating") && (!ent->do_not_rotate))
|
||||
/* if (!strcmp(ent->classname,"func_door_rotating") && (!ent->do_not_rotate))
|
||||
{
|
||||
VectorCopy (ent->s.angles, ent->pos1);
|
||||
VectorMA (ent->s.angles, ent->moveinfo.distance, ent->movedir, ent->pos2);
|
||||
|
|
|
@ -225,10 +225,10 @@ movefield:
|
|||
self->velocity[2] += offset[1] * host->avelocity[ROLL] * M_PI / 180;
|
||||
}
|
||||
VectorScale (host->avelocity, FRAMETIME, amove);
|
||||
VectorAdd(self->child_attach_angles, host_angle_change, self->s.angles); //add rotation to angles
|
||||
VectorAdd(self->child_attach_angles, host_angle_change, self->s.angles); // add rotation to angles
|
||||
// VectorAdd(self->s.angles, amove, self->s.angles); //add rotation to angles
|
||||
|
||||
if(amove[YAW]) // Cross fingers here... move bounding box
|
||||
if (amove[YAW]) // Cross fingers here... move bounding box
|
||||
{
|
||||
float ca, sa, yaw;
|
||||
vec3_t p00, p01, p10, p11;
|
||||
|
|
|
@ -25,6 +25,10 @@ void SP_target_temp_entity (edict_t *ent)
|
|||
/*QUAKED target_speaker (1 0 0) (-8 -8 -8) (8 8 8) looped-on looped-off reliable
|
||||
"noise" wav file to play
|
||||
"attenuation"
|
||||
DWH
|
||||
-2 = only played (full volume) for player who triggered the target_speaker
|
||||
end DWH
|
||||
|
||||
-1 = none, send to whole level
|
||||
1 = normal fighting sounds
|
||||
2 = idle sound level
|
||||
|
@ -43,8 +47,9 @@ void Use_Target_Speaker (edict_t *ent, edict_t *other, edict_t *activator)
|
|||
|
||||
if (ent->spawnflags & 3)
|
||||
{ // looping sound toggles
|
||||
if (ent->s.sound)
|
||||
if (ent->s.sound) {
|
||||
ent->s.sound = 0; // turn it off
|
||||
}
|
||||
else {
|
||||
ent->s.sound = ent->noise_index; // start it
|
||||
#ifdef LOOP_SOUND_ATTENUATION
|
||||
|
@ -53,14 +58,31 @@ void Use_Target_Speaker (edict_t *ent, edict_t *other, edict_t *activator)
|
|||
}
|
||||
}
|
||||
else
|
||||
{ // normal sound
|
||||
if (ent->spawnflags & 4)
|
||||
chan = CHAN_VOICE|CHAN_RELIABLE;
|
||||
{
|
||||
if (ent->attenuation == -2)
|
||||
{
|
||||
if (ent->spawnflags & 4)
|
||||
chan = CHAN_VOICE|CHAN_RELIABLE;
|
||||
else
|
||||
chan = CHAN_VOICE;
|
||||
gi.sound (activator, chan, ent->noise_index, 1, ATTN_NORM, 0);
|
||||
}
|
||||
else
|
||||
chan = CHAN_VOICE;
|
||||
// use a positioned_sound, because this entity won't normally be
|
||||
// sent to any clients because it is invisible
|
||||
gi.positioned_sound (ent->s.origin, ent, chan, ent->noise_index, ent->volume, ent->attenuation, 0);
|
||||
{ // normal sound
|
||||
if (ent->spawnflags & 4)
|
||||
chan = CHAN_VOICE|CHAN_RELIABLE;
|
||||
else
|
||||
chan = CHAN_VOICE;
|
||||
// use a positioned_sound, because this entity won't normally be
|
||||
// sent to any clients because it is invisible
|
||||
gi.positioned_sound (ent->s.origin, ent, chan, ent->noise_index, ent->volume, ent->attenuation, 0);
|
||||
}
|
||||
|
||||
ent->count--;
|
||||
if (!ent->count) {
|
||||
ent->think = G_FreeEdict;
|
||||
ent->nextthink = level.time + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -886,10 +886,10 @@ void SP_trigger_gravity (edict_t *self)
|
|||
// self->gravity = atoi(st.gravity);
|
||||
self->gravity = atof(st.gravity);
|
||||
|
||||
if(self->spawnflags & 1) // TOGGLE
|
||||
if (self->spawnflags & 1) // TOGGLE
|
||||
self->use = trigger_gravity_use;
|
||||
|
||||
if(self->spawnflags & 2) // START_OFF
|
||||
if (self->spawnflags & 2) // START_OFF
|
||||
{
|
||||
self->use = trigger_gravity_use;
|
||||
self->solid = SOLID_NOT;
|
||||
|
|
200
missionpack/m_vulture.h
Normal file
200
missionpack/m_vulture.h
Normal file
|
@ -0,0 +1,200 @@
|
|||
// Generated by ModelEd
|
||||
// Vulture
|
||||
|
||||
#define FRAME_perch1 0
|
||||
#define FRAME_perch2 1
|
||||
#define FRAME_perch3 2
|
||||
#define FRAME_perch4 3
|
||||
#define FRAME_perch5 4
|
||||
#define FRAME_perch6 5
|
||||
#define FRAME_perch7 6
|
||||
#define FRAME_perch8 7
|
||||
#define FRAME_perch9 8
|
||||
#define FRAME_perch10 9
|
||||
#define FRAME_perch11 10
|
||||
#define FRAME_perch12 11
|
||||
#define FRAME_perch13 12
|
||||
#define FRAME_perch14 13
|
||||
#define FRAME_perch15 14
|
||||
#define FRAME_perch16 15
|
||||
#define FRAME_perch17 16
|
||||
#define FRAME_perch18 17
|
||||
#define FRAME_perch19 18
|
||||
#define FRAME_perch20 19
|
||||
#define FRAME_perch21 20
|
||||
#define FRAME_perch22 21
|
||||
#define FRAME_perch23 22
|
||||
#define FRAME_perch24 23
|
||||
#define FRAME_perch25 24
|
||||
#define FRAME_perch26 25
|
||||
#define FRAME_perch27 26
|
||||
#define FRAME_perch28 27
|
||||
#define FRAME_perch29 28
|
||||
#define FRAME_perch30 29
|
||||
#define FRAME_walk1 30
|
||||
#define FRAME_walk2 31
|
||||
#define FRAME_walk3 32
|
||||
#define FRAME_walk4 33
|
||||
#define FRAME_walk5 34
|
||||
#define FRAME_walk6 35
|
||||
#define FRAME_walk7 36
|
||||
#define FRAME_walk8 37
|
||||
#define FRAME_walk9 38
|
||||
#define FRAME_walk10 39
|
||||
#define FRAME_soar1 40
|
||||
#define FRAME_soar2 41
|
||||
#define FRAME_soar3 42
|
||||
#define FRAME_soar4 43
|
||||
#define FRAME_soar5 44
|
||||
#define FRAME_soar6 45
|
||||
#define FRAME_soar7 46
|
||||
#define FRAME_soar8 47
|
||||
#define FRAME_soar9 48
|
||||
#define FRAME_soar10 49
|
||||
#define FRAME_soar11 50
|
||||
#define FRAME_soar12 51
|
||||
#define FRAME_soar13 52
|
||||
#define FRAME_soar14 53
|
||||
#define FRAME_soar15 54
|
||||
#define FRAME_soar16 55
|
||||
#define FRAME_soar17 56
|
||||
#define FRAME_soar18 57
|
||||
#define FRAME_soar19 58
|
||||
#define FRAME_soar20 59
|
||||
#define FRAME_soar21 60
|
||||
#define FRAME_soar22 61
|
||||
#define FRAME_soar23 62
|
||||
#define FRAME_soar24 63
|
||||
#define FRAME_soar25 64
|
||||
#define FRAME_soar26 65
|
||||
#define FRAME_soar27 66
|
||||
#define FRAME_soar28 67
|
||||
#define FRAME_soar29 68
|
||||
#define FRAME_soar30 69
|
||||
#define FRAME_soar31 70
|
||||
#define FRAME_soar32 71
|
||||
#define FRAME_soar33 72
|
||||
#define FRAME_soar34 73
|
||||
#define FRAME_soar35 74
|
||||
#define FRAME_soar36 75
|
||||
#define FRAME_soar37 76
|
||||
#define FRAME_soar38 77
|
||||
#define FRAME_soar39 78
|
||||
#define FRAME_soar40 79
|
||||
#define FRAME_soar41 80
|
||||
#define FRAME_soar42 81
|
||||
#define FRAME_pain1 82
|
||||
#define FRAME_pain2 83
|
||||
#define FRAME_pain3 84
|
||||
#define FRAME_pain4 85
|
||||
#define FRAME_soarpain1 86
|
||||
#define FRAME_soarpain2 87
|
||||
#define FRAME_soarpain3 88
|
||||
#define FRAME_soarpain4 89
|
||||
#define FRAME_die1 90
|
||||
#define FRAME_die2 91
|
||||
#define FRAME_die3 92
|
||||
#define FRAME_die4 93
|
||||
#define FRAME_soardie1 94
|
||||
#define FRAME_soardie2 95
|
||||
#define FRAME_soardie3 96
|
||||
#define FRAME_soardie4 97
|
||||
#define FRAME_soardie5 98
|
||||
#define FRAME_soardie6 99
|
||||
#define FRAME_soardie7 100
|
||||
#define FRAME_soardie8 101
|
||||
#define FRAME_soardie9 102
|
||||
#define FRAME_soardie10 103
|
||||
#define FRAME_soardie11 104
|
||||
#define FRAME_soardie12 105
|
||||
#define FRAME_soardie13 106
|
||||
#define FRAME_soardie14 107
|
||||
#define FRAME_soardie15 108
|
||||
#define FRAME_soardie16 109
|
||||
#define FRAME_soardie17 110
|
||||
#define FRAME_soardie18 111
|
||||
#define FRAME_soardie19 112
|
||||
#define FRAME_soardie20 113
|
||||
#define FRAME_soardie21 114
|
||||
#define FRAME_soardie22 115
|
||||
#define FRAME_soardie23 116
|
||||
#define FRAME_soardie24 117
|
||||
#define FRAME_soardie25 118
|
||||
#define FRAME_soardie26 119
|
||||
#define FRAME_soardie27 120
|
||||
#define FRAME_soardie28 121
|
||||
#define FRAME_soardie29 122
|
||||
#define FRAME_soardie30 123
|
||||
#define FRAME_takeoff1 124
|
||||
#define FRAME_takeoff2 125
|
||||
#define FRAME_takeoff3 126
|
||||
#define FRAME_takeoff4 127
|
||||
#define FRAME_takeoff5 128
|
||||
#define FRAME_takeoff6 129
|
||||
#define FRAME_fly1 130
|
||||
#define FRAME_fly2 131
|
||||
#define FRAME_fly3 132
|
||||
#define FRAME_fly4 133
|
||||
#define FRAME_fly5 134
|
||||
#define FRAME_melee1 135
|
||||
#define FRAME_melee2 136
|
||||
#define FRAME_melee3 137
|
||||
#define FRAME_melee4 138
|
||||
#define FRAME_land1 139
|
||||
#define FRAME_land2 140
|
||||
#define FRAME_land3 141
|
||||
#define FRAME_land4 142
|
||||
#define FRAME_land5 143
|
||||
#define FRAME_land6 144
|
||||
#define FRAME_land7 145
|
||||
#define FRAME_land8 146
|
||||
#define FRAME_land9 147
|
||||
#define FRAME_land10 148
|
||||
#define FRAME_land11 149
|
||||
#define FRAME_land12 150
|
||||
#define FRAME_land13 151
|
||||
#define FRAME_skin 152
|
||||
#define FRAME_bankR1 153
|
||||
#define FRAME_bankR2 154
|
||||
#define FRAME_bankR3 155
|
||||
#define FRAME_bankR4 156
|
||||
#define FRAME_bankR5 157
|
||||
#define FRAME_bankR6 158
|
||||
#define FRAME_bankR7 159
|
||||
#define FRAME_bankR8 160
|
||||
#define FRAME_bankR9 161
|
||||
#define FRAME_bankR10 162
|
||||
#define FRAME_bankL1 163
|
||||
#define FRAME_bankL2 164
|
||||
#define FRAME_bankL3 165
|
||||
#define FRAME_bankL4 166
|
||||
#define FRAME_bankL5 167
|
||||
#define FRAME_bankL6 168
|
||||
#define FRAME_bankL7 169
|
||||
#define FRAME_bankL8 170
|
||||
#define FRAME_bankL9 171
|
||||
#define FRAME_bankL10 172
|
||||
#define FRAME_TEMPLATE1 173
|
||||
#define FRAME_perchSAFE1 174
|
||||
#define FRAME_flySAFE1 175
|
||||
#define FRAME_flySAFE2 176
|
||||
#define FRAME_flySAFE3 177
|
||||
#define FRAME_flySAFE4 178
|
||||
#define FRAME_flySAFE5 179
|
||||
#define FRAME_flySAFE6 180
|
||||
#define FRAME_flySAFE7 181
|
||||
#define FRAME_flySAFE8 182
|
||||
#define FRAME_flySAFE9 183
|
||||
#define FRAME_flySAFE10 184
|
||||
#define FRAME_takeoffSAFE1 185
|
||||
#define FRAME_takeoffSAFE2 186
|
||||
#define FRAME_takeoffSAFE3 187
|
||||
#define FRAME_takeoffSAFE4 188
|
||||
#define FRAME_takeoffSAFE5 189
|
||||
#define FRAME_takeoffSAFE6 190
|
||||
#define FRAME_takeoffSAFE7 191
|
||||
#define FRAME_takeoffSAFE8 192
|
||||
#define FRAME_takeoffSAFE9 193
|
||||
#define FRAME_takeoffSAFE10 194
|
||||
|
||||
#define MODEL_SCALE 1.000000
|
|
@ -2281,6 +2281,10 @@ void PutClientInServer (edict_t *ent)
|
|||
// copy some data from the client to the entity
|
||||
FetchClientEntData (ent);
|
||||
|
||||
// Lazarus: Starting health < max. Presumably player was hurt in a crash
|
||||
if( (spawn_health > 0) && !deathmatch->value && !coop->value)
|
||||
ent->health = min(ent->health, spawn_health);
|
||||
|
||||
// clear entity values
|
||||
ent->groundentity = NULL;
|
||||
ent->client = &game.clients[index];
|
||||
|
|
Loading…
Reference in a new issue