2022-11-08 14:19:13 +00:00
|
|
|
// Basic regexp that identifies a callsign and any pre- and post-indicators.
|
|
|
|
const CALLSIGN_REGEXP =
|
2022-11-08 14:42:59 +00:00
|
|
|
/^([A-Z0-9]+\/){0,1}([0-9][A-Z]{1,2}[0-9]|[A-Z]{1,2}[0-9])([A-Z0-9]+)(\/[A-Z0-9/]+){0,1}$/
|
|
|
|
/*
|
|
|
|
`^ ... $`
|
|
|
|
to ensure the callsign has no extraneous characters
|
|
|
|
|
|
|
|
`( [A-Z0-9]+ \/ ){0,1}`
|
|
|
|
to match an optional preindicator, separated by `\/` from the rest of the call
|
|
|
|
|
|
|
|
`( [0-9][A-Z]{1,2}[0-9] | [A-Z]{1,2}[0-9] )`
|
|
|
|
to match either number-letter-number, number-letter-letter-number, letter-number and letter-letter-number prefixes
|
|
|
|
|
|
|
|
`( [A-Z0-9]+ )`
|
|
|
|
for the rest of the callsign, which must include at least one more letter or digit after the prefix
|
|
|
|
|
|
|
|
`( \/ [A-Z0-9/]+ ){0,1}`
|
|
|
|
for a optional list of postindicators separated by `\/` from the rest of the call
|
|
|
|
*/
|
2022-11-08 14:19:13 +00:00
|
|
|
|
2021-06-28 22:26:44 +00:00
|
|
|
function processRosterFiltering(callRoster, rosterSettings)
|
|
|
|
{
|
|
|
|
// First loop, exclude calls, mostly based on "Exceptions" settings
|
|
|
|
// this whole section is full of individual if's that could be broken out
|
2022-10-16 17:46:41 +00:00
|
|
|
for (const callHash in callRoster)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let entry = callRoster[callHash];
|
|
|
|
let callObj = entry.callObj;
|
|
|
|
let call = entry.DEcall;
|
2021-06-28 22:26:44 +00:00
|
|
|
|
|
|
|
entry.tx = true;
|
|
|
|
callObj.shouldAlert = false;
|
|
|
|
callObj.reason = Array();
|
|
|
|
callObj.awardReason = "Callsign";
|
|
|
|
|
2022-11-08 21:43:36 +00:00
|
|
|
if (!call || !call.match(CALLSIGN_REGEXP))
|
2022-11-08 14:19:13 +00:00
|
|
|
{
|
2023-01-16 00:08:01 +00:00
|
|
|
// console.error(`Invalid Callsign ${call}`, entry)
|
2022-11-08 14:19:13 +00:00
|
|
|
entry.tx = false
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (rosterSettings.now - callObj.age > CR.rosterSettings.rosterTime)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
entry.alerted = false;
|
|
|
|
callObj.qrz = false;
|
|
|
|
callObj.reset = true;
|
|
|
|
continue;
|
|
|
|
}
|
2022-10-13 19:57:45 +00:00
|
|
|
if (!callObj.dxcc)
|
2021-12-09 19:53:20 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-25 21:41:32 +00:00
|
|
|
if (CR.rosterSettings.noUnknownDXCC && callObj.dxcc == -1)
|
2022-10-16 18:31:01 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (window.opener.GT.instances[callObj.instance].crEnable == false)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (call in CR.blockedCalls)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (entry.DXcall + " from All" in CR.blockedCQ || entry.DXcall + " from " + window.opener.GT.dxccToAltName[callObj.dxcc] in CR.blockedCQ)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.ituz in CR.blockedITUz)
|
2021-12-14 01:03:46 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.cqz in CR.blockedCQz)
|
2021-12-14 01:03:46 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.dxcc in CR.blockedDxcc)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.cqOnly == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 23:58:26 +00:00
|
|
|
if (CR.rosterSettings.wantRRCQ == true)
|
2022-09-26 23:45:23 +00:00
|
|
|
{
|
|
|
|
if (callObj.RR73 == false && callObj.CQ == false)
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (callObj.CQ == false)
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2021-06-28 22:26:44 +00:00
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.useRegex && CR.rosterSettings.callsignRegex.length > 0)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
var regexObj = regexObj || new RegExp(CR.rosterSettings.callsignRegex, "i")
|
2021-06-28 22:26:44 +00:00
|
|
|
try
|
|
|
|
{
|
2022-10-10 12:37:55 +00:00
|
|
|
if (!call.match(regexObj))
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (e) {}
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.requireGrid == true && callObj.grid.length != 4)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.wantMinDB == true && entry.message.SR < CR.rosterSettings.minDb)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.wantMaxDT == true && Math.abs(entry.message.DT) > CR.rosterSettings.maxDT)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.wantMinFreq == true && entry.message.DF < CR.rosterSettings.minFreq)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.wantMaxFreq == true && entry.message.DF > CR.rosterSettings.maxFreq)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.noMsg == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.msg.match(CR.rosterSettings.noMsgValue))
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (e) {}
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.onlyMsg == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (!callObj.msg.match(CR.rosterSettings.onlyMsgValue))
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (e) {}
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.dxcc == window.opener.GT.myDXCC)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.noMyDxcc == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
else if (CR.rosterSettings.onlyMyDxcc == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2022-09-23 02:02:10 +00:00
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
2021-06-28 22:26:44 +00:00
|
|
|
}
|
|
|
|
|
2023-03-19 19:54:05 +00:00
|
|
|
if (CR.rosterSettings.columns.Spot == true)
|
2023-02-21 23:24:06 +00:00
|
|
|
{
|
2023-03-19 19:54:05 +00:00
|
|
|
callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band + callObj.grid);
|
|
|
|
if (callObj.spot == null)
|
|
|
|
{
|
|
|
|
callObj.spot = { when: 0, snr: 0 };
|
|
|
|
}
|
|
|
|
if (CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec)))
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
callObj.spot = { when: 0, snr: 0 };
|
2023-02-21 23:24:06 +00:00
|
|
|
}
|
|
|
|
|
2023-02-21 01:16:54 +00:00
|
|
|
let usesOneOf = 0;
|
|
|
|
let checkUses = 0;
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (window.opener.GT.callsignLookups.lotwUseEnable == true && CR.rosterSettings.usesLoTW == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
checkUses++;
|
|
|
|
if (call in window.opener.GT.lotwCallsigns)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
usesOneOf++;
|
|
|
|
if (CR.rosterSettings.maxLoTW < 27)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
let months = (CR.day - window.opener.GT.lotwCallsigns[call]) / 30;
|
|
|
|
if (months > CR.rosterSettings.maxLoTW)
|
|
|
|
{
|
|
|
|
usesOneOf--;
|
|
|
|
}
|
2021-06-28 22:26:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (window.opener.GT.callsignLookups.eqslUseEnable == true && CR.rosterSettings.useseQSL == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
checkUses++;
|
|
|
|
if (call in window.opener.GT.eqslCallsigns)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
usesOneOf++;
|
2021-06-28 22:26:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (window.opener.GT.callsignLookups.oqrsUseEnable == true && CR.rosterSettings.usesOQRS == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
checkUses++;
|
|
|
|
if (call in window.opener.GT.oqrsCallsigns)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-21 01:16:54 +00:00
|
|
|
usesOneOf++;
|
2021-06-28 22:26:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-21 01:16:54 +00:00
|
|
|
if (checkUses > 0 && usesOneOf == 0)
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2021-06-29 01:42:07 +00:00
|
|
|
if (rosterSettings.callMode != "all")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (entry.DXcall == "CQ DX" && callObj.dxcc == window.opener.GT.myDXCC)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(call, callObj, CR.rosterSettings.reference);
|
|
|
|
if (rosterSettings.callMode == "worked" && hash in CR.worked.call)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (rosterSettings.callMode == "confirmed" && hash in CR.confirmed.call)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "grid")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(callObj.grid.substr(0, 4),
|
|
|
|
callObj, CR.rosterSettings.reference);
|
2021-12-13 18:13:23 +00:00
|
|
|
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.grid)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (callObj.grid.length == 0)
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "dxcc")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(String(callObj.dxcc) + "|", callObj, CR.rosterSettings.reference);
|
2021-06-28 22:26:44 +00:00
|
|
|
|
2021-12-13 18:13:23 +00:00
|
|
|
if (rosterSettings.huntIndex && (hash in rosterSettings.huntIndex.dxcc))
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "dxccs" && CR.currentDXCCs != -1)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (callObj.dxcc != CR.currentDXCCs)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "wpx")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
if (String(callObj.px) == null)
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(String(callObj.px),
|
|
|
|
callObj, CR.rosterSettings.reference);
|
2021-06-28 22:26:44 +00:00
|
|
|
|
2021-12-13 18:13:23 +00:00
|
|
|
if (rosterSettings.huntIndex && (hash in rosterSettings.huntIndex.px))
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "cq")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2022-10-07 23:44:11 +00:00
|
|
|
if (callObj.cqz == null || !rosterSettings.huntIndex)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(callObj.cqz + "|", callObj, CR.rosterSettings.reference);
|
2022-10-07 23:44:11 +00:00
|
|
|
|
|
|
|
if (hash in rosterSettings.huntIndex.cqz)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2022-10-07 23:44:11 +00:00
|
|
|
|
2021-06-28 22:26:44 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "itu")
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2022-10-07 23:44:11 +00:00
|
|
|
if (callObj.ituz == null || !rosterSettings.huntIndex)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(callObj.ituz + "|", callObj, CR.rosterSettings.reference);
|
2021-06-28 22:26:44 +00:00
|
|
|
|
2022-10-07 23:44:11 +00:00
|
|
|
if (hash in rosterSettings.huntIndex.ituz)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
2022-10-07 23:44:11 +00:00
|
|
|
|
2021-06-28 22:26:44 +00:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "usstates" && window.opener.GT.callsignLookups.ulsUseEnable == true)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let state = callObj.state;
|
|
|
|
let finalDxcc = callObj.dxcc;
|
2021-06-28 22:26:44 +00:00
|
|
|
if (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6)
|
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (state in window.opener.GT.StateData)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let hash = hashMaker(state, callObj, CR.rosterSettings.reference);
|
2021-06-28 22:26:44 +00:00
|
|
|
|
2021-12-13 18:13:23 +00:00
|
|
|
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.state)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else entry.tx = false;
|
|
|
|
}
|
|
|
|
else entry.tx = false;
|
|
|
|
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.rosterSettings.hunting == "usstate" && CR.currentUSCallsigns)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (call in CR.currentUSCallsigns)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
// Do Nothing
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
entry.tx = false;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
2022-10-16 17:46:41 +00:00
|
|
|
|
2021-06-29 01:42:07 +00:00
|
|
|
if (rosterSettings.isAwardTracker)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let tx = false;
|
|
|
|
let baseHash = hashMaker("", callObj, CR.rosterSettings.reference);
|
2021-06-28 22:26:44 +00:00
|
|
|
|
2023-02-17 00:35:44 +00:00
|
|
|
for (const award in CR.awardTracker)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
if (CR.awardTracker[award].enable)
|
2021-06-28 22:26:44 +00:00
|
|
|
{
|
|
|
|
tx = testAward(award, callObj, baseHash);
|
|
|
|
if (tx)
|
|
|
|
{
|
2023-02-17 00:35:44 +00:00
|
|
|
let x = CR.awardTracker[award];
|
2021-06-28 22:26:44 +00:00
|
|
|
|
|
|
|
// TODO: Move award reason out of exclusions code?
|
2023-02-17 00:35:44 +00:00
|
|
|
callObj.awardReason = CR.awards[x.sponsor].awards[x.name].tooltip + " (" + CR.awards[x.sponsor].sponsor + ")";
|
2022-10-05 01:06:56 +00:00
|
|
|
callObj.shouldAlert = true;
|
2021-06-28 22:26:44 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-01-03 18:07:16 +00:00
|
|
|
|
2021-06-28 22:26:44 +00:00
|
|
|
entry.tx = tx;
|
|
|
|
}
|
|
|
|
}
|
2023-01-24 20:12:04 +00:00
|
|
|
}
|