diff --git a/packages/locale/de/LC_MESSAGES/AC.mo b/packages/locale/de/LC_MESSAGES/AC.mo index 74cd7f19..56cce47d 100644 Binary files a/packages/locale/de/LC_MESSAGES/AC.mo and b/packages/locale/de/LC_MESSAGES/AC.mo differ diff --git a/source/locale/de/LC_MESSAGES/AC.po b/source/locale/de/LC_MESSAGES/AC.po index c65bc9c5..77959d87 100644 --- a/source/locale/de/LC_MESSAGES/AC.po +++ b/source/locale/de/LC_MESSAGES/AC.po @@ -234,7 +234,8 @@ msgstr "Verbindung getrennt" #: client.cpp:25 msgid "editing in multiplayer requires coopedit mode (1)" msgstr "" -"Editieren im Mehrspieler-Modus setzt den Coopedit-Spielmodus (1) voraus" +"Editieren im Mehrspieler-Modus setzt den Coopedit-" +"Spielmodus (1) voraus" #: clients2c.cpp:945 msgid "everyone died!" diff --git a/source/src/entity.h b/source/src/entity.h index e99d1f29..6357225d 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -339,11 +339,23 @@ public: return damage; } - /* 4-level armor - semi-continous approach: 16%, 33%, 37%, 41% */ - int ad = armour > 25 ? damage * ( 2500 + 16 * armour ) / 10000 : ( damage * 16 ) / 100; - if(ad>armour) ad = armour; - armour -= ad; - damage -= ad; + /* 4-level armor - sectioned approach: 16%, 33%, 37%, 41% */ + 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 = ad * damage/100.0f; + armour -= rd; + damage -= rd; health -= damage; return damage; } diff --git a/source/src/serverevents.h b/source/src/serverevents.h index 83926fad..f1a1c0eb 100644 --- a/source/src/serverevents.h +++ b/source/src/serverevents.h @@ -24,6 +24,11 @@ void processevent(client *c, explodeevent &e) if(jclientnum == target->clientnum; + if(chk_gun && chk_dir && chk_dst && chk_cnr) damage = INT_MAX; // nade suicide serverdamage(target, c, damage, e.gun, true, h.dir); } } diff --git a/source/src/weapon.cpp b/source/src/weapon.cpp index 37df5db5..ff1271eb 100644 --- a/source/src/weapon.cpp +++ b/source/src/weapon.cpp @@ -799,7 +799,7 @@ bool weapon::valid(int id) { return id>=0 && idvel = vel; this->o = from; this->resetinterp(); @@ -896,7 +896,7 @@ void grenadeent::moveoutsidebbox(const vec &direction, playerent *boundingbox) } void grenadeent::destroy() { explode(); } -bool grenadeent::applyphysics() { return nadestate==NS_THROWED; } +bool grenadeent::applyphysics() { return nadestate==NS_THROWN; } void grenadeent::oncollision() { diff --git a/source/src/weapon.h b/source/src/weapon.h index 703bba47..23f82c76 100644 --- a/source/src/weapon.h +++ b/source/src/weapon.h @@ -52,7 +52,7 @@ struct weapon class grenadeent; -enum { GST_NONE, GST_INHAND, GST_THROWING }; +enum { GST_NONE = 0, GST_INHAND, GST_THROWING }; struct grenades : weapon {