Skip to content

Commit

Permalink
Make use of Upgrades object to get rank thresholds
Browse files Browse the repository at this point in the history
  • Loading branch information
KJeff01 committed Jul 24, 2024
1 parent 4b3648f commit a2b0c52
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 40 deletions.
2 changes: 1 addition & 1 deletion data/base/script/campaign/cam2-1x.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ function setupCyborgGroups()

function setCrashedTeamExp()
{
const DROID_EXP = 32;
const DROID_EXP = camGetRankThreshold("professional");
const droids = enumDroid(MIS_TRANSPORT_TEAM_PLAYER).filter((dr) => (
!camIsSystemDroid(dr) && !camIsTransporter(dr)
));
Expand Down
17 changes: 3 additions & 14 deletions data/base/script/campaign/cam2-a.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ function cam2Setup()
//Get some higher rank droids.
function setUnitRank(transport)
{
const droidExp = [128, 64, 32, 16];
const ranks = ["elite", "veteran", "professional", "regular"];
let droids;
let mapRun = false;

Expand All @@ -322,19 +322,8 @@ function setUnitRank(transport)
const droid = droids[i];
if (droid.droidType !== DROID_CONSTRUCT && droid.droidType !== DROID_REPAIR)
{
let mod = 1;
if (droid.droidType === DROID_COMMAND || droid.droidType === DROID_SENSOR)
{
if (camClassicMode())
{
mod = 4;
}
else
{
mod = 8;
}
}
setDroidExperience(droid, mod * droidExp[mapRun ? 0 : (transporterIndex - 1)]);
const USE_COMMAND_RANK = (droid.droidType === DROID_COMMAND || droid.droidType === DROID_SENSOR);
setDroidExperience(droid, camGetRankThreshold(ranks[mapRun ? 0 : (transporterIndex - 1)], USE_COMMAND_RANK));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion data/base/script/campaign/cam3-2.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ camAreaEvent("phantomFacTrigger", function(droid)

function setAlphaExp()
{
const DROID_EXP = 2048; //Hero rank.
const DROID_EXP = camGetRankThreshold("hero", true); //Hero Commander rank.
const alphaDroids = enumArea("alphaPit", MIS_ALPHA_PLAYER, false).filter((obj) => (
obj.type === DROID
));
Expand Down
7 changes: 6 additions & 1 deletion data/base/script/campaign/cam3-a.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ camAreaEvent ("middleTrigger", function(droid)

function setUnitRank(transport)
{
const droidExp = [2048, 256, 128, 64]; //Can make Hero Commanders if recycled.
const droidExp = [
camGetRankThreshold("hero", true), //Can make Hero Commanders if recycled.
camGetRankThreshold("special"),
camGetRankThreshold("elite"),
camGetRankThreshold("veteran")
];
const droids = enumCargo(transport);

for (let i = 0, len = droids.length; i < len; ++i)
Expand Down
109 changes: 86 additions & 23 deletions data/base/script/campaign/libcampaign_includes/misc.js
Original file line number Diff line number Diff line change
Expand Up @@ -589,11 +589,57 @@ function camDiscoverCampaign()
return __CAM_UNKNOWN_CAMPAIGN_NUMBER;
}

//;; ## camGetRankThreshold(rank [, command [, player]])
//;;
//;; Returns the rank threshold for a given rank.
//;;
//;; @param {String|Number} rank
//;; @param {Boolean} command
//;; @param {Number} player
//;; @returns {number}
//;;
function camGetRankThreshold(rankName, command, player)
{
if (!camDef(command))
{
command = false;
}
if (!camDef(player))
{
player = CAM_HUMAN_PLAYER;
}
const brainType = (command) ? "Command Turret" : "Z NULL BRAIN";
let rank = 0;
if (typeof rankName === "string")
{
rank = __camRankStringToNumber(rankName);
}
return Upgrades[player]["Brain"][brainType]["RankThresholds"][rank];
}

//;; ## camSetExpLevel(rank)
//;;
//;; Sets what rank will be used for the AI when it creates units. Can be a rank threshold
//;; index or the name of the rank.
//;;
//;; @param {Number|String} number
//;; @returns {void}
//;;
function camSetExpLevel(number)
{
__camExpLevel = number;
if (!camDef(number))
{
number = 0;
}
__camExpLevel = (typeof number === "string") ? __camRankStringToNumber(number) : number;
}

//;; ## camSetOnMapEnemyUnitExp()
//;;
//;; Sets all non-player units to the chosen rank set through camSetExpLevel().
//;;
//;; @returns {void}
//;;
function camSetOnMapEnemyUnitExp()
{
enumDroid(CAM_NEW_PARADIGM)
Expand Down Expand Up @@ -681,35 +727,52 @@ function __camAiPowerReset()
}
}

function __camRankStringToNumber(rankName)
{
if (!camDef(rankName))
{
camDebug("Undefined parameter");
return 0;
}
if (typeof rankName !== "string")
{
camDebug("Please specify rank as a string");
return 0;
}
let rank = 0;
switch (rankName.toLowerCase())
{
case "rookie": rank = 0; break;
case "green": rank = 1; break;
case "trained": rank = 2; break;
case "regular": rank = 3; break;
case "professional": rank = 4; break;
case "veteran": rank = 5; break;
case "elite": rank = 6; break;
case "special": rank = 7; break;
case "hero": rank = 8; break;
default: camDebug("Unknown rank encountered");
}
return rank;
}

function __camGetExpRangeLevel(useCommanderRanks)
{
if (!camDef(useCommanderRanks))
{
useCommanderRanks = false;
}
const unitRanks = {
rookie: 0,
green: 4,
trained: 8,
regular: 16,
professional: 32,
veteran: 64,
elite: 128,
special: 256,
hero: 512,
};
const commandRanks = {
rookie: 0,
green: (camClassicMode()) ? 8 : 16,
trained: (camClassicMode()) ? 16 : 48,
regular: (camClassicMode()) ? 32 : 128,
professional: (camClassicMode()) ? 64 : 256,
veteran: (camClassicMode()) ? 128 : 512,
elite: (camClassicMode()) ? 512 : 1024,
special: (camClassicMode()) ? 1024 : 1536,
hero: 2048,
const ranks = {
rookie: camGetRankThreshold("rookie", useCommanderRanks),
green: camGetRankThreshold("green", useCommanderRanks),
trained: camGetRankThreshold("trained", useCommanderRanks),
regular: camGetRankThreshold("regular", useCommanderRanks),
professional: camGetRankThreshold("professional", useCommanderRanks),
veteran: camGetRankThreshold("veteran", useCommanderRanks),
elite: camGetRankThreshold("elite", useCommanderRanks),
special: camGetRankThreshold("special", useCommanderRanks),
hero: camGetRankThreshold("hero", useCommanderRanks)
};
const ranks = (useCommanderRanks) ? commandRanks : unitRanks;
let exp = [];

switch (__camExpLevel)
Expand Down

0 comments on commit a2b0c52

Please sign in to comment.