restitution
tech: restitution: thrown blocks are bouncy and blocks do 150% more damage the tech previously named restitution is now named buckling after getting a bot upgrade, future bot tech will be for the upgraded bot type (doesn't effect tech that gives random bots) bug fixes
This commit is contained in:
16
js/bullet.js
16
js/bullet.js
@@ -2384,7 +2384,7 @@ const b = {
|
|||||||
//aoe damage to mobs
|
//aoe damage to mobs
|
||||||
for (let i = 0, len = mob.length; i < len; i++) {
|
for (let i = 0, len = mob.length; i < len; i++) {
|
||||||
if (Vector.magnitude(Vector.sub(mob[i].position, this.position)) < this.radioRadius + mob[i].radius) {
|
if (Vector.magnitude(Vector.sub(mob[i].position, this.position)) < this.radioRadius + mob[i].radius) {
|
||||||
let dmg = b.dmgScale * 0.1 * tech.droneRadioDamage //neutron bombs dmg = 0.09
|
let dmg = 0.11 * b.dmgScale * tech.droneRadioDamage //neutron bombs dmg = 0.09
|
||||||
if (Matter.Query.ray(map, mob[i].position, this.position).length > 0) dmg *= 0.25 //reduce damage if a wall is in the way
|
if (Matter.Query.ray(map, mob[i].position, this.position).length > 0) dmg *= 0.25 //reduce damage if a wall is in the way
|
||||||
if (mob[i].shield) dmg *= 3 // to make up for the /5 that shields normally take
|
if (mob[i].shield) dmg *= 3 // to make up for the /5 that shields normally take
|
||||||
mob[i].damage(dmg);
|
mob[i].damage(dmg);
|
||||||
@@ -2884,14 +2884,14 @@ const b = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
randomBot(where = player.position, isKeep = true, isAll = true) {
|
randomBot(where = player.position, isKeep = true, isLaser = true) {
|
||||||
if (Math.random() < 0.167 && isAll) {
|
if (Math.random() < 0.166 && isLaser) {
|
||||||
b.dynamoBot(where)
|
|
||||||
if (isKeep) tech.dynamoBotCount++;
|
|
||||||
} else if (Math.random() < 0.25 && isAll) {
|
|
||||||
b.laserBot(where)
|
b.laserBot(where)
|
||||||
if (isKeep) tech.laserBotCount++;
|
if (isKeep) tech.laserBotCount++;
|
||||||
} else if (Math.random() < 0.25 && isAll) {
|
} else if (Math.random() < 0.2) {
|
||||||
|
b.dynamoBot(where)
|
||||||
|
if (isKeep) tech.dynamoBotCount++;
|
||||||
|
} else if (Math.random() < 0.25) {
|
||||||
b.orbitBot(where);
|
b.orbitBot(where);
|
||||||
if (isKeep) tech.orbitBotCount++;
|
if (isKeep) tech.orbitBotCount++;
|
||||||
} else if (Math.random() < 0.33) {
|
} else if (Math.random() < 0.33) {
|
||||||
@@ -2961,7 +2961,7 @@ const b = {
|
|||||||
if (Vector.magnitude(Vector.sub(this.position, player.position)) < 250 && m.immuneCycle < m.cycle) { //give energy
|
if (Vector.magnitude(Vector.sub(this.position, player.position)) < 250 && m.immuneCycle < m.cycle) { //give energy
|
||||||
Matter.Body.setAngularVelocity(this, this.spin)
|
Matter.Body.setAngularVelocity(this, this.spin)
|
||||||
if (this.isUpgraded) {
|
if (this.isUpgraded) {
|
||||||
m.energy += 0.1
|
m.energy += 0.08
|
||||||
simulation.drawList.push({ //add dmg to draw queue
|
simulation.drawList.push({ //add dmg to draw queue
|
||||||
x: this.position.x,
|
x: this.position.x,
|
||||||
y: this.position.y,
|
y: this.position.y,
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ function collisionChecks(event) {
|
|||||||
if (obj.classType === "body" && obj.speed > 6) {
|
if (obj.classType === "body" && obj.speed > 6) {
|
||||||
const v = Vector.magnitude(Vector.sub(mob[k].velocity, obj.velocity));
|
const v = Vector.magnitude(Vector.sub(mob[k].velocity, obj.velocity));
|
||||||
if (v > 9) {
|
if (v > 9) {
|
||||||
let dmg = 0.075 * b.dmgScale * v * obj.mass * (tech.throwChargeRate) * (tech.isBlockHarm ? 2 : 1) * (tech.isMobBlockFling ? 2 : 1);
|
let dmg = 0.075 * b.dmgScale * v * obj.mass * (tech.throwChargeRate) * (tech.isBlockHarm ? 2.5 : 1) * (tech.isMobBlockFling ? 2.5 : 1) * (tech.isBlockRestitution ? 2.5 : 1);
|
||||||
if (mob[k].isShielded) dmg *= 0.7
|
if (mob[k].isShielded) dmg *= 0.7
|
||||||
mob[k].damage(dmg, true);
|
mob[k].damage(dmg, true);
|
||||||
if (tech.isBlockPowerUps && !mob[k].alive && mob[k].isDropPowerUp && m.throwCycle > m.cycle) {
|
if (tech.isBlockPowerUps && !mob[k].alive && mob[k].isDropPowerUp && m.throwCycle > m.cycle) {
|
||||||
|
|||||||
@@ -2332,8 +2332,6 @@ const level = {
|
|||||||
ctx.fillRect(5400, -550, 300, 350)
|
ctx.fillRect(5400, -550, 300, 350)
|
||||||
};
|
};
|
||||||
|
|
||||||
spawn.powerUpBoss(0, 0)
|
|
||||||
spawn.powerUpBoss(0, 0)
|
|
||||||
level.setPosToSpawn(0, -250); //normal spawn
|
level.setPosToSpawn(0, -250); //normal spawn
|
||||||
spawn.mapRect(5500, -330 + 20, 100, 20); //spawn this because the real exit is in the wrong spot
|
spawn.mapRect(5500, -330 + 20, 100, 20); //spawn this because the real exit is in the wrong spot
|
||||||
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
spawn.mapRect(level.enter.x, level.enter.y + 20, 100, 20);
|
||||||
|
|||||||
10
js/player.js
10
js/player.js
@@ -627,7 +627,7 @@ const m = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.lastHarmCycle = m.cycle
|
m.lastHarmCycle = m.cycle
|
||||||
if (tech.isDroneOnDamage) { //chance to build a drone on damage from tech
|
if (tech.isDroneOnDamage && bullet.length < 150) { //chance to build a drone on damage from tech
|
||||||
const len = Math.min((dmg - 0.06 * Math.random()) * 40, 40) / tech.droneEnergyReduction
|
const len = Math.min((dmg - 0.06 * Math.random()) * 40, 40) / tech.droneEnergyReduction
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
if (Math.random() < 0.5) b.drone({ x: m.pos.x + 30 * Math.cos(m.angle) + 100 * (Math.random() - 0.5), y: m.pos.y + 30 * Math.sin(m.angle) + 100 * (Math.random() - 0.5) }) //spawn drone
|
if (Math.random() < 0.5) b.drone({ x: m.pos.x + 30 * Math.cos(m.angle) + 100 * (Math.random() - 0.5), y: m.pos.y + 30 * Math.sin(m.angle) + 100 * (Math.random() - 0.5) }) //spawn drone
|
||||||
@@ -1138,6 +1138,7 @@ const m = {
|
|||||||
//bullet-like collisions
|
//bullet-like collisions
|
||||||
m.holdingTarget.collisionFilter.category = cat.bullet
|
m.holdingTarget.collisionFilter.category = cat.bullet
|
||||||
m.holdingTarget.collisionFilter.mask = cat.map | cat.body | cat.bullet | cat.mob | cat.mobBullet | cat.mobShield;
|
m.holdingTarget.collisionFilter.mask = cat.map | cat.body | cat.bullet | cat.mob | cat.mobBullet | cat.mobShield;
|
||||||
|
if (tech.isBlockRestitution) m.holdingTarget.restitution = 0.999 //extra bouncy
|
||||||
//check every second to see if player is away from thrown body, and make solid
|
//check every second to see if player is away from thrown body, and make solid
|
||||||
const solid = function(that) {
|
const solid = function(that) {
|
||||||
const dx = that.position.x - player.position.x;
|
const dx = that.position.x - player.position.x;
|
||||||
@@ -1588,8 +1589,9 @@ const m = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "perfect diamagnetism",
|
name: "perfect diamagnetism",
|
||||||
// description: "gain <strong class='color-f'>energy</strong> when <strong>blocking</strong><br>no <strong>recoil</strong> when <strong>blocking</strong>",
|
|
||||||
description: "<strong>attract</strong> power ups from <strong>far away</strong><br><strong>deflecting</strong> does not drain <strong class='color-f'>energy</strong><br><strong>deflecting</strong> has <strong>90%</strong> less <strong>recoil</strong>",
|
description: "<strong>attract</strong> power ups from <strong>far away</strong><br><strong>deflecting</strong> does not drain <strong class='color-f'>energy</strong><br><strong>deflecting</strong> has <strong>90%</strong> less <strong>recoil</strong>",
|
||||||
|
// description: "<strong>attract</strong> power ups from <strong>far away</strong><br><strong>deflecting</strong> doesn't drain <strong class='color-f'>energy</strong><br>thrown <strong class='color-block'>blocks</strong> have",
|
||||||
|
// description: "gain <strong class='color-f'>energy</strong> when <strong>blocking</strong><br>no <strong>recoil</strong> when <strong>blocking</strong>",
|
||||||
effect: () => {
|
effect: () => {
|
||||||
m.fieldShieldingScale = 0;
|
m.fieldShieldingScale = 0;
|
||||||
m.fieldBlockCD = 4;
|
m.fieldBlockCD = 4;
|
||||||
@@ -1659,7 +1661,7 @@ const m = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "negative mass field",
|
name: "negative mass field",
|
||||||
description: "use <strong class='color-f'>energy</strong> to nullify <strong style='letter-spacing: 7px;'>gravity</strong><br>reduce <strong class='color-harm'>harm</strong> by <strong>55%</strong><br><strong class='color-block'>blocks</strong> held by the field have a lower <strong>mass</strong>",
|
description: "use <strong class='color-f'>energy</strong> to nullify <strong style='letter-spacing: 7px;'>gravity</strong><br>reduce <strong class='color-harm'>harm</strong> by <strong>55%</strong><br>hold <strong class='color-block'>blocks</strong> as if they have a lower <strong>mass</strong>",
|
||||||
fieldDrawRadius: 0,
|
fieldDrawRadius: 0,
|
||||||
effect: () => {
|
effect: () => {
|
||||||
m.fieldFire = true;
|
m.fieldFire = true;
|
||||||
@@ -1847,7 +1849,7 @@ const m = {
|
|||||||
m.energy -= 0.04;
|
m.energy -= 0.04;
|
||||||
b.iceIX(1)
|
b.iceIX(1)
|
||||||
} else if (tech.isDroneRadioactive) {
|
} else if (tech.isDroneRadioactive) {
|
||||||
m.energy -= 0.9;
|
m.energy -= 0.85;
|
||||||
b.droneRadioactive({ x: m.pos.x + 30 * Math.cos(m.angle) + 10 * (Math.random() - 0.5), y: m.pos.y + 30 * Math.sin(m.angle) + 10 * (Math.random() - 0.5) }, 25)
|
b.droneRadioactive({ x: m.pos.x + 30 * Math.cos(m.angle) + 10 * (Math.random() - 0.5), y: m.pos.y + 30 * Math.sin(m.angle) + 10 * (Math.random() - 0.5) }, 25)
|
||||||
} else {
|
} else {
|
||||||
m.energy -= 0.45 * tech.droneEnergyReduction;
|
m.energy -= 0.45 * tech.droneEnergyReduction;
|
||||||
|
|||||||
179
js/tech.js
179
js/tech.js
@@ -204,6 +204,37 @@
|
|||||||
spawn.randomLevelBoss(m.pos.x - range, m.pos.y - range, spawn.nonCollideBossList);
|
spawn.randomLevelBoss(m.pos.x - range, m.pos.y - range, spawn.nonCollideBossList);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setTechFrequency(name, frequency) {
|
||||||
|
for (let i = 0, len = tech.tech.length; i < len; i++) {
|
||||||
|
if (tech.tech[i].name === name) tech.tech[i].frequency = frequency
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setBotTechFrequency(f = 0) {
|
||||||
|
for (let i = 0, len = tech.tech.length; i < len; i++) {
|
||||||
|
if (tech.tech[i].isBotTech) {
|
||||||
|
switch (tech.tech[i].name) {
|
||||||
|
case "dynamo-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
case "orbital-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
case "laser-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
case "boom-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
case "foam-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
case "nail-bot":
|
||||||
|
tech.tech[i].frequency = f
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
tech: [{
|
tech: [{
|
||||||
name: "integrated armament",
|
name: "integrated armament",
|
||||||
description: `increase <strong class='color-d'>damage</strong> by <strong>30%</strong><br>your inventory can only hold 1 <strong class='color-g'>gun</strong>`,
|
description: `increase <strong class='color-d'>damage</strong> by <strong>30%</strong><br>your inventory can only hold 1 <strong class='color-g'>gun</strong>`,
|
||||||
@@ -1093,12 +1124,17 @@
|
|||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'nail') bullet[i].isUpgraded = true
|
if (bullet[i].botType === 'nail') bullet[i].isUpgraded = true
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("nail-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isNailBotUpgrade = false
|
if (this.count) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'nail') bullet[i].isUpgraded = false
|
if (bullet[i].botType === 'nail') bullet[i].isUpgraded = false
|
||||||
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isNailBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1144,12 +1180,17 @@
|
|||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'foam') bullet[i].isUpgraded = true
|
if (bullet[i].botType === 'foam') bullet[i].isUpgraded = true
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("foam-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isFoamBotUpgrade = false
|
if (this.count) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'foam') bullet[i].isUpgraded = false
|
if (bullet[i].botType === 'foam') bullet[i].isUpgraded = false
|
||||||
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isFoamBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1195,12 +1236,17 @@
|
|||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'boom') bullet[i].isUpgraded = true
|
if (bullet[i].botType === 'boom') bullet[i].isUpgraded = true
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("boom-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isBoomBotUpgrade = false
|
if (this.count) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'boom') bullet[i].isUpgraded = false
|
if (bullet[i].botType === 'boom') bullet[i].isUpgraded = false
|
||||||
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isBoomBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1246,12 +1292,17 @@
|
|||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'laser') bullet[i].isUpgraded = true
|
if (bullet[i].botType === 'laser') bullet[i].isUpgraded = true
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("laser-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isLaserBotUpgrade = false
|
if (this.count) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'laser') bullet[i].isUpgraded = false
|
if (bullet[i].botType === 'laser') bullet[i].isUpgraded = false
|
||||||
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isLaserBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1302,17 +1353,21 @@
|
|||||||
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
|
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("orbital-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isOrbitBotUpgrade = false
|
if (this.count) {
|
||||||
const range = 190 + 100 * tech.isOrbitBotUpgrade
|
const range = 190 + 100 * tech.isOrbitBotUpgrade
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'orbit') {
|
if (bullet[i].botType === 'orbit') {
|
||||||
bullet[i].range = range
|
bullet[i].range = range
|
||||||
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
|
bullet[i].orbitalSpeed = Math.sqrt(0.25 / range)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isOrbitBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1342,7 +1397,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "dynamo-bot upgrade",
|
name: "dynamo-bot upgrade",
|
||||||
description: "<strong>convert</strong> your bots to <strong>dynamo-bots</strong><br>increase regen to <strong>20</strong> <strong class='color-f'>energy</strong> per second",
|
description: "<strong>convert</strong> your bots to <strong>dynamo-bots</strong><br>increase regen to <strong>16</strong> <strong class='color-f'>energy</strong> per second",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 2,
|
frequency: 2,
|
||||||
@@ -1358,12 +1413,17 @@
|
|||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'dynamo') bullet[i].isUpgraded = true
|
if (bullet[i].botType === 'dynamo') bullet[i].isUpgraded = true
|
||||||
}
|
}
|
||||||
|
tech.setBotTechFrequency()
|
||||||
|
tech.setTechFrequency("dynamo-bot", 5)
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.isDynamoBotUpgrade = false
|
if (this.count) {
|
||||||
for (let i = 0; i < bullet.length; i++) {
|
for (let i = 0; i < bullet.length; i++) {
|
||||||
if (bullet[i].botType === 'dynamo') bullet[i].isUpgraded = false
|
if (bullet[i].botType === 'dynamo') bullet[i].isUpgraded = false
|
||||||
|
}
|
||||||
|
tech.setBotTechFrequency(1)
|
||||||
}
|
}
|
||||||
|
tech.isDynamoBotUpgrade = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1456,7 +1516,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ersatz bots",
|
name: "ersatz bots",
|
||||||
description: "<strong>double</strong> your permanent <strong class='color-bot'>bots</strong><br>remove <strong>all</strong> of your <strong class='color-g'>guns</strong>",
|
description: "<strong>double</strong> your current permanent <strong class='color-bot'>bots</strong><br>remove <strong>all</strong> of your current <strong class='color-g'>guns</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 2,
|
frequency: 2,
|
||||||
@@ -1531,7 +1591,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "flywheel",
|
name: "flywheel",
|
||||||
description: "after a mob <strong>dies</strong> its <strong class='color-block'>block</strong> is <strong>flung</strong> at mobs<br>increase <strong class='color-block'>block</strong> collision <strong class='color-d'>damage</strong> by <strong>100%</strong>",
|
description: "after a mob <strong>dies</strong> its <strong class='color-block'>block</strong> is <strong>flung</strong> at mobs<br>increase <strong class='color-block'>block</strong> collision <strong class='color-d'>damage</strong> by <strong>150%</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 3,
|
frequency: 3,
|
||||||
@@ -1547,6 +1607,24 @@
|
|||||||
tech.isMobBlockFling = false
|
tech.isMobBlockFling = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "restitution",
|
||||||
|
description: "throwing a <strong class='color-block'>block</strong> makes it very <strong>bouncy</strong><br>increase <strong class='color-block'>block</strong> collision <strong class='color-d'>damage</strong> by <strong>150%</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 3,
|
||||||
|
frequencyDefault: 3,
|
||||||
|
allowed() {
|
||||||
|
return (tech.throwChargeRate > 1 || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && !tech.isBlockExplosion
|
||||||
|
},
|
||||||
|
requires: "mass driver, not pilot wave not tokamak",
|
||||||
|
effect() {
|
||||||
|
tech.isBlockRestitution = true
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
tech.isBlockRestitution = false
|
||||||
|
}
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// name: "fermions",
|
// name: "fermions",
|
||||||
// description: "<strong class='color-block'>blocks</strong> thrown by you or <strong>pilot wave</strong> will<br><strong>collide</strong> with <strong>intangible</strong> mobs, but not you",
|
// description: "<strong class='color-block'>blocks</strong> thrown by you or <strong>pilot wave</strong> will<br><strong>collide</strong> with <strong>intangible</strong> mobs, but not you",
|
||||||
@@ -1565,6 +1643,24 @@
|
|||||||
// tech.isBlockBullets = false
|
// tech.isBlockBullets = false
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
|
{
|
||||||
|
name: "inelastic collision",
|
||||||
|
description: "<strong>holding</strong> a <strong class='color-block'>block</strong> reduces <strong class='color-harm'>harm</strong> by <strong>85%</strong><br>increase <strong class='color-block'>block</strong> collision <strong class='color-d'>damage</strong> by <strong>150%</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 3,
|
||||||
|
frequencyDefault: 3,
|
||||||
|
allowed() {
|
||||||
|
return tech.throwChargeRate > 1 && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" && m.fieldUpgrades[m.fieldMode].name !== "wormhole" && !tech.isEnergyHealth
|
||||||
|
},
|
||||||
|
requires: "mass driver, a field that can hold things, not mass-energy",
|
||||||
|
effect() {
|
||||||
|
tech.isBlockHarm = true
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
tech.isBlockHarm = false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "inflation",
|
name: "inflation",
|
||||||
description: "<strong>throwing</strong> a <strong class='color-block'>block</strong> expands it by <strong>300%</strong><br>increase <strong>throw</strong> charge rate by <strong>200%</strong>",
|
description: "<strong>throwing</strong> a <strong class='color-block'>block</strong> expands it by <strong>300%</strong><br>increase <strong>throw</strong> charge rate by <strong>200%</strong>",
|
||||||
@@ -1573,9 +1669,9 @@
|
|||||||
frequency: 3,
|
frequency: 3,
|
||||||
frequencyDefault: 3,
|
frequencyDefault: 3,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.throwChargeRate > 1 && m.fieldUpgrades[m.fieldMode].name !== "pilot wave"
|
return (tech.throwChargeRate > 1 || m.fieldUpgrades[m.fieldMode].name === "pilot wave") && !tech.isBlockExplosion
|
||||||
},
|
},
|
||||||
requires: "mass driver, not pilot wave",
|
requires: "mass driver, not pilot wave not tokamak",
|
||||||
effect() {
|
effect() {
|
||||||
tech.isAddBlockMass = true
|
tech.isAddBlockMass = true
|
||||||
},
|
},
|
||||||
@@ -1584,7 +1680,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "restitution",
|
name: "buckling",
|
||||||
description: "if a <strong class='color-block'>block</strong> you threw kills a mob<br>spawn <strong>1</strong> <strong class='color-h'>heal</strong>, <strong class='color-g'>ammo</strong>, or <strong class='color-r'>research</strong>",
|
description: "if a <strong class='color-block'>block</strong> you threw kills a mob<br>spawn <strong>1</strong> <strong class='color-h'>heal</strong>, <strong class='color-g'>ammo</strong>, or <strong class='color-r'>research</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -1601,24 +1697,6 @@
|
|||||||
tech.isBlockPowerUps = false
|
tech.isBlockPowerUps = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "inelastic collision",
|
|
||||||
description: "<strong>holding</strong> a <strong class='color-block'>block</strong> reduces <strong class='color-harm'>harm</strong> by <strong>85%</strong><br>increase <strong class='color-block'>block</strong> collision <strong class='color-d'>damage</strong> by <strong>100%</strong>",
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
frequency: 3,
|
|
||||||
frequencyDefault: 3,
|
|
||||||
allowed() {
|
|
||||||
return tech.throwChargeRate > 1 && m.fieldUpgrades[m.fieldMode].name !== "pilot wave" && m.fieldUpgrades[m.fieldMode].name !== "wormhole" && !tech.isEnergyHealth
|
|
||||||
},
|
|
||||||
requires: "mass driver, a field that can hold things, not mass-energy",
|
|
||||||
effect() {
|
|
||||||
tech.isBlockHarm = true
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
tech.isBlockHarm = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "Pauli exclusion",
|
name: "Pauli exclusion",
|
||||||
description: `after receiving <strong class='color-harm'>harm</strong> from a <strong>collision</strong> become<br><strong>immune</strong> to <strong class='color-harm'>harm</strong> for <strong>1</strong> extra second`,
|
description: `after receiving <strong class='color-harm'>harm</strong> from a <strong>collision</strong> become<br><strong>immune</strong> to <strong class='color-harm'>harm</strong> for <strong>1</strong> extra second`,
|
||||||
@@ -2629,9 +2707,9 @@
|
|||||||
frequency: 3,
|
frequency: 3,
|
||||||
frequencyDefault: 3,
|
frequencyDefault: 3,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.isDeathAvoid
|
return tech.isDeathAvoid && tech.duplicationChance() < 0.66
|
||||||
},
|
},
|
||||||
requires: "anthropic principle",
|
requires: "anthropic principle, below 66% duplication chance",
|
||||||
effect() {
|
effect() {
|
||||||
tech.isAnthropicTech = true
|
tech.isAnthropicTech = true
|
||||||
powerUps.setDo(); //needed after adjusting duplication chance
|
powerUps.setDo(); //needed after adjusting duplication chance
|
||||||
@@ -3825,7 +3903,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "worm-shot",
|
name: "worm-shot",
|
||||||
description: "<strong>shotgun</strong> hatches <strong>3-4</strong> mob seeking <strong class='color-p' style='letter-spacing: -0.8px;'>worms</strong>", //<br><strong class='color-p' style='letter-spacing: -0.8px;'>worms</strong> seek out nearby mobs
|
description: "<strong>shotgun</strong> hatches <strong>3-4</strong> mob seeking <strong class='color-p' style='letter-spacing: -0.8px;'>worms</strong><br><em>worms benefit from spore technology</em>", //<br><strong class='color-p' style='letter-spacing: -0.8px;'>worms</strong> seek out nearby mobs
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -7653,5 +7731,6 @@
|
|||||||
isWormShot: null,
|
isWormShot: null,
|
||||||
isFoamShot: null,
|
isFoamShot: null,
|
||||||
isIceShot: null,
|
isIceShot: null,
|
||||||
isNeedleShot: null
|
isNeedleShot: null,
|
||||||
|
isBlockRestitution: null
|
||||||
}
|
}
|
||||||
26
todo.txt
26
todo.txt
@@ -1,8 +1,24 @@
|
|||||||
******************************************************** NEXT PATCH ********************************************************
|
******************************************************** NEXT PATCH ********************************************************
|
||||||
|
|
||||||
|
tech: restitution: thrown blocks are bouncy and blocks do 150% more damage
|
||||||
|
the tech previously named restitution is now named buckling
|
||||||
|
|
||||||
|
after getting a bot upgrade, future bot tech will be for the upgraded bot type
|
||||||
|
(doesn't effect tech that gives random bots)
|
||||||
|
|
||||||
|
bug fixes
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
using worming makes you immune to harm and drains energy until you run out
|
||||||
|
disable incoming energy, by saving current energy and just setting energy in the next cycle to be lower then the saved value
|
||||||
|
|
||||||
|
pink seeker boss is cool as heck, make an alt version of it
|
||||||
|
|
||||||
|
perfect diamagnetism field stays when you aren't holding field
|
||||||
|
good for perfect because it doesn't use energy
|
||||||
|
holding field moves it the player
|
||||||
|
|
||||||
block shattering
|
block shattering
|
||||||
get code from planetesimals
|
get code from planetesimals
|
||||||
https://codepen.io/lilgreenland/pen/jrMvaB?editors=0010
|
https://codepen.io/lilgreenland/pen/jrMvaB?editors=0010
|
||||||
@@ -12,17 +28,11 @@ mob that grows or gets a shield when player is near
|
|||||||
charge triggers an escape mode
|
charge triggers an escape mode
|
||||||
mob wonders and drops eggs that hatch into seekers if no player around
|
mob wonders and drops eggs that hatch into seekers if no player around
|
||||||
|
|
||||||
pink seeker boss is cool as heck, make an alt version of it
|
|
||||||
|
|
||||||
perfect diamagnetism field stays when you aren't holding field
|
|
||||||
good for perfect because it doesn't use energy
|
|
||||||
holding field moves it the player
|
|
||||||
|
|
||||||
scrolling console history in pause menu?
|
scrolling console history in pause menu?
|
||||||
also make tech, guns scrolling?
|
|
||||||
in testing mode console log the body you click on
|
|
||||||
pause should at least show the last in game console message
|
pause should at least show the last in game console message
|
||||||
|
|
||||||
|
in testing mode console log the body you click on
|
||||||
|
|
||||||
make the player get a buff after using wormhole
|
make the player get a buff after using wormhole
|
||||||
while energy lasts: drain energy and give damage buff
|
while energy lasts: drain energy and give damage buff
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user