smelting
filament renamed UHMWPE unaaq renamed Bessemer process toggling harpoon renamed induction furnace half-wave rectifier renamed alternator reticulum renamed smelting smelting costs 2 ammo packs per upgrade railgun works with smelting JUNK tech: Higgs phase transition - spawn 3 tech, there is a chance to remove everything with a 5 minute halflife
This commit is contained in:
66
js/bullet.js
66
js/bullet.js
@@ -114,6 +114,11 @@ const b = {
|
|||||||
simulation.updateGunHUD();
|
simulation.updateGunHUD();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
returnGunAmmo(name) {
|
||||||
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
|
if (b.guns[i].name === name) return b.guns[i].ammo
|
||||||
|
}
|
||||||
|
},
|
||||||
giveGuns(gun = "random", ammoPacks = 10) {
|
giveGuns(gun = "random", ammoPacks = 10) {
|
||||||
if (tech.ammoCap) ammoPacks = 0.45 * tech.ammoCap
|
if (tech.ammoCap) ammoPacks = 0.45 * tech.ammoCap
|
||||||
if (tech.isOneGun) b.removeAllGuns();
|
if (tech.isOneGun) b.removeAllGuns();
|
||||||
@@ -1448,9 +1453,7 @@ const b = {
|
|||||||
// ctx.lineTo(this.vertices[0].x, this.vertices[0].y);
|
// ctx.lineTo(this.vertices[0].x, this.vertices[0].y);
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
},
|
},
|
||||||
draw() {
|
draw() {},
|
||||||
|
|
||||||
},
|
|
||||||
returnToPlayer() {
|
returnToPlayer() {
|
||||||
if (Vector.magnitude(Vector.sub(this.position, m.pos)) < returnRadius) { //near player
|
if (Vector.magnitude(Vector.sub(this.position, m.pos)) < returnRadius) { //near player
|
||||||
this.endCycle = 0;
|
this.endCycle = 0;
|
||||||
@@ -5631,6 +5634,7 @@ const b = {
|
|||||||
}
|
}
|
||||||
//fire
|
//fire
|
||||||
if ((!input.fire && this.charge > 0.6)) {
|
if ((!input.fire && this.charge > 0.6)) {
|
||||||
|
tech.harpoonDensity = 0.009 //0.001 is normal for blocks, 0.006 is normal for harpoon, 0.006*6 when buffed
|
||||||
const where = {
|
const where = {
|
||||||
x: m.pos.x + 30 * Math.cos(m.angle),
|
x: m.pos.x + 30 * Math.cos(m.angle),
|
||||||
y: m.pos.y + 30 * Math.sin(m.angle)
|
y: m.pos.y + 30 * Math.sin(m.angle)
|
||||||
@@ -5639,9 +5643,44 @@ const b = {
|
|||||||
distance: 10000,
|
distance: 10000,
|
||||||
target: null
|
target: null
|
||||||
}
|
}
|
||||||
|
const harpoonSize = tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1
|
||||||
|
|
||||||
|
if (tech.extraHarpoons) {
|
||||||
|
let targetCount = 0
|
||||||
|
const SPREAD = 0.06 + 0.05 * (!input.down)
|
||||||
|
let angle = m.angle - SPREAD * tech.extraHarpoons / 2;
|
||||||
|
const dir = { x: Math.cos(angle), y: Math.sin(angle) }; //make a vector for the player's direction of length 1; used in dot product
|
||||||
|
|
||||||
|
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) {
|
||||||
|
const dot = Vector.dot(dir, Vector.normalise(Vector.sub(mob[i].position, m.pos))) //the dot product of diff and dir will return how much over lap between the vectors
|
||||||
|
if (dot > 0.7) { //lower dot product threshold for targeting then if you only have one harpoon //target closest mob that player is looking at and isn't too close to target
|
||||||
|
if (this.ammo > 0) {
|
||||||
|
this.ammo--
|
||||||
|
b.harpoon(where, mob[i], angle, harpoonSize, false) //Vector.angle(Vector.sub(where, mob[i].position), { x: 0, y: 0 })
|
||||||
|
angle += SPREAD
|
||||||
|
targetCount++
|
||||||
|
if (targetCount > tech.extraHarpoons) break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if more harpoons and no targets left
|
||||||
|
if (targetCount < tech.extraHarpoons + 1) {
|
||||||
|
const num = tech.extraHarpoons + 1 - targetCount
|
||||||
|
for (let i = 0; i < num; i++) {
|
||||||
|
if (this.ammo > 0) {
|
||||||
|
this.ammo--
|
||||||
|
b.harpoon(where, null, angle, harpoonSize, false)
|
||||||
|
angle += SPREAD
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ammo++ //make up for the ammo used up in fire()
|
||||||
|
simulation.updateGunHUD();
|
||||||
|
} else {
|
||||||
//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 harpoonSize = tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1
|
|
||||||
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 && Matter.Query.ray(map, m.pos, mob[i].position).length === 0) {
|
if (mob[i].alive && !mob[i].isBadTarget && Matter.Query.ray(map, m.pos, mob[i].position).length === 0) {
|
||||||
const dot = Vector.dot(dir, Vector.normalise(Vector.sub(mob[i].position, m.pos))) //the dot product of diff and dir will return how much over lap between the vectors
|
const dot = Vector.dot(dir, Vector.normalise(Vector.sub(mob[i].position, m.pos))) //the dot product of diff and dir will return how much over lap between the vectors
|
||||||
@@ -5652,8 +5691,8 @@ const b = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tech.harpoonDensity = 0.01 //0.001 is normal for blocks, 0.006 is normal for harpoon, 0.006*6 when buffed
|
|
||||||
b.harpoon(where, closest.target, m.angle, harpoonSize, false)
|
b.harpoon(where, closest.target, m.angle, harpoonSize, false)
|
||||||
|
}
|
||||||
|
|
||||||
//push away blocks and mobs
|
//push away blocks and mobs
|
||||||
const range = 1200 * this.charge
|
const range = 1200 * this.charge
|
||||||
@@ -5710,7 +5749,7 @@ const b = {
|
|||||||
if (input.down) smoothRate *= 0.995
|
if (input.down) smoothRate *= 0.995
|
||||||
|
|
||||||
this.charge = this.charge * smoothRate + 1 - smoothRate
|
this.charge = this.charge * smoothRate + 1 - smoothRate
|
||||||
m.energy += (this.charge - previousCharge) * (tech.isRailEnergyGain ? 0.8 : -0.3) //energy drain is proportional to charge gained, but doesn't stop normal m.fieldRegen
|
m.energy += (this.charge - previousCharge) * ((tech.isRailEnergyGain ? 0.5 : -0.3)) //energy drain is proportional to charge gained, but doesn't stop normal m.fieldRegen
|
||||||
|
|
||||||
//draw magnetic field
|
//draw magnetic field
|
||||||
const X = m.pos.x
|
const X = m.pos.x
|
||||||
@@ -5755,9 +5794,11 @@ const b = {
|
|||||||
target: null
|
target: null
|
||||||
}
|
}
|
||||||
//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 harpoonSize = (tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1) //* (input.down ? 0.7 : 1)
|
const harpoonSize = (tech.isLargeHarpoon ? 1 + 0.1 * Math.sqrt(this.ammo) : 1) //* (input.down ? 0.7 : 1)
|
||||||
const totalCycles = 7 * (tech.isFilament ? 1 + 0.01 * Math.min(110, this.ammo) : 1) * Math.sqrt(harpoonSize)
|
const totalCycles = 7 * (tech.isFilament ? 1 + 0.01 * Math.min(110, this.ammo) : 1) * Math.sqrt(harpoonSize)
|
||||||
|
const SPREAD = 0.1
|
||||||
|
let angle = m.angle - SPREAD * tech.extraHarpoons / 2;
|
||||||
|
const dir = { x: Math.cos(angle), y: Math.sin(angle) }; //make a vector for the player's direction of length 1; used in dot product
|
||||||
|
|
||||||
if (tech.extraHarpoons && !input.down) {
|
if (tech.extraHarpoons && !input.down) {
|
||||||
const range = 450 * (tech.isFilament ? 1 + 0.005 * Math.min(110, this.ammo) : 1)
|
const range = 450 * (tech.isFilament ? 1 + 0.005 * Math.min(110, this.ammo) : 1)
|
||||||
@@ -5769,7 +5810,8 @@ const b = {
|
|||||||
if (dist < range && dot > 0.7) { //lower dot product threshold for targeting then if you only have one harpoon //target closest mob that player is looking at and isn't too close to target
|
if (dist < range && dot > 0.7) { //lower dot product threshold for targeting then if you only have one harpoon //target closest mob that player is looking at and isn't too close to target
|
||||||
if (this.ammo > 0) {
|
if (this.ammo > 0) {
|
||||||
this.ammo--
|
this.ammo--
|
||||||
b.harpoon(where, mob[i], m.angle, harpoonSize, true, totalCycles) //Vector.angle(Vector.sub(where, mob[i].position), { x: 0, y: 0 })
|
b.harpoon(where, mob[i], angle, harpoonSize, true, totalCycles) //Vector.angle(Vector.sub(where, mob[i].position), { x: 0, y: 0 })
|
||||||
|
angle += SPREAD
|
||||||
targetCount++
|
targetCount++
|
||||||
if (targetCount > tech.extraHarpoons) break
|
if (targetCount > tech.extraHarpoons) break
|
||||||
}
|
}
|
||||||
@@ -5778,14 +5820,12 @@ const b = {
|
|||||||
}
|
}
|
||||||
//if more harpoons and no targets left
|
//if more harpoons and no targets left
|
||||||
if (targetCount < tech.extraHarpoons + 1) {
|
if (targetCount < tech.extraHarpoons + 1) {
|
||||||
const SPREAD = 0.1
|
|
||||||
const num = tech.extraHarpoons + 1 - targetCount
|
const num = tech.extraHarpoons + 1 - targetCount
|
||||||
let dir = m.angle - SPREAD * (num - 1) / 2;
|
|
||||||
for (let i = 0; i < num; i++) {
|
for (let i = 0; i < num; i++) {
|
||||||
if (this.ammo > 0) {
|
if (this.ammo > 0) {
|
||||||
this.ammo--
|
this.ammo--
|
||||||
b.harpoon(where, null, dir, harpoonSize, true, totalCycles) //Vector.angle(Vector.sub(where, mob[i].position), { x: 0, y: 0 })
|
b.harpoon(where, null, angle, harpoonSize, true, totalCycles) //Vector.angle(Vector.sub(where, mob[i].position), { x: 0, y: 0 })
|
||||||
dir += SPREAD
|
angle += SPREAD
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5804,7 +5844,7 @@ const b = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
b.harpoon(where, closest.target, m.angle, harpoonSize, !input.down, totalCycles)
|
b.harpoon(where, closest.target, m.angle, harpoonSize, !input.down, totalCycles)
|
||||||
m.fireCDcycle = m.cycle + 90 //Infinity; // cool down
|
m.fireCDcycle = m.cycle + 45 // cool down
|
||||||
}
|
}
|
||||||
const recoil = Vector.mult(Vector.normalise(Vector.sub(where, m.pos)), input.down ? 0.015 : 0.035)
|
const recoil = Vector.mult(Vector.normalise(Vector.sub(where, m.pos)), input.down ? 0.015 : 0.035)
|
||||||
player.force.x -= recoil.x
|
player.force.x -= recoil.x
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const level = {
|
|||||||
// tech.giveTech("railgun")
|
// tech.giveTech("railgun")
|
||||||
// tech.giveTech("capacitor bank")
|
// tech.giveTech("capacitor bank")
|
||||||
// tech.giveTech("half-wave rectifier")
|
// tech.giveTech("half-wave rectifier")
|
||||||
// for (let i = 0; i < 1; i++) tech.giveTech("reticulum")
|
// for (let i = 0; i < 3; i++) tech.giveTech("reticulum")
|
||||||
// for (let i = 0; i < 2; i++) powerUps.directSpawn(0, 0, "tech");
|
// for (let i = 0; i < 2; i++) powerUps.directSpawn(0, 0, "tech");
|
||||||
// for (let i = 0; i < 3; i++) tech.giveTech("undefined")
|
// for (let i = 0; i < 3; i++) tech.giveTech("undefined")
|
||||||
// for (let i = 10; i < tech.tech.length; i++) { tech.tech[i].isBanished = true }
|
// for (let i = 10; i < tech.tech.length; i++) { tech.tech[i].isBanished = true }
|
||||||
@@ -30,7 +30,7 @@ const level = {
|
|||||||
// tech.tech[297].frequency = 100
|
// tech.tech[297].frequency = 100
|
||||||
|
|
||||||
// m.immuneCycle = Infinity //you can't take damage
|
// m.immuneCycle = Infinity //you can't take damage
|
||||||
// level.difficultyIncrease(8) //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.enableConstructMode() //used to build maps in testing mode
|
// simulation.enableConstructMode() //used to build maps in testing mode
|
||||||
// level.reactor();
|
// level.reactor();
|
||||||
// level.testing(); //not in rotation, used for testing
|
// level.testing(); //not in rotation, used for testing
|
||||||
|
|||||||
116
js/tech.js
116
js/tech.js
@@ -3276,7 +3276,7 @@ const tech = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "metastability",
|
name: "metastability",
|
||||||
description: "<strong>12%</strong> chance to <strong class='color-dup'>duplicate</strong> spawned <strong>power ups</strong><br><strong class='color-dup'>duplicates</strong> <strong class='color-e'>explode</strong> with a <strong>3</strong> second <strong>half-life</strong> ",
|
description: "<strong>12%</strong> chance to <strong class='color-dup'>duplicate</strong> spawned <strong>power ups</strong><br><strong class='color-dup'>duplicates</strong> <strong class='color-e'>explode</strong> with a <strong>3</strong> second <strong>half-life</strong>",
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 1,
|
frequency: 1,
|
||||||
@@ -5479,17 +5479,17 @@ const tech = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "railgun",
|
name: "railgun",
|
||||||
description: `harpoons are <strong>66% denser</strong>, but don't <strong>retract</strong><br>gain <strong>600%</strong> more harpoon <strong>ammo</strong> per ${powerUps.orb.ammo(1)}`,
|
description: `harpoons are <strong>50% denser</strong>, but don't <strong>retract</strong><br>gain <strong>500%</strong> more harpoon <strong class='color-ammo'>ammo</strong> per ${powerUps.orb.ammo(1)}`,
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
frequency: 2,
|
frequency: 2,
|
||||||
frequencyDefault: 2,
|
frequencyDefault: 2,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("harpoon") && !tech.isFilament && !tech.extraHarpoons && !tech.isHarpoonPowerUp
|
return tech.haveGunCheck("harpoon") && !tech.isFilament && !tech.isHarpoonPowerUp
|
||||||
},
|
},
|
||||||
requires: "harpoon, not filament, reticulum, toggling harpoon",
|
requires: "harpoon, not filament, toggling harpoon",
|
||||||
ammoBonus: 6,
|
ammoBonus: 5,
|
||||||
effect() {
|
effect() {
|
||||||
tech.isRailGun = true;
|
tech.isRailGun = true;
|
||||||
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
@@ -5556,8 +5556,8 @@ const tech = {
|
|||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
name: "half-wave rectifier",
|
name: "alternator",
|
||||||
description: "<strong>harpoons</strong> drain no <strong class='color-f'>energy</strong> as they <strong>retract</strong><br><strong>crouch</strong> firing <strong>harpoon</strong> generates <strong class='color-f'>energy</strong>",
|
description: "<strong>harpoon</strong> drains no <strong class='color-f'>energy</strong><br><strong>railgun</strong> generates <strong class='color-f'>energy</strong>", //as they <strong>retract</strong><br><strong>crouch</strong> firing <strong>harpoon</strong> generates <strong class='color-f'>energy</strong>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
count: 0,
|
count: 0,
|
||||||
@@ -5583,7 +5583,7 @@ const tech = {
|
|||||||
frequency: 2,
|
frequency: 2,
|
||||||
frequencyDefault: 2,
|
frequencyDefault: 2,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("harpoon") || (tech.isNeedles || tech.isNeedleShot)
|
return (!tech.isLargeHarpoon && tech.haveGunCheck("harpoon")) || (tech.isNeedles || tech.isNeedleShot)
|
||||||
},
|
},
|
||||||
requires: "nail gun, needle gun, needle-shot, harpoon",
|
requires: "nail gun, needle gun, needle-shot, harpoon",
|
||||||
effect() {
|
effect() {
|
||||||
@@ -5594,8 +5594,7 @@ const tech = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unaaq",
|
name: "Bessemer process",
|
||||||
link: `<a target="_blank" href='https://en.wikipedia.org/wiki/Harpoon#/media/File:Harpon_Unaaq_MHNT_ETH_AC_198.jpg' class="link">unaaq</a>`, //https://en.wikipedia.org/wiki/Weapon
|
|
||||||
description: "increase the <strong>size</strong> of your <strong>harpoon</strong><br>by <strong>10%</strong> of the square root of harpoon <strong class='color-ammo'>ammo</strong>",
|
description: "increase the <strong>size</strong> of your <strong>harpoon</strong><br>by <strong>10%</strong> of the square root of harpoon <strong class='color-ammo'>ammo</strong>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
@@ -5603,7 +5602,7 @@ const tech = {
|
|||||||
frequency: 2,
|
frequency: 2,
|
||||||
frequencyDefault: 2,
|
frequencyDefault: 2,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("harpoon")
|
return tech.haveGunCheck("harpoon") && !tech.isShieldPierce
|
||||||
},
|
},
|
||||||
requires: "harpoon",
|
requires: "harpoon",
|
||||||
effect() {
|
effect() {
|
||||||
@@ -5614,7 +5613,45 @@ const tech = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "filament",
|
name: "smelting",
|
||||||
|
// description: `spend ${powerUps.orb.ammo(2)}to upgrade the <strong>harpoon</strong><br>fire <strong>+1</strong> <strong>harpoon</strong> with each shot`,
|
||||||
|
// description: `forge ${Math.ceil(0.6*(tech.isRailGun? 5: 1))} ammo into a new <strong>harpoon</strong><br>fire <strong>+1</strong> <strong>harpoon</strong> with each shot`,
|
||||||
|
descriptionFunction() { return `forge <strong>${tech.isRailGun? 10: 2}</strong> <strong class='color-ammo'>ammo</strong> into a new harpoon<br>fire <strong>+1</strong> <strong>harpoon</strong> with each shot` },
|
||||||
|
isGunTech: true,
|
||||||
|
maxCount: 9,
|
||||||
|
count: 0,
|
||||||
|
frequency: 2,
|
||||||
|
frequencyDefault: 2,
|
||||||
|
allowed() {
|
||||||
|
return tech.haveGunCheck("harpoon") && b.returnGunAmmo('harpoon') > 1
|
||||||
|
},
|
||||||
|
requires: "harpoon",
|
||||||
|
effect() {
|
||||||
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
|
if (b.guns[i].name === "harpoon") {
|
||||||
|
b.guns[i].ammo -= tech.isRailGun ? 10 : 2
|
||||||
|
if (b.guns[i].ammo < 0) b.guns[i].ammo = 0
|
||||||
|
simulation.updateGunHUD();
|
||||||
|
tech.extraHarpoons++;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
if (tech.extraHarpoons) {
|
||||||
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
|
if (b.guns[i].name === "harpoon") {
|
||||||
|
b.guns[i].ammo += Math.ceil(b.guns[i].ammoPack) * 2 * tech.extraHarpoons
|
||||||
|
simulation.updateGunHUD();
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tech.extraHarpoons = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "UHMWPE",
|
||||||
description: "increase the <strong>length</strong> of your <strong>harpoon</strong>'s <strong>rope</strong><br>by <strong>1%</strong> per harpoon <strong class='color-ammo'>ammo</strong>",
|
description: "increase the <strong>length</strong> of your <strong>harpoon</strong>'s <strong>rope</strong><br>by <strong>1%</strong> per harpoon <strong class='color-ammo'>ammo</strong>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
@@ -5633,7 +5670,7 @@ const tech = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "toggling harpoon",
|
name: "induction furnace",
|
||||||
description: "increase the <strong class='color-d'>damage</strong> of your next <strong>harpoon</strong><br>by <strong>600%</strong> after using it to collect a <strong>power up</strong>",
|
description: "increase the <strong class='color-d'>damage</strong> of your next <strong>harpoon</strong><br>by <strong>600%</strong> after using it to collect a <strong>power up</strong>",
|
||||||
isGunTech: true,
|
isGunTech: true,
|
||||||
maxCount: 1,
|
maxCount: 1,
|
||||||
@@ -5652,25 +5689,6 @@ const tech = {
|
|||||||
tech.harpoonDensity = 0.006
|
tech.harpoonDensity = 0.006
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "reticulum",
|
|
||||||
description: "fire <strong>+1</strong> <strong>harpoon</strong>, but <strong class='color-f'>energy</strong> cost<br>to <strong>retract</strong> also increases",
|
|
||||||
isGunTech: true,
|
|
||||||
maxCount: 9,
|
|
||||||
count: 0,
|
|
||||||
frequency: 2,
|
|
||||||
frequencyDefault: 2,
|
|
||||||
allowed() {
|
|
||||||
return tech.haveGunCheck("harpoon") && !tech.isRailGun
|
|
||||||
},
|
|
||||||
requires: "harpoon",
|
|
||||||
effect() {
|
|
||||||
tech.extraHarpoons++;
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
tech.extraHarpoons = 0;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "optical amplifier",
|
name: "optical amplifier",
|
||||||
description: "gain <strong>3</strong> random <strong class='color-laser'>laser</strong> <strong class='color-g'>gun</strong><strong class='color-m'>tech</strong><br><strong class='color-laser'>laser</strong> only turns <strong>off</strong> if you have no <strong class='color-f'>energy</strong>",
|
description: "gain <strong>3</strong> random <strong class='color-laser'>laser</strong> <strong class='color-g'>gun</strong><strong class='color-m'>tech</strong><br><strong class='color-laser'>laser</strong> only turns <strong>off</strong> if you have no <strong class='color-f'>energy</strong>",
|
||||||
@@ -7396,6 +7414,40 @@ const tech = {
|
|||||||
},
|
},
|
||||||
remove() {}
|
remove() {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Higgs phase transition",
|
||||||
|
description: "instantly spawn 3 <strong class='color-m'>tech</strong>, but add a chance to<br>remove everything with a 5 minute <strong>half-life</strong>",
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 0,
|
||||||
|
frequencyDefault: 0,
|
||||||
|
isJunk: true,
|
||||||
|
isNonRefundable: true,
|
||||||
|
allowed() {
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
requires: "",
|
||||||
|
effect() {
|
||||||
|
powerUps.spawn(m.pos.x, m.pos.y, "tech");
|
||||||
|
powerUps.spawn(m.pos.x + 20, m.pos.y, "tech");
|
||||||
|
powerUps.spawn(m.pos.x + 40, m.pos.y, "tech");
|
||||||
|
|
||||||
|
function loop() {
|
||||||
|
// (1-X)^cycles = chance to be removed //Math.random() < 0.000019 10 min
|
||||||
|
if (!simulation.paused && m.alive) {
|
||||||
|
if (Math.random() < 0.000038) {
|
||||||
|
// m.death();
|
||||||
|
simulation.clearMap();
|
||||||
|
simulation.draw.setPaths();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
requestAnimationFrame(loop);
|
||||||
|
}
|
||||||
|
requestAnimationFrame(loop);
|
||||||
|
},
|
||||||
|
remove() {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "brainstorm",
|
name: "brainstorm",
|
||||||
description: "the <strong class='color-m'>tech</strong> choice menu <strong>randomizes</strong><br>every <strong>0.5</strong> seconds for <strong>10</strong> seconds",
|
description: "the <strong class='color-m'>tech</strong> choice menu <strong>randomizes</strong><br>every <strong>0.5</strong> seconds for <strong>10</strong> seconds",
|
||||||
|
|||||||
45
todo.txt
45
todo.txt
@@ -1,39 +1,34 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
tech railgun - harpoon charge fires and no longer retracts, get 8x ammo from power ups
|
filament renamed UHMWPE
|
||||||
railgun has auto-targeting, like harpoon
|
unaaq renamed Bessemer process
|
||||||
the aiming graphic is gone
|
toggling harpoon renamed induction furnace
|
||||||
disables filament, reticulum, toggling
|
half-wave rectifier renamed alternator
|
||||||
unlocks capacitor bank
|
reticulum renamed smelting
|
||||||
|
smelting costs 2 ammo packs per upgrade
|
||||||
|
railgun works with smelting
|
||||||
|
|
||||||
mobs do 2% less harm to player
|
JUNK tech: Higgs phase transition - spawn 3 tech, there is a chance to remove everything with a 5 minute halflife
|
||||||
player does 0.5% more damage per level
|
|
||||||
Zeno's paradox removes 1/10 -> 1/12 -> 1/14 (7%) health every 5 seconds
|
|
||||||
drone gun gets 10% more ammo
|
|
||||||
|
|
||||||
harpoon damage reduced by 15%
|
|
||||||
random bots have a 100% -> 66% chance to match your upgraded bot type
|
|
||||||
phonon has 1/8 -> 1/9 less ammo than matter wave
|
|
||||||
Penrose process gain 63 -> 53 energy when wormhole eats blocks
|
|
||||||
transdimensional spores makes 20% fewer spores when wormhole eats blocks
|
|
||||||
|
|
||||||
bugfixes
|
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
make a variety of harpoon shapes?
|
||||||
|
just a different railgun shape?
|
||||||
|
|
||||||
|
tech - Plasma railgun
|
||||||
|
like foam, or phonon?
|
||||||
|
|
||||||
|
pause time like invariant for other things...
|
||||||
|
throwing blocks
|
||||||
|
charging railgun
|
||||||
|
charging anything?
|
||||||
|
|
||||||
tech: when this tech is ejected spawn one of every power up type
|
tech: when this tech is ejected spawn one of every power up type
|
||||||
JUNK tech?
|
JUNK tech?
|
||||||
|
|
||||||
railgun feels like a downgrade from harpoon
|
|
||||||
buff railgun
|
|
||||||
increase harpoon size
|
|
||||||
nerf harpoon
|
|
||||||
shrink crouch mode harpoon size
|
|
||||||
|
|
||||||
|
|
||||||
try to get grappling hook working again
|
try to get grappling hook working again
|
||||||
|
|
||||||
bug - does any url sharing work?
|
bug - url sharing still broken sometimes
|
||||||
|
|
||||||
setting to remove UI, except health bar
|
setting to remove UI, except health bar
|
||||||
except active gun? to see ammo
|
except active gun? to see ammo
|
||||||
|
|||||||
Reference in New Issue
Block a user