NWScript:
void DecideVote();
int WillVotePass(int nYes, int nNo, int nAbstain);
void PassVote();
void DecideVote()
{
int nCast;
int nYes, nNo, nAbstain;
object oPC = GetFirstPC();
while (GetIsObjectValid(oPC)) {
nCast = GetLocalInt(oPC, VT_STR_MYVOTE);
if (nCast == VT_YES)
nYes++;
else if(nCast == VT_NO)
nNo++;
else if(nCast == VT_ABSTAIN)
nAbstain++;
oPC = GetNextPC();
}
if (WillVotePass(nYes, nNo, nAbstain)) {
PassVote();
Announce("Vote passed (" + IntToString(nYes) + " to " + IntToString(nNo) + " with " + IntToString(nAbstain) + " abstentions).");
} else {
Announce("Vote did not pass (" + IntToString(nYes) + " to " + IntToString(nNo) + " with " + IntToString(nAbstain) + " abstentions).");
}
}
int WillVotePass(int nYes, int nNo, int nAbstain)
{
DebugMessage("entered WillVotePass");
return (nYes > (nNo + nAbstain));
}
void PassVote()
{
DebugMessage("entered PassVote");
int nKey = GetLocalInt(oModule, VT_STR_KEY);
int nValue = GetLocalInt(oModule, VT_STR_VALUE);
SetIntArray(VT_STR_KEYSARRAY, nKey, nValue, oModule);
if (nKey == VT_SAMPLE) {
ExecuteScript("vt_sample", oModule);
Announce("Sample script has executed");
}
else if (nKey == VT_KICK) {
string sName = GetLocalString(oModule, VT_STR_KICKTARGET);
object oPC = GetPCByName(sName);
if (GetIsObjectValid(oPC)) {
DebugMessage("Attempting to kick player " + GetPCPlayerName(oPC) + "(" + sName + ").");
DebugMessage("This won't work if they are the only PC.");
BootPC(oPC);
}
else
DebugMessage("No such player");
}
else {
Announce(VT_STR_NOIMP);
}
}