aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers
diff options
context:
space:
mode:
authorConnie Price <contact@connieprice.co.uk>2022-01-05 00:14:57 +0000
committerConnie Price <contact@connieprice.co.uk>2022-01-05 00:14:57 +0000
commitb537fe6db52e0a30aa84592461ba7c1e27715036 (patch)
tree6fa2ab86cd31d6d4f4b7c2b299c84215d49e3c4d /Northstar.CustomServers
parenta352fbb877aabdaf9b124eee47fb78f2ac0007a6 (diff)
downloadNorthstarMods-b537fe6db52e0a30aa84592461ba7c1e27715036.tar.gz
NorthstarMods-b537fe6db52e0a30aa84592461ba7c1e27715036.zip
Boost Fixes Redux
- Fixed Dice Roll still picking "titan only" boosts. - Added a more flexible way to set replacements for "non-titan" modes. `BurnMeter_SetNoTitansReplacement( string original, string replacement)` - Fixed ticks not being rewarded in pairs. - Added support for multiple boost rewards. `BurnMeter_SetBoostRewardCount( string burnRef, int count )`
Diffstat (limited to 'Northstar.CustomServers')
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/burnmeter/_burnmeter.gnut30
-rw-r--r--Northstar.CustomServers/mod/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut3
2 files changed, 24 insertions, 9 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/burnmeter/_burnmeter.gnut b/Northstar.CustomServers/mod/scripts/vscripts/burnmeter/_burnmeter.gnut
index 9bcfd308c..732773714 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/burnmeter/_burnmeter.gnut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/burnmeter/_burnmeter.gnut
@@ -2,7 +2,8 @@ untyped
global function BurnMeter_Init
global function BurnMeter_SetBoostLimit
-global function BurnMeter_CheckBoostLimit
+global function BurnMeter_SetBoostRewardCount
+global function BurnMeter_GetLimitedRewardCount
global function ForceSetGlobalBurncardOverride
global function GetSelectedBurncardRefFromWeaponOrPlayer
global function RunBurnCardUseFunc
@@ -22,8 +23,10 @@ const float AMPED_WEAPONS_LENGTH = 30.0
const int MAPHACK_PULSE_COUNT = 4
const float MAPHACK_PULSE_DELAY = 2.0
-struct {
+struct
+{
string forcedGlobalBurncardOverride = ""
+ table<string, int> boostRewardCount
table<string, int> boostLimits
} file
@@ -49,6 +52,8 @@ void function BurnMeter_Init()
BurnReward_GetByRef( "burnmeter_rodeo_grenade" ).rewardAvailableCallback = PlayerUsesRodeoGrenadeBurncard
BurnReward_GetByRef( "burnmeter_nuke_titan" ).rewardAvailableCallback = PlayerUsesNukeTitanBurncard // unused in vanilla, fun though
+ BurnMeter_SetBoostRewardCount( "burnmeter_ticks", 2 )
+
BurnMeter_SetBoostLimit( "burnmeter_ticks", 6 )
BurnMeter_SetBoostLimit( "burnmeter_ap_turret_weapon", 3 )
BurnMeter_SetBoostLimit( "burnmeter_at_turret_weapon", 3 )
@@ -70,24 +75,35 @@ void function BurnMeter_SetBoostLimit( string burnRef, int limit )
file.boostLimits[burnRef] <- limit
}
-bool function BurnMeter_CheckBoostLimit( entity player )
+
+void function BurnMeter_SetBoostRewardCount( string burnRef, int rewardCount )
+{
+ file.boostRewardCount[burnRef] <- rewardCount
+}
+
+int function BurnMeter_GetLimitedRewardCount( entity player )
{
EarnObject earnObject = PlayerEarnMeter_GetReward( player )
string burnRef = earnObject.ref
int limit = -1
+ int rewardCount = 1
if ( burnRef in file.boostLimits )
limit = file.boostLimits[burnRef]
+ if ( burnRef in file.boostRewardCount )
+ rewardCount = file.boostRewardCount[burnRef]
+
if ( limit < 0 )
- return false
+ return rewardCount
int current = PlayerInventory_CountBurnRef( player, burnRef )
+ int delta = limit - current
- if ( current < limit )
- return false
+ if ( delta <= 0 )
+ return 0
- return true
+ return int( min( delta, rewardCount ) )
}
void function ForceSetGlobalBurncardOverride( string ref )
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut b/Northstar.CustomServers/mod/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
index 193262f17..1aa0f042d 100644
--- a/Northstar.CustomServers/mod/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
+++ b/Northstar.CustomServers/mod/scripts/vscripts/earn_meter/sv_earn_meter_mp.gnut
@@ -153,9 +153,8 @@ void function EarnMeterMP_BoostEarned( entity player )
while ( burncard.ref == "burnmeter_random_foil" )
burncard = BurnReward_GetRandom()
- if ( !BurnMeter_CheckBoostLimit( player ) ) {
+ for ( int i = 0; i < BurnMeter_GetLimitedRewardCount( player ); i++ )
BurnMeter_GiveRewardDirect( player, burncard.ref )
- }
PlayerEarnMeter_DisableReward( player )
}