diff --git a/.DS_Store b/.DS_Store
index 17d0fc3..65d7ea8 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/level.js b/js/level.js
index 2ab78fb..6cd0819 100644
--- a/js/level.js
+++ b/js/level.js
@@ -109,8 +109,8 @@ const level = {
simulation.makeTextLog(`tech.isFlipFlopOn = true`);
}
if (tech.isSpawnExitTech) {
- // for (let i = 0; i < 2; i++) powerUps.spawn(level.exit.x + 10 * (Math.random() - 0.5), level.exit.y - 100 + 10 * (Math.random() - 0.5), "tech", false) //exit
- for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + 90 * (Math.random() - 0.5), player.position.y + 90 * (Math.random() - 0.5), "tech", false); //start
+ for (let i = 0; i < 2; i++) powerUps.spawn(level.exit.x + 10 * (Math.random() - 0.5), level.exit.y - 100 + 10 * (Math.random() - 0.5), "tech", false) //exit
+ // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + 90 * (Math.random() - 0.5), player.position.y + 90 * (Math.random() - 0.5), "tech", false); //start
}
},
custom() {},
diff --git a/js/mob.js b/js/mob.js
index 5bf7caf..0b36c24 100644
--- a/js/mob.js
+++ b/js/mob.js
@@ -1140,14 +1140,31 @@ const mobs = {
bullet[bullet.length - 1].endCycle = simulation.cycle + 840 //14 seconds
this.leaveBody = false; // no body since it turned into the bot
}
+ if (tech.isAddRemoveMaxHealth) {
+ if (this.isBoss) {
+ for (let i = 0; i < 2; i++) powerUps.spawn(this.position.x, this.position.y, "tech", false) //exit
+ } else {
+ const amount = 0.01
+ if (tech.isEnergyHealth) {
+ if (m.maxEnergy > amount) {
+ tech.healMaxEnergyBonus -= amount
+ m.setMaxEnergy();
+ }
+ } else if (m.maxHealth > amount) {
+ tech.extraMaxHealth -= amount //decrease max health
+ m.setMaxHealth();
+ }
+ }
+ }
if (tech.removeMaxHealthOnKill) {
+ const amount = 0.002
if (tech.isEnergyHealth) {
- if (m.maxEnergy > tech.removeMaxHealthOnKill) {
- tech.healMaxEnergyBonus -= tech.removeMaxHealthOnKill
+ if (m.maxEnergy > amount) {
+ tech.healMaxEnergyBonus -= amount
m.setMaxEnergy();
}
- } else if (m.maxHealth > tech.removeMaxHealthOnKill) {
- tech.extraMaxHealth -= tech.removeMaxHealthOnKill //decrease max health
+ } else if (m.maxHealth > amount) {
+ tech.extraMaxHealth -= amount //decrease max health
m.setMaxHealth();
}
}
diff --git a/js/player.js b/js/player.js
index b6b7d6a..1a18591 100644
--- a/js/player.js
+++ b/js/player.js
@@ -2219,9 +2219,9 @@ const m = {
for (let i = 0; i < inPlayer.length; i++) {
if (m.energy > 0) {
if (inPlayer[i].shield) { //shields drain player energy
- m.energy -= 0.016;
+ m.energy -= 0.012;
} else {
- m.energy -= 0.006;
+ m.energy -= 0.005;
}
}
}
diff --git a/js/powerup.js b/js/powerup.js
index e634c4c..524d383 100644
--- a/js/powerup.js
+++ b/js/powerup.js
@@ -726,7 +726,6 @@ const powerUps = {
// powerUps.spawn(m.pos.x, m.pos.y, "tech");
powerUps.endDraft("tech");
}
-
}
}
},
diff --git a/js/tech.js b/js/tech.js
index edec9db..ef87681 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -194,7 +194,7 @@
return dmg * tech.slowFire * tech.aimDamage
},
duplicationChance() {
- return (tech.isPowerUpsVanish ? 0.13 : 0) + (tech.isStimulatedEmission ? 0.17 : 0) + tech.cancelCount * 0.045 + tech.duplicateChance + m.duplicateChance + tech.wormDuplicate + tech.cloakDuplication + (tech.isAnthropicTech && tech.isDeathAvoidedThisLevel ? 0.5 : 0)
+ return Math.max(0, (tech.isPowerUpsVanish ? 0.13 : 0) + (tech.isStimulatedEmission ? 0.17 : 0) + tech.cancelCount * 0.045 + tech.duplicateChance + m.duplicateChance + tech.wormDuplicate + tech.cloakDuplication + (tech.isAnthropicTech && tech.isDeathAvoidedThisLevel ? 0.5 : 0))
},
maxDuplicationEvent() {
if (tech.is100Duplicate && tech.duplicationChance() > 0.99) {
@@ -6042,18 +6042,18 @@
},
{
name: "no-cloning theorem",
- description: `42% chance to duplicate spawned power ups
if you kill a mob lose 1% duplication chance`,
+ description: `50% chance to duplicate spawned power ups
after a mob dies, lose 1% duplication chance`,
isFieldTech: true,
maxCount: 1,
count: 0,
frequency: 2,
frequencyDefault: 2,
allowed() {
- return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking") && tech.duplicationChance() < 1
+ return (m.fieldUpgrades[m.fieldMode].name === "wormhole" || m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking") && tech.duplicationChance() < 1
},
- requires: "metamaterial cloaking, below 100% duplication chance",
+ requires: "cloaking, wormhole or time dilation and below 100% duplication chance",
effect() {
- tech.cloakDuplication = 0.42
+ tech.cloakDuplication = 0.5
powerUps.setDupChance(); //needed after adjusting duplication chance
},
@@ -6064,27 +6064,67 @@
},
{
name: "symbiosis",
- description: "if you kill a mob lose 2% max health
at the start of each level spawn 2 tech",
+ description: "after a mob dies, lose 1 max health
bosses spawn 2 extra tech after they die",
isFieldTech: true,
maxCount: 1,
count: 0,
frequency: 2,
frequencyDefault: 2,
allowed() {
- return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking") && !tech.removeMaxHealthOnKill
+ return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking")
},
- requires: "metamaterial cloaking, not -symbiosis-",
+ requires: "metamaterial cloaking",
effect() {
- tech.removeMaxHealthOnKill = 0.02
- tech.isSpawnExitTech = true
- // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + 90 * (Math.random() - 0.5), player.position.y + 90 * (Math.random() - 0.5), "tech", false); //start
- // for (let i = 0; i < 2; i++) powerUps.spawn(level.exit.x + 10 * (Math.random() - 0.5), level.exit.y - 100 + 10 * (Math.random() - 0.5), "tech", false) //exit
+ tech.isAddRemoveMaxHealth = true
},
remove() {
- tech.removeMaxHealthOnKill = 0
- tech.isSpawnExitTech = false
+ tech.isAddRemoveMaxHealth = false
}
},
+ // {
+ // name: "symbiosis",
+ // description: "after a mob dies, lose 0.5 max health
after picking up tech gain 10 max health",
+ // isFieldTech: true,
+ // maxCount: 1,
+ // count: 0,
+ // frequency: 2,
+ // frequencyDefault: 2,
+ // allowed() {
+ // return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking")
+ // },
+ // requires: "metamaterial cloaking",
+ // effect() {
+ // tech.isAddRemoveMaxHealth = true
+ // tech.extraMaxHealth += 0.1 //increase max health
+ // m.setMaxHealth();
+ // },
+ // remove() {
+ // tech.isAddRemoveMaxHealth = false
+ // }
+ // },
+ // {
+ // name: "symbiosis",
+ // description: "if a mob dies, lose 1% max health
at the end of each level spawn 2 tech",
+ // isFieldTech: true,
+ // maxCount: 1,
+ // count: 0,
+ // frequency: 2,
+ // frequencyDefault: 2,
+ // allowed() {
+ // return (m.fieldUpgrades[m.fieldMode].name === "time dilation" || m.fieldUpgrades[m.fieldMode].name === "metamaterial cloaking") && !tech.removeMaxHealthOnKill
+ // },
+ // requires: "metamaterial cloaking, not -symbiosis-",
+ // effect() {
+ // tech.removeMaxHealthOnKill = 0.01
+ // tech.isSpawnExitTech = true
+ // // for (let i = 0; i < 2; i++) powerUps.spawn(player.position.x + 90 * (Math.random() - 0.5), player.position.y + 90 * (Math.random() - 0.5), "tech", false); //start
+ // for (let i = 0; i < 2; i++) powerUps.spawn(level.exit.x + 10 * (Math.random() - 0.5), level.exit.y - 100 + 10 * (Math.random() - 0.5), "tech", false) //exit
+ // },
+ // remove() {
+ // tech.removeMaxHealthOnKill = 0
+ // tech.isSpawnExitTech = false
+ // }
+ // },
{
name: "boson composite",
description: "intangible to blocks and mobs while cloaked
passing through mobs drains your energy",
@@ -6128,7 +6168,7 @@
},
{
name: "ambush",
- description: "metamaterial cloaking field damage effect
is increased from 300% to 600%",
+ description: "metamaterial cloaking field damage effect
is increased from 333% to 666%",
isFieldTech: true,
maxCount: 1,
count: 0,
@@ -6139,10 +6179,10 @@
},
requires: "metamaterial cloaking",
effect() {
- tech.sneakAttackDmg = 7
+ tech.sneakAttackDmg = 7.66
},
remove() {
- tech.sneakAttackDmg = 4
+ tech.sneakAttackDmg = 4.33
}
},
{
@@ -6509,7 +6549,7 @@
},
{
name: "-symbiosis-",
- description: "experiment: if you kill a mob
lose 0.2% max health",
+ description: "experiment: if you kill a mob
lose 0.2 max health",
maxCount: 1,
count: 0,
frequency: 0,
@@ -8349,6 +8389,7 @@
ammoCap: null,
isHarpoonPowerUp: null,
harpoonDensity: null,
+ isAddRemoveMaxHealth: null,
removeMaxHealthOnKill: null,
isSpawnExitTech: null,
cloakDuplication: null
diff --git a/todo.txt b/todo.txt
index f4afbe0..651bf20 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,17 +1,8 @@
******************************************************** NEXT PATCH **************************************************
-no cloning theorem - 42% duplication, but lose 1% dup if you kill a mob
- requires cloaking or time dilation field
-tech: symbiosis - if you kill a mob lose 2% max health, but gain 2 tech at the end of every level.
- requires cloaking or time dilation field
-
-JUNK tech: all-stars - make mobs look like stars
-JUNK tech: mouth - make mobs look like they have a mouth
-
-the nonCollideBosses have been made 10% harder to kill
- these are the types of bosses that spawn from apomixis on 100% duplication
-
-7+ sided mobs may slice in two when they die
+metamaterial cloaking field 300% -> 333% damage
+no-cloning theorem 43% -> 50% duplication
+symbiosis lose 2% -> 1% max health
******************************************************** TODO ********************************************************
@@ -52,7 +43,7 @@ harpoon tech
can't have extended string?
grappling hook?
tracking so good harpoon can hit a target, circle around and hit it again
- doesn't seem to be good physics
+ doesn't seem to be good physics, the harpoon hits walls and doesn't get room to build up speed
"Interstellar Disturbance": Cosmic String applies to mobs who cross the wormhole's path, even after initial wormholing, but at reduced damage and stun time.