Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __stdcall SwapWeaponParent(TESObjectWEAP *weapon, char a2, NiNode *skeleton, char a4)
- {
- char weaponType; // al@3
- int *nodeName; // eax@8
- int weaponNode; // eax@10
- NiNode *niNode1; // eax@11
- NiNode *nodeTmp2; // esi@11
- unsigned int i; // edi@12
- NiAVObject **nodeChildren; // edx@13
- void *v11; // ecx@16
- char *nodename; // esi@16
- int *skeletalNodes1; // eax@18
- int nodeNames; // eax@18
- NiNode *niNode2; // eax@19
- int object1; // eax@21
- int weaponType2; // eax@23
- int *skeletalNodes2; // eax@24
- int nodeNames2; // eax@24
- NiNode *niNode3; // eax@25
- int object2; // eax@27
- char *equippedWeaponNodeName1; // eax@30
- char *equippedWeaponNodeName2; // eax@31
- if ( weapon )
- {
- if ( skeleton )
- {
- weaponType = weapon->gameData.type;
- if ( weaponType == 7 || weaponType == 9 )
- {
- if ( !a2 )
- {
- if ( !a4 )
- {
- if ( weaponType == 9 )
- nodeName = GetSkeletalNodes() + 0x138;
- else
- nodeName = GetSkeletalNodes() + 0x58;
- weaponNode = GetNodeByNameT(skeleton, (int)nodeName);
- if ( weaponNode )
- {
- niNode1 = (NiNode *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)weaponNode + 0xC))(weaponNode);
- nodeTmp2 = niNode1;
- if ( niNode1 )
- {
- v11 = 0;
- i = 0;
- if ( niNode1->m_children.m_emptyRunStart > 0u )
- {
- do
- {
- nodeChildren = nodeTmp2->m_children.m_data;
- if ( nodeChildren[i] )
- {
- sub_68FCF0(g_garbageCollector, (int)nodeChildren[i]);
- nodeTmp2->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr[28].__vecDelDtor(
- (NiRefObject *)nodeTmp2,
- i);
- }
- ++i;
- }
- while ( i < nodeTmp2->m_children.m_emptyRunStart );
- }
- }
- }
- }
- }
- }
- nodename = (char *)GetNodeNameForWeaponType(v11, weapon->gameData.type);
- if ( sub_A50DB0((const char **)nodename, 0) )
- {
- if ( a4 )
- {
- skeletalNodes1 = GetSkeletalNodes();
- nodeNames = GetNodeByName(skeleton, (int)(skeletalNodes1 + 0x6C), 1);
- if ( nodeNames )
- {
- niNode2 = (NiNode *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)nodeNames + 0xC))(nodeNames);
- if ( niNode2 )
- {
- if ( niNode2->m_children.m_emptyRunStart )
- {
- object1 = GetObjectAt((int)niNode2, 0);
- if ( object1 )
- sub_42A5E0(object1, a2 == 0);
- }
- }
- }
- }
- else
- {
- LOBYTE(weaponType2) = weapon->gameData.type;
- if ( (_BYTE)weaponType2 == 8 )
- {
- skeletalNodes2 = GetSkeletalNodes();
- nodeNames2 = GetNodeByName(skeleton, (int)(skeletalNodes2 + 0x58), 1);
- if ( nodeNames2 )
- {
- niNode3 = (NiNode *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)nodeNames2 + 0xC))(nodeNames2);
- if ( niNode3 )
- {
- if ( niNode3->m_children.m_emptyRunStart )
- {
- object2 = GetObjectAt((int)niNode3, 0);
- if ( object2 )
- sub_42A5E0(object2, a2 == 0);
- }
- }
- }
- }
- else
- {
- weaponType2 = (char)weaponType2;
- if ( a2 )
- {
- equippedWeaponNodeName1 = GetNodeNameWEAPON(weaponType2, 0);
- SwapNodeParent(skeleton, nodename, equippedWeaponNodeName1, 0);
- }
- else
- {
- equippedWeaponNodeName2 = GetNodeNameWEAPON(weaponType2, 0);
- SwapNodeParent(skeleton, equippedWeaponNodeName2, nodename, 0);
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement