TS: Improve configurability by game scheme
authorWuzzy <Wuzzy2@mail.ru>
Sat, 05 Jan 2019 21:52:15 +0100
changeset 14521 8a11548cb1d2
parent 14520 c96079ee4687
child 14522 d0441c7e9000
TS: Improve configurability by game scheme
ChangeLog.txt
QTfrontend/model/gameSchemeModel.cpp
share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.cfg
share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua
--- a/ChangeLog.txt	Sat Jan 05 21:07:22 2019 +0100
+++ b/ChangeLog.txt	Sat Jan 05 21:52:15 2019 +0100
@@ -11,6 +11,7 @@
  + Restructure credits
  + Credits screen in main menu is now translatable
  + Don't show crate spawn message for initial crates in missions
+ + The Specialists: Unlock game scheme
  + The Specialists: Add script parameter support to set custom specialists order
  * Use player-chosen team identity in campaigns and singleplayer missions
  * Fix last 2 characters in demo chat being missing
--- a/QTfrontend/model/gameSchemeModel.cpp	Sat Jan 05 21:07:22 2019 +0100
+++ b/QTfrontend/model/gameSchemeModel.cpp	Sat Jan 05 21:52:15 2019 +0100
@@ -89,6 +89,7 @@
                          << "King Mode"
                          << "Mutant"
                          << "Construction Mode"
+                         << "The Specialists"
                          << "Space Invasion"
                          << "HedgeEditor"
                          ;
@@ -671,9 +672,58 @@
             << QVariant("initialenergy=550, energyperround=50, maxenergy=1000, cratesperround=5") // scriptparam    43
             ;
 
+    QList<QVariant> specialists;
+    specialists
+            << predefSchemesNames[12]  // name           0
+            << QVariant(true)          // switchhog      1
+            << QVariant(false)         // team divide    2
+            << QVariant(false)         // solid land     3
+            << QVariant(false)         // border         4
+            << QVariant(false)         // low gravity    5
+            << QVariant(false)         // laser sight    6
+            << QVariant(false)         // invulnerable   7
+            << QVariant(false)         // reset health   8
+            << QVariant(false)         // vampiric       9
+            << QVariant(false)         // karma          10
+            << QVariant(false)         // artillery      11
+            << QVariant(false)         // random order   12
+            << QVariant(false)         // king           13
+            << QVariant(true)          // place hog      14
+            << QVariant(false)         // shared ammo    15
+            << QVariant(false)         // disable girders 16
+            << QVariant(false)         // disable land objects 17
+            << QVariant(false)         // AI survival    18
+            << QVariant(true)          // inf. attack    19
+            << QVariant(true)          // reset weps     20
+            << QVariant(true)          // per hog ammo   21
+            << QVariant(false)         // no wind        22
+            << QVariant(false)         // more wind      23
+            << QVariant(false)         // tag team       24
+            << QVariant(false)         // bottom border  25
+            << QVariant(100)           // damage modfier 26
+            << QVariant(45)            // turn time      27
+            << QVariant(100)           // init health    28
+            << QVariant(15)            // sudden death   29
+            << QVariant(5)             // case prob      30
+            << QVariant(3)             // mines time     31
+            << QVariant(0)             // mines number   32
+            << QVariant(0)             // mine dud pct   33
+            << QVariant(0)             // explosives     34
+            << QVariant(0)             // air mines      35
+            << QVariant(100)           // health case pct 36
+            << QVariant(25)            // health case amt 37
+            << QVariant(47)            // water rise amt 38
+            << QVariant(5)             // health dec amt 39
+            << QVariant(100)           // rope modfier   40
+            << QVariant(100)           // get away time  41
+            << QVariant(0)             // world edge     42
+            // NOTE: If you change this, also change the defaults in the The Specialists script
+            << QVariant("t=SENDIAPL")  // scriptparam    43
+            ;
+
     QList<QVariant> spaceinvasion;
     spaceinvasion
-            << predefSchemesNames[12]  // name           0
+            << predefSchemesNames[13]  // name           0
             << QVariant(false)         // switchhog      1
             << QVariant(false)         // team divide    2
             << QVariant(false)         // solid land     3
@@ -722,7 +772,7 @@
 
     QList<QVariant> hedgeeditor;
     hedgeeditor
-            << predefSchemesNames[13]  // name           0
+            << predefSchemesNames[14]  // name           0
             << QVariant(false)         // switchhog      1
             << QVariant(false)         // team divide    2
             << QVariant(false)         // solid land     3
@@ -782,6 +832,7 @@
     schemes.append(kingmode);
     schemes.append(mutant);
     schemes.append(construction);
+    schemes.append(specialists);
     schemes.append(spaceinvasion);
     schemes.append(hedgeeditor);
 
--- a/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.cfg	Sat Jan 05 21:07:22 2019 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.cfg	Sat Jan 05 21:52:15 2019 +0100
@@ -1,2 +1,2 @@
-*
+The_Specialists
 locked
--- a/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua	Sat Jan 05 21:07:22 2019 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua	Sat Jan 05 21:52:15 2019 +0100
@@ -216,9 +216,16 @@
 end
 
 function onGameInit()
-	ClearGameFlags()
-	EnableGameFlags(gfResetWeps, gfInfAttack, gfPlaceHog, gfPerHogAmmo, gfSwitchHog)
+	-- Force-disable harmful game flags
+	DisableGameFlags(gfSharedAmmo, gfKing)
+	-- Force-enable game-critical game flags
+	EnableGameFlags(gfPerHogAmmo, gfResetWeps)
+	-- NOTE: For your game scheme, these game flags are recommended: gfResetWeps, gfPlaceHog, gfSwitchHog, gfInfAttack
+
+	-- No weapon crates
 	HealthCaseProb = 100
+
+	-- Instructions
 	Goals = loc("The Specialists: Each hedgehog starts with its own weapon set")
 end