From 0d96a5ede22539734969c741bbcd4478f605392b Mon Sep 17 00:00:00 2001 From: Rafael Barreto Date: Sat, 21 Aug 2010 21:02:41 +0000 Subject: [PATCH] armor downgrade (makke's request), fix afk autokick when connecting but never spawning, better movement prediction (more fluid as original) git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@5668 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clients2c.cpp | 6 +++--- source/src/entity.h | 4 ++-- source/src/server.cpp | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 46687454..7688502a 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -172,10 +172,10 @@ void parsepositions(ucharbuf &p) loopi(3) { float dr = o.v[i] - d->o.v[i] + ( i == 2 ? d->eyeheight : 0); - if ( !dr ) d->vel.v[i] *= 0.7; - else if ( d->vel.v[i] ) d->vel.v[i] = dr * 0.1 + d->vel.v[i] * 0.9; + if ( !dr ) d->vel.v[i] = 0.0f; + else if ( d->vel.v[i] ) d->vel.v[i] = dr * 0.05f + d->vel.v[i] * 0.95f; d->vel.v[i] += vel.v[i]; - if ( i==2 && d->onfloor && d->vel.v[i] < 0 ) d->vel.v[i] = 0; + if ( i==2 && d->onfloor && d->vel.v[i] < 0.0f ) d->vel.v[i] = 0.0f; } d->o = o; d->o.z += d->eyeheight; diff --git a/source/src/entity.h b/source/src/entity.h index e33d6532..271f246c 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -329,8 +329,8 @@ public: // just subtract damage here, can set death, etc. later in code calling this int dodamage(int damage) { - /* 4-level armor - continous approach: 24%, 33%, 41%, 50% */ - int ad = damage * ( 1600 + 34 * armour ) / 10000; // let armour absorb when possible + /* 4-level armor - continous approach: 20%, 28%, 36%, 44% */ + int ad = damage * ( 1200 + 32 * armour ) / 10000; // let armour absorb when possible if(ad>armour) ad = armour; armour -= ad; damage -= ad; diff --git a/source/src/server.cpp b/source/src/server.cpp index 036bbd14..9bc97262 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -1226,7 +1226,7 @@ int spawntime(int type) case I_GRENADE: sec = np + 5; break; case I_HEALTH: sec = np*5; break; case I_HELMET: - case I_ARMOUR: sec = 20; break; + case I_ARMOUR: sec = 25; break; case I_AKIMBO: sec = 60; break; } return sec*1000; @@ -3650,6 +3650,7 @@ void serverslice(uint timeout) // main server update, called from cube main lo c.peer = event.peer; c.peer->data = (void *)(size_t)c.clientnum; c.connectmillis = servmillis; + c.state.state = CS_SPECTATE; c.salt = rand()*((servmillis%1000)+1); char hn[1024]; copystring(c.hostname, (enet_address_get_host_ip(&c.peer->address, hn, sizeof(hn))==0) ? hn : "unknown");