diff --git a/polymer/eduke32/source/duke3d.h b/polymer/eduke32/source/duke3d.h index 7232abac4..71969b5fa 100644 --- a/polymer/eduke32/source/duke3d.h +++ b/polymer/eduke32/source/duke3d.h @@ -57,7 +57,7 @@ extern "C" { #define VOLUMEONE (g_Shareware == 1) // increase by 3, because atomic GRP adds 1, and Shareware adds 2 -#define BYTEVERSION_JF 249 +#define BYTEVERSION_JF 252 #define BYTEVERSION_13 27 #define BYTEVERSION_14 116 diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index c8d9d4bd6..166d6340f 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -971,6 +971,8 @@ const memberlabel_t PlayerLabels[]= { "max_shield_amount", PLAYER_MAX_SHIELD_AMOUNT, 0, 0 }, { "max_ammo_amount", PLAYER_MAX_AMMO_AMOUNT, LABEL_HASPARM2, MAX_WEAPONS }, { "last_quick_kick", PLAYER_LAST_QUICK_KICK, 0, 0 }, + { "autostep", PLAYER_AUTOSTEP, 0, 0 }, + { "autostep_sbw", PLAYER_AUTOSTEP_SBW, 0, 0 }, { "", -1, 0, 0 } // END OF LIST }; diff --git a/polymer/eduke32/source/gamedef.h b/polymer/eduke32/source/gamedef.h index 1d9bfff9d..8a8a1e3b3 100644 --- a/polymer/eduke32/source/gamedef.h +++ b/polymer/eduke32/source/gamedef.h @@ -319,6 +319,8 @@ enum PlayerLabel_t PLAYER_MAX_SHIELD_AMOUNT, PLAYER_MAX_AMMO_AMOUNT, PLAYER_LAST_QUICK_KICK, + PLAYER_AUTOSTEP, + PLAYER_AUTOSTEP_SBW, PLAYER_END }; diff --git a/polymer/eduke32/source/gamestructures.c b/polymer/eduke32/source/gamestructures.c index 51a8f6ac1..7ac1fbdb3 100644 --- a/polymer/eduke32/source/gamestructures.c +++ b/polymer/eduke32/source/gamestructures.c @@ -1524,7 +1524,11 @@ static void __fastcall VM_GetPlayer(register int32_t lVar1, register int32_t lLa case PLAYER_MAX_AMMO_AMOUNT: Gv_SetVarX(lVar2, ps->max_ammo_amount[lParm2]); return; case PLAYER_LAST_QUICK_KICK: - Gv_SetVarX(lVar2, ps->last_quick_kick); + Gv_SetVarX(lVar2, ps->last_quick_kick); return; + case PLAYER_AUTOSTEP: + Gv_SetVarX(lVar2, ps->autostep); return; + case PLAYER_AUTOSTEP_SBW: + Gv_SetVarX(lVar2, ps->autostep_sbw); return; default: @@ -1871,7 +1875,11 @@ static void __fastcall VM_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVa case PLAYER_MAX_AMMO_AMOUNT: ps->max_ammo_amount[lParm2]=lVar1; return; case PLAYER_LAST_QUICK_KICK: - ps->last_quick_kick=lVar1; + ps->last_quick_kick=lVar1; return; + case PLAYER_AUTOSTEP: + ps->autostep=lVar1; return; + case PLAYER_AUTOSTEP_SBW: + ps->autostep_sbw=lVar1; return; default: @@ -3806,6 +3814,10 @@ static int32_t __fastcall VM_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, in return ps->max_ammo_amount[lParm2]; case PLAYER_LAST_QUICK_KICK: return ps->last_quick_kick; + case PLAYER_AUTOSTEP: + return ps->autostep; + case PLAYER_AUTOSTEP_SBW: + return ps->autostep_sbw; default: return -1; } diff --git a/polymer/eduke32/source/player.c b/polymer/eduke32/source/player.c index e1f356200..09ce4fb14 100644 --- a/polymer/eduke32/source/player.c +++ b/polymer/eduke32/source/player.c @@ -5172,8 +5172,8 @@ void P_ProcessInput(int32_t snum) } HORIZONLY: - if (psectlotag == ST_1_ABOVE_WATER || p->spritebridge == 1) i = (4L<<8); - else i = (20L<<8); + if (psectlotag == ST_1_ABOVE_WATER || p->spritebridge == 1) i = p->autostep_sbw; + else i = p->autostep; if (p->cursectnum >= 0 && sector[p->cursectnum].lotag == ST_2_UNDERWATER) k = 0; else k = 1; diff --git a/polymer/eduke32/source/player.h b/polymer/eduke32/source/player.h index b0fbd2a49..de39cd455 100644 --- a/polymer/eduke32/source/player.h +++ b/polymer/eduke32/source/player.h @@ -147,6 +147,7 @@ typedef struct { int32_t truefz, truecz, player_par; int32_t randomflamex, exitx, exity; int32_t runspeed, max_player_health, max_shield_amount; + int32_t autostep, autostep_sbw; uint32_t interface_toggle_flag; diff --git a/polymer/eduke32/source/premap.c b/polymer/eduke32/source/premap.c index 0ce2b6a6c..51f22927c 100644 --- a/polymer/eduke32/source/premap.c +++ b/polymer/eduke32/source/premap.c @@ -1670,6 +1670,9 @@ static void resetpspritevars(char g) g_player[j].ps->frag_ps = j; actor[i].owner = i; + g_player[j].ps->autostep = (20L<<8); + g_player[j].ps->autostep_sbw = (4L<<8); + actor[i].bposx = g_player[j].ps->bobposx = g_player[j].ps->opos.x = g_player[j].ps->pos.x = s->x; actor[i].bposy = g_player[j].ps->bobposy = g_player[j].ps->opos.y = g_player[j].ps->pos.y = s->y; actor[i].bposz = g_player[j].ps->opos.z = g_player[j].ps->pos.z = s->z;