Mitchell Kleiman: well, in game code its an array of pointers its like partpointers[10] and 0 is muzzle flash position 2 is displaylist for gunbarrel etc it just looks like 05 ingame so they'll be like, MoveGunBarrel(Gun.GunPointer[2]); ------------- Since 05's are an array list which is called by the game to do specific things. The source will most likely have looked something like: ======================================================================== // On Gun Load // Known Value is SuitColour //Set Cuff for gun for i = 29 to 34 Gun(CurrentID).PartPointer[29].visible = FALSE; Next; If SuitColour = Boiler then Gun(CurrentID).PartPointer[29].visible = TRUE; elseif SuitColour = black then Gun(CurrentID).PartPointer[30].visible = TRUE; ... ____________________________________________________________________ //On Firing Current weapon ... // Known values at this point: // CurrentID = 0 = failsafe // CurrentID set during Intro Block and kept updated every B press or Menu Selection. ... PlaySound(Gun[CurrentID].FireSound, 100%); // Get Start Position for Ejectes cases EjectCartrigeLocation(Gun[CurrentID].PartPointer[0]; // Show muzzleFlashes Gun[CurrentID].PartPointer[1].Visible = TRUE; /* // Animate Muzzleflashes are not activated on firing, they are always active oddly. // This might be so that there is no obvious repeating pattern as you fire. AnimateMuzzleflash(Gun[CurrentID].PartPointer[2]); AnimateMuzzleflash(Gun[CurrentID].PartPointer[3]); AnimateMuzzleflash(Gun[CurrentID].PartPointer[4]); */ // No Idea why, but rare seems to have had this or similar FixToCenterScreen(Gun[CurrentID].PartPointer[5]); If Gun[CurrentID].Archetype(Revolver) then // Feed Animation Thread with starting Position data // Animations are seperate Threads to allow this thread to complete and start other animations along way // Threads close after completion or are restarted by calling again. RotateCylinder(Gun[CurrentID].PartPointer[4]); RotateHammer(Gun[CurrentID].PartPointer[5]); EndIf; // Possibly to save time and increase FPS, dont animate Automatics, Only Semi-Autos (Includes revolvers) // At 600 RPM, animations would restart before completion leading to odd look. Only last animation would play fully (Like recoil currently does) IF Gun[CurrentID].ShootingStyle(Pistol) Then RotateTriggerFinger(Gun[CurrentID].PartPointer[6]; MoveTopSlide(Gun[CurrentID].PartPointer[7]; EndIf; ... //Hide MuzzleFlash Gun[CurrentID].PartPointer[1].Visible = FALSE; ... // End OnFire ____________________________________________________________________ // OnReload // Known values at this point: // CurrentID = 0 = failsafe // CurrentID set during Intro Block and kept updated every B press or Menu Selection. // CurrentReserveAmmo ... //Count Shotgun Cartriges, if reserve less than 5, begin hiding If CurrentReserveAmmo < 5 then For i = 18 to CurrentReserveAmmo+18 Gun[CurrentID].PartPointer[i].Visible = FALSE; //cartrige bodies Next // Autoshotgun has shotgun cartrige clamp parts, these are drawin in order and so split the Cartrige body from cap. // Since cartrige is now split, we need a second loop For i = 23 to CurrentReserveAmmo+23 Gun[CurrentID].PartPointer[i].Visible = FALSE; //cartrige caps Next EndIf ... // End OnReload ======================================================================== When Entering the Start Menu there would most likely have been something like this: ... // Hide hands and barrel // Possibly defined as 8 to 36 which would through an error if array index less that 36 entries. For i = 8 to (Gun[CurrentID].PartPointer.count - 8) Gun[CurrentID].PartPointer[i].Visible = FALSE; Next; // Unhide Cartriges again For i = 18 to 27 Gun[CurrentID].PartPointer[i].Visible = TRUE; Next; ... ======================================================================== Pointers are based on archetype, of which GE has 6:- Standard, Unassigned, Revolver, UZI, Controller and SuitIfHand. Whether or not animations actually call pointers or not depends on Shooting Style (NoAmmo, ThrowableItem, Pistol, MachineGun (Automatic), Tazer, Watch) Function Type doesnt matter so long as Gun or Revolver. For Standard ArcheType the Pointers are called as follows (8003C714) Index Type MTX* Description 00 PosHItem 3 Cartrige Ejection 01 Switch N/A Muzzleflash Switch 02 Position 2 Muzzleflash Animation 03 Position 1 Muzzleflash Animation 04 Position N/A Spin Part around Gun (possibly this is MuzzleFlash Animation making Standard and UZI Identical) 05 Position N/A Fix to Head (Like a headtorch). Does not hide in Start. (switch required) 06 Position 4 Trigger Finger Rotate Ignore IF ShootingStyle = MachineGun 07 Position 5 TopSlide Move Ignore IF ShootingStyle = MachineGun 08+ Switch N/A Hide in Start 11 Switch N/A Screen Animation 12-1B Switch N/A Shotgun Cartrige Switches. 1C Switch N/A Interlinkage ??? 1D Switch N/A M65 Jacket (BoilerBond) 1E Switch N/A Black Suite 1F Switch N/A White Suite 20 Switch N/A Blue Suite 21 Switch N/A Jungle Shirt 22 Switch N/A Parka For UZI ArcheType the Pointers are called as follows (Identical to Standard) (8003C7AC) Index Type MTX* Description 00 PosHItem 4 Cartrige Ejection 01 Switch N/A Muzzleflash Switch 02 Position 2 Muzzleflash Animation 03 Position 1 Muzzleflash Animation 04 Position 3 Muzzleflash Animation 05 Position N/A Fix to Head (Like a headtorch). Does not hide in Start. (switch required) (UnTested) 06 Position N/A Trigger Finger Rotate (UnTested) Ignore IF ShootingStyle = MachineGun 07 Position N/A TopSlide Move (UnTested) Ignore IF ShootingStyle = MachineGun 08+ Switch N/A Hide in Start For Revolver ArcheType the Pointers are called as follows (8003C76C) Index Type MTX* Description 00 PosHItem N/A Cartrige Ejection (Odd, but it does work) This reminds me, Ill disable this for the Smith and Wessons 01 Switch N/A Muzzleflash Switch 02 Position 2 Muzzleflash Animation 03 Position 1 Muzzleflash Animation 04 Position 3 Revolve Cylinder 05 Position 4 Rotate Hammer 06 Position 5 Trigger Finger Rotate 07 Position N/A TopSlide Move (Odd but it does work) 08+ Switch N/A Hide in Start SuitIfHand Index Type MTX* Description 00 PosHItem 1 Watch Hour Hand 01 PosHItem 2 Watch Minute Hand 02 PosHItem 3 Watch Second Hand 03 Switch N/A hide Second Lines 04 Switch N/A M65 Jacket (BoilerBond) 05 Switch N/A Black Suite 06 Switch N/A White Suite 07 Switch N/A Blue Suite 08 Switch N/A Jungle Shirt 09 Switch N/A Parka Joypad Index Type MTX* Description 00 Position 0 Rotate Controller 01 Position 1 Move Start Button 02 Position 2 Rotate Stick 03 Position 3 Rotate D Pad 04 Position 4 Move C Up Button 05 Position 5 Move C Down Button 06 Position 6 Move C Left Button 07 Position 7 Move C Right Button 08 Position 8 Move A Button 09 Position 9 Move B Button 0A Position A Rotate L Button 0B Position B Rotate R Button 0C Position C Rotate Z Button 0D Switch N/A Controller Hide/Unhide *MTX Is only a template. Any Position Matrix Command Index can be assosiated to an animation as Commands are sequential through tree. eg: Cmd 5 (Topslide) could actually be TFinger if it is assigned to 05 Index 6. Cmd 5 does NOT define the animation. On Revolver, after changing archetype to Standard, Cmd 5 (revolver TFinger) still acted like Tfinger because it was assigned to 05 index 6. likewise, after changing PPK to Revolver Type, Cmd 4 TFinger (Revolver Hammer) still acted like TFinger because Cmd4 was assigned to 05 Index 6 Another example is Cartrige Ejection, this is normally Cmd3, however it is Cmd4 on UZI and none on the revolver yet using Cmd3 works on UZI and revolver so long as 05 index 00 points to the relevent part. Its odd that the Revolver Type has Cartrige Ejection and Topslide Movement. Oddly though, even after converting the PPK to Revolver, the Hammer still wasnt visible. At least it wasnt fixed to the head like as normal. I could make this a complete 05 doc with guard lists being Index Type Description/MTX, Possible functions are unknown to me. 00 Position Right forearm 01 Position Right Hand 02 Position Left Hand 03 Position Left Hand 04 Position Neck/Collar 05 Position Right Hand 06 MultiNeck Head Placeholder Objects are so variable I dont think I will make a complete list... As far as I can see editor already has rotor blade stuff in it, just needs labeling.