Equip/Unequip - remove those sounds temporarily?

When you unequip and equip stuff there’s always a “schling” if it’s a sword etc. Sometimes I wish, in certain circumstances, that one could somehow block the game from playing these sounds. My guess is that this is impossible and/or hardcoded, but I thought to ask here anyway.
Sure, I could remove certain sounds by putting an identical wav file (with the same name, I mean) that is silent, but then ALL those equip/unequip sounds would go away. I just wish I could script when not wanting the game to play these kind of sounds.

Two examples from the module I’m working on now:

  • The PC and the party is imprisoned and in a dialogue node I strip the party of their items that are later retrievable. It’s just so darn obvious for the player that this is about to happen since he/she can hear the sound of me unequipping the party.
  • The PC and the party gets up on horses (just when entering an area) and I want them without weapons on those horses. I do a fade to black so that I hide the getting up on the horses since they are supposed to be on horses when we enter the area. Sure, I could get them up on horses when we jump from the other area, but then there still will be this ugly “schling” sound when the game takes away a sword from a character for example.

hi andgalf .why don’t you do it in a cutscene/dialogue. will the sound be played? / if I don’t know. I think that this can be somehow removed, but for this you need to get the sound being played through the script and play another one, or try to turn off the sounds in the area.
something like that but you need to get your sound somehow and turn it off / replace it.

Yes, one on the examples is in a cutscene and the sound is heard there.

I don’t think you can do it like that in this case, since I believe it is hardcoded.

The function used in these two cases is ActionUnequipItem, but there’s nothing in that function where you can remove the sound.

MusicBackgoundChange has nothing to do with this. I know since I’ve used that function countless of times in my modules. I mean, I’m at my 6th module now so… I’ve got some experience with this.

Don’t know . but here are a couple of ideas.

Also, in the mask of a betrayer, if you import a character, then we take away items - they are there, too, as they used it, maybe you will find something there.

Not sure what you mean…When they do that there, you mean there’s no sound? 'Cause if there is sound they are probably using the same function I’m doing.

SoundObjectSetVolume is about a sound object. That’s a totally different thing.


I have not tried this, but can you copy the item to the PCs inventory and destroy the original instead?

As I say, I have not tested this myself yet .

1 Like

I’m sorry but I’m not following you now. What has that to do with removing the “schling” sound temporarily of unequipping stuff?

I’m quoting myself:

I tried in a script to play a silent sound at the same time as the ActionUnequipItem happens, to somehow maybe cancel the other sound out, but that had no effect unfortunately.


The sound plays when you unequip. I was hoping that destroying the item would not count as an unequip.

The copy of the original equipped item into the inventory should not make the sound, I believe.

Have you tried it?


Ah, now I understand better. Thanks for the clarification! No, I have not tried that.

1 Like

@Lance_Botelle - I just tried it, but it still makes a sound unfortunately. Here’s the hourse mounting script function that @kevL_s was kind enough to make for me a little while back. I think you can see what I changed:

void MountHorse(object oCo, object oHorse)
	object oLHand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCo);
	object oRHand = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCo);
	if (GetIsObjectValid(oLHand))
		//AssignCommand(oCo, ActionUnequipItem(oLHand));
		CopyItem(oLHand, oCo, TRUE);
	if (GetIsObjectValid(oRHand))
		//AssignCommand(oCo, ActionUnequipItem(oRHand));
		CopyItem(oRHand, oCo, TRUE);
	AssignCommand(oCo, ActionEquipItem(oHorse, INVENTORY_SLOT_CLOAK));

So maybe the CopyItem function also makes sounds then? Or maybe the game considers destroying an item as an unequip…

EDIT: The only thing I can think of is that the Equipping of the horse makes a sound, but the horses are cloaks and the sound from the game was a blade “schling” so that can’t be it.


It’s sounding like the destroy also triggers the unequip then. Oh well . :thinking:

If it is any help, I believe the sound file is mentioned in the baseitems.2da.

If I think of anything else, I’ll post again.

1 Like

@Lance_Botelle - Thanks for trying to help!

Yes, and I believe they are mentioned in inventorysnds.2da too. So I could replace all the common sounds from dropping and equipping sounds, I guess, but I don’t like that approach, 'cause sometimes I think it’s good that the game tells the player that he has dropped or picked up or unequipped an item.


I wonder if just leaving the sound is probably the best, as it does give the player the heads up.

Or, hide the sound behind another in some way. Have some guards nearby who are drawing their weapons or a crowd cheering, etc. But that is governed by circumstances. I.e. Disguise the sound in some way.


I tried what you asked by putting a horse neighing at the same time as the “schling” but both are heard and the “schling” is still VERY obvious. So unfortunately that didn’t work that well.


As I say, if I can consider anything else, I’ll let you know … or maybe there is another way not thought of yet.

1 Like


OK, I checked the toolset and baseitems.2da refer to a sound that is found in the inventorysnds.2da (by the looks of it).

If you still wanted to try to use empty sound files, maybe it is one of those … which you could try, and then play your own equip/unequip sound from that hook when desired.

EG: Replace inventorysnds.2da with a blank/empty version. (Test if that stops the sounds.) Then use the data in that 2da to write an if/else if statement that checks for the 2da ref in the baseitems.2da (InvSoundType) and then manually play its reference, either direct from the script, or referring to your own renamed inventorysnds.2da instead.

This would (in theory) allow you full control over when inventory sounds are played.


That sounds cool. Don’t know exactly how to script that though. Goes a bit above my head to be honest.

sidenote: the following blocks should have braces (ie. there’s more than one command nested inside the condition)

re. Copy & DestroyObject() … perhaps the engine unequips the items before they get destroyed …

1 Like

@kevL_s - You are right, but I just did this for test purposes. Since it failed anyway I’ve gone back to your original function.

1 Like