From 3f999a990c25004c2c961658c55fc8d710b7f34e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 23 Jan 2017 23:06:29 +0100 Subject: [PATCH 1/2] - removed a line of debug code that made GCC/Clang go nuclear. --- src/scripting/zscript/zcc_compile.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/scripting/zscript/zcc_compile.cpp b/src/scripting/zscript/zcc_compile.cpp index 1925a2eb6..43f5b6774 100644 --- a/src/scripting/zscript/zcc_compile.cpp +++ b/src/scripting/zscript/zcc_compile.cpp @@ -1036,7 +1036,6 @@ bool ZCCCompiler::CompileFields(PStruct *type, TArray &Fiel { auto field = Fields[0]; FieldDesc *fd = nullptr; - FString str = FName(field->Names[0].Name); PType *fieldtype = DetermineType(type, field, field->Names->Name, field->Type, true, true); From 17ed23bfcc864e290cc4f8f3e7e1d110f4f4d865 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 24 Jan 2017 00:12:06 +0100 Subject: [PATCH 2/2] - don't read the full height of a player from the defaults, because that cannot be changed by A_SetHeight. Instead a new member, FullHeight is used for this now. --- src/d_player.h | 1 + src/p_actionfunctions.cpp | 4 ++++ src/p_user.cpp | 12 +++++++----- wadsrc/static/zscript/shared/player.txt | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index 05facd9fe..e09db38a3 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -150,6 +150,7 @@ public: int MugShotMaxHealth; int RunHealth; int PlayerFlags; + double FullHeight; TObjPtr InvFirst; // first inventory item displayed on inventory bar TObjPtr InvSel; // selected inventory item diff --git a/src/p_actionfunctions.cpp b/src/p_actionfunctions.cpp index 5f7185a07..f89a560ab 100644 --- a/src/p_actionfunctions.cpp +++ b/src/p_actionfunctions.cpp @@ -6906,6 +6906,10 @@ DEFINE_ACTION_FUNCTION(AActor, A_SetSize) self->LinkToWorld(&ctx); ACTION_RETURN_BOOL(false); } + if (self->player && self->player->mo == self) + { + self->player->mo->FullHeight = newheight; + } ACTION_RETURN_BOOL(true); } diff --git a/src/p_user.cpp b/src/p_user.cpp index af1fbbf2d..c6b0a7d58 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -689,7 +689,8 @@ void APlayerPawn::Serialize(FSerializer &arc) ("userange", UseRange, def->UseRange) ("aircapacity", AirCapacity, def->AirCapacity) ("viewheight", ViewHeight, def->ViewHeight) - ("viewbob", ViewBob, def->ViewBob); + ("viewbob", ViewBob, def->ViewBob) + ("fullheight", FullHeight, def->FullHeight); } //=========================================================================== @@ -714,7 +715,7 @@ void APlayerPawn::BeginPlay () { Super::BeginPlay (); ChangeStatNum (STAT_PLAYER); - + FullHeight = Height; // Check whether a PWADs normal sprite is to be combined with the base WADs // crouch sprite. In such a case the sprites normally don't match and it is // best to disable the crouch sprite. @@ -766,11 +767,11 @@ void APlayerPawn::Tick() { if (player != NULL && player->mo == this && player->CanCrouch() && player->playerstate != PST_DEAD) { - Height = GetDefault()->Height * player->crouchfactor; + Height = FullHeight * player->crouchfactor; } else { - if (health > 0) Height = GetDefault()->Height; + if (health > 0) Height = FullHeight; } Super::Tick(); } @@ -2309,7 +2310,7 @@ void P_DeathThink (player_t *player) void P_CrouchMove(player_t * player, int direction) { - double defaultheight = player->mo->GetDefault()->Height; + double defaultheight = player->mo->FullHeight; double savedheight = player->mo->Height; double crouchspeed = direction * CROUCHSPEED; double oldheight = player->viewheight; @@ -3245,6 +3246,7 @@ DEFINE_FIELD(APlayerPawn, AirCapacity) DEFINE_FIELD(APlayerPawn, FlechetteType) DEFINE_FIELD(APlayerPawn, DamageFade) DEFINE_FIELD(APlayerPawn, ViewBob) +DEFINE_FIELD(APlayerPawn, FullHeight) DEFINE_FIELD(PClassPlayerPawn, HealingRadiusType) DEFINE_FIELD(PClassPlayerPawn, DisplayName) diff --git a/wadsrc/static/zscript/shared/player.txt b/wadsrc/static/zscript/shared/player.txt index 73b00a269..d4992e97f 100644 --- a/wadsrc/static/zscript/shared/player.txt +++ b/wadsrc/static/zscript/shared/player.txt @@ -37,6 +37,7 @@ class PlayerPawn : Actor native native Class FlechetteType; native color DamageFade; // [CW] Fades for when you are being damaged. native double ViewBob; // [SP] ViewBob Multiplier + native double FullHeight; Default {