so i tested this with no other changes and it works fine but then i tried to add my loop: if((branch != 1) || IsAugmented()) { I = 0; J0xFD: // End:0x1D1 [Loop If] if(I < 172) { // End:0x1D1 if(m_kSoldier.HasPerk(I)) { // End:0x1D1 if(GetPerkInTree(byte(m_iEnergy), branch, Option, bIsPsiTree) = GetPerk(I)) { return PERKS().GetPerk(0); goto label_end } // End:0x271 } ++ I; // [Loop Continue] goto J0xFD; return PERKS().GetPerkInTree(byte(m_iEnergy), branch, Option, bIsPsiTree); goto J0x271; } return PERKS().GetPerkInTree(GetClass(), branch, Option, bIsPsiTree); } #label_end return ReturnValue; this seems to crash the game when i look at the abilities screen extra perk or not