Po wielu grach i próbach, wydaje nam się, że raczej ten system nie został zmieniony w Wildfire i jest tam taki sam jak kod jak w JA2.
Najpierw gra sprawdza przedmiot i jego ewentualne dodatkowe wymagania.
Kod:
AttachmentInfoStruct AttachmentInfo[] =
{
{ XRAY_BULB, IC_NONE, ATTACHING_SPECIAL_ELECTRONIC_ITEM_CHECK, -15 },
{ COPPER_WIRE, IC_NONE, ATTACHING_SPECIAL_ELECTRONIC_ITEM_CHECK, +20 },
};
Tutaj lampa rentgenowska (ma od razu -15 do szansy na powodzenie) i miedziany przewód (on ma akurat +20 do szansy) ma kod "SPECIAL_ELECTRONIC_ITEM_CHECK" i gra od razu sprawdza te dodatkowe wymaganie przed połączeniem.
Kod:
case ATTACHING_SPECIAL_ELECTRONIC_ITEM_CHECK:
iSkill = EffectiveMechanical( pSoldier );
if (iSkill == 0)
{
break;
}
// adjust skill based on wisdom (knowledge)
iSkill = iSkill * (EffectiveWisdom( pSoldier ) + 100) / 200;
// and dexterity (clumsy?)
iSkill = iSkill * (EffectiveDexterity( pSoldier ) + 100) / 200;
// factor in experience
iSkill = iSkill + EffectiveExpLevel( pSoldier ) * 3;
if (bReason == ATTACHING_SPECIAL_ELECTRONIC_ITEM_CHECK && !(HAS_SKILL_TRAIT( pSoldier, ELECTRONICS)) )
{
// if we are unfamiliar with electronics...
iSkill /= 2;
}
break;
default:
iSkill = 0;
break;
Jak się okazuje, żeby wykonać połączenie przedmiotów obarczonych kodem "SPECIAL_ELECTRONIC_ITEM_CHECK", gra sprawdza:
mechanikę
inteligencję
zręczność
doświadczenie
Dodatkowo jeśli ktoś nie ma umiejętności elektroniki, to szansa na powodzenie jest od razu dzielona przez dwa.
Teraz dwa gotowe ostatnie przedmioty do połączenia w detektor X-Ray mają dodatkowy kod "ELECTRONIC_MERGE"
Kod:
{FLASH_DEVICE, DISPLAY_UNIT, XRAY_DEVICE, ELECTRONIC_MERGE},
{DISPLAY_UNIT, FLASH_DEVICE, XRAY_DEVICE, ELECTRONIC_MERGE},
Teraz gra szuka tego kodu ELECTRONIC_MERGE, który również odwołuje się do kodu "SPECIAL_ELECTRONIC_ITEM_CHECK", ale tutaj gra od razu zmniejsza szansę na powodzenie o -30.
Kod:
case ELECTRONIC_MERGE:
if ( pSoldier )
{
iCheckResult = SkillCheck( pSoldier, ATTACHING_SPECIAL_ELECTRONIC_ITEM_CHECK, -30 );
if ( iCheckResult < 0 )
{
DamageObj( pTargetObj, (INT8) -iCheckResult );
DamageObj( pAttachment, (INT8) -iCheckResult );
DoMercBattleSound( pSoldier, BATTLE_SOUND_CURSE1 );
return( FALSE );
}
// grant experience!
}
// fall through
Generalnie musiałbyś dać najemnikowi po 100 punktów dla mechaniki, zręczności oraz inteligencji, a doświadczenie na 10 i wtedy sprawdzić, czy bez umiejętności elektroniki jest w stanie złożyć detektor X-Ray.