diff --git a/src/g_game.cpp b/src/g_game.cpp index 32563b9c90..dd5e73e753 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -756,10 +756,15 @@ static int LookAdjust(int look) if (players[consoleplayer].playerstate != PST_DEAD && // No adjustment while dead. players[consoleplayer].ReadyWeapon != NULL) // No adjustment if no weapon. { - auto scale = players[consoleplayer].ReadyWeapon->FloatVar(NAME_FOVScale); - if (scale > 0) // No adjustment if it is non-positive. + auto FOVScale = players[consoleplayer].ReadyWeapon->FloatVar(NAME_FOVScale); + auto LookScale = players[consoleplayer].ReadyWeapon->FloatVar(NAME_LookScale); + if (FOVScale > 0) // No adjustment if it is non-positive. { - look = int(look * scale); + look = int(look * FOVScale); + } + if (LookScale > 0) // No adjustment if it is non-positive. + { + look = int(look * LookScale); } } return look; diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 488ac4f0d0..c69430b093 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -2019,7 +2019,7 @@ void FMapInfoParser::ParseEpisodeInfo () { ParseAssign(); sc.MustGetString (); - name = sc.String; + name = strbin1(sc.String); } else if (sc.Compare ("picname")) { diff --git a/src/gamedata/g_skill.cpp b/src/gamedata/g_skill.cpp index 897ffdc76f..1b8d15e14a 100644 --- a/src/gamedata/g_skill.cpp +++ b/src/gamedata/g_skill.cpp @@ -214,7 +214,7 @@ void FMapInfoParser::ParseSkill () { ParseAssign(); sc.MustGetString (); - skill.MenuName = sc.String; + skill.MenuName = strbin1(sc.String); } else if (sc.Compare("PlayerClassName")) { diff --git a/src/gamedata/umapinfo.cpp b/src/gamedata/umapinfo.cpp index ac82ff8e2f..39b91efd39 100644 --- a/src/gamedata/umapinfo.cpp +++ b/src/gamedata/umapinfo.cpp @@ -24,6 +24,7 @@ #include "r_defs.h" #include "p_setup.h" #include "gi.h" +#include "cmdlib.h" FName MakeEndPic(const char *string); @@ -231,7 +232,7 @@ static int ParseStandardProperty(FScanner &scanner, UMapEntry *mape) // add the given episode FEpisode epi; - epi.mEpisodeName = split[1]; + epi.mEpisodeName = strbin1(split[1]); epi.mEpisodeMap = mape->MapName; epi.mPicName = split[0]; epi.mShortcut = split[2][0]; diff --git a/src/utility/namedef.h b/src/utility/namedef.h index 470a58a25b..4d54aadfc7 100644 --- a/src/utility/namedef.h +++ b/src/utility/namedef.h @@ -1029,6 +1029,7 @@ xx(Kickback) xx(MinSelAmmo1) xx(bDehAmmo) xx(FOVScale) +xx(LookScale) xx(YAdjust) xx(Crosshair) xx(WeaponFlags) diff --git a/wadsrc/static/zscript/actors/inventory/weapons.zs b/wadsrc/static/zscript/actors/inventory/weapons.zs index 2bddece742..de7a024ce2 100644 --- a/wadsrc/static/zscript/actors/inventory/weapons.zs +++ b/wadsrc/static/zscript/actors/inventory/weapons.zs @@ -28,6 +28,7 @@ class Weapon : StateProvider Ammo Ammo1, Ammo2; // In-inventory instance variables Weapon SisterWeapon; double FOVScale; + double LookScale; // Multiplier for look sensitivity (like FOV scaling but without the zooming) int Crosshair; // 0 to use player's crosshair bool GivenAsMorphWeapon; bool bAltFire; // Set when this weapon's alternate fire is used. @@ -58,6 +59,7 @@ class Weapon : StateProvider property BobRangeY: BobRangeY; property SlotNumber: SlotNumber; property SlotPriority: SlotPriority; + property LookScale: LookScale; flagdef NoAutoFire: WeaponFlags, 0; // weapon does not autofire flagdef ReadySndHalf: WeaponFlags, 1; // ready sound is played ~1/2 the time