Skip to content

Commit c30f264

Browse files
authored
Merge pull request #516 from CactusPuppy/feat/enable-perks-setting
feat: enable perks lobby setting
2 parents 248c6ce + 10d2ea1 commit c30f264

File tree

3 files changed

+107
-15
lines changed

3 files changed

+107
-15
lines changed

Deltinteger/Deltinteger/Lobby/Modes.cs

+29-15
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ public class ModeSettingCollection : LobbySettingCollection<ModeSettingCollectio
217217
private static readonly LobbySetting TS1WalkSpeed = new RangeValue(false, true, "TS-1 Walk Speed Modifier", 10, 500);
218218
private static readonly LobbySetting TS1PushSpeed = new RangeValue(false, true, "TS-1 Push Speed Modifier", 10, 500);
219219
private static readonly LobbySetting CompetitiveRules = new SwitchValue("Competitive Rules", false);
220+
private static readonly LobbySetting EnablePerks_DefaultOn = new SwitchValue("Enable Perks", true) { ReferenceName = "Enable Perks On" };
221+
private static readonly LobbySetting EnablePerks_DefaultOff = new SwitchValue("Enable Perks", false) { ReferenceName = "Enable Perks Off" };
220222
private static readonly LobbySetting Enabled_DefaultOn = new SwitchValue("Enabled", true) { ReferenceName = "Enabled On" };
221223
private static readonly LobbySetting Enabled_DefaultOff = new SwitchValue("Enabled", false) { ReferenceName = "Enabled Off" };
222224
private static readonly LobbySetting GameLengthInMinutes = new RangeValue(true, false, "Game Length In Minutes", 5, 15, 10);
@@ -288,6 +290,18 @@ public ModeSettingCollection Competitive()
288290
return this;
289291
}
290292

293+
public ModeSettingCollection PerksEnabled()
294+
{
295+
Add(EnablePerks_DefaultOn);
296+
return this;
297+
}
298+
299+
public ModeSettingCollection PerksDisabled()
300+
{
301+
Add(EnablePerks_DefaultOff);
302+
return this;
303+
}
304+
291305
public ModeSettingCollection Elimination() => Add(HeroSelectionTime).Add(ScoreToWin_1to9).Add(RestrictPreviouslyUsedHeroes).Add(HeroSelection).Add(LimitedChoicePool)
292306
.Add(CaptureObjectiveTiebreaker).Add(TiebreakerAfterTimeElapsed).Add(TimeToCapture).Add(DrawAfterMatchTimeElaspedWithNoTiebreaker).Add(RevealHeroes).Add(RevealHeroesAfterMatchTimeElapsed);
293307

@@ -331,29 +345,29 @@ public static void Init()
331345
var all = new ModeSettingCollection("All");
332346
AllModeSettings = [
333347
all,
334-
new ModeSettingCollection("Assault", true).Competitive().AddCaptureSpeed(),
335-
new ModeSettingCollection("Control", true).Competitive().AddCaptureSpeed().Add(LimitValidControlPoints).AddIntRange("Score To Win", false, 1, 3, 2, "Score To Win 1-3").Add(ScoringSpeedModifier),
336-
new ModeSettingCollection("Escort", true).Competitive().AddPayloadSpeed(),
337-
new ModeSettingCollection("Hybrid", true).Competitive().AddCaptureSpeed().AddPayloadSpeed(),
338-
new ModeSettingCollection("Push", true).Competitive().AddTS1WalkSpeed().AddTS1PushSpeed(),
339-
new ModeSettingCollection("Flashpoint", true).Competitive().AddCaptureSpeed()
348+
new ModeSettingCollection("Assault", true).Competitive().PerksEnabled().AddCaptureSpeed(),
349+
new ModeSettingCollection("Control", true).Competitive().PerksEnabled().AddCaptureSpeed().Add(LimitValidControlPoints).AddIntRange("Score To Win", false, 1, 3, 2, "Score To Win 1-3").Add(ScoringSpeedModifier),
350+
new ModeSettingCollection("Escort", true).Competitive().PerksEnabled().AddPayloadSpeed(),
351+
new ModeSettingCollection("Hybrid", true).Competitive().PerksEnabled().AddCaptureSpeed().AddPayloadSpeed(),
352+
new ModeSettingCollection("Push", true).Competitive().PerksEnabled().AddTS1WalkSpeed().AddTS1PushSpeed(),
353+
new ModeSettingCollection("Flashpoint", true).Competitive().PerksEnabled().AddCaptureSpeed()
340354
.AddSwitch("Control Point A", true).AddSwitch("Control Point B", true).AddSwitch("Control Point C", true).AddSwitch("Control Point D", true).AddSwitch("Control Point E", true)
341355
.AddSelect("First Active Control Point", "A", "B", "C", "D", "E", "Random")
342356
.AddIntRange("Score To Win", false, 1, 10, 3).Add(ScoringSpeedModifier),
343-
new ModeSettingCollection("Clash", true).Competitive()
357+
new ModeSettingCollection("Clash", true).Competitive().PerksEnabled()
344358
.Add(CaptureSpeedClash),
345-
new ModeSettingCollection("Capture The Flag", false).AddSwitch("Blitz Flag Locations", false).AddSwitch("Damage Interrupts Flag Interaction", false)
359+
new ModeSettingCollection("Capture The Flag", false).PerksDisabled().AddSwitch("Blitz Flag Locations", false).AddSwitch("Damage Interrupts Flag Interaction", false)
346360
.AddSelect("Flag Carrier Abilities", "Restricted", "All", "None").AddRange("Flag Dropped Lock Time", 0, 10, 5).AddRange("Flag Pickup Time", 0, 5, 0).AddRange("Flag Return Time", 0, 5, 4)
347361
.AddRange("Flag Score Respawn Time", 0, 20, 15).AddIntRange("Game Length (Minutes)", false, 5, 15, 8).AddRange("Respawn Speed Buff Duration", 0, 60, 0).Add(ScoreToWin_1to9)
348362
.AddSwitch("Team Needs Flag At Base To Score", false),
349-
new ModeSettingCollection("Deathmatch", false).Add(GameLengthInMinutes).Add(SelfInitiatedRespawn).Add(ScoreToWin_1to5000),
350-
new ModeSettingCollection("Elimination", false).Elimination(),
351-
new ModeSettingCollection("Team Deathmatch", false).Add(GameLengthInMinutes).AddSwitch("Mercy Resurrect Counteracts Kills", true).AddIntRange("Score To Win", false, 1, 200, 30, "Score To Win 1-200").Add(SelfInitiatedRespawn).AddSwitch("Imbalanced Team Score To Win", false)
363+
new ModeSettingCollection("Deathmatch", false).PerksDisabled().Add(GameLengthInMinutes).Add(SelfInitiatedRespawn).Add(ScoreToWin_1to5000),
364+
new ModeSettingCollection("Elimination", false).PerksDisabled().Elimination(),
365+
new ModeSettingCollection("Team Deathmatch", false).PerksDisabled().Add(GameLengthInMinutes).AddSwitch("Mercy Resurrect Counteracts Kills", true).AddIntRange("Score To Win", false, 1, 200, 30, "Score To Win 1-200").Add(SelfInitiatedRespawn).AddSwitch("Imbalanced Team Score To Win", false)
352366
.AddIntRange("Team 1 Score To Win", false, 1, 200, 30).AddIntRange("Team 2 Score To Win", false, 1, 200, 30),
353-
new ModeSettingCollection("Skirmish", false).Add(LimitValidControlPoints),
354-
new ModeSettingCollection("Practice Range", false).AddSwitch("Spawn Training Bots", true).AddRange("Training Bot Respawn Time Scalar", 10, 500),
355-
new ModeSettingCollection("Freezethaw Elimination", false).Elimination(),
356-
new ModeSettingCollection("Bounty Hunter").Add(Enabled_DefaultOff).AddIntRange("Base Score For Killing A Bounty Target", false, 0, 100, 300).AddIntRange("Bounty Increase Per Kill As Bounty Target", false, 0, 1000, 0).AddIntRange("Bounty Target Count", false, 1, 1, 1).AddIntRange("Score Per Kill", false, 0, 1000, 100).AddIntRange("Score Per Kill As Bounty Target", false, 0, 1000, 300)
367+
new ModeSettingCollection("Skirmish", false).PerksDisabled().Add(LimitValidControlPoints),
368+
new ModeSettingCollection("Practice Range", false).PerksEnabled().AddSwitch("Spawn Training Bots", true).AddRange("Training Bot Respawn Time Scalar", 10, 500),
369+
new ModeSettingCollection("Freezethaw Elimination", false).PerksDisabled().Elimination(),
370+
new ModeSettingCollection("Bounty Hunter").PerksEnabled().Add(Enabled_DefaultOff).AddIntRange("Base Score For Killing A Bounty Target", false, 0, 100, 300).AddIntRange("Bounty Increase Per Kill As Bounty Target", false, 0, 1000, 0).AddIntRange("Bounty Target Count", false, 1, 1, 1).AddIntRange("Score Per Kill", false, 0, 1000, 100).AddIntRange("Score Per Kill As Bounty Target", false, 0, 1000, 300)
357371
.Add(GameLengthInMinutes).Add(ScoreToWin_1to5000).Add(SelfInitiatedRespawn)
358372
];
359373

Deltinteger/Deltinteger/LobbySettings.json

+22
Original file line numberDiff line numberDiff line change
@@ -1365,13 +1365,15 @@
13651365
"template": "base_mode",
13661366
"$with_maps": "Assault",
13671367
"$competitive": true,
1368+
"$enable_perks": true,
13681369
"$capture_speed": true
13691370
},
13701371
{
13711372
"name": "Control",
13721373
"template": "base_mode",
13731374
"$with_maps": "Control",
13741375
"$competitive": true,
1376+
"$enable_perks": true,
13751377
"$capture_speed": true,
13761378
"$limit_valid_control_points": true,
13771379
"$scoring_speed_modifier": true,
@@ -1390,13 +1392,15 @@
13901392
"$with_maps": "Escort",
13911393
"template": "base_mode",
13921394
"$competitive": true,
1395+
"$enable_perks": true,
13931396
"$payload_speed": true
13941397
},
13951398
{
13961399
"name": "Hybrid",
13971400
"template": "base_mode",
13981401
"$with_maps": "Hybrid",
13991402
"$competitive": true,
1403+
"$enable_perks": true,
14001404
"$capture_speed": true,
14011405
"$payload_speed": true
14021406
},
@@ -1405,6 +1409,7 @@
14051409
"template": "base_mode",
14061410
"$with_maps": "Push",
14071411
"$competitive": true,
1412+
"$enable_perks": true,
14081413
"content": [
14091414
{
14101415
"name": "TS-1 Walk Speed Modifier",
@@ -1425,6 +1430,7 @@
14251430
"template": "base_mode",
14261431
"$with_maps": "Flashpoint",
14271432
"$competitive": true,
1433+
"$enable_perks": true,
14281434
"$capture_speed": true,
14291435
"$scoring_speed_modifier": true,
14301436
"content": [
@@ -1478,6 +1484,7 @@
14781484
"template": "base_mode",
14791485
"$with_maps": "Clash",
14801486
"$competitive": true,
1487+
"$enable_perks": true,
14811488
"content": [
14821489
{
14831490
"name": "Capture Speed Modifier",
@@ -1492,6 +1499,7 @@
14921499
"name": "Capture The Flag",
14931500
"template": "base_mode",
14941501
"$with_maps": "Capture The Flag",
1502+
"$enable_perks": true,
14951503
"content": [
14961504
{
14971505
"name": "Blitz Flag Locations",
@@ -1570,6 +1578,7 @@
15701578
"$with_maps": "Deathmatch",
15711579
"$game_length": true,
15721580
"$self_respawn": true,
1581+
"$enable_perks": true,
15731582
"content": [
15741583
{
15751584
"name": "Score To Win",
@@ -1584,6 +1593,7 @@
15841593
"name": "Elimination",
15851594
"template": "base_mode",
15861595
"$with_maps": "Elimination",
1596+
"$enable_perks": true,
15871597
"$elimination": true
15881598
},
15891599
{
@@ -1592,6 +1602,7 @@
15921602
"$with_maps": "Team Deathmatch",
15931603
"$game_length": true,
15941604
"$self_respawn": true,
1605+
"$enable_perks": true,
15951606
"content": [
15961607
{
15971608
"name": "Mercy Resurrect Counteracts Kills",
@@ -1629,12 +1640,14 @@
16291640
"name": "Skirmish",
16301641
"template": "base_mode",
16311642
"$with_maps": "Skirmish",
1643+
"$enable_perks": true,
16321644
"$limit_valid_control_points": true
16331645
},
16341646
{
16351647
"name": "Practice Range",
16361648
"template": "base_mode",
16371649
"$with_maps": "Practice Range",
1650+
"$enable_perks": true,
16381651
"content": [
16391652
{
16401653
"name": "Spawn Training Bots",
@@ -1660,6 +1673,7 @@
16601673
"$with_maps": "Bounty Hunter",
16611674
"$game_length": true,
16621675
"$self_respawn": true,
1676+
"$enable_perks": true,
16631677
"content": [
16641678
{
16651679
"name": "Score To Win",
@@ -2038,6 +2052,14 @@
20382052
},
20392053
"base_mode": {
20402054
"params": {
2055+
"enable_perks": {
2056+
"then": [
2057+
{
2058+
"name": "Enable Perks",
2059+
"type": "boolean_onoff"
2060+
}
2061+
]
2062+
},
20412063
"competitive": {
20422064
"then": [
20432065
{

overwatch-script-to-workshop/json-schemas/LobbySettingValidation.json

+56
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@
194194
"default": false,
195195
"type": "boolean"
196196
},
197+
"Enable Perks On": {
198+
"default": true,
199+
"type": "boolean"
200+
},
197201
"Capture Speed Modifier": {
198202
"default": 100.0,
199203
"type": "number",
@@ -479,6 +483,10 @@
479483
"default": false,
480484
"type": "boolean"
481485
},
486+
"Enable Perks Off": {
487+
"default": false,
488+
"type": "boolean"
489+
},
482490
"Blitz Flag Locations": {
483491
"default": false,
484492
"type": "boolean"
@@ -7284,6 +7292,9 @@
72847292
"Competitive Rules": {
72857293
"$ref": "#/definitions/Competitive Rules"
72867294
},
7295+
"Enable Perks": {
7296+
"$ref": "#/definitions/Enable Perks On"
7297+
},
72877298
"Capture Speed Modifier": {
72887299
"$ref": "#/definitions/Capture Speed Modifier"
72897300
},
@@ -7389,6 +7400,9 @@
73897400
"Competitive Rules": {
73907401
"$ref": "#/definitions/Competitive Rules"
73917402
},
7403+
"Enable Perks": {
7404+
"$ref": "#/definitions/Enable Perks On"
7405+
},
73927406
"Capture Speed Modifier": {
73937407
"$ref": "#/definitions/Capture Speed Modifier"
73947408
},
@@ -7454,6 +7468,9 @@
74547468
"Competitive Rules": {
74557469
"$ref": "#/definitions/Competitive Rules"
74567470
},
7471+
"Enable Perks": {
7472+
"$ref": "#/definitions/Enable Perks On"
7473+
},
74577474
"Capture Speed Modifier": {
74587475
"$ref": "#/definitions/Capture Speed Modifier"
74597476
},
@@ -7528,6 +7545,9 @@
75287545
"Competitive Rules": {
75297546
"$ref": "#/definitions/Competitive Rules"
75307547
},
7548+
"Enable Perks": {
7549+
"$ref": "#/definitions/Enable Perks On"
7550+
},
75317551
"Payload Speed Modifier": {
75327552
"$ref": "#/definitions/Payload Speed Modifier"
75337553
},
@@ -7593,6 +7613,9 @@
75937613
"Competitive Rules": {
75947614
"$ref": "#/definitions/Competitive Rules"
75957615
},
7616+
"Enable Perks": {
7617+
"$ref": "#/definitions/Enable Perks On"
7618+
},
75967619
"Capture Speed Modifier": {
75977620
"$ref": "#/definitions/Capture Speed Modifier"
75987621
},
@@ -7661,6 +7684,9 @@
76617684
"Competitive Rules": {
76627685
"$ref": "#/definitions/Competitive Rules"
76637686
},
7687+
"Enable Perks": {
7688+
"$ref": "#/definitions/Enable Perks On"
7689+
},
76647690
"TS-1 Walk Speed Modifier": {
76657691
"$ref": "#/definitions/TS-1 Walk Speed Modifier"
76667692
},
@@ -7729,6 +7755,9 @@
77297755
"Competitive Rules": {
77307756
"$ref": "#/definitions/Competitive Rules"
77317757
},
7758+
"Enable Perks": {
7759+
"$ref": "#/definitions/Enable Perks On"
7760+
},
77327761
"Capture Speed Modifier": {
77337762
"$ref": "#/definitions/Capture Speed Modifier"
77347763
},
@@ -7818,6 +7847,9 @@
78187847
"Competitive Rules": {
78197848
"$ref": "#/definitions/Competitive Rules"
78207849
},
7850+
"Enable Perks": {
7851+
"$ref": "#/definitions/Enable Perks On"
7852+
},
78217853
"Capture Speed Modifier": {
78227854
"$ref": "#/definitions/Capture Speed Modifier - Clash Defaults"
78237855
},
@@ -7880,6 +7912,9 @@
78807912
"Tank Role Passive Health Bonus": {
78817913
"$ref": "#/definitions/Tank Role Passive Health Bonus"
78827914
},
7915+
"Enable Perks": {
7916+
"$ref": "#/definitions/Enable Perks Off"
7917+
},
78837918
"Blitz Flag Locations": {
78847919
"$ref": "#/definitions/Blitz Flag Locations"
78857920
},
@@ -7972,6 +8007,9 @@
79728007
"Tank Role Passive Health Bonus": {
79738008
"$ref": "#/definitions/Tank Role Passive Health Bonus"
79748009
},
8010+
"Enable Perks": {
8011+
"$ref": "#/definitions/Enable Perks Off"
8012+
},
79758013
"Game Length In Minutes": {
79768014
"$ref": "#/definitions/Game Length In Minutes"
79778015
},
@@ -8040,6 +8078,9 @@
80408078
"Tank Role Passive Health Bonus": {
80418079
"$ref": "#/definitions/Tank Role Passive Health Bonus"
80428080
},
8081+
"Enable Perks": {
8082+
"$ref": "#/definitions/Enable Perks Off"
8083+
},
80438084
"Hero Selection Time": {
80448085
"$ref": "#/definitions/Hero Selection Time"
80458086
},
@@ -8132,6 +8173,9 @@
81328173
"Tank Role Passive Health Bonus": {
81338174
"$ref": "#/definitions/Tank Role Passive Health Bonus"
81348175
},
8176+
"Enable Perks": {
8177+
"$ref": "#/definitions/Enable Perks Off"
8178+
},
81358179
"Game Length In Minutes": {
81368180
"$ref": "#/definitions/Game Length In Minutes"
81378181
},
@@ -8212,6 +8256,9 @@
82128256
"Tank Role Passive Health Bonus": {
82138257
"$ref": "#/definitions/Tank Role Passive Health Bonus"
82148258
},
8259+
"Enable Perks": {
8260+
"$ref": "#/definitions/Enable Perks Off"
8261+
},
82158262
"Limit Valid Control Points": {
82168263
"$ref": "#/definitions/Limit Valid Control Points"
82178264
},
@@ -8274,6 +8321,9 @@
82748321
"Tank Role Passive Health Bonus": {
82758322
"$ref": "#/definitions/Tank Role Passive Health Bonus"
82768323
},
8324+
"Enable Perks": {
8325+
"$ref": "#/definitions/Enable Perks On"
8326+
},
82778327
"Spawn Training Bots": {
82788328
"$ref": "#/definitions/Spawn Training Bots"
82798329
},
@@ -8339,6 +8389,9 @@
83398389
"Tank Role Passive Health Bonus": {
83408390
"$ref": "#/definitions/Tank Role Passive Health Bonus"
83418391
},
8392+
"Enable Perks": {
8393+
"$ref": "#/definitions/Enable Perks Off"
8394+
},
83428395
"Hero Selection Time": {
83438396
"$ref": "#/definitions/Hero Selection Time"
83448397
},
@@ -8428,6 +8481,9 @@
84288481
"Tank Role Passive Health Bonus": {
84298482
"$ref": "#/definitions/Tank Role Passive Health Bonus"
84308483
},
8484+
"Enable Perks": {
8485+
"$ref": "#/definitions/Enable Perks On"
8486+
},
84318487
"Enabled": {
84328488
"$ref": "#/definitions/Enabled Off"
84338489
},

0 commit comments

Comments
 (0)