For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

Immediate weapon auto-switching in recent 227j builds

Report bugs, read about fixes, new features and ask questions about the Unreal 227 patch here. Place comments and commit suggestions.
Post Reply
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Immediate weapon auto-switching in recent 227j builds

Post by Masterkent »

I noticed that when that recent changes in UScript code for some weapons (DP, Eightball and others) have changed the behavior when the "Auto-Switch Weapons" option is enabled (bNeverAutoSwitch is False). Previously, if you take a better weapon (according to the priorities), you could use the current weapon until you release the fire trigger or the weapon automatically makes a shot because it's fully loaded. Now, picking other weapon may instantly interrupt the loading process and force your current weapon to make a premature shot.

I wonder how this new behavior is better than the old one. Note that sometimes you can't even see what weapon you're taking - for example, when moving backwards or while strafing. Then, if you load your EightBall with rockets/grenades, you would deal with totally unexpected shooting (and potentially blowing yourself up). I think, this modification needs some discussion at least.
User avatar
Smirftsch
Administrator
Posts: 8999
Joined: Wed Apr 29, 1998 10:00 pm
Location: NaPali
Contact:

Re: Immediate weapon auto-switching in recent 227j builds

Post by Smirftsch »

I have to admit that I agree here, I didn't see this change, but I indeed prefer the old behavior as well- not meaning that there was not some reasoning behind nevertheless :)
Sometimes you have to lose a fight to win the war.
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Immediate weapon auto-switching in recent 227j builds

Post by Masterkent »

Perhaps, the idea was to make these weapons behave in a way that some others already do. For instance, Stinger can be automatically replaced with other weapon without waiting for out of ammo condition or releasing fire triggers by the player. However, we should keep in mind that weapon switching is often very undesirable during an intense combat. In particular, Minigun is commonly used in time-critical situations; in such cases, if the player keeps holding the fire button, he probably doesn't want to interrupt his attack.

For loadable weapons (GESBioRifle, DispersionPistol, Eightball), players would probably prefer to have a proper control over the moment when loading is finished and shooting takes place.

Having these condiserations, here are my thoughts regarding the UScript files:

UnrealI/Classes/
GESBioRifle.uc - old implementation is better, the change should be reverted;
Minigun.uc - old implementation is better, the change should be reverted;
RazorJack.uc - the change isn't valuable from my point of view;
Rifle.uc - the change isn't valuable from my point of view;

UnrealShare/Classes/
DispersionPistol.uc - old implementation is better, the change should be reverted;
Eightball.uc - old implementation is better, the change should be reverted;
User avatar
Hyper
OldUnreal Member
Posts: 3508
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Re: Immediate weapon auto-switching in recent 227j builds

Post by Hyper »

I don't know if it is related, but I noticed that when I log in to my coop server, at least after patching, I'm not holding any weapon. I still have all weapons but I have to switch to it first. Because I don't have done any testing to this I did not yet make a report for it but maybe it is somehow related.
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
User avatar
.:..:
OldUnreal Member
Posts: 1634
Joined: Tue Aug 16, 2005 4:35 am

Re: Immediate weapon auto-switching in recent 227j builds

Post by .:..: »

Hmm the reason I did this change was to prevent one from keep firing while feing death, but didn't consider it would effect auto-switch.

Maybe auto weapon switch could instead be changed to wait until user releases fire for any weapon?
Or then feign death could be made to force bFire and bAltFire to zero.

As a modding standpoint it could be useful to have weaponchange force weapon to stop firing (such as for StrangeWorld controllable cannon where its meant to holster the weapon).
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Immediate weapon auto-switching in recent 227j builds

Post by Masterkent »

.:..: wrote: Sat May 08, 2021 8:09 am Hmm the reason I did this change was to prevent one from keep firing while feing death, but didn't consider it would effect auto-switch.
I think, weapon's code is a wrong place for handling such conditions.
.:..: wrote: Sat May 08, 2021 8:09 amMaybe auto weapon switch could instead be changed to wait until user releases fire for any weapon?
Can this be done without a risk to introduce other subtle side effects?
.:..: wrote: Sat May 08, 2021 8:09 amOr then feign death could be made to force bFire and bAltFire to zero.
That looks like the most appropriate solution. I would also add EndZoom() for turning zooming off when using Rifle-like weapons.

Code: Select all

	function BeginState()
	{
		local rotator NewRot;

		if (Role == ROLE_Authority && CarriedDecoration != none)
			DropDecoration();
		NewRot = Rotation;
		NewRot.Pitch = 0;
		SetRotation(NewRot);
+
		BaseEyeHeight = -0.5 * CollisionHeight;
+		EndZoom();
+		bFire = 0;
+		bAltFire = 0;
		bIsCrouching = false;
		bPressedJump = false;
		bRising = false;
+
		Disable('AnimEnd');
		PlayFeignDeath();
		PlayerReplicationInfo.bFeigningDeath = true;
		bSaveClientPlayerState = true;
		if (SupportsRealCrouching())
			RealCrouchInfo.UpdateCrouch();
	}
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Immediate weapon auto-switching in recent 227j builds

Post by Masterkent »

.:..: wrote: Sat May 08, 2021 8:09 amAs a modding standpoint it could be useful to have weaponchange force weapon to stop firing (such as for StrangeWorld controllable cannon where its meant to holster the weapon).
I looked at the code of that cannon. It resets bFire and bAltFire and calls EndZoom() - similarly as described above:

Code: Select all

function ControlWeaponStart()
{
	// put pawns weapon down and replace it with NoWeapon
	// the if() is needed in case that the player controls
	// more than one controlmover
	bSwitchWeapon = False;
	NoWeapon = spawn(class'NoWeaponNoFire', cControler);
	
	if	( Pawn(cControler).Weapon.class != NoWeapon.class )
	{
		cWeapon = Pawn(cControler).Weapon;
		NoWeapon.SetOwner(cControler);

		Pawn(cControler).Weapon.TweenDown();
		Pawn(cControler).Weapon = NoWeapon;
		Pawn(cControler).PendingWeapon = NoWeapon;
		Pawn(cControler).Weapon.BringUp();
		bSwitchWeapon = True;
	}
	// if the tActor is firing stop firing
	Pawn(cControler).bFire = 0;
	Pawn(cControler).bAltFire = 0;
	// if the tActor is a playerpawn
	// end zoom just for the case the player is holding
	// a rifle (or other weapon) in zoom mode
	if ( cControler.IsA('PlayerPawn') )
		PlayerPawn(cControler).EndZoom();
}
Post Reply

Return to “Unreal 227”