diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/bg_misc.c | 66 | ||||
-rw-r--r-- | src/game/bg_public.h | 4 | ||||
-rw-r--r-- | src/game/g_buildable.c | 26 | ||||
-rw-r--r-- | src/game/g_combat.c | 87 | ||||
-rw-r--r-- | src/game/g_local.h | 1 | ||||
-rw-r--r-- | src/game/g_weapon.c | 29 | ||||
-rw-r--r-- | src/game/tremulous.h | 28 |
7 files changed, 147 insertions, 94 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index 8ea8ff41..671aa9bf 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -71,7 +71,8 @@ buildableAttributes_t bg_buildableList[ ] = ASPAWN_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + ASPAWN_VALUE, //int value; }, { BA_A_BARRICADE, //int buildNum; @@ -109,7 +110,8 @@ buildableAttributes_t bg_buildableList[ ] = BARRICADE_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + BARRICADE_VALUE, //int value; }, { BA_A_BOOSTER, //int buildNum; @@ -150,7 +152,8 @@ buildableAttributes_t bg_buildableList[ ] = BOOSTER_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + BOOSTER_VALUE, //int value; }, { BA_A_ACIDTUBE, //int buildNum; @@ -189,7 +192,8 @@ buildableAttributes_t bg_buildableList[ ] = ACIDTUBE_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + ACIDTUBE_VALUE, //int value; }, { BA_A_HIVE, //int buildNum; @@ -227,7 +231,8 @@ buildableAttributes_t bg_buildableList[ ] = HIVE_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + HIVE_VALUE, //int value; }, { BA_A_TRAPPER, //int buildNum; @@ -266,7 +271,8 @@ buildableAttributes_t bg_buildableList[ ] = TRAPPER_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + TRAPPER_VALUE, //int value; }, { BA_A_OVERMIND, //int buildNum; @@ -305,7 +311,8 @@ buildableAttributes_t bg_buildableList[ ] = OVERMIND_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qtrue //qboolean reactorTest; + qtrue, //qboolean reactorTest; + OVERMIND_VALUE, //int value; }, { BA_A_HOVEL, //int buildNum; @@ -344,7 +351,8 @@ buildableAttributes_t bg_buildableList[ ] = HOVEL_CREEPSIZE, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qtrue //qboolean reactorTest; + qtrue, //qboolean reactorTest; + HOVEL_VALUE, //int value; }, { BA_H_SPAWN, //int buildNum; @@ -383,7 +391,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + HSPAWN_VALUE, //int value; }, { BA_H_MEDISTAT, //int buildNum; @@ -422,7 +431,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + MEDISTAT_VALUE, //int value; }, { BA_H_MGTURRET, //int buildNum; @@ -463,7 +473,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + MGTURRET_VALUE, //int value; }, { BA_H_TESLAGEN, //int buildNum; @@ -502,7 +513,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qtrue, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + TESLAGEN_VALUE, //int value; }, { BA_H_DCC, //int buildNum; @@ -541,7 +553,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + DC_VALUE, //int value; }, { BA_H_ARMOURY, //int buildNum; @@ -580,7 +593,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + ARMOURY_VALUE, //int value; }, { BA_H_REACTOR, //int buildNum; @@ -619,7 +633,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qtrue //qboolean reactorTest; + qtrue, //qboolean reactorTest; + REACTOR_VALUE, //int value; }, { BA_H_REPEATER, //int buildNum; @@ -658,7 +673,8 @@ buildableAttributes_t bg_buildableList[ ] = 0, //int creepSize; qfalse, //qboolean dccTest; qfalse, //qboolean transparentTest; - qfalse //qboolean reactorTest; + qfalse, //qboolean reactorTest; + REACTOR_VALUE, //int value; } }; @@ -669,6 +685,24 @@ buildableAttributeOverrides_t bg_buildableOverrideList[ BA_NUM_BUILDABLES ]; /* ============== +BG_FindValueOfBuildable +============== +*/ +int BG_FindValueOfBuildable( int bclass ) +{ + int i; + + for( i = 0; i < bg_numBuildables; i++ ) + { + if( bg_buildableList[ i ].buildNum == bclass ) + return bg_buildableList[ i ].value; + } + + return 0; +} + +/* +============== BG_FindBuildNumForName ============== */ diff --git a/src/game/bg_public.h b/src/game/bg_public.h index 61195fe1..0bceb6c6 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -1018,7 +1018,8 @@ typedef struct qboolean dccTest; qboolean transparentTest; qboolean reactorTest; - qboolean replaceable; + + int value; } buildableAttributes_t; typedef struct @@ -1112,6 +1113,7 @@ void BG_PositionBuildableRelativeToPlayer( const playerState_t *ps, vec3_t outOrigin, vec3_t outAngles, trace_t *tr ); int BG_GetValueOfPlayer( playerState_t *ps ); +int BG_FindValueOfBuildable( int bclass ); int BG_FindBuildNumForName( char *name ); int BG_FindBuildNumForEntityName( char *name ); char *BG_FindNameForBuildable( int bclass ); diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index 33803877..2dc55253 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -631,6 +631,7 @@ Called when an alien spawn dies */ void ASpawn_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ) { + G_RewardAttackers( self ); G_SetBuildableAnim( self, BANIM_DESTROY1, qtrue ); G_SetIdleBuildableAnim( self, BANIM_DESTROYED ); @@ -646,20 +647,14 @@ void ASpawn_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if( attacker && attacker->client ) { - if( attacker->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) - { - if( self->s.modelindex == BA_A_OVERMIND ) - G_AddCreditToClient( attacker->client, OVERMIND_VALUE, qtrue ); - else if( self->s.modelindex == BA_A_SPAWN ) - G_AddCreditToClient( attacker->client, ASPAWN_VALUE, qtrue ); - } - else + if( attacker->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) { G_TeamCommand( PTE_ALIENS, va( "print \"%s ^3DESTROYED^7 by teammate %s^7\n\"", BG_FindHumanNameForBuildable( self->s.modelindex ), attacker->client->pers.netname ) ); } + G_LogPrintf( "Decon: %i %i %i: %s destroyed %s by %s\n", attacker->client->ps.clientNum, self->s.modelindex, mod, attacker->client->pers.netname, @@ -874,6 +869,7 @@ exploding. */ void AGeneric_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ) { + G_RewardAttackers( self ); G_SetBuildableAnim( self, BANIM_DESTROY1, qtrue ); G_SetIdleBuildableAnim( self, BANIM_DESTROYED ); @@ -1470,6 +1466,8 @@ void AHovel_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int { vec3_t dir; + G_RewardAttackers( self ); + VectorCopy( self->s.origin2, dir ); //do a bit of radius damage @@ -2476,7 +2474,7 @@ Called when a human spawn dies */ void HSpawn_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod ) { - //pretty events and cleanup + G_RewardAttackers( self ); G_SetBuildableAnim( self, BANIM_DESTROY1, qtrue ); G_SetIdleBuildableAnim( self, BANIM_DESTROYED ); @@ -2497,20 +2495,14 @@ void HSpawn_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if( attacker && attacker->client ) { - if( attacker->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) - { - if( self->s.modelindex == BA_H_REACTOR ) - G_AddCreditToClient( attacker->client, REACTOR_VALUE, qtrue ); - else if( self->s.modelindex == BA_H_SPAWN ) - G_AddCreditToClient( attacker->client, HSPAWN_VALUE, qtrue ); - } - else + if( attacker->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) { G_TeamCommand( PTE_HUMANS, va( "print \"%s ^3DESTROYED^7 by teammate %s^7\n\"", BG_FindHumanNameForBuildable( self->s.modelindex ), attacker->client->pers.netname ) ); } + G_LogPrintf( "Decon: %i %i %i: %s destroyed %s by %s\n", attacker->client->ps.clientNum, self->s.modelindex, mod, attacker->client->pers.netname, diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 6acc12e2..46536c87 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -127,6 +127,56 @@ char *modNames[ ] = /* ================== +G_RewardAttackers + +Function to distribute rewards to entities that killed this one. +Returns the total damage dealt. +================== +*/ +float G_RewardAttackers( gentity_t *self ) +{ + float value, totalDamage; + int team, i; + + // Total up all the damage done by every client + for( i = 0; i < MAX_CLIENTS; i++ ) + totalDamage += (float)self->credits[ i ]; + + if( totalDamage <= 0.0f ) + return 0.0f; + + // Only give credits for killing players and buildables + if( self->client ) + { + value = BG_GetValueOfPlayer( &self->client->ps ); + team = self->client->pers.teamSelection; + } + else if( self->s.eType == ET_BUILDABLE ) + { + value = BG_FindValueOfBuildable( self->s.modelindex ); + team = self->biteam; + } + else + return totalDamage; + + // Give credits and empty the array + for( i = 0; i < MAX_CLIENTS; i++ ) + { + gentity_t *player = g_entities + i; + + if( !player->client || !self->credits[ i ] || + player->client->ps.stats[ STAT_PTEAM ] == team ) + continue; + G_AddCreditToClient( player->client, + value * self->credits[ i ] / totalDamage, qtrue ); + self->credits[ i ] = 0; + } + + return totalDamage; +} + +/* +================== player_die ================== */ @@ -197,7 +247,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int ent->r.svFlags = SVF_BROADCAST; // send to everyone self->enemy = attacker; - self->client->ps.persistant[ PERS_KILLED ]++; if( attacker && attacker->client ) @@ -224,9 +273,8 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int else if( attacker->s.eType != ET_BUILDABLE ) AddScore( self, -1 ); - //total up all the damage done by every client - for( i = 0; i < MAX_CLIENTS; i++ ) - totalDamage += (float)self->credits[ i ]; + // give credits for killing this player + totalDamage = G_RewardAttackers( self ); // if players did more than DAMAGE_FRACTION_FOR_KILL increment the stage counters if( !OnSameTeam( self, attacker ) && totalDamage >= ( self->client->ps.stats[ STAT_MAX_HEALTH ] * DAMAGE_FRACTION_FOR_KILL ) ) @@ -237,30 +285,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int trap_Cvar_Set( "g_humanKills", va( "%d", g_humanKills.integer + 1 ) ); } - // distribute rewards for the kill by fraction of damage dealt - if( totalDamage > 0.0f ) - { - float value = BG_GetValueOfPlayer( &self->client->ps ); - - for( i = 0; i < MAX_CLIENTS; i++ ) - { - player = g_entities + i; - - if( !player->client ) - continue; - - if( player->client->ps.stats[ STAT_PTEAM ] == - self->client->ps.stats[ STAT_PTEAM ] ) - continue; - - if( !self->credits[ i ] ) - continue; - - G_AddCreditToClient( player->client, - value * self->credits[ i ] / totalDamage, qtrue ); - } - } - ScoreboardMessage( self ); // show scores // send updated scores to any clients that are following this one, @@ -1089,11 +1113,8 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, targ->lastDamageTime = level.time; // add to the attackers "account" on the target - if( targ->client && attacker->client ) - { - if( attacker != targ && !OnSameTeam( targ, attacker ) ) - targ->credits[ attacker->client->ps.clientNum ] += take; - } + if( attacker->client && attacker != targ && !OnSameTeam( targ, attacker ) ) + targ->credits[ attacker->client->ps.clientNum ] += take; if( targ->health <= 0 ) { diff --git a/src/game/g_local.h b/src/game/g_local.h index 831ff2d8..31654231 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -823,6 +823,7 @@ qboolean G_RadiusDamage( vec3_t origin, gentity_t *attacker, float damage, floa gentity_t *ignore, int mod ); qboolean G_SelectiveRadiusDamage( vec3_t origin, gentity_t *attacker, float damage, float radius, gentity_t *ignore, int mod, int team ); +float G_RewardAttackers( gentity_t *self ); void body_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath ); void AddScore( gentity_t *ent, int score ); diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index 1e02b74b..1aba326c 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -472,20 +472,21 @@ void massDriverFire( gentity_t *ent ) break; traceEnt = &g_entities[ tr.entityNum ]; skipent = tr.entityNum; - - // don't travel through walls and movers - if( !( traceEnt->r.contents & CONTENTS_BODY ) ) - skipent = ENTITYNUM_NONE; - - // don't travel through teammates with FF off - if( OnSameTeam(ent, traceEnt) && - ( !g_friendlyFire.integer || !g_friendlyFireHumans.integer ) ) - skipent = ENTITYNUM_NONE; - - // don't travel through team buildables with FF off - if( traceEnt->s.eType == ET_BUILDABLE && - traceEnt->biteam == ent->client->pers.teamSelection && - !g_friendlyBuildableFire.integer ) + if( traceEnt->s.eType == ET_PLAYER ) + { + // don't travel through teammates with FF off + if( OnSameTeam( ent, traceEnt ) && + ( !g_friendlyFire.integer || !g_friendlyFireHumans.integer ) ) + skipent = ENTITYNUM_NONE; + } + else if( traceEnt->s.eType == ET_BUILDABLE ) + { + // don't travel through team buildables with FF off + if( traceEnt->biteam == ent->client->pers.teamSelection && + !g_friendlyBuildableFire.integer ) + skipent = ENTITYNUM_NONE; + } + else skipent = ENTITYNUM_NONE; // save the hit entity, position, and normal diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 8d7ec89c..aa37d6df 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -89,7 +89,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define LEVEL3_CLAW_DMG ADM(80) #define LEVEL3_CLAW_UPG_RANGE 96.0f #define LEVEL3_CLAW_RANGE 72.0f -//#define LEVEL3_CLAW_WIDTH 16.0f #define LEVEL3_CLAW_WIDTH 12.0f #define LEVEL3_CLAW_REPEAT 700 #define LEVEL3_CLAW_K_SCALE 1.0f @@ -214,8 +213,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define LEVEL4_REGEN 9 #define LEVEL4_COST 2 - - /* * ALIEN buildables * @@ -249,7 +246,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define ASPAWN_SPLASHDAMAGE 50 #define ASPAWN_SPLASHRADIUS 50 #define ASPAWN_CREEPSIZE 120 -#define ASPAWN_VALUE 150 +#define ASPAWN_VALUE 100 #define BARRICADE_BP 8 #define BARRICADE_BT 20000 @@ -260,6 +257,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BARRICADE_CREEPSIZE 120 #define BARRICADE_SHRINKPROP 0.25f #define BARRICADE_SHRINKTIMEOUT 500 +#define BARRICADE_VALUE 80 #define BOOSTER_BP 12 #define BOOSTER_BT 15000 @@ -269,6 +267,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define BOOSTER_SPLASHRADIUS 50 #define BOOSTER_CREEPSIZE 120 #define BOOSTER_REGEN_MOD 3.0f +#define BOOSTER_VALUE 120 #define BOOST_TIME 20000 #define ACIDTUBE_BP 8 @@ -282,7 +281,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define ACIDTUBE_RANGE 300.0f #define ACIDTUBE_REPEAT 300 #define ACIDTUBE_REPEAT_ANIM 2000 -#define ACIDTUBE_K_SCALE 1.0f +#define ACIDTUBE_VALUE 80 #define HIVE_BP 12 #define HIVE_BT 20000 @@ -298,6 +297,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define HIVE_DMG 50 #define HIVE_SPEED 240.0f #define HIVE_DIR_CHANGE_PERIOD 500 +#define HIVE_VALUE 120 #define TRAPPER_BP 8 #define TRAPPER_BT 12000 @@ -308,7 +308,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define TRAPPER_CREEPSIZE 30 #define TRAPPER_RANGE 400 #define TRAPPER_REPEAT 1000 -#define TRAPPER_K_SCALE 1.0f +#define TRAPPER_VALUE 80 #define LOCKBLOB_SPEED 650.0f #define LOCKBLOB_LOCKTIME 5000 #define LOCKBLOB_DOT 0.85f // max angle = acos( LOCKBLOB_DOT ) @@ -332,8 +332,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define HOVEL_SPLASHDAMAGE 20 #define HOVEL_SPLASHRADIUS 200 #define HOVEL_CREEPSIZE 120 - - +#define HOVEL_VALUE 80 /* * ALIEN misc @@ -480,8 +479,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define HBUILD2_REPEAT 1000 #define HBUILD2_DELAY 15000 - - /* * HUMAN upgrades */ @@ -520,7 +517,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define MEDKIT_STARTUP_TIME 4000 #define MEDKIT_STARTUP_SPEED 5 - /* * HUMAN buildables * @@ -547,13 +543,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define HSPAWN_HEALTH HBHM(310) #define HSPAWN_SPLASHDAMAGE 50 #define HSPAWN_SPLASHRADIUS 100 -#define HSPAWN_VALUE 1 +#define HSPAWN_VALUE 400 #define MEDISTAT_BP 8 #define MEDISTAT_BT 10000 #define MEDISTAT_HEALTH HBHM(190) #define MEDISTAT_SPLASHDAMAGE 50 #define MEDISTAT_SPLASHRADIUS 100 +#define MEDISTAT_VALUE 320 #define MGTURRET_BP 8 #define MGTURRET_BT 10000 @@ -570,6 +567,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define MGTURRET_SPREAD 200 #define MGTURRET_DMG HDM(8) #define MGTURRET_SPINUP_TIME 750 // time between target sighted and fire +#define MGTURRET_VALUE 320 #define TESLAGEN_BP 10 #define TESLAGEN_BT 15000 @@ -580,6 +578,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define TESLAGEN_K_SCALE 4.0f #define TESLAGEN_RANGE 150 #define TESLAGEN_DMG HDM(10) +#define TESLAGEN_VALUE 400 #define DC_BP 8 #define DC_BT 10000 @@ -589,12 +588,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define DC_ATTACK_PERIOD 10000 // how often to spam "under attack" #define DC_HEALRATE 3 #define DC_RANGE 10000 +#define DC_VALUE 320 #define ARMOURY_BP 10 #define ARMOURY_BT 10000 #define ARMOURY_HEALTH HBHM(420) #define ARMOURY_SPLASHDAMAGE 50 #define ARMOURY_SPLASHRADIUS 100 +#define ARMOURY_VALUE 400 #define REACTOR_BP 0 #define REACTOR_BT 20000 @@ -607,7 +608,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define REACTOR_ATTACK_DCC_REPEAT 1000 #define REACTOR_ATTACK_DCC_RANGE 150.0f #define REACTOR_ATTACK_DCC_DAMAGE 40 -#define REACTOR_VALUE 2 +#define REACTOR_VALUE 1200 #define REPEATER_BP 0 #define REPEATER_BT 10000 @@ -615,6 +616,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define REPEATER_SPLASHDAMAGE 50 #define REPEATER_SPLASHRADIUS 100 #define REPEATER_INACTIVE_TIME 90000 +#define REPEATER_VALUE 80 /* * HUMAN misc |