Kaezarhg Posted January 16, 2013 Share Posted January 16, 2013 Been playing for some time now, and while trying to make up an all-psi squad (I'm a perfectionist, sue me) I noticed that as you go through it gets harder - or at least it seems so - to get a psi player. I think I'm getting more or less 1 psi every 10 test cycles. Is that right? Anybody knows the formula that gives the chance of a psi soldier? Link to comment Share on other sites More sharing options...
Drakous79 Posted January 16, 2013 Share Posted January 16, 2013 Here you go. function bool RollForGift(XGStrategySoldier kSoldier) { local int iChance, iTraineeWill, iGiftedSix, iSoldier, iTraineeRank; local array<XGStrategySoldier> arrCandidates; arrCandidates = BARRACKS().m_arrSoldiers; arrCandidates.Sort(SortPsiCandidates); iSoldier = 0; while if(iSoldier < Min(6, arrCandidates.Length)) { if(arrCandidates[iSoldier].HasPsiGift()) { ++ iGiftedSix; } ++ iSoldier; } iSoldier = 0; while if(iSoldier < m_arrTraining.Length) { if(m_arrTraining[iSoldier].bPsiGift && arrCandidates.Find(m_arrTraining[iSoldier].kSoldier) != -1 && arrCandidates.Find(m_arrTraining[iSoldier].kSoldier) < 6) { ++ iGiftedSix; } ++ iSoldier; } iTraineeWill = kSoldier.m_kChar.aStats[7]; if(IsOptionEnabled(11)) { iChance = int(float(iTraineeWill) / class'XGTacticalGameCore'.default.SW_RARE_PSI); iChance /= float(1 + BARRACKS().GetNumPsiSoldiers()); } else { iChance = int(float(iTraineeWill) / class'XGTacticalGameCore'.default.PSI_GIFT_CHANCE); // basic formula iTraineeRank = arrCandidates.Find(kSoldier); if(iTraineeRank >= 0 && iTraineeRank < 6) { iChance += Max(0, 75 - iTraineeRank * 20 - iGiftedSix * 40); } } return Roll(iChance); }Roll is true if random number from 100 is less than iChance:function bool Roll(int iChance) { return Rand(100) < iChance; }Looking at the math, the best odds fot getting PSI gift has Major and Colonel, because only basic formula applies to them. Other ranks count with 75 - iTraineeRank * 20 - iGiftedSix * 40. Good news is you can set PSI_GIFT_CHANCE in DefaultGameCore.ini :) Soldier's will is divided by default value of 4 nerfing the chance. Setting it to 1 improves the situation. It can be set to 0.01f for 100% chance. Tested with 12 soldiers and all got the gift. Use Modpatcher, but copy your up to date DefaultGameCore.ini to DefaultGameCore.mod and set PSI_GIFT_CHANCE=0.01f Link to comment Share on other sites More sharing options...
Scipio65 Posted July 31, 2013 Share Posted July 31, 2013 Is there a way to 'reset' the lab to accept members that have been tested before but turned out with no ability... so they get a second chance with the new percent chances changed? That is.. can my failed psi-gifted soldiers get to test it again? Link to comment Share on other sites More sharing options...
Recommended Posts