Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save TheCasualObserver/b35c69d9acc6477f43ad to your computer and use it in GitHub Desktop.
Save TheCasualObserver/b35c69d9acc6477f43ad to your computer and use it in GitHub Desktop.
Patch for CritterMoundFork that adds a new work assignment method
From 3fe8896e5197d9d8ce64dfd28909676e1e24d3ad Mon Sep 17 00:00:00 2001
From: TheCasualObserver <ObservatorCasualis@gmx.de>
Date: Mon, 29 Jun 2015 19:47:49 +0200
Subject: [PATCH] Implemented an alternative work assignment method that
focuses on improving the bottleneck of the production and not the lowest
throughput. Added an option to display where the workers are assigned to.
---
Scripts/Game.js | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
index.htm | 14 +++-
index.html | 13 +++-
3 files changed, 215 insertions(+), 7 deletions(-)
diff --git a/Scripts/Game.js b/Scripts/Game.js
index 516d673..aef07a2 100644
--- a/Scripts/Game.js
+++ b/Scripts/Game.js
@@ -327,6 +327,8 @@ var ticksPerSecond=20,game,GameController=function()
this.treasureTitle=ko.observable("");
this.treasureText=ko.observable("");
this.battleTurnLength=ko.observable(ticksPerSecond/2);
+ this.newWorkAssignment=ko.observable(false);
+ this.workAssignmentNotification=ko.observable(false);
this.battleTurnClock=0;
this.inBattle=ko.observable(!1);
this.battleDamage=ko.observable(0);
@@ -755,6 +757,12 @@ var ticksPerSecond=20,game,GameController=function()
{
n.job==1&&(n.isSelected(!1),n.isLocked(!n.isLocked()))
}
+ ,n.prototype.WorkerNotification=function(txt)
+ {
+ if (this.workAssignmentNotification()) {
+ $(".tabcontents").notify(txt,"Info");
+ }
+ }
,n.prototype.Move=function(n,t,i,r)
{
var f,o,l,a,p,e,u;
@@ -824,8 +832,187 @@ var ticksPerSecond=20,game,GameController=function()
u.job=2;
u.isSelected(!1);
f.remove(u);
- var h=u.dirtPerSecond>this.lowestMiner()||this.mineMound().length<this.maxMineMoundSize(),c=u.grassPerSecond>this.lowestFarmer()||this.farmMound().length<this.maxFarmMoundSize(),v=u.carryPerSecond>this.lowestCarrier()||this.carrierMound().length<this.maxCarrierMoundSize(),y=u.sodPerSecond>this.lowestFactory()||this.factoryMound().length<this.maxFactoryMoundSize(),s=Math.min(this.dirtPerSecondRaw(),this.grassPerSecondRaw(),this.carryPerSecondRaw(),this.sodPerSecondRaw());
- h&&s==this.dirtPerSecondRaw()?this.mineMound.unshift(u):c&&s==this.grassPerSecondRaw()?this.farmMound.unshift(u):v&&s==this.carryPerSecondRaw()?this.carrierMound.unshift(u):y&&s==this.sodPerSecondRaw()?this.factoryMound.unshift(u):h&&c?(p=Math.min(this.dirtPerSecondRaw(),this.grassPerSecondRaw()),p==this.dirtPerSecondRaw()?this.mineMound.unshift(u):this.farmMound.unshift(u)):h?this.mineMound.unshift(u):c?this.farmMound.unshift(u):v?this.carrierMound.unshift(u):y&&this.factoryMound.unshift(u);
+ if (this.newWorkAssignment()) {
+ if (this.mineMound().length<this.maxMineMoundSize()||this.farmMound().length<this.maxFarmMoundSize()||this.carrierMound().length<this.maxCarrierMoundSize()||this.factoryMound().length<this.maxFactoryMoundSize()) {
+ if (this.mineMound().length==0||this.farmMound().length==0||this.carrierMound().length==0||this.factoryMound().length==0) {
+ if (this.mineMound().length==0) {
+ this.mineMound.unshift(u);
+ this.WorkerNotification("Fill Empty Mine Slot");
+ } else {
+ if (this.farmMound().length==0) {
+ this.farmMound.unshift(u);
+ this.WorkerNotification("Fill Empty Farm Slot");
+ } else {
+ if (this.carrierMound().length==0) {
+ this.carrierMound.unshift(u);
+ this.WorkerNotification("Fill Empty Carrier Slot");
+ } else {
+ this.factoryMound.unshift(u);
+ this.WorkerNotification("Fill Empty Factory Slot");
+ }
+ }
+ }
+ } else {
+ if (this.mineMound().length<this.maxMineMoundSize()||this.farmMound().length<this.maxFarmMoundSize()) {
+ p=Math.min(this.dirtPerSecondRaw(),this.grassPerSecondRaw());
+ if (p==this.dirtPerSecondRaw())
+ {
+ this.mineMound.unshift(u);
+ this.WorkerNotification("Fill Empty Mine Slot");
+ } else {
+ this.farmMound.unshift(u);
+ this.WorkerNotification("Fill Empty Farm Slot");
+ }
+ } else {
+ if (this.carrierMound().length<this.maxCarrierMoundSize()) {
+ this.carrierMound.unshift(u);
+ this.WorkerNotification("Fill Empty Carrier Slot");
+ } else {
+ this.factoryMound.unshift(u);
+ this.WorkerNotification("Fill Empty Factory Slot");
+ }
+ }
+ }
+ } else {
+ var carryPS = this.carryPerSecond();
+ var dirtPS = this.dirtPerSecond();
+ var mineCrit = this.dirt()==0&&this.factoryDirt()==0&&dirtPS<carryPS;
+ if (mineCrit&&u.dirtPerSecond>this.lowestMiner()) {
+ this.WorkerNotification("Critter went to Mining");
+ this.mineMound.unshift(u);
+ } else {
+ var grassPS = this.grassPerSecond();
+ var farmCrit = this.factoryGrass()==0&&this.grass()==0&&grassPS<carryPS;
+ if (farmCrit&&u.grassPerSecond>this.lowestFarmer()&&!mineCrit) {
+ this.WorkerNotification("Critter went to Farming");
+ this.farmMound.unshift(u);
+ } else {
+ var sodPS = this.sodPerSecond();
+ var sodCrit = (this.factoryDirt()>0&&this.factoryGrass()>0)||(sodPS<carryPS&&!farmCrit&&!mineCrit);
+ if (sodCrit&&u.sodPerSecond>this.lowestFactory()) {
+ this.WorkerNotification("Critter went to Factory");
+ this.factoryMound.unshift(u);
+ } else {
+ var carryCrit = !(farmCrit||mineCrit||sodCrit);
+ if (carryCrit&&u.carryPerSecond>this.lowestCarrier()) {
+ this.WorkerNotification("Critter went to Carrying");
+ this.carrierMound.unshift(u);
+ } else {
+ // critter can not improve critical path
+ // try improvements in random order
+ var arr = Shuffle([0,1,2,3]);
+ var i=0;
+ var again=true;
+ while (i<4&&again) {
+ if (arr[i]==0) {
+ if (u.dirtPerSecond>this.lowestMiner()) {
+ this.WorkerNotification("Critter chose Mining");
+ this.mineMound.unshift(u);
+ again=false;
+ }
+ } else {
+ if (arr[i]==1) {
+ if (u.grassPerSecond>this.lowestFarmer()) {
+ this.WorkerNotification("Critter chose Farming");
+ this.farmMound.unshift(u);
+ again=false;
+ }
+ } else {
+ if (arr[i]==2) {
+ if (u.sodPerSecond>this.lowestFactory()) {
+ this.WorkerNotification("Critter chose Factory");
+ this.factoryMound.unshift(u);
+ again=false;
+ }
+ } else { // arr[i]==3
+ if (u.carryPerSecond>this.lowestCarrier()) {
+ this.WorkerNotification("Critter chose Carrying");
+ this.carrierMound.unshift(u);
+ again=false;
+ }
+ }
+ }
+ }
+ i=i+1;
+ }
+ // critter does not improve the production
+ if (again) {
+ this.WorkerNotification("Critter went to Holidays");
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ var h=u.dirtPerSecond>this.lowestMiner()||this.mineMound().length<this.maxMineMoundSize();
+ var c=u.grassPerSecond>this.lowestFarmer()||this.farmMound().length<this.maxFarmMoundSize();
+ var v=u.carryPerSecond>this.lowestCarrier()||this.carrierMound().length<this.maxCarrierMoundSize();
+ var y=u.sodPerSecond>this.lowestFactory()||this.factoryMound().length<this.maxFactoryMoundSize();
+ var s=Math.min(this.dirtPerSecondRaw(),this.grassPerSecondRaw(),this.carryPerSecondRaw(),this.sodPerSecondRaw());
+ if (h&&s==this.dirtPerSecondRaw())
+ {
+ this.WorkerNotification("Critter went to Mine");
+ this.mineMound.unshift(u);
+ } else {
+ if (c&&s==this.grassPerSecondRaw())
+ {
+ this.WorkerNotification("Critter went to Farm");
+ this.farmMound.unshift(u);
+ } else {
+ if (v&&s==this.carryPerSecondRaw())
+ {
+ this.WorkerNotification("Critter went to Carrier");
+ this.carrierMound.unshift(u);
+ } else {
+ if (y&&s==this.sodPerSecondRaw())
+ {
+ this.WorkerNotification("Critter went to Factory");
+ this.factoryMound.unshift(u);
+ } else {
+ if (h&&c)
+ {
+ p=Math.min(this.dirtPerSecondRaw(),this.grassPerSecondRaw());
+ if (p==this.dirtPerSecondRaw())
+ {
+ this.WorkerNotification("Critter chose Mineing");
+ this.mineMound.unshift(u);
+ } else {
+ this.WorkerNotification("Critter chose Farming");
+ this.farmMound.unshift(u);
+ }
+ } else {
+ if (h)
+ {
+ this.WorkerNotification ("Critter chose Mineing");
+ this.mineMound.unshift(u)
+ } else {
+ if (c)
+ {
+ this.WorkerNotification("Critter chose Farming");
+ this.farmMound.unshift(u)
+ } else {
+ if (v)
+ {
+ this.WorkerNotification("Critter chose Carrier");
+ this.carrierMound.unshift(u)
+ } else {
+ if (y)
+ {
+ this.WorkerNotification("Critter chose Factory");
+ this.factoryMound.unshift(u);
+ } else {
+ this.WorkerNotification("Critter went to Holidays");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
this.Sort();
this.UpdateProduction()
}
@@ -1312,7 +1499,7 @@ var ticksPerSecond=20,game,GameController=function()
,n.prototype.Save=function()
{
var n=new GameSave,t;
- return n.version="1.0",n.dirtRaw=this.dirtRaw(),n.grassRaw=this.grassRaw(),n.sodRaw=this.sodRaw(),n.factoryDirtRaw=this.factoryDirtRaw(),n.factoryGrassRaw=this.factoryGrassRaw(),n.generations=this.generations(),n.mother=this.mother(),n.father=this.father(),n.princess=this.princess(),n.prince=this.prince(),n.sodDedicatedToBreeding=this.sodDedicatedToBreeding(),n.isHeirsUnlocked=this.isHeirsUnlocked(),n.femaleMound=this.femaleMound(),n.maleMound=this.maleMound(),n.princessMound=this.princessMound(),n.princeMound=this.princeMound(),n.mineMound=this.mineMound(),n.farmMound=this.farmMound(),n.carrierMound=this.carrierMound(),n.factoryMound=this.factoryMound(),n.armyMound=this.armyMound(),n.maxFemaleMoundSize=this.maxFemaleMoundSize(),n.maxMaleMoundSize=this.maxMaleMoundSize(),n.maxPrincessMoundSize=this.maxPrincessMoundSize(),n.maxPrinceMoundSize=this.maxPrinceMoundSize(),n.maxMineMoundSize=this.maxMineMoundSize(),n.bonusMinePercent=this.bonusMinePercent(),n.bonusFarmPercent=this.bonusFarmPercent(),n.bonusCarrierPercent=this.bonusCarrierPercent(),n.bonusFactoryPercent=this.bonusFactoryPercent(),n.maxFarmMoundSize=this.maxFarmMoundSize(),n.maxCarrierMoundSize=this.maxCarrierMoundSize(),n.maxFactoryMoundSize=this.maxFactoryMoundSize(),n.maxArmyMoundSize=this.maxArmyMoundSize(),n.femaleSort=this.femaleSort(),n.maleSort=this.maleSort(),n.princessSort=this.princessSort(),n.princeSort=this.princeSort(),n.armySort=this.armySort(),n.map=this.map(),n.tiles=this.map().tiles(),n.atWar=this.atWar(),n.nations=this.nations(),n.nation=this.nation(),n.achievements=this.achievements(),n.achievementCounts=this.achievementCounts,n.achievementsUnlocked=this.achievementsUnlocked(),n.battleTurnLength=this.battleTurnLength(),n.boosts=this.boosts(),n.maxBoosts=this.maxBoosts(),n.armyUpgrades=this.armyUpgrades(),t=$.base64.encode(ko.toJSON(n)),localStorage.setItem("game2",t),$(".tabcontents").notify("Game Saved","info"),this.saveCheck=60*ticksPerSecond,t
+ return n.version="1.0",n.dirtRaw=this.dirtRaw(),n.grassRaw=this.grassRaw(),n.sodRaw=this.sodRaw(),n.factoryDirtRaw=this.factoryDirtRaw(),n.factoryGrassRaw=this.factoryGrassRaw(),n.generations=this.generations(),n.mother=this.mother(),n.father=this.father(),n.princess=this.princess(),n.prince=this.prince(),n.sodDedicatedToBreeding=this.sodDedicatedToBreeding(),n.isHeirsUnlocked=this.isHeirsUnlocked(),n.femaleMound=this.femaleMound(),n.maleMound=this.maleMound(),n.princessMound=this.princessMound(),n.princeMound=this.princeMound(),n.mineMound=this.mineMound(),n.farmMound=this.farmMound(),n.carrierMound=this.carrierMound(),n.factoryMound=this.factoryMound(),n.armyMound=this.armyMound(),n.maxFemaleMoundSize=this.maxFemaleMoundSize(),n.maxMaleMoundSize=this.maxMaleMoundSize(),n.maxPrincessMoundSize=this.maxPrincessMoundSize(),n.maxPrinceMoundSize=this.maxPrinceMoundSize(),n.maxMineMoundSize=this.maxMineMoundSize(),n.bonusMinePercent=this.bonusMinePercent(),n.bonusFarmPercent=this.bonusFarmPercent(),n.bonusCarrierPercent=this.bonusCarrierPercent(),n.bonusFactoryPercent=this.bonusFactoryPercent(),n.maxFarmMoundSize=this.maxFarmMoundSize(),n.maxCarrierMoundSize=this.maxCarrierMoundSize(),n.maxFactoryMoundSize=this.maxFactoryMoundSize(),n.maxArmyMoundSize=this.maxArmyMoundSize(),n.femaleSort=this.femaleSort(),n.maleSort=this.maleSort(),n.princessSort=this.princessSort(),n.princeSort=this.princeSort(),n.armySort=this.armySort(),n.map=this.map(),n.tiles=this.map().tiles(),n.atWar=this.atWar(),n.nations=this.nations(),n.nation=this.nation(),n.achievements=this.achievements(),n.achievementCounts=this.achievementCounts,n.achievementsUnlocked=this.achievementsUnlocked(),n.battleTurnLength=this.battleTurnLength(),n.newWorkAssignment=this.newWorkAssignment(),n.workAssignmentNotification=this.workAssignmentNotification(),n.boosts=this.boosts(),n.maxBoosts=this.maxBoosts(),n.armyUpgrades=this.armyUpgrades(),t=$.base64.encode(ko.toJSON(n)),localStorage.setItem("game2",t),$(".tabcontents").notify("Game Saved","info"),this.saveCheck=60*ticksPerSecond,t
}
,n.prototype.Load=function(n)
{
@@ -1321,7 +1508,7 @@ var ticksPerSecond=20,game,GameController=function()
{
if(n!==null||localStorage.getItem("game2")!==null)
{
- if(t=n!=null?JSON.parse($.base64.decode(n)):JSON.parse($.base64.decode(localStorage.getItem("game2"))),this.dirtRaw(t.dirtRaw),this.grassRaw(t.grassRaw),this.sodRaw(t.sodRaw),this.factoryDirtRaw(t.factoryDirtRaw),this.factoryGrassRaw(t.factoryGrassRaw),this.generations(t.generations),this.sodDedicatedToBreeding(t.sodDedicatedToBreeding),this.isHeirsUnlocked(t.isHeirsUnlocked),this.maxFemaleMoundSize(t.maxFemaleMoundSize),this.maxMaleMoundSize(t.maxMaleMoundSize),this.maxPrincessMoundSize(t.maxPrincessMoundSize),this.maxPrinceMoundSize(t.maxPrinceMoundSize),this.maxMineMoundSize(t.maxMineMoundSize),this.maxFarmMoundSize(t.maxFarmMoundSize),this.maxCarrierMoundSize(t.maxCarrierMoundSize),this.maxFactoryMoundSize(t.maxFactoryMoundSize),this.maxArmyMoundSize(t.maxArmyMoundSize),this.bonusMinePercent(t.bonusMinePercent),this.bonusCarrierPercent(t.bonusCarrierPercent),this.bonusFarmPercent(t.bonusFarmPercent),this.bonusFactoryPercent(t.bonusFactoryPercent),this.femaleSort(t.femaleSort),this.maleSort(t.maleSort),this.princeSort(t.princeSort),this.princessSort(t.princessSort),this.armySort(t.armySort),this.atWar(t.atWar),this.achievementsUnlocked(t.achievementsUnlocked),this.battleTurnLength(t.battleTurnLength!=undefined?t.battleTurnLength:ticksPerSecond/2),t.boosts!=undefined&&(this.boosts(t.boosts),this.maxBoosts(t.maxBoosts)),t.nations!=undefined)for(this.nations=ko.observableArray(),i=0;
+ if(t=n!=null?JSON.parse($.base64.decode(n)):JSON.parse($.base64.decode(localStorage.getItem("game2"))),this.dirtRaw(t.dirtRaw),this.grassRaw(t.grassRaw),this.sodRaw(t.sodRaw),this.factoryDirtRaw(t.factoryDirtRaw),this.factoryGrassRaw(t.factoryGrassRaw),this.generations(t.generations),this.sodDedicatedToBreeding(t.sodDedicatedToBreeding),this.isHeirsUnlocked(t.isHeirsUnlocked),this.maxFemaleMoundSize(t.maxFemaleMoundSize),this.maxMaleMoundSize(t.maxMaleMoundSize),this.maxPrincessMoundSize(t.maxPrincessMoundSize),this.maxPrinceMoundSize(t.maxPrinceMoundSize),this.maxMineMoundSize(t.maxMineMoundSize),this.maxFarmMoundSize(t.maxFarmMoundSize),this.maxCarrierMoundSize(t.maxCarrierMoundSize),this.maxFactoryMoundSize(t.maxFactoryMoundSize),this.maxArmyMoundSize(t.maxArmyMoundSize),this.bonusMinePercent(t.bonusMinePercent),this.bonusCarrierPercent(t.bonusCarrierPercent),this.bonusFarmPercent(t.bonusFarmPercent),this.bonusFactoryPercent(t.bonusFactoryPercent),this.femaleSort(t.femaleSort),this.maleSort(t.maleSort),this.princeSort(t.princeSort),this.princessSort(t.princessSort),this.armySort(t.armySort),this.atWar(t.atWar),this.achievementsUnlocked(t.achievementsUnlocked),this.battleTurnLength(t.battleTurnLength!=undefined?t.battleTurnLength:ticksPerSecond/2),this.newWorkAssignment(t.newWorkAssignment!=undefined?t.newWorkAssignment:false),this.workAssignmentNotification(t.workAssignmentNotification!=undefined?t.workAssignmentNotification:false),t.boosts!=undefined&&(this.boosts(t.boosts),this.maxBoosts(t.maxBoosts)),t.nations!=undefined)for(this.nations=ko.observableArray(),i=0;
i<t.nations.length;
i++)u=new Nation(t.nations[i].enemy,t.nations[i].custom,t.nations[i].name,t.nations[i].desc,t.nations[i].lowBaseValue,t.nations[i].highBaseValue,t.nations[i].armySizeBase,t.nations[i].requiredToUnlock,t.nations[i].treasurePoints),u.mineFound(t.nations[i].mineFound),u.farmFound(t.nations[i].farmFound),u.carryFound(t.nations[i].carryFound),u.factoryFound(t.nations[i].factoryFound),u.exploreFound(t.nations[i].exploreFound),u.fortFound(t.nations[i].fortFound!=undefined?t.nations[i].fortFound:!1),u.geneFound(t.nations[i].geneFound),u.boostFound(t.nations[i].boostFound),u.treasuresFound(t.nations[i].treasuresFound),u.mapComplete(t.nations[i].mapComplete),u.isDefeated(t.nations[i].isDefeated),u.isUnlocked(t.nations[i].isUnlocked),this.nations.push(u);
if(t.map!=undefined)for(this.map(new GameMap),this.map().mound=t.map.mound,this.map().enemy=t.map.enemy,this.map().mine=t.map.mine,this.map().farm=t.map.farm,this.map().carry=t.map.carry,this.map().factory=t.map.factory,this.map().explore=t.map.explore,this.map().boost=t.map.boost,this.map().gene=t.map.gene,this.map().fort=t.map.fort,this.map().treasures=t.map.treasures,this.map().tileCount(t.map.tileCount),this.map().tilesCleared(t.map.tilesCleared),this.map().canExplore(t.map.canExplore),this.map().highestDanger=t.map.highestDanger!=undefined?t.map.highestDanger:1,i=0;
diff --git a/index.htm b/index.htm
index 28b82bd..c034468 100644
--- a/index.htm
+++ b/index.htm
@@ -25,7 +25,7 @@
<span style="margin-left: 15px" data-bind="text: 'Sod: ' + gameFormatNumber(sod())"></span>
</div>
<div class="title">
- Critter Mound
+ Critter Mound
</div>
<div style="margin-top: 10px;"></div>
@@ -626,6 +626,11 @@
</p>
<p>
+ <strong>Work Assignment Method</strong><br />
+ There are two methods for assigning critters to work. The old one is based on the idea of improving the mound that has the lowest throughput per second. The new method focuses on improving the mound that is currently the bottleneck of the production.
+ </p>
+
+ <p>
<strong>Barracks</strong><br />
The barracks hosts your army. When you are at war, they defend your mound, and search the surrounding area for enemies to gain territory. You can leave a war at anytime,
but your map will be lost. Because the ancient map makers... its just too much data to store, alright. So ending a war means you'll have to start over if you revisit.
@@ -654,6 +659,12 @@
<b>Battle Speed:</b> <span data-bind="text: battleTurnLength() / 20"></span> seconds<br />
<input style="width: 100%" type="range" min="2" max="60" data-bind="value: battleTurnLength">
<br /><br />
+ <b>Use new work assignment method</b>
+ <input type="checkbox" data-bind="checked: newWorkAssignment" /><br />
+ <br />
+ <b>Show work assignments</b>
+ <input type="checkbox" data-bind="checked: workAssignmentNotification" /><br />
+ <br /><br />
<h4>Release Notes</h4>
<p>
<strong>1.1.4 - Sep 9th, 2014</strong><br />
@@ -1084,4 +1095,3 @@
</body>
</html>
-
diff --git a/index.html b/index.html
index fe15503..c034468 100644
--- a/index.html
+++ b/index.html
@@ -25,7 +25,7 @@
<span style="margin-left: 15px" data-bind="text: 'Sod: ' + gameFormatNumber(sod())"></span>
</div>
<div class="title">
- Critter Mound
+ Critter Mound
</div>
<div style="margin-top: 10px;"></div>
@@ -626,6 +626,11 @@
</p>
<p>
+ <strong>Work Assignment Method</strong><br />
+ There are two methods for assigning critters to work. The old one is based on the idea of improving the mound that has the lowest throughput per second. The new method focuses on improving the mound that is currently the bottleneck of the production.
+ </p>
+
+ <p>
<strong>Barracks</strong><br />
The barracks hosts your army. When you are at war, they defend your mound, and search the surrounding area for enemies to gain territory. You can leave a war at anytime,
but your map will be lost. Because the ancient map makers... its just too much data to store, alright. So ending a war means you'll have to start over if you revisit.
@@ -654,6 +659,12 @@
<b>Battle Speed:</b> <span data-bind="text: battleTurnLength() / 20"></span> seconds<br />
<input style="width: 100%" type="range" min="2" max="60" data-bind="value: battleTurnLength">
<br /><br />
+ <b>Use new work assignment method</b>
+ <input type="checkbox" data-bind="checked: newWorkAssignment" /><br />
+ <br />
+ <b>Show work assignments</b>
+ <input type="checkbox" data-bind="checked: workAssignmentNotification" /><br />
+ <br /><br />
<h4>Release Notes</h4>
<p>
<strong>1.1.4 - Sep 9th, 2014</strong><br />
--
1.9.5.msysgit.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment