From 727296d506bc548dd33322b9e9e9a16c14447f26 Mon Sep 17 00:00:00 2001 From: INeedBots Date: Fri, 2 Oct 2020 22:48:50 -0600 Subject: [PATCH] fix rollover --- userraw/maps/mp/killstreaks/_killstreaks.gsc | 51 ++++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/userraw/maps/mp/killstreaks/_killstreaks.gsc b/userraw/maps/mp/killstreaks/_killstreaks.gsc index 2cc13a3..376609f 100644 --- a/userraw/maps/mp/killstreaks/_killstreaks.gsc +++ b/userraw/maps/mp/killstreaks/_killstreaks.gsc @@ -1285,26 +1285,67 @@ applySpecialistKillstreaks() modifier = 0; killstreaks = []; - killstreaks[2 + modifier] = self.pers["specialist_perks"][self.class_num][0]; killstreaks[4 + modifier] = self.pers["specialist_perks"][self.class_num][1]; killstreaks[6 + modifier] = self.pers["specialist_perks"][self.class_num][2]; killstreaks[8 + modifier] = "specialty_onemanarmy"; - streakVals = GetArrayKeys(self.startKillStreaks); // we assume that nuke val is above 8 - + maxVal = -1; + oldStreaks = []; + streakVals = GetArrayKeys(self.startKillStreaks); for (i = 0; i < streakVals.size; i++) { streakVal = streakVals[i]; streakName = self.startKillStreaks[streakVal]; + if (isSubStr(streakName, "-rollover")) + continue; + if (!self.startedWithHardline) streakVal += modifier; - killstreaks[streakVal] = streakName; + if (streakVal > maxVal) + maxVal = streakVal; + + oldStreaks[streakVal] = streakName; } - self.killStreaks = killstreaks; + if (maxVal < (8 + modifier)) + maxVal = 8 + modifier; + + // build new killstreaks with merged specialists + newKillstreaks = []; + for (i = 0; i <= maxVal; i++) + { + if (isDefined(killstreaks[i])) + { + newKillstreaks[i] = killstreaks[i]; + continue; + } + + if (isDefined(oldStreaks[i])) + { + newKillstreaks[i] = oldStreaks[i]; + continue; + } + } + + // defcon rollover + maxRollOvers = 10; + for ( rollOver = 1; rollOver <= maxRollOvers; rollOver++ ) + { + streakVals = GetArrayKeys(oldStreaks); + + for (i = 0; i < streakVals.size; i++) + { + streakVal = streakVals[i]; + streakName = oldStreaks[streakVal]; + + newKillstreaks[ streakVal + (maxVal*rollOver) ] = streakName + "-rollover" + rollOver; + } + } + + self.killStreaks = newKillstreaks; // update the hud incase hardline changed the values self startKSHud();