needle ice
tech: needle ice - needles make 1-2 ice 9 after they impact a wall needle shot gun fires 1 less needle most harpoon tech are about 5% better JUNK tech: negative friction - you speed up when you touch walls no-cloning theorem: 42% -> 38% dup chance symbiosis: 2 tech -> 1-2 tech after a boss dies quenching gives 10% less max health for over heal
This commit is contained in:
12
js/bullet.js
12
js/bullet.js
@@ -3099,6 +3099,10 @@ const b = {
|
|||||||
this.do = function() {
|
this.do = function() {
|
||||||
if (!Matter.Query.collides(this, map).length) this.force.y += this.mass * 0.001;
|
if (!Matter.Query.collides(this, map).length) this.force.y += this.mass * 0.001;
|
||||||
}
|
}
|
||||||
|
if (tech.isNeedleIce) {
|
||||||
|
b.iceIX(5 + 5 * Math.random(), 2 * Math.PI * Math.random(), this.position) // iceIX(speed = 0, dir = m.angle + Math.PI * 2 * Math.random(), where = { x: m.pos.x + 30 * Math.cos(m.angle), y: m.pos.y + 30 * Math.sin(m.angle) }) {
|
||||||
|
if (0.5 < Math.random()) b.iceIX(5 + 5 * Math.random(), 2 * Math.PI * Math.random(), this.position)
|
||||||
|
}
|
||||||
} else if (this.speed < 30) {
|
} else if (this.speed < 30) {
|
||||||
this.force.y += this.mass * 0.001; //no gravity until it slows down to improve aiming
|
this.force.y += this.mass * 0.001; //no gravity until it slows down to improve aiming
|
||||||
}
|
}
|
||||||
@@ -4332,7 +4336,7 @@ const b = {
|
|||||||
b.foam(where, { x: SPEED * Math.cos(angle), y: SPEED * Math.sin(angle) }, 5 + 8 * Math.random())
|
b.foam(where, { x: SPEED * Math.cos(angle), y: SPEED * Math.sin(angle) }, 5 + 8 * Math.random())
|
||||||
}
|
}
|
||||||
} else if (tech.isNeedleShot) {
|
} else if (tech.isNeedleShot) {
|
||||||
const number = 11 * (tech.isShotgunReversed ? 1.6 : 1)
|
const number = 9 * (tech.isShotgunReversed ? 1.6 : 1)
|
||||||
const spread = (input.down ? 0.03 : 0.05)
|
const spread = (input.down ? 0.03 : 0.05)
|
||||||
let angle = m.angle - (number - 1) * spread * 0.5
|
let angle = m.angle - (number - 1) * spread * 0.5
|
||||||
for (let i = 0; i < number; i++) {
|
for (let i = 0; i < number; i++) {
|
||||||
@@ -5187,8 +5191,8 @@ const b = {
|
|||||||
}
|
}
|
||||||
//look for closest mob in player's LoS
|
//look for closest mob in player's LoS
|
||||||
const dir = { x: Math.cos(m.angle), y: Math.sin(m.angle) }; //make a vector for the player's direction of length 1; used in dot product
|
const dir = { x: Math.cos(m.angle), y: Math.sin(m.angle) }; //make a vector for the player's direction of length 1; used in dot product
|
||||||
const length = tech.isLargeHarpoon ? 1 + 0.09 * Math.sqrt(this.ammo) : 1
|
const length = tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1
|
||||||
const totalCycles = 7 * (tech.isFilament ? 1 + 0.009 * Math.min(100, this.ammo) : 1) * Math.sqrt(length)
|
const totalCycles = 7 * (tech.isFilament ? 1 + 0.01 * Math.min(110, this.ammo) : 1) * Math.sqrt(length)
|
||||||
if (input.down) {
|
if (input.down) {
|
||||||
// if (true) {
|
// if (true) {
|
||||||
// if (m.immuneCycle < m.cycle + 60) m.immuneCycle = m.cycle + tech.collisionImmuneCycles; //player is immune to damage for 30 cycles
|
// if (m.immuneCycle < m.cycle + 60) m.immuneCycle = m.cycle + tech.collisionImmuneCycles; //player is immune to damage for 30 cycles
|
||||||
@@ -5214,7 +5218,7 @@ const b = {
|
|||||||
m.fireCDcycle = m.cycle + 50 * b.fireCDscale; // cool down
|
m.fireCDcycle = m.cycle + 50 * b.fireCDscale; // cool down
|
||||||
// }
|
// }
|
||||||
} else if (tech.extraHarpoons) {
|
} else if (tech.extraHarpoons) {
|
||||||
const range = 450 * (tech.isFilament ? 1 + Math.min(100, this.ammo) / 100 : 1)
|
const range = 450 * (tech.isFilament ? 1 + 0.005 * Math.min(110, this.ammo) : 1)
|
||||||
let targetCount = 0
|
let targetCount = 0
|
||||||
for (let i = 0, len = mob.length; i < len; ++i) {
|
for (let i = 0, len = mob.length; i < len; ++i) {
|
||||||
if (mob[i].alive && !mob[i].isBadTarget && !mob[i].shield && Matter.Query.ray(map, m.pos, mob[i].position).length === 0) {
|
if (mob[i].alive && !mob[i].isBadTarget && !mob[i].shield && Matter.Query.ray(map, m.pos, mob[i].position).length === 0) {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ const level = {
|
|||||||
// level.difficultyIncrease(30) //30 is near max on hard //60 is near max on why
|
// level.difficultyIncrease(30) //30 is near max on hard //60 is near max on why
|
||||||
// simulation.isHorizontalFlipped = true
|
// simulation.isHorizontalFlipped = true
|
||||||
// m.setField("plasma torch")
|
// m.setField("plasma torch")
|
||||||
// b.giveGuns("railgun")
|
// b.giveGuns("nail gun")
|
||||||
// tech.giveTech("aerodynamic heating")
|
// tech.giveTech("negative friction")
|
||||||
// for (let i = 0; i < 2; i++) tech.giveTech("refractory metal")
|
// for (let i = 0; i < 2; i++) tech.giveTech("refractory metal")
|
||||||
// tech.giveTech("all-stars")
|
// tech.giveTech("all-stars")
|
||||||
// for (let i = 0; i < 3; i++) tech.giveTech("overcharge")
|
// for (let i = 0; i < 3; i++) tech.giveTech("overcharge")
|
||||||
|
|||||||
@@ -1139,7 +1139,8 @@ const mobs = {
|
|||||||
}
|
}
|
||||||
if (tech.isAddRemoveMaxHealth) {
|
if (tech.isAddRemoveMaxHealth) {
|
||||||
if (this.isBoss && this.isDropPowerUp) {
|
if (this.isBoss && this.isDropPowerUp) {
|
||||||
for (let i = 0; i < 2; i++) powerUps.spawn(this.position.x, this.position.y, "tech", false) //exit
|
powerUps.spawn(this.position.x, this.position.y, "tech", false)
|
||||||
|
if (0.5 < Math.random()) powerUps.spawn(this.position.x, this.position.y, "tech", false)
|
||||||
} else {
|
} else {
|
||||||
const amount = 0.01
|
const amount = 0.01
|
||||||
if (tech.isEnergyHealth) {
|
if (tech.isEnergyHealth) {
|
||||||
|
|||||||
@@ -424,10 +424,9 @@ const powerUps = {
|
|||||||
simulation.makeTextLog(`<span class='color-var'>m</span>.health <span class='color-symbol'>+=</span> ${(healOutput).toFixed(3)}`) // <br>${m.health.toFixed(3)}
|
simulation.makeTextLog(`<span class='color-var'>m</span>.health <span class='color-symbol'>+=</span> ${(healOutput).toFixed(3)}`) // <br>${m.health.toFixed(3)}
|
||||||
|
|
||||||
if (tech.isOverHeal && overHeal > 0) { //tech quenching
|
if (tech.isOverHeal && overHeal > 0) { //tech quenching
|
||||||
const scaledOverHeal = overHeal * 0.8
|
const scaledOverHeal = overHeal * 0.7
|
||||||
m.damage(scaledOverHeal);
|
m.damage(scaledOverHeal);
|
||||||
simulation.makeTextLog(`<span class='color-var'>m</span>.health <span class='color-symbol'>-=</span> ${(scaledOverHeal).toFixed(3)}`) // <br>${m.health.toFixed(3)}
|
simulation.makeTextLog(`<span class='color-var'>m</span>.health <span class='color-symbol'>-=</span> ${(scaledOverHeal).toFixed(3)}`) // <br>${m.health.toFixed(3)}
|
||||||
|
|
||||||
//draw damage
|
//draw damage
|
||||||
simulation.drawList.push({ //add dmg to draw queue
|
simulation.drawList.push({ //add dmg to draw queue
|
||||||
x: m.pos.x,
|
x: m.pos.x,
|
||||||
|
|||||||
52
js/tech.js
52
js/tech.js
@@ -3700,6 +3700,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "needle ice",
|
||||||
|
description: `when <strong>needles</strong> impact walls<br>they chip off <strong>1-2</strong> freezing <strong class='color-s'>ice IX</strong> crystals`,
|
||||||
|
isGunTech: true,
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 2,
|
||||||
|
frequencyDefault: 2,
|
||||||
|
allowed() {
|
||||||
|
return tech.isNeedles || tech.isNeedleShot
|
||||||
|
},
|
||||||
|
requires: "needle gun, needle-shot",
|
||||||
|
effect() {
|
||||||
|
tech.isNeedleIce = true
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
tech.isNeedleIce = false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "ceramics",
|
name: "ceramics",
|
||||||
description: `<strong>needles</strong> and <strong>harpoons</strong> pierce <strong>shields</strong><br>directly <strong class='color-d'>damaging</strong> shielded mobs`,
|
description: `<strong>needles</strong> and <strong>harpoons</strong> pierce <strong>shields</strong><br>directly <strong class='color-d'>damaging</strong> shielded mobs`,
|
||||||
@@ -5088,7 +5107,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "surfactant",
|
name: "surfactant",
|
||||||
description: "gain <strong>3</strong> <strong class='color-bot'>foam-bots</strong> and <strong>upgrade</strong> bots to foam<br>remove your <strong>foam gun</strong>",
|
description: "trade your <strong>foam gun</strong> for <strong>2</strong> <strong class='color-bot'>foam-bots</strong><br>and <strong>upgrade</strong> all bots to foam<br>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -5099,11 +5118,11 @@
|
|||||||
isNonRefundable: true,
|
isNonRefundable: true,
|
||||||
requires: "NOT EXPERIMENT MODE, foam gun",
|
requires: "NOT EXPERIMENT MODE, foam gun",
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("foam", false) && !tech.isFoamBotUpgrade
|
return tech.haveGunCheck("foam", false) && !b.hasBotUpgrade()
|
||||||
},
|
},
|
||||||
effect() {
|
effect() {
|
||||||
tech.giveTech("foam-bot upgrade")
|
tech.giveTech("foam-bot upgrade")
|
||||||
for (let i = 0; i < 3; i++) {
|
for (let i = 0; i < 2; i++) {
|
||||||
b.foamBot()
|
b.foamBot()
|
||||||
tech.foamBotCount++;
|
tech.foamBotCount++;
|
||||||
}
|
}
|
||||||
@@ -6221,7 +6240,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no-cloning theorem",
|
name: "no-cloning theorem",
|
||||||
description: `<strong>42%</strong> chance to <strong class='color-dup'>duplicate</strong> spawned <strong>power ups</strong><br>after a <strong>mob</strong> <strong>dies</strong>, lose <strong>1%</strong> <strong class='color-dup'>duplication</strong> chance`,
|
description: `<strong>38%</strong> chance to <strong class='color-dup'>duplicate</strong> spawned <strong>power ups</strong><br>after a <strong>mob</strong> <strong>dies</strong>, lose <strong>1%</strong> <strong class='color-dup'>duplication</strong> chance`,
|
||||||
isFieldTech: true,
|
isFieldTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -6232,9 +6251,9 @@
|
|||||||
},
|
},
|
||||||
requires: "cloaking, wormhole or time dilation and below 100% duplication chance",
|
requires: "cloaking, wormhole or time dilation and below 100% duplication chance",
|
||||||
effect() {
|
effect() {
|
||||||
tech.cloakDuplication = 0.42
|
tech.cloakDuplication = 0.38
|
||||||
powerUps.setDupChance(); //needed after adjusting duplication chance
|
powerUps.setDupChance(); //needed after adjusting duplication chance
|
||||||
if (!build.isExperimentSelection) simulation.circleFlare(0.42);
|
if (!build.isExperimentSelection) simulation.circleFlare(0.38);
|
||||||
},
|
},
|
||||||
remove() {
|
remove() {
|
||||||
tech.cloakDuplication = 0
|
tech.cloakDuplication = 0
|
||||||
@@ -6243,7 +6262,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "symbiosis",
|
name: "symbiosis",
|
||||||
description: "after a <strong>mob</strong> <strong>dies</strong>, lose <strong>1</strong> max <strong class='color-h'>health</strong><br><strong>bosses</strong> spawn <strong>2</strong> extra <strong class='color-m'>tech</strong> after they <strong>die</strong>",
|
description: "after a <strong>mob</strong> <strong>dies</strong>, lose <strong>1</strong> max <strong class='color-h'>health</strong><br><strong>bosses</strong> spawn <strong>1-2</strong> extra <strong class='color-m'>tech</strong> after they <strong>die</strong>",
|
||||||
isFieldTech: true,
|
isFieldTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -6770,6 +6789,25 @@
|
|||||||
// },
|
// },
|
||||||
// remove() {}
|
// remove() {}
|
||||||
// },
|
// },
|
||||||
|
{
|
||||||
|
name: "negative friction",
|
||||||
|
description: "when you touch walls you speed up instead of slowing down. It's actually pretty cool, seriously.",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 0,
|
||||||
|
isExperimentHide: true,
|
||||||
|
isJunk: true,
|
||||||
|
allowed() {
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
requires: "",
|
||||||
|
effect() {
|
||||||
|
player.friction = -0.5
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
if (this.count) player.friction = 0.002
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "bounce",
|
name: "bounce",
|
||||||
description: "you bounce off things. It's annoying, but not that bad.",
|
description: "you bounce off things. It's annoying, but not that bad.",
|
||||||
|
|||||||
28
todo.txt
28
todo.txt
@@ -1,16 +1,32 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
tech: needle ice - needles make 1-2 ice 9 after they impact a wall
|
||||||
|
needle shot gun fires 1 less needle
|
||||||
|
|
||||||
tech: surfactant - remove foam gun, get 3 foam bots, upgrade all bots to foam
|
most harpoon tech are about 5% better
|
||||||
you can now have a chance to see gun removing tech even when that gun isn't active
|
JUNK tech: negative friction - you speed up when you touch walls
|
||||||
|
|
||||||
n-gon title draws in 1/2 the time
|
no-cloning theorem: 42% -> 38% dup chance
|
||||||
I'm getting flagged by google search that my loading page takes a long time to full render, so this might remove the flag
|
symbiosis: 2 tech -> 1-2 tech after a boss dies
|
||||||
the site is very fast to load, but I think google is getting confused by the title animation
|
quenching gives 10% less max health for over heal
|
||||||
|
|
||||||
bug fixes
|
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
no passive energy regen, but regen energy after doing damage
|
||||||
|
tech or just default?
|
||||||
|
modify conservation of energy tech
|
||||||
|
|
||||||
|
Tech: Schrödinger’s cat (or superposition)
|
||||||
|
Requires: Metamaterial Cloaking and Dazzler
|
||||||
|
Upon decloaking, all mobs nearby (same range as Dazzler) are irradiated. Increase energy drain by 15%.
|
||||||
|
|
||||||
|
game idea - auto battler with n-gon mob AI and tech
|
||||||
|
name: auto-gon
|
||||||
|
you build a group of mobs and bosses from n-gon
|
||||||
|
they fight other mobs and bosses
|
||||||
|
similar research and tech system to n-gon
|
||||||
|
some mobs can fire player weapons
|
||||||
|
|
||||||
junk tech negative air friction on player
|
junk tech negative air friction on player
|
||||||
|
|
||||||
remove foam gun get 2 foam bots and upgrade
|
remove foam gun get 2 foam bots and upgrade
|
||||||
|
|||||||
Reference in New Issue
Block a user