diff --git a/.DS_Store b/.DS_Store
index 685e3a5..a86b967 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/js/engine.js b/js/engine.js
index b4f4ac9..034516e 100644
--- a/js/engine.js
+++ b/js/engine.js
@@ -40,6 +40,11 @@ function playerOnGroundCheck(event) {
m.doCrouch();
m.yOff = m.yOffWhen.jump;
m.hardLandCD = m.cycle + Math.min(momentum / 6.5 - 6, 40)
+ //falling damage
+ if (tech.isFallingDamage) {
+ m.damage(Math.min(Math.sqrt(momentum - 125) * 0.01, 0.25));
+ m.immuneCycle = m.cycle + tech.collisionImmuneCycles; //player is immune to damage for 30 cycles
+ }
} else {
m.yOffGoal = m.yOffWhen.stand;
}
diff --git a/js/level.js b/js/level.js
index f2cb608..7d63ba8 100644
--- a/js/level.js
+++ b/js/level.js
@@ -6396,7 +6396,7 @@ const level = {
ctx.fillText("Entity name: m", 1560, -3830);
ctx.fillStyle = (tech.totalCount < 25 ? (tech.totalCount < 10 ? "#ffff44" : "#22ff22") : "#ff6644") + Math.floor((secretAnimTrans2 - 40) * 12.75).toString(16);
ctx.fillText("Threat level: " + (tech.totalCount < 25 ? (tech.totalCount < 10 ? "Low" : "Medium") : "HIGH"), 1560, -3790);
- if (tech.totalCount >= 15) ctx.fillText("PROCEDURE ACTIVATED", 1560, -3750);
+ if (tech.totalCount >= 10) ctx.fillText("PROCEDURE ACTIVATED", 1560, -3750);
ctx.strokeStyle = "#00ff00" + Math.floor((secretAnimTrans2 - 40) * 6).toString(16);
ctx.beginPath();
ctx.arc(1950, -3730, 60, 0, 2 * Math.PI);
diff --git a/js/player.js b/js/player.js
index 878a832..46be17a 100644
--- a/js/player.js
+++ b/js/player.js
@@ -207,27 +207,11 @@ const m = {
m.crouch = true;
m.yOffGoal = m.yOffWhen.crouch;
if ((playerHead.position.y - player.position.y) < 0) {
-
Matter.Body.setPosition(playerHead, {
x: player.position.x,
y: player.position.y + 9.1740767
})
-
-
- // Matter.Body.translate(playerHead, {
- // x: 0,
- // y: 40
- // });
}
- // playerHead.collisionFilter.group = -1
- // playerHead.collisionFilter.category = 0
- // playerHead.collisionFilter.mask = -1
- // playerHead.isSensor = true; //works, but has a 2 second lag...
- // collisionFilter: {
- // group: 0,
- // category: cat.player,
- // mask: cat.body | cat.map | cat.mob | cat.mobBullet | cat.mobShield
- // },
}
},
undoCrouch() {
@@ -502,7 +486,7 @@ const m = {
},
baseHealth: 1,
setMaxHealth() {
- m.maxHealth = m.baseHealth + tech.bonusHealth + tech.armorFromPowerUps
+ m.maxHealth = m.baseHealth + tech.armorFromPowerUps + tech.isFallingDamage //+ tech.bonusHealth
document.getElementById("health-bg").style.width = `${Math.floor(300*m.maxHealth)}px`
simulation.makeTextLog(`m.maxHealth = ${m.maxHealth.toFixed(2)}`)
if (m.health > m.maxHealth) m.health = m.maxHealth;
diff --git a/js/tech.js b/js/tech.js
index 978d1aa..39027aa 100644
--- a/js/tech.js
+++ b/js/tech.js
@@ -2203,20 +2203,22 @@
}
},
{
- name: "supercapacitor",
- description: "energy above your max decays 60% slower",
+ name: "Maxwell's demon",
+ description: "energy above your max decays 92% slower
add 17 JUNK tech to the potential pool",
maxCount: 1,
count: 0,
frequency: 2,
allowed() {
- return tech.isEnergyRecovery || tech.isPiezo || tech.energySiphon > 0 || tech.isRailEnergyGain || tech.isWormholeEnergy || tech.iceEnergy > 0
+ return tech.isEnergyRecovery || tech.isPiezo || tech.energySiphon > 0 || tech.isRailEnergyGain || tech.isWormholeEnergy || tech.iceEnergy > 0 || tech.isMassEnergy
},
requires: "a source of overfilled energy",
effect() {
- tech.overfillDrain = 0.85
+ tech.overfillDrain = 0.87 //70% = 1-(1-0.75)/(1-0.15) //92% = 1-(1-0.75)/(1-0.87)
+ tech.addJunkTechToPool(17)
},
remove() {
tech.overfillDrain = 0.75
+ if (this.count > 0) tech.removeJunkTechFromPool(17)
}
},
{
@@ -2377,10 +2379,31 @@
tech.isAcidDmg = false;
}
},
+ // {
+ // name: "supersaturation",
+ // description: "increase your maximum health by 50",
+ // maxCount: 9,
+ // count: 0,
+ // frequency: 1,
+ // frequencyDefault: 1,
+ // allowed() {
+ // return !tech.isEnergyHealth && !tech.isNoHeals
+ // },
+ // requires: "not mass-energy equivalence, ergodicity",
+ // effect() {
+ // tech.bonusHealth += 0.5
+ // m.setMaxHealth();
+ // m.addHealth(0.50)
+ // },
+ // remove() {
+ // tech.bonusHealth = 0
+ // m.setMaxHealth();
+ // }
+ // },
{
- name: "supersaturation",
- description: "increase your maximum health by 50",
- maxCount: 9,
+ name: "tungsten carbide",
+ description: "increase your maximum health by 100
landings that force you to crouch cause harm",
+ maxCount: 1,
count: 0,
frequency: 1,
frequencyDefault: 1,
@@ -2389,14 +2412,13 @@
},
requires: "not mass-energy equivalence, ergodicity",
effect() {
- tech.bonusHealth += 0.5
- m.addHealth(0.50)
+ tech.isFallingDamage = true;
m.setMaxHealth();
+ m.addHealth(1)
},
remove() {
- tech.bonusHealth = 0
+ tech.isFallingDamage = false;
m.setMaxHealth();
-
}
},
{
@@ -3042,8 +3064,8 @@
remove() {}
},
{
- name: "mine synthesis",
- description: "drop a mine after picking up a power up",
+ name: "booby trap",
+ description: "drop a mine after picking up a power up
add 9 JUNK tech to the potential pool",
maxCount: 1,
count: 0,
frequency: 1,
@@ -3055,9 +3077,11 @@
effect() {
tech.isMineDrop = true;
if (tech.isMineDrop) b.mine(m.pos, { x: 0, y: 0 }, 0, tech.isMineAmmoBack)
+ tech.addJunkTechToPool(13)
},
remove() {
tech.isMineDrop = false;
+ if (this.count > 0) tech.removeJunkTechFromPool(13)
}
},
{
@@ -6724,7 +6748,7 @@
isSmallExplosion: null,
isExplosionHarm: null,
armorFromPowerUps: null,
- bonusHealth: null,
+ // bonusHealth: null,
isIntangible: null,
isCloakStun: null,
bonusEnergy: null,
@@ -6828,5 +6852,6 @@
isAddBlockMass: null,
isMACHO: null,
isHarmMACHO: null,
- isSneakAttack: null
+ isSneakAttack: null,
+ isFallingDamage: null
}
\ No newline at end of file
diff --git a/todo.txt b/todo.txt
index d587623..f6659e0 100644
--- a/todo.txt
+++ b/todo.txt
@@ -26,11 +26,21 @@ is there a way to check if the player is stuck inside the map or block
******************************************************** TODO ********************************************************
+tech: picking up heal power ups when at full health does harm equal to the heal values
+ benefit on pick up: get 1% damage
+
+draw a rotating ring, like a 3-D spinning ring effect
+ an ellipse the has sine function on one of it's parameters
+
buttons can now on/off boosts
-Weak Anthropic Principle: you get a second chance at life, but now the game has falling damage!
-tech: supersaturation is buffed but add falling damage
-tech: increase health and remove air control
+energy conservation 6% damage recovered as energy
+ add a negative effect:
+ junk tech
+
+Weak Anthropic Principle: you get a second chance at life, but ....
+
+negative effect: remove air control
mob: molecule shapes - 2 separate mobs joined by a bond
use constraints: just spawn 2x or 3x groupings
@@ -48,13 +58,6 @@ tech: wormhole through walls?
pause should show the last in game console message
-tech: picking up heal power ups when at full health does harm equal to the heal values
- benefit on pick up:
- get ammo
- get 1% duplication
- get 1% damage permanent
- turned into drones
-
nail-gun, or ....
1s after being fired your bullets turn:
towards the nearest mob
@@ -123,18 +126,6 @@ mobile requirements:
limit items to ones that don't require aiming?
tap screen regions to move (WASD)
reduce font size
-
-decrease healing effects by 50%
-decrease level scaling healing reduction
- net effect: healing at difficulty 40 (level 10 hard) should be 25% higher then current levels
-
-bosses should have 2x health, but only do about 50 health damage
- options:
- cap all damage at 50 health
- this makes high health/energy/harm reduction build much better
- make boss flag cut damage done to player by 10x
- boss flag cut damage done to boss by 20x <----
- make bosses not have extra density
lore: a tutorial / lore intro
needs to be optional so it doesn't slow experienced players
@@ -147,42 +138,22 @@ add back in gamepad support
rename intro level to something lore related
-give undefined tech different effects at different localSettings.loreCount values
- or just random effects
- 1. 10/10: send more tech into the pool
- 2. 3/3: lose 3 tech each time, and send more tech into the pool
- 2. 3/3: increase game difficulty, and send more tech into the pool
- 3. 1/1: reduce max energy and take more harm
- 4. 1/1: add 5? more levels
-
rename ?
health -> integrity, unity
heal -> also integrity, unity
-bot: ice blast, long CD AOE freeze
-
RPG default or tech: grenades detonate on your cursor / where your cursor was when they were fired
-in game console
- set highlighting rules
- m, tech, level are all highlighted
- maybe the first term in each variable should get a highlight
-
tech: time dilation - when you exit time dilation rewind to the state you entered
position, velocity, and health
no energy cost
-mechanic - Your energy regen is only active when field and gun have not been used for 5 seconds.
-
be able to open up custom mode in the normal game
might need to be rebuilt from scratch
while in through testing mode?
have a way to make limited changes as allowed by tech you pick up in game
disable the in custom setting flag
-tech power up magnetism - power ups drift towards player
- where would this code go?
-
super balls start at 3, not 4
have to balance damage