diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-02-23 20:43:53 +0100 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-02-23 22:14:16 +0100 |
commit | 50d8779208632d2cc23be36e144b0297b0c02d2b (patch) | |
tree | 9dd0dc41c4545a0be46c2612326ce351912e837b /src/game/g_combat.c | |
parent | 4e7cea5faf3470e1cd1bf71eda5ad2999e82a822 (diff) |
Add !curse with some basic features.
Diffstat (limited to 'src/game/g_combat.c')
-rw-r--r-- | src/game/g_combat.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/game/g_combat.c b/src/game/g_combat.c index d8eef62..f0ea442 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1498,6 +1498,36 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, if( take < 1 ) take = 1; + // admin curses + if( attacker->client ) + { + adminCurses_t *curses = &attacker->client->curses; + qboolean friendlyFire = qfalse; + + if( targ->biteam == attacker->client->pers.teamSelection || + OnSameTeam( targ, attacker ) ) + friendlyFire = qtrue; + + // feed some damage back to the attacker + if( curses->damageFeedback && !( dflags & DAMAGE_FEEDBACK ) ) + G_Damage( attacker, inflictor, attacker, dir, point, + damage * curses->damageFeedback, dflags | DAMAGE_FEEDBACK, mod ); + + // feed some friendly fire back to the attacker + if( friendlyFire && curses->ffFeedback && !( dflags & DAMAGE_FEEDBACK ) ) + G_Damage( attacker, inflictor, attacker, dir, point, + damage * curses->ffFeedback, dflags | DAMAGE_FEEDBACK, mod ); + + // multiply outgoing damage + take *= curses->outDamage + 1.0f; + if( friendlyFire ) + take *= curses->ffOutDamage + 1.0f; + } + + // admin curses: multiply incoming damage + if( targ->client ) + take *= targ->client->curses.incDamage + 1.0f; + if( g_debugDamage.integer ) { G_Printf( "%i: client:%i health:%i damage:%i armor:%i\n", level.time, targ->s.number, |