summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorMichael Levin <risujin@fastmail.fm>2009-10-03 11:18:16 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:14:51 +0000
commitbafa9e30bf24fcd05a1fe73b00091ac476ab0828 (patch)
tree59803f3ccbfc23fa8f6063e07afac4e8be19c23e /src/game
parent6bff95c5978a0d4e0cb7e99232a1e61678fcf81b (diff)
* Mass Driver will only shoot through players and buildables
* Killing buildables nets a reward (tweak in tremulous.h) * Removed some spurious comments and unused defines from tremulous.h
Diffstat (limited to 'src/game')
-rw-r--r--src/game/bg_misc.c66
-rw-r--r--src/game/bg_public.h4
-rw-r--r--src/game/g_buildable.c26
-rw-r--r--src/game/g_combat.c87
-rw-r--r--src/game/g_local.h1
-rw-r--r--src/game/g_weapon.c29
-rw-r--r--src/game/tremulous.h28
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