diff --git a/src/model/GameConfig.ts b/src/model/GameConfig.ts
index a60cab2..4a1932c 100644
--- a/src/model/GameConfig.ts
+++ b/src/model/GameConfig.ts
@@ -4,6 +4,9 @@
///
///
///
+///
+///
+///
class GameConfig {
public worldPopulation: number = 790000000;
@@ -63,6 +66,9 @@ class GameConfig {
// add resources
state.addResource('money', new Money(3.50));
state.addResource('crpto', new CryptoCurrency());
+ state.addResource('tents', new Tent());
+ state.addResource('house', new House());
+ state.addResource('cmpnd', new Compound());
return state;
}
diff --git a/src/model/resource/Compound.ts b/src/model/resource/Compound.ts
new file mode 100644
index 0000000..083100e
--- /dev/null
+++ b/src/model/resource/Compound.ts
@@ -0,0 +1,19 @@
+///
+
+class Compound extends Infrastructure {
+ constructor () {
+ super('Compounds',
+ 'Provides space for tents and houses.');
+ this.cost.money = 15000;
+ this._costMultiplier.money = 1.5;
+ }
+
+ public isUnlocked (state: GameState): boolean {
+ if (this._isUnlocked) return true;
+ const tents: IResource = state.getResource('tents');
+ if (tents.value === tents.max(state)) {
+ this._isUnlocked = true;
+ }
+ return this._isUnlocked;
+ }
+}
diff --git a/src/model/resource/Credibility.ts b/src/model/resource/Credibility.ts
index f424437..6095ad2 100644
--- a/src/model/resource/Credibility.ts
+++ b/src/model/resource/Credibility.ts
@@ -6,7 +6,7 @@ class Credibility extends Passive {
constructor () {
super(
'Credibility',
- 'How trustworthy you are perceived to be. Affects your ability to recruit and retain followers.',
+ 'Affects your ability to recruit and retain followers.',
100, 100, 0.25);
}
diff --git a/src/model/resource/CryptoCurrency.ts b/src/model/resource/CryptoCurrency.ts
index 31f7a0d..9586e66 100644
--- a/src/model/resource/CryptoCurrency.ts
+++ b/src/model/resource/CryptoCurrency.ts
@@ -2,8 +2,8 @@
class CryptoCurrency extends Purchasable {
constructor () {
- super('CryptoCurrency',
- "Can't be spent directly, but provides a steady stream of passive income.");
+ super('Faithcoin',
+ "A crypto coin that can't be spent directly, but provides a steady stream of passive income.");
this.cost.money = 100;
this._costMultiplier.money = 1.1;
this._baseMax = 1000;
diff --git a/src/model/resource/House.ts b/src/model/resource/House.ts
new file mode 100644
index 0000000..3892781
--- /dev/null
+++ b/src/model/resource/House.ts
@@ -0,0 +1,25 @@
+///
+
+class House extends Infrastructure {
+ constructor () {
+ super('Houses',
+ 'Provides room to house 10 followers.');
+ this.cost.money = 150000;
+ this._costMultiplier.money = 1.1;
+ }
+
+ public max (state: GameState): number {
+ let max: number = this._baseMax;
+ max += state.getResource('cmpnd').value * 2;
+ return max;
+ }
+
+ public isUnlocked (state: GameState): boolean {
+ if (this._isUnlocked) return true;
+ const tents: IResource = state.getResource('tents');
+ if (tents.value === tents.max(state)) {
+ this._isUnlocked = true;
+ }
+ return this._isUnlocked;
+ }
+}
diff --git a/src/model/resource/Infrastructure.ts b/src/model/resource/Infrastructure.ts
new file mode 100644
index 0000000..9daec6a
--- /dev/null
+++ b/src/model/resource/Infrastructure.ts
@@ -0,0 +1,5 @@
+///
+
+abstract class Infrastructure extends Purchasable {
+ public readonly resourceType: ResourceType = ResourceType.Infrastructure;
+}
diff --git a/src/model/resource/Money.ts b/src/model/resource/Money.ts
index ae6ff6d..41e54e9 100644
--- a/src/model/resource/Money.ts
+++ b/src/model/resource/Money.ts
@@ -12,7 +12,7 @@ class Money extends Purchasable {
super('Money', 'Used to purchase goods and services.');
this.clickText = 'Collect Tithes';
this.clickDescription = 'Voluntary contributions from followers.';
- this._baseMax = 10000;
+ this._baseMax = 999999;
}
public isUnlocked (state: GameState): boolean {
diff --git a/src/model/resource/PlayerOrg.ts b/src/model/resource/PlayerOrg.ts
index 7cd6c8b..fd309da 100644
--- a/src/model/resource/PlayerOrg.ts
+++ b/src/model/resource/PlayerOrg.ts
@@ -21,7 +21,10 @@ class PlayerOrg implements IResource {
}
public max (state: GameState): number {
- return this._baseMax;
+ let max: number = this._baseMax;
+ max += state.getResource('tents').value * 2;
+ max += state.getResource('house').value * 10;
+ return max;
}
public clickAction (state: GameState): void {
diff --git a/src/model/resource/Purchasable.ts b/src/model/resource/Purchasable.ts
index 2e0b0d3..4479497 100644
--- a/src/model/resource/Purchasable.ts
+++ b/src/model/resource/Purchasable.ts
@@ -1,7 +1,7 @@
///
abstract class Purchasable implements IResource {
- public readonly resourceType: ResourceType = ResourceType.Infrastructure;
+ public readonly resourceType: ResourceType = ResourceType.Consumable;
public value: number = 0;
public clickText: string = 'Purchase';
diff --git a/src/model/resource/Tent.ts b/src/model/resource/Tent.ts
new file mode 100644
index 0000000..6434146
--- /dev/null
+++ b/src/model/resource/Tent.ts
@@ -0,0 +1,17 @@
+///
+
+class Tent extends Infrastructure {
+ constructor () {
+ super('Tents',
+ 'Provides room to house 2 followers.');
+ this.cost.money = 250;
+ this._costMultiplier.money = 1.1;
+ this._baseMax = 5;
+ }
+
+ public max (state: GameState): number {
+ let max: number = this._baseMax;
+ max += state.getResource('cmpnd').value * 10;
+ return max;
+ }
+}