Quake 2 Oop Conversion Project - Source Diff 3.05 vs 3.14 - g_combat.c
diff -s -r q2_305/g_combat.c q2_314/g_combat.c
Left File < - 3.05/g_combat.c
Right File > - 3.14/g_combat.c
Back to Index
35c35
< VectorCopy (targ->mins, dest);
---
> VectorCopy (targ->s.origin, dest);
38c38
< trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, targ->s.origin, inflictor, MASK_SOLID);
---
> trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, dest, inflictor, MASK_SOLID);
42c42
< VectorCopy (targ->mins, dest);
---
> VectorCopy (targ->s.origin, dest);
45c45
< trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, targ->s.origin, inflictor, MASK_SOLID);
---
> trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, dest, inflictor, MASK_SOLID);
49c49
< VectorCopy (targ->mins, dest);
---
> VectorCopy (targ->s.origin, dest);
52c52
< trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, targ->s.origin, inflictor, MASK_SOLID);
---
> trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, dest, inflictor, MASK_SOLID);
56c56
< VectorCopy (targ->mins, dest);
---
> VectorCopy (targ->s.origin, dest);
59c59
< trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, targ->s.origin, inflictor, MASK_SOLID);
---
> trace = gi.trace (inflictor->s.origin, vec3_origin, vec3_origin, dest, inflictor, MASK_SOLID);
75,76c75,76
< // if (targ->health < -99)
< // targ->health = -99;
---
> if (targ->health < -999)
> targ->health = -999;
82c82
< targ->svflags |= SVF_DEADMONSTER; // now treat as a different content type
---
> // targ->svflags |= SVF_DEADMONSTER; // now treat as a different content type
85a86,87
> if (coop->value && attacker->client)
> attacker->client->resp.score++;
98c100
< if (targ->deadflag != DEAD_DEAD)
---
> if ((targ->svflags & SVF_MONSTER) && (targ->deadflag != DEAD_DEAD))
100,101d101
< // ClientObituary(self, inflictor, attacker);
<
103d102
<
153c152
< static int CheckPowerArmor (edict_t *ent, vec3_t point, vec3_t normal, int damage)
---
> static int CheckPowerArmor (edict_t *ent, vec3_t point, vec3_t normal, int damage, int dflags)
168a168,170
> if (dflags & DAMAGE_NO_ARMOR)
> return 0;
>
282c284,286
< if (attacker->client)
---
> // if we are a good guy monster and our attacker is a player
> // or another good guy, do not get mad at them
> if (targ->monsterinfo.aiflags & AI_GOOD_GUY)
284,288c288,289
< if (targ->enemy && targ->enemy->client)
< targ->oldenemy = targ->enemy;
< targ->enemy = attacker;
< FoundTarget (targ);
< return;
---
> if (attacker->client || (attacker->monsterinfo.aiflags & AI_GOOD_GUY))
> return;
291c292,295
< if (targ->monsterinfo.aiflags & AI_GOOD_GUY)
---
> // we now know that we are not both good guys
>
> // if attacker is a client, get mad at them because he's good and we're not
> if (attacker->client)
293c297,299
< if (!(attacker->client) && !(attacker->monsterinfo.aiflags & AI_GOOD_GUY))
---
> // this can only happen in coop (both new and old enemies are clients)
> // only switch if can't see the current enemy
> if (targ->enemy && targ->enemy->client)
295,297c301,306
< targ->enemy = attacker;
< FoundTarget (targ);
< return;
---
> if (visible(targ, targ->enemy))
> {
> targ->oldenemy = attacker;
> return;
> }
> targ->oldenemy = targ->enemy;
298a308,311
> targ->enemy = attacker;
> if (!(targ->monsterinfo.aiflags & AI_DUCKED))
> FoundTarget (targ);
> return;
301,303c314,315
< // if attacker is a client or
< // it's the same base (walk/swim/fly) type and a different classname and it's not a tank (they spray too much)
< // get mad at them
---
> // it's the same base (walk/swim/fly) type and a different classname and it's not a tank
> // (they spray too much), get mad at them
315c327,328
< FoundTarget (targ);
---
> if (!(targ->monsterinfo.aiflags & AI_DUCKED))
> FoundTarget (targ);
324c337,338
< FoundTarget (targ);
---
> if (!(targ->monsterinfo.aiflags & AI_DUCKED))
> FoundTarget (targ);
335c349
< void T_Damage (edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir, vec3_t point, vec3_t normal, int damage, int knockback, int dflags)
---
> void T_Damage (edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir, vec3_t point, vec3_t normal, int damage, int knockback, int dflags, int mod)
346a361,375
> // friendly fire avoidance
> // if enabled you can't hurt teammates (but you can hurt yourself)
> // knockback still occurs
> if ((targ != attacker) && ((deathmatch->value && ((int)(dmflags->value) & (DF_MODELTEAMS | DF_SKINTEAMS))) || coop->value))
> {
> if (OnSameTeam (targ, attacker))
> {
> if ((int)(dmflags->value) & DF_NO_FRIENDLY_FIRE)
> damage = 0;
> else
> mod |= MOD_FRIENDLY_FIRE;
> }
> }
> meansOfDeath = mod;
>
348a378
> {
350,351c380,382
< if (!damage)
< damage = 1;
---
> if (!damage)
> damage = 1;
> }
414c445
< psave = CheckPowerArmor (targ, point, normal, take);
---
> psave = CheckPowerArmor (targ, point, normal, take, dflags);
424c455
< if (CheckTeamDamage (targ, attacker))
---
> if (!(dflags & DAMAGE_NO_PROTECTION) && CheckTeamDamage (targ, attacker))
488c519
< void T_RadiusDamage (edict_t *inflictor, edict_t *attacker, float damage, edict_t *ignore, float radius)
---
> void T_RadiusDamage (edict_t *inflictor, edict_t *attacker, float damage, edict_t *ignore, float radius, int mod)
513c544
< T_Damage (ent, inflictor, attacker, dir, inflictor->s.origin, vec3_origin, (int)points, (int)points, DAMAGE_RADIUS);
---
> T_Damage (ent, inflictor, attacker, dir, inflictor->s.origin, vec3_origin, (int)points, (int)points, DAMAGE_RADIUS, mod);