Jump to content

Change clothes to enter Power Armor


Shreever

Recommended Posts

I would like for someone to create a mod that makes the player character remove all of their bulky armor before entering Power Armor.

 

It has always bugged me to see my character step into power armor and see bits and pieces sticking out here and there. It doesn't make much sense to jump in wearing a full set of heavy armor.

 

I would like to see a mod menu that allows the player to specify a set (or sets) of clothing to change into before stepping into the power armor. If nothing specified is in your inventory, then it defaults to nude/undies/whatever. A clothes change or simple armor pat-down animation would be great too.

 

If this has already been done, I apologize.(let me know where it is!) I have been looking off and on for months now and have found nothing.

 

Thanks for checking out my request and let me know if you are interested in helping out!

Link to comment
Share on other sites

  • 3 years later...

Yeah I would like to see this as well... Character removes anything heavy only sleepwear or nude upon entering - Lingerie underwear panties bras anything light or nude

Link to comment
Share on other sites

PowerArmor Handling Improvements can be configured to remove armor on entering. I do think it's overly generous in what it considers "armor" or not though. Personally I'd rather it only allow skinsuits (vault jumpsuit, BoS uniform) or nude.

 

Unfortunately script sources aren't included so there's no way to look at it and figure out what the criteria is. My guess is some keyword. If I had the source I could create a new keyword and alter the script to look for that, and strip off everything else.

 

Edit: looks like the keyword is usePowerArmorFrame. The vault suit is usePowerArmorFrameVault, the BoS under armor is usePowerArmorFrameBoS. Various other ones along the same line. Six keywords total, but one of those is specific to Ingram.

Link to comment
Share on other sites

That is so strange. It looks like what happens when you get into power armor is a race change to PowerArmorRace.

 

Ok, here's the script that handles entering and exiting power armor:

ScriptName PowerArmorActivatorScript extends ObjectReference

Int Property BatteryLife Auto
Int Property MaxBatteryLife Auto
SystemPowerArmorScript Property SystemPowerArmorQuest Auto

Event OnActivate(ObjectReference akActionRef)
	If akActionRef == Game.GetPlayer()
		;if I'm already in this power armor, step out
		If Self == (SystemPowerArmorQuest.myPowerArmorRef)
			SystemPowerArmorQuest.PowerArmorShutDown()

--------------------------> Restore Clothing Here

		;if I'm not in any power armor, step in
		ElseIf (SystemPowerArmorQuest.myPowerArmorRef) == None

--------------------------> Remove clothing here

			SystemPowerArmorQuest.PowerArmorStartUp(Self, BatteryLife, MaxBatteryLife)
		;if I'm in another suit of power armor, step out, then step in
		Else
			SystemPowerArmorQuest.PowerArmorShutDown()
			SystemPowerArmorQuest.PowerArmorStartUp(Self, BatteryLife, MaxBatteryLife)
		EndIf
	EndIf
EndEvent

;update battery levels based on current data inside the Power Armor System
Function PowerArmorSystemSync(int SystemBatteryLife, int SystemMaxBatteryLife)
	BatteryLife = SystemBatteryLife
	MaxBatteryLife = SystemMaxBatteryLife
EndFunction

Modifying that to remove all clothing when entering should work. If you want to automatically get dressed on exit you have to store what the player is wearing, and re-equip at the indicated spot.

 

Stripping should be, um, Game.GetPlayer().Unequip... ok, not sure lol As usual you can find guidance on unequipping one thing, but not everything.

Link to comment
Share on other sites

That is so strange. It looks like what happens when you get into power armor is a race change to PowerArmorRace.

 

Ok, here's the script that handles entering and exiting power armor:

ScriptName PowerArmorActivatorScript extends ObjectReference

Int Property BatteryLife Auto
Int Property MaxBatteryLife Auto
SystemPowerArmorScript Property SystemPowerArmorQuest Auto

Event OnActivate(ObjectReference akActionRef)
	If akActionRef == Game.GetPlayer()
		;if I'm already in this power armor, step out
		If Self == (SystemPowerArmorQuest.myPowerArmorRef)
			SystemPowerArmorQuest.PowerArmorShutDown()

--------------------------> Restore Clothing Here

		;if I'm not in any power armor, step in
		ElseIf (SystemPowerArmorQuest.myPowerArmorRef) == None

--------------------------> Remove clothing here

			SystemPowerArmorQuest.PowerArmorStartUp(Self, BatteryLife, MaxBatteryLife)
		;if I'm in another suit of power armor, step out, then step in
		Else
			SystemPowerArmorQuest.PowerArmorShutDown()
			SystemPowerArmorQuest.PowerArmorStartUp(Self, BatteryLife, MaxBatteryLife)
		EndIf
	EndIf
EndEvent

;update battery levels based on current data inside the Power Armor System
Function PowerArmorSystemSync(int SystemBatteryLife, int SystemMaxBatteryLife)
	BatteryLife = SystemBatteryLife
	MaxBatteryLife = SystemMaxBatteryLife
EndFunction

Modifying that to remove all clothing when entering should work. If you want to automatically get dressed on exit you have to store what the player is wearing, and re-equip at the indicated spot.

 

Stripping should be, um, Game.GetPlayer().Unequip... ok, not sure lol As usual you can find guidance on unequipping one thing, but not everything.

Would it be possible to remove stuff by what slot they occupy? I am not real familiar with the system, so, don't know if armor is considered some clothing..... (but, you can wear armor with clothing.... so, gotta be some difference there.) Simply unequipping certain items when you step in, storing what they were in some variable, then restoring when you step out. (or, make folks re-equip it when the step out....) Should be able to wear clothes, glasses, bandana.... even in power armor..... but, armor, hats, helmets, etc, would have to come off.

Link to comment
Share on other sites

 

Would it be possible to remove stuff by what slot they occupy? I am not real familiar with the system, so, don't know if armor is considered some clothing..... (but, you can wear armor with clothing.... so, gotta be some difference there.) Simply unequipping certain items when you step in, storing what they were in some variable, then restoring when you step out. (or, make folks re-equip it when the step out....) Should be able to wear clothes, glasses, bandana.... even in power armor..... but, armor, hats, helmets, etc, would have to come off.

 

 

Yes, it's possible to just remove whatever is equipped in a specific slot, such as removing whatever is in the head slot to get rid of helmets, or the hand slot for gloves. The problem being that the head slot might be glasses instead of a helmet. Theoretically glasses should be in the "eye" slot (the vanilla ones are) but mod authors mess up on slots fairly often. I frequently have to fix mods where the author has slotted things wrong and only half the close show up.

Link to comment
Share on other sites

Armors can be easily removed from the player and added to a temporary container by a quest script like this:

Scriptname SCRIPTNAME extends Quest Const

Keyword Property (isPowerArmorFrame) Auto Const
Actor Property PlayerRef Auto Const
Keyword Property ObjectTypeArmor Auto Const
{Most armors have this keyword.}
ObjectReference Property MyContainer Auto Const
{Reference of a (persistent) container in the game world. Should be placed in a holding cell.}


Event OnQuestInit()
	RegisterForRemoteEvent(PlayerRef, "OnItemEquipped")
EndEvent


Event Actor.OnItemEquipped(Actor akSender, Form akBaseObject, ObjectReference akReference)

	if akSender == PlayerRef && akBaseObject.HasKeyword(isPowerArmorFrame)

		int iArmorCount = PlayerRef.GetItemCount(ObjectTypeArmor)

		PlayerRef.RemoveItem(ObjectTypeArmor, iArmorCount, abSilent = true, akOtherContainer = MyContainer)

                ;removed items can be also added back to the player immediately

	endif

EndEvent

To re-add your armors, use the OnItemUnequipped event (this event fires when you exit the armor).

 

EDIT: I totally forgot about the F4SE (actor script) function GetWornItem() in my original post..

Edited by LarannKiar
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...