Added guninfo armourignore which is a percentage of reduced damage from armour to ignore. Knife is unchanged, it ignores all of it, carbine ignores half of it
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6937 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
+23
-20
@@ -62,7 +62,7 @@ struct itemstat { int add, start, max, sound; };
|
||||
extern itemstat ammostats[NUMGUNS];
|
||||
extern itemstat powerupstats[I_ARMOUR-I_HEALTH+1];
|
||||
|
||||
struct guninfo { string modelname; short sound, reload, reloadtime, attackdelay, damage, projspeed, part, spread, recoil, magsize, mdl_kick_rot, mdl_kick_back, recoilincrease, recoilbase, maxrecoil, recoilbackfade, pushfactor; bool isauto; };
|
||||
struct guninfo { string modelname; short sound, reload, reloadtime, attackdelay, damage, armourignore, projspeed, part, spread, recoil, magsize, mdl_kick_rot, mdl_kick_back, recoilincrease, recoilbase, maxrecoil, recoilbackfade, pushfactor; bool isauto; };
|
||||
extern guninfo guns[NUMGUNS];
|
||||
|
||||
static inline int reloadtime(int gun) { return guns[gun].reloadtime; }
|
||||
@@ -346,6 +346,7 @@ public:
|
||||
// just subtract damage here, can set death, etc. later in code calling this
|
||||
int dodamage(int damage, int gun)
|
||||
{
|
||||
guninfo gi = guns[gun];
|
||||
if(damage == INT_MAX)
|
||||
{
|
||||
damage = health;
|
||||
@@ -353,27 +354,29 @@ public:
|
||||
return damage;
|
||||
}
|
||||
|
||||
if(gun != GUN_KNIFE)
|
||||
// 4-level armour - tiered approach: 16%, 33%, 37%, 41%
|
||||
// Please update ./ac_website/htdocs/docs/introduction.html if this changes.
|
||||
int armoursection = 0;
|
||||
int ad = damage;
|
||||
if(armour > 25) armoursection = 1;
|
||||
if(armour > 50) armoursection = 2;
|
||||
if(armour > 75) armoursection = 3;
|
||||
switch(armoursection)
|
||||
{
|
||||
// 4-level armour - tiered approach: 16%, 33%, 37%, 41%
|
||||
// Please update ./ac_website/htdocs/docs/introduction.html if this changes.
|
||||
int armoursection = 0;
|
||||
int ad = damage;
|
||||
if(armour > 25) armoursection = 1;
|
||||
if(armour > 50) armoursection = 2;
|
||||
if(armour > 75) armoursection = 3;
|
||||
switch(armoursection)
|
||||
{
|
||||
case 0: ad = (int) (16.0f/25.0f * armour); break; // 16
|
||||
case 1: ad = (int) (17.0f/25.0f * armour) - 1; break; // 33
|
||||
case 2: ad = (int) (4.0f/25.0f * armour) + 25; break; // 37
|
||||
case 3: ad = (int) (4.0f/25.0f * armour) + 25; break; // 41
|
||||
default: break;
|
||||
}
|
||||
int rd = (int) (ad * damage/100.0f);
|
||||
armour -= rd;
|
||||
damage -= rd;
|
||||
case 0: ad = (int) (16.0f/25.0f * armour); break; // 16
|
||||
case 1: ad = (int) (17.0f/25.0f * armour) - 1; break; // 33
|
||||
case 2: ad = (int) (4.0f/25.0f * armour) + 25; break; // 37
|
||||
case 3: ad = (int) (4.0f/25.0f * armour) + 25; break; // 41
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
int ra = (int) (ad * damage/100.0f);
|
||||
int rd = ra-(ra*(gi.armourignore/100.0f)); //Who cares about rounding errors anyways?
|
||||
|
||||
armour -= ra;
|
||||
damage -= rd;
|
||||
|
||||
health -= damage;
|
||||
return damage;
|
||||
}
|
||||
|
||||
+12
-12
@@ -477,18 +477,18 @@ guninfo guns[NUMGUNS] =
|
||||
//mKR: mdl_kick_rot && mKB: mdl_kick_back
|
||||
//reI: recoilincrease && reB: recoilbase && reM: maxrecoil && reF: recoilbackfade
|
||||
//pFX: pushfactor
|
||||
//modelname reload attackdelay projspeed spread magsize mKB reB reF isauto
|
||||
// sound reloadtime damage part recoil mKR reI reM pFX
|
||||
{ "knife", S_KNIFE, S_NULL, 0, 500, 50, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, false },
|
||||
{ "pistol", S_PISTOL, S_RPISTOL, 1400, 160, 18, 0, 0, 53, 10, 10, 6, 5, 6, 35, 58, 125, 1, false },
|
||||
{ "carbine", S_CARBINE, S_RCARBINE, 1800, 720, 60, 0, 0, 10, 60, 10, 4, 4, 10, 60, 60, 150, 1, false },
|
||||
{ "shotgun", S_SHOTGUN, S_RSHOTGUN, 2400, 800, 1, 0, 0, 1, 35, 7, 9, 9, 10, 140, 140, 125, 1, false }, // CAUTION dmg only sane for server!
|
||||
{ "subgun", S_SUBGUN, S_RSUBGUN, 1650, 80, 16, 0, 0, 45, 15, 30, 1, 2, 4, 30, 50, 188, 1, true },
|
||||
{ "sniper", S_SNIPER, S_RSNIPER, 1950, 1500, 80, 0, 0, 50, 50, 5, 4, 4, 10, 85, 85, 100, 1, false }, // 2011may22:ft: dmg 82->80, spread 50
|
||||
{ "assault", S_ASSAULT, S_RASSAULT, 2000, 120, 24, 0, 0, 18, 40, 15, 0, 2, 2, 22, 55, 115, 1, true },
|
||||
{ "cpistol", S_PISTOL, S_RPISTOL, 1400, 120, 19, 0, 0, 35, 10, 15, 6, 5, 6, 35, 58, 125, 1, false }, // temporary
|
||||
{ "grenade", S_NULL, S_NULL, 1000, 650, 200, 20, 6, 1, 1, 1, 3, 1, 0, 0, 0, 0, 3, false },
|
||||
{ "pistol", S_PISTOL, S_RAKIMBO, 1400, 80, 19, 0, 0, 50, 10, 20, 6, 5, 10, 10, 18, 115, 1, true },
|
||||
//modelname reload attackdelay armourignore part recoil mKR reI reM pFX
|
||||
// sound reloadtime damage projspeed spread magsize mKB reB reF isauto
|
||||
{ "knife", S_KNIFE, S_NULL, 0, 500, 50, 100, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, false },
|
||||
{ "pistol", S_PISTOL, S_RPISTOL, 1400, 160, 18, 0, 0, 0, 53, 10, 10, 6, 5, 6, 35, 58, 125, 1, false },
|
||||
{ "carbine", S_CARBINE, S_RCARBINE, 1800, 720, 60, 50, 0, 0, 10, 60, 10, 4, 4, 10, 60, 60, 150, 1, false },
|
||||
{ "shotgun", S_SHOTGUN, S_RSHOTGUN, 2400, 800, 1, 0, 0, 0, 1, 35, 7, 9, 9, 10, 140, 140, 125, 1, false }, // CAUTION dmg only sane for server!
|
||||
{ "subgun", S_SUBGUN, S_RSUBGUN, 1650, 80, 16, 0, 0, 0, 45, 15, 30, 1, 2, 4, 30, 50, 188, 1, true },
|
||||
{ "sniper", S_SNIPER, S_RSNIPER, 1950, 1500, 80, 0, 0, 0, 50, 50, 5, 4, 4, 10, 85, 85, 100, 1, false }, // 2011may22:ft: dmg 82->80, spread 50
|
||||
{ "assault", S_ASSAULT, S_RASSAULT, 2000, 120, 24, 0, 0, 0, 18, 40, 15, 0, 2, 2, 22, 55, 115, 1, true },
|
||||
{ "cpistol", S_PISTOL, S_RPISTOL, 1400, 120, 19, 0, 0, 0, 35, 10, 15, 6, 5, 6, 35, 58, 125, 1, false }, // temporary
|
||||
{ "grenade", S_NULL, S_NULL, 1000, 650, 200, 0, 20, 6, 1, 1, 1, 3, 1, 0, 0, 0, 0, 3, false },
|
||||
{ "pistol", S_PISTOL, S_RAKIMBO, 1400, 80, 19, 0, 0, 0, 50, 10, 20, 6, 5, 10, 10, 18, 115, 1, true },
|
||||
};
|
||||
|
||||
const char *teamnames[TEAM_NUM+1] = {"CLA", "RVSF", "CLA-SPECT", "RVSF-SPECT", "SPECTATOR", "void"};
|
||||
|
||||
Reference in New Issue
Block a user