Any way to stop the incessant SMG reload idle animation?

@AnotherLife I feel your pain. I don't think it's possible currently, but I'm still searching for the filename of the sound. I believe the sound is the most distracting part.
 
Last edited by a moderator:
No, actually @BreakinBenny is right. It's hmxxxia.acm (and its conterpart hmxxxja.acm for rifles). Somehow they don't sound quite the same in winamp, so I couldn't recognize them.
Anyway, to stop the annoying sounds, you just need to drop an empty acm file with the corresponding name into SFX directory.
 
Last edited by a moderator:
However, the SOUND.LST will have to be refreshed with "regsnd.exe" so it doesn't crash your game upon trying to play a file whose information doesn't match the LST file's.
 
So this problem has been bugging me a lot lately as well. I finally had to use the audio file replacement method to alleviate the annoyance.

I did some testing, and it seems the idle animation runs about every 5-6 seconds on regular game speed. The thing about it is that it runs the same for every weapon. But depending on the animation of the weapon the animation and sound are different. So for every animation there is a separate sound file. There is about 8 or 10 animations total. almost all guns are annoying, but the melee ones are more tolerable, although even they get on your nerve once you speed the game up. The sounds are so bothersome I've noticed myself unconsciously muting the game.

Now removing all the sounds is "A" solution, but then you don't have any of those sounds anymore, ever.


I'm wondering is it possible to change the timer for this animation through sfall? If so then it would be a true fix.

If it could be set to 30 seconds, or it could be dynamically changed according to game speed, would be perfect. So could this be fixed with sfall? or is it too much of a hassle?
 
Control in the script what time interval the idle animation will be executed.
Code:
variable nexttime;

procedure start begin
   if game_loaded then begin
      set_global_script_type(0);
      set_global_script_repeat(1000);
   end
   else begin
      variable time = read_int(0x510734);
      if (nexttime != time) then begin
         nexttime = time + ONE_GAME_MINUTE *100;
         write_int(0x510734, nexttime);
      end
   end
end

or simply random: write_int(0x418356, ONE_GAME_MINUTE*100);
 
From the engine code, the interval to determine the next idle animation is based on:
roll_random_(0, 3000) + 1000 * (1 to 7), I think the values are in system ticks (millisecond).
 
Last edited:
Wonderful. I'm not familiar with some of those functions, but I should be able to figure it out.

So is 0x510734 the offset for the timer of this anim?

Now what's that second offset exactly? (0x418356)

Also interested to know where you got the offsets, I'd like to have a look at the page if there is one. I think I maybe saw a page with a lot of offsets somewhere in sfall source code, is that where this is from?


also curious, how have you guys been dealing with this issue yourselves in the past? (Nova and Stalin). replaced audio files?
 
Sorry guys, could any of you give some pointers on how to remove the idle animations? I tried using this script
Code:
#include "define_lite.h"

procedure start;

variable nexttime;

procedure start begin
   if game_loaded then begin
      set_global_script_type(0);
      set_global_script_repeat(1000);
   end
   else begin
      variable time = read_int(0x510734);
      if (nexttime != time) then begin
         nexttime = time + ONE_GAME_MINUTE *100;
         write_int(0x510734, nexttime);
      end
   end
end
to try to prolong the gap between the idle animations, but it doesn't seem to do anything. Does anyone know how to make it work? @burn @NovaRain @Mr.Stalin

I just compiled it as an int script and put it into data\scripts folder. I'm obviously not familiar with Fallout modding at all.
 
Sorry guys, could any of you give some pointers on how to remove the idle animations? I tried using this script
Code:
#include "define_lite.h"

procedure start;

variable nexttime;

procedure start begin
   if game_loaded then begin
      set_global_script_type(0);
      set_global_script_repeat(1000);
   end
   else begin
      variable time = read_int(0x510734);
      if (nexttime != time) then begin
         nexttime = time + ONE_GAME_MINUTE *100;
         write_int(0x510734, nexttime);
      end
   end
end
to try to prolong the gap between the idle animations, but it doesn't seem to do anything. Does anyone know how to make it work? @burn @NovaRain @Mr.Stalin

I just compiled it as an int script and put it into data\scripts folder. I'm obviously not familiar with Fallout modding at all.
strange, the script delays idle animation for me.

Name of the script should start with gl_.
For this script name can be gl_idle.int
Try something like this
Code:
#include "define_lite.h"

procedure start;

variable nexttime;

procedure start begin
   if game_loaded then begin
      set_global_script_type(0);
      set_global_script_repeat(100);
   end
   else begin
      variable time = read_int(0x510734);
      set_global_script_repeat(1000);
      if (nexttime != time) then begin
         nexttime = time + ONE_GAME_MINUTE *100;
         write_int(0x510734, nexttime);
      end
   end
end
 
Last edited:
That has helped thanks. That said NPCs are still using idle animations (at least Sulik in my case, don't have anyone else in the party). Do NPCs use idle animations on your end? @DeKRuS

Edit: or let me rephrase it. This doesn't really remove the idle animations, it just prolongs the gap. What should I set the variable to remove it?
nexttime = time -1; ?

Edit2: nexttime = time -1; doesn't remove it :)
Edit3: ok, I just settled on making the gap extra large, that's good enough (in my case * 10000000). Big thanks to @DeKRuS
 
Last edited:
@kokeeby If you want to completely remove it, try this

Code:
#include define_lite.h"


procedure start;

variable nexttime;

procedure start begin
   if game_loaded then begin
      set_global_script_type(0);
      set_global_script_repeat(100);
   end
   else begin
      variable time = read_int(0x510734);
      if (nexttime != time) then begin
         nexttime = -1;
         write_int(0x510734, nexttime);
      end
   end
end

at least for me it removes the animation from the player and party members : )
A couple of times the animation may be played, and then stop from playing until the next save game load.
 
Back
Top