Jump to content

Big Guns for Girls


Drakous79

Recommended Posts

Have you noticed women have smaller weapons and are holding them wrong? Well, the size part can be solved in XComGame.upk, XComUnitPawn.AttachItem. May be old news.

if(bIsFemale && !IsA('XComMecPawn'))
{
    MeshComp.SetScale(0.750);
}

Wrong holding seems to be model issue.

 

PatcherGUI mod file (try FLOAT=2.0):

 

 

DESCRIPTION=Gives big guns to girls. The same as boys have.

UPK_FILE=XComGame.upk
OBJECT=XComUnitPawn.AttachItem

REL_OFFSET=0xB8
FLOAT=1.0

 

 

Link to comment
Share on other sites

I'd noticed this -- it was the inspiration for performing overall scaling on the alien models that we use in Long War EW to differentiate more powerful aliens from the regular ones.

 

Also, I don't really care for the oversize "cartoony" big gun effect so in Long War EW we also scale down the male weapon models to 85%.

 

I agree that the slightly "off" way they are holding it appears to be an issue with the model animation.

 

Here's my UPKmodder file that is used in Long War, which scales female weapons to 75% and male weapons to 85% :

 

 

MODFILEVERSION=4
UPKFILE=XComGame.upk
GUID=1C 18 A1 1A 2B C3 34 4E 8B 2C 72 33 CD 16 7E 3E // XComGame_EW_patch3.upk
FUNCTION=AttachItem@XComUnitPawn

//slightly scale down ridiculously large weapons on male pawns

[BEFORE_HEX]
[HEADER]

[/HEADER]
[CODE]
//if(bIsFemale && !IsA('XComMecPawn'))
07 C9 00 82 2D 01 51 3D 00 00 18 0E 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16 16 

//MeshComp.SetScale(0.750)
19 00 71 3E 00 00 0F 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 1E 00 00 40 3F 16 

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16 

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00 

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16 

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16 

//MeshComp.CastShadow = false
14 19 00 71 3E 00 00 0A 00 F3 FE FF FF 00 2D 01 F3 FE FF FF 28 

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16 

//0b
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]

[/HEADER]
[CODE]
//start 0x86
//if(!IsA('XComMecPawn')
07 EA 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16 

	//MeshComp.SetScale((bIsFemale ? 0.75 : 0.85))
	19 00 71 3E 00 00 18 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 45 2D 01 51 3D 00 00 05 00 1E 00 00 40 3F 05 00 1E 9A 99 59 3F 16 

	// null ops
	00 71 3E 00 00 00 71 3E 00 00 00 71 3E 00 00 0B

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16 

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00 

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16 

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16 

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16 

//0b
[/CODE]
[/AFTER_HEX] 

 

 

 

Also, here's the snippet of code I use the the XGUnit.DebugAnims helper function to rescale aliens based on DGC.ini variables :

 

 

//if(m_iFlamethrowerCharges != 0)
07 5F 05 9B 01 01 3A 00 00 25 16 

	//vScreenPos.X = float(1) + float(m_iFlamethrowerCharges)/float(100)
	0F 35 0C FD FF FF 16 F9 FF FF 00 01 00 E8 CA 00 00 AE 38 3F 2C 01 AC 38 3F 01 01 3A 00 00 38 3F 2C 64 16 16 

	//vScreenPos.X = FClamp(vScreenPos.X, 0.2, 10.0)
	0F 35 0C FD FF FF 16 F9 FF FF 00 01 00 E8 CA 00 00 F6 35 0C FD FF FF 16 F9 FF FF 00 01 00 E8 CA 00 00 1E CD CC 4C 3E 1E 00 00 20 41 16 

	//foreach GetPawn().ComponentList(class'MeshComponent', MeshComp)
	2F 19 1B 9F 3A 00 00 00 00 00 00 16 5B 00 00 00 00 00 00 1C 5D FC FF FF 20 00 FE FF FF 00 71 3E 00 00 16 5E 05 

		//MeshComp.SetScale(vScreenPos.X)
		19 00 71 3E 00 00 26 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 35 0C FD FF FF 16 F9 FF FF 00 01 00 E8 CA 00 00 16 

		//IN
		31 

		//IP
		30 	
 

 

 

 

I use the m_iFlamethrowerCharges variable to store the accumulated size increase (since aliens can't have flamethrowers). It's all set up so that each level of leader or navigator can provide it's own small bit of increase which add up.

Link to comment
Share on other sites

  • 4 weeks later...

Could someone of you make a Version of the smaller weapons for males, but for the PatcherGUI?

I installed the female 1.0 weapon scaling from Drakus79 for testing and it worked, but with the one from Amineri I get an error. I suppose that one from Amineri will not work with the PatcherGUI (or without the Long War mod) ?

 

I would be grateful if someone could help.

Link to comment
Share on other sites

The file I posted is something I created for use with UPKmodder. The PatcherGUI format is similar but not quite the same, so it will require a little bit of tweaking to get working. However it's basically just a before/after hex replacement -- no resizing or anything fancy.

Link to comment
Share on other sites


UPK_FILE=XComGame.upk
OBJECT=XComUnitPawn.AttachItem

//slightly scale down ridiculously large weapons on male pawns

[BEFORE_HEX]
//if(bIsFemale && !IsA('XComMecPawn'))
07 C9 00 82 2D 01 51 3D 00 00 18 0E 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16 16

//MeshComp.SetScale(0.750)
19 00 71 3E 00 00 0F 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 1E 00 00 40 3F 16

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16

//MeshComp.CastShadow = false
14 19 00 71 3E 00 00 0A 00 F3 FE FF FF 00 2D 01 F3 FE FF FF 28

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16

//0b
[/BEFORE_HEX]


[AFTER_HEX]
//start 0x86
//if(!IsA('XComMecPawn')
07 EA 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16

//MeshComp.SetScale((bIsFemale ? 0.75 : 0.85))
19 00 71 3E 00 00 18 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 45 2D 01 51 3D 00 00 05 00 1E 00 00 40 3F 05 00 1E 9A 99 59 3F 16

// null ops
00 71 3E 00 00 00 71 3E 00 00 00 71 3E 00 00 0B

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16

//0b
[/AFTER_HEX]
Should work with PatcherGUI.
Link to comment
Share on other sites

  • 1 year later...

Thanks a lot guys! Making epic size differences between soldiers was one of the most horible things I have encountered in this game. The game is more immersive for me now.

 

I modified the code a little to give both sexes %85 scale on weapons and added info for customization:

DESCRIPTION=Scales all weapons to 85% for both sexes.
Original script by Amineri, converted for PatcherGUI by wghost81.
Modified script by ViperCanel to 85% scale for both sexes.
Also added scale table of Bertilsson for easy customization.

UPK_FILE=XComGame.upk
OBJECT=XComUnitPawn.AttachItem

// Scale code table
// Scale 1.50: 00 00 C0 3F
// Scale 1.00: 00 00 80 3F (original male weapons)
// Scale 0.95: 33 33 73 3F
// Scale 0.90: 66 66 66 3F
// Scale 0.85: 9A 99 59 3F
// Scale 0.80: CD CC 4C 3F
// Scale 0.75: 00 00 40 3F (original female weapons)

[BEFORE_HEX]
//if(bIsFemale && !IsA('XComMecPawn'))
07 C9 00 82 2D 01 51 3D 00 00 18 0E 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16 16

//MeshComp.SetScale(0.750)
19 00 71 3E 00 00 0F 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 1E 00 00 40 3F 16

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16

//MeshComp.CastShadow = false
14 19 00 71 3E 00 00 0A 00 F3 FE FF FF 00 2D 01 F3 FE FF FF 28

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16

//0b
[/BEFORE_HEX]


[AFTER_HEX]
//start 0x86
//if(!IsA('XComMecPawn')
07 EA 00 81 C5 21 E3 80 00 00 00 00 00 00 16 16

	//MeshComp.SetScale((bIsFemale ? 0.85 : 0.85)) // (female scale : male scale)
	19 00 71 3E 00 00 18 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 45 2D 01 51 3D 00 00 05
	00 1E 9A 99 59 3F 05 // set female weapons to 0.85 scale
	00 1E 9A 99 59 3F 16 // set male weapons to 0.85 scale

	// null ops
	00 71 3E 00 00 00 71 3E 00 00 00 71 3E 00 00 0B

//Mesh.AttachComponentToSocket(MeshComp, SocketName)
19 01 47 FD FF FF 1C 00 00 00 00 00 00 1C 6A FA FF FF 00 71 3E 00 00 00 74 3E 00 00 16

//kFoundMeshComponent = MeshComp
0F 48 72 3E 00 00 00 71 3E 00 00

//MeshComp.SetLightEnvironment(LightEnvironment)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C A0 FA FF FF 01 61 3D 00 00 16

//MeshComp.SetShadowParent(Mesh)
19 00 71 3E 00 00 13 00 00 00 00 00 00 1C 97 FA FF FF 01 47 FD FF FF 16

//MeshComp.PrestreamTextures(1.0, true)
19 00 71 3E 00 00 11 00 00 00 00 00 00 1C 7D FB FF FF 1E 00 00 80 3F 27 4A 16

//0b
[/AFTER_HEX]
Edited by ViperCanel
Link to comment
Share on other sites

 

Thanks a lot guys! Making epic size differences between soldiers was one of the most horible things I have encountered in this game. The game is more immersive for me now.

 

I modified the code a little to give both sexes %85 scale on weapons. If anyone comes across wishing someone had done it like I did:

...

Thanks for sharing. I've added this to the DIY Mods wiki article. Only suggestion I would make is the split out the changes to show exactly which bytes contain the scale for both males and females. Something along the lines of this:

      //MeshComp.SetScale((bIsFemale ? 0.85 : 0.85))
      19 00 71 3E 00 00 18 00 00 00 00 00 00 1B EC 6E 00 00 00 00 00 00 45 2D 01 51 3D 00 00 05 00
      1E 9A 99 59 3F 05 00 // Set Females to 0.85 scale
      1E 9A 99 59 3F 16 00 // Set Males to 0.85 scale

      // null ops
      71 3E 00 00 00 71 3E 00 00 00 71 3E 00 00 0B

but with the specific scale bytes given to make it easy for a novice to tell what to change to suit themselves. (Recall that PatcherGUI ignores comments at the end of a line.)

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

  • Recently Browsing   0 members

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