From 0d639b147621464f397f04cb472f921f7d690f8f Mon Sep 17 00:00:00 2001 From: puzl Date: Fri, 25 Nov 2005 03:48:31 +0000 Subject: [PATCH] o Lerk health 125 -> 150 o Lerk Armour 30 - 50 o Lerk base flight speed cap is now 700, adjust +25 per celerity level. No more pancaking. o Lerk climb slower depending on angle of ascent. 10% reduction at vertical climb o Lerk dive faster depending on angle of descent. 10% increase at vertical vertical o Lerk flap costs zero energy. o Commanders now see alien health rings git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@363 67975925-1194-0748-b3d5-c16f83f1a3a1 --- dev/3.2-movements/Balance.txt | 6 +- dev/3.2-movements/source/mod/AvHHudRender.cpp | 17 ++- .../source/pm_shared/pm_shared.cpp | 142 +++++++++--------- 3 files changed, 90 insertions(+), 75 deletions(-) diff --git a/dev/3.2-movements/Balance.txt b/dev/3.2-movements/Balance.txt index e8713428..374b9d95 100644 --- a/dev/3.2-movements/Balance.txt +++ b/dev/3.2-movements/Balance.txt @@ -173,11 +173,11 @@ #define kKillRewardMin 1 #define kLeapDamage 80 #define kLerkArmorUpgrade 30 -#define kLerkBaseArmor 30 +#define kLerkBaseArmor 50 #define kLerkBaseSpeed 175 #define kLerkCost 30 #define kLerkGestateTime 15 -#define kLerkHealth 125 +#define kLerkHealth 150 #define kMGDamage 10 #define kMGMaxAmmo 250 #define kMGMaxClip 50 @@ -405,7 +405,7 @@ #define kJoinTeamCooldown 3.00 #define kKNROF 0.65 #define kLeapEnergyCost 0.25 -#define kLerkBaseAscendSpeedMax 600.00 +#define kLerkBaseFlightSpeedMax 700.00 #define kMGROF 0.10 #define kMarineArmorLevelOne 0.20 #define kMarineArmorLevelThree 0.60 diff --git a/dev/3.2-movements/source/mod/AvHHudRender.cpp b/dev/3.2-movements/source/mod/AvHHudRender.cpp index c576e39a..447693c6 100644 --- a/dev/3.2-movements/source/mod/AvHHudRender.cpp +++ b/dev/3.2-movements/source/mod/AvHHudRender.cpp @@ -2461,7 +2461,7 @@ void AvHHud::DrawBuildHealthEffectsForEntity(int inEntityIndex, float inAlpha) theMaxs = theEntity->curstate.maxs; theHealthPercentage = theEntity->curstate.fuser2/kNormalizationNetworkFactor; // puzl: 991 transmit armour and health for marines - if ( GetIsMarine() && theEntityIsPlayer ) { + if ( GetIsMarine() && theEntityIsPlayer && theIsOnOurTeam ) { int tmpPercent=theEntity->curstate.fuser2; if ( GetInTopDownMode() ) { theHealthPercentage = (float)(tmpPercent&0x7F)/100; @@ -2796,9 +2796,10 @@ void AvHHud::RenderCommonUI() if (gHUD.GetServerVariableFloat("sv_cheats") != 0 && CVAR_GET_FLOAT("cl_showspeed") != 0) { - // Draw the speedometer. + static int maxVelocity=0, maxClimb=0, maxDive=0; + int theR, theG, theB; this->GetPrimaryHudColor(theR, theG, theB, true, false); @@ -2806,7 +2807,13 @@ void AvHHud::RenderCommonUI() char buffer[1024]; - sprintf(buffer, "Speed = %d", (int)Length(pmove->velocity)); + int velocity=(int)Length(pmove->velocity); + + maxVelocity=max(maxVelocity, velocity); + maxClimb=max((int)pmove->velocity[2], maxClimb); + maxDive=min((int)pmove->velocity[2], maxDive); + + sprintf(buffer, "Speed(Max)= %d (%d)", velocity, maxVelocity); mFont.DrawString(10, 10, buffer, theR, theG, theB); float theGroundSpeed = sqrtf(pmove->velocity[0] * pmove->velocity[0] + pmove->velocity[1] * pmove->velocity[1]); @@ -2814,8 +2821,10 @@ void AvHHud::RenderCommonUI() sprintf(buffer, "Ground speed = %d", (int)theGroundSpeed); mFont.DrawString(10, 12 + mFont.GetStringHeight(), buffer, theR, theG, theB); + sprintf(buffer, "Max Ascent/Descent = %d/%d", maxClimb, maxDive); + mFont.DrawString(10, 16 + mFont.GetStringHeight()*2, buffer, theR, theG, theB); - } + } DrawInfoLocationText(); DrawHUDStructureNotification(); diff --git a/dev/3.2-movements/source/pm_shared/pm_shared.cpp b/dev/3.2-movements/source/pm_shared/pm_shared.cpp index 0037a619..a334b3fa 100644 --- a/dev/3.2-movements/source/pm_shared/pm_shared.cpp +++ b/dev/3.2-movements/source/pm_shared/pm_shared.cpp @@ -362,6 +362,23 @@ bool PM_GetIsCharging() return false; } +int PM_GetCelerityLevel() { + int theSpeedUpgradeLevel =0; + if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_4)) + { + theSpeedUpgradeLevel = 1; + + if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_12)) + { + theSpeedUpgradeLevel = 2; + } + else if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_13)) + { + theSpeedUpgradeLevel = 3; + } + } + return theSpeedUpgradeLevel; +} /* =================== @@ -3559,7 +3576,8 @@ void PM_AirMove (void) } PM_PreventMegaBunnyJumping(true); - + + float theAirAccelerate = gIsJetpacking[pmove->player_index] ? pmove->movevars->airaccelerate*4 : pmove->movevars->airaccelerate; if(pmove->iuser3 == AVH_USER3_ALIEN_PLAYER3) { @@ -4425,6 +4443,7 @@ bool PM_BlinkMove (void) // Lerk flight bool PM_FlapMove() { + static float maxVelocity, maxx, maxy, maxz; if (pmove->iuser3 != AVH_USER3_ALIEN_PLAYER3) return false; @@ -4436,7 +4455,7 @@ bool PM_FlapMove() // Set to define delay between flaps in seconds pmove->fuser4 = 0.1f; - AvHMUDeductAlienEnergy(pmove->fuser3, kAlienEnergyFlap); + //AvHMUDeductAlienEnergy(pmove->fuser3, kAlienEnergyFlap); // boost a bit up when on the ground if (pmove->onground > -1) @@ -4488,36 +4507,10 @@ bool PM_FlapMove() VectorScale(pmove->forward, theThrust, theFlapVelocity); theFlapVelocity[2] += theLift; - int theSpeedUpgradeLevel = 0; - if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_4)) - { - theSpeedUpgradeLevel = 1; - - if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_12)) - { - theSpeedUpgradeLevel = 2; - } - else if(GetHasUpgrade(pmove->iuser4, MASK_UPGRADE_13)) - { - theSpeedUpgradeLevel = 3; - } - } - int theAdjustment=theSpeedUpgradeLevel * BALANCE_VAR(kAlienCelerityBonus); - float theAscendMax=BALANCE_VAR(kLerkBaseAscendSpeedMax) + theAdjustment; - static float maxVelocity=0; - maxVelocity=max(maxVelocity, pmove->velocity[2]); - if ( pmove->velocity[2] > theAscendMax ) { - theFlapVelocity[2]=0; - } - // cap diving too - if ( -pmove->velocity[2] > theAscendMax*1.3 ) { - theFlapVelocity[2]=0; - } - vec3_t theNewVelocity; VectorAdd(pmove->velocity, theFlapVelocity, theNewVelocity); - VectorCopy(theNewVelocity, pmove->velocity); + VectorCopy(theNewVelocity, pmove->velocity); if(pmove->runfuncs) { @@ -4556,8 +4549,8 @@ bool PM_FlapMove() { // Compute the velocity not in the direction we're facing. float theGlideAmount = PM_GetHorizontalSpeed() / 1000; - if (theGlideAmount > 0.2) - theGlideAmount = 0.2; + if (theGlideAmount > 0.5) + theGlideAmount = 0.5; float speed = Length(pmove->velocity); float projectedSpeed = DotProduct(pmove->velocity, pmove->forward); @@ -5134,48 +5127,62 @@ void PM_PreventMegaBunnyJumping(bool inAir) // If we have to crop, apply this cropping fraction to velocity float fraction; // Speed at which bunny jumping is limited - float maxscaledspeed; - - maxscaledspeed = BUNNYJUMP_MAX_SPEED_FACTOR * pmove->maxspeed; - if(inAir) - { - // Allow flyers, leapers, and JPers to go faster in the air, but still capped - maxscaledspeed = BALANCE_VAR(kAirspeedMultiplier)*pmove->maxspeed; - } - - // Don't divide by zero - if ( maxscaledspeed <= 0.0f ) - return; + if ( pmove->iuser3 == AVH_USER3_ALIEN_PLAYER3 && inAir ) { + float maxbasespeed=BALANCE_VAR(kLerkBaseFlightSpeedMax) + BALANCE_VAR(kAlienCelerityBonus) * PM_GetCelerityLevel(); - vec3_t theVelVector; - VectorCopy(pmove->velocity, theVelVector); + vec3_t vertical={0,0,-1.0f}; - if(inAir) - { - theVelVector[2] = 0.0f; - } + vec3_t forward; + vec3_t tmp; - spd = Length( theVelVector ); - - if ( spd <= maxscaledspeed ) - return; - - // Returns the modifier for the velocity - fraction = maxscaledspeed/spd; - - float theCurrentSpeed = Length(pmove->velocity); + spd = Length( pmove->velocity ); - VectorScale( pmove->velocity, fraction, pmove->velocity ); //Crop it down!. + // Simulate gravity + AngleVectors(pmove->angles, forward, tmp, tmp); + float ascentModifier=1.0f + DotProduct(forward, vertical)/10.0f; + maxbasespeed *= ascentModifier; -//#ifdef AVH_CLIENT -// if(pmove->runfuncs) -// { -// pmove->Con_Printf("Preventing speed exploits (max speed: %f, current speed: %f, adjusted speed: %f\n", pmove->maxspeed, theCurrentSpeed, Length(pmove->velocity)); -// } -//#endif + if ( spd <= maxbasespeed ) + return; + + // Returns the modifier for the velocity + fraction = maxbasespeed/spd; - // Trigger footstep immediately to prevent silent bunny-hopping - //pmove->flTimeStepSound = 0.0f; + VectorScale( pmove->velocity, fraction, pmove->velocity ); //Crop it down!. + } + else + { + float maxscaledspeed; + + maxscaledspeed = BUNNYJUMP_MAX_SPEED_FACTOR * pmove->maxspeed; + if(inAir) + { + // Allow flyers, leapers, and JPers to go faster in the air, but still capped + maxscaledspeed = BALANCE_VAR(kAirspeedMultiplier)*pmove->maxspeed; + } + + // Don't divide by zero + if ( maxscaledspeed <= 0.0f ) + return; + + vec3_t theVelVector; + VectorCopy(pmove->velocity, theVelVector); + + if(inAir) + { + theVelVector[2] = 0.0f; + } + + spd = Length( theVelVector ); + + if ( spd <= maxscaledspeed ) + return; + + // Returns the modifier for the velocity + fraction = maxscaledspeed/spd; + + VectorScale( pmove->velocity, fraction, pmove->velocity ); //Crop it down!. + } } /* @@ -5267,7 +5274,6 @@ void PM_Jump (void) // Lerk flight movement PM_FlapMove(); - // tankefugl: 0000972 walljump if (canWallJump && (GetHasUpgrade(pmove->iuser4, MASK_WALLSTICKING) && (pmove->cmd.buttons & IN_JUMP) && !(pmove->oldbuttons & IN_JUMP) /*&& (gSurfaceNormal[2] < 0.7)*/)) {