// determine how majority of your officers react on your last action,
// excluding quest offs, regular sailors, prisoners, quest passengers, convoy captains
// return 0 = officers opinion on par, -1 = majority against captain, +1 = majority for captain
int DetermineMajorityReaction(string action)
{
int iP, iC;
int _vote = 0;
ref companion;
//Trace("LOYALTY_MOD: action: " + action);
// loop over passenger list
for (int io = 0; io<GetPassengersQuantity(pchar); io++)
{
iP = GetPassenger(pchar, io);
if (iP != -1)
{
if (CheckAttribute(characters[iP], "loyality"))
{
if (!isOfficerNeutral(&characters[iP]))
{
if (getOfficerAlignment(&characters[iP]) == action) _vote++;
else _vote--;
}
}
}
}
// loop over companion list
for (int i=1; i<COMPANION_MAX; i++)
{
iC = GetCompanionIndex(pchar, i);
if(iC != -1)
{
companion = GetCharacter(iC);
if (CheckAttribute(companion, "loyality"))
{
if (!isOfficerNeutral(&companion))
{
if (getOfficerAlignment(&companion) == action) _vote++;
else _vote--;
}
}
}
}
//Trace("LOYALTY_MOD: value of vote: " + _vote);
// determine result: 0 = officers opinion on par, -1 = majority against captain, +1 = majority for captain
if (_vote < 0) return -1;
else if (_vote > 0) return 1;
return 0;
}