downpour and buttonbutton community maps
community map downpour by DesBoot community map buttonbutton by ||Destabilized E|| rounded borders on no-image mode selection cards foam gun has some recoil new superball gun image bug fixes
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 26 KiB |
@@ -106,6 +106,7 @@
|
|||||||
<option value="staircase">
|
<option value="staircase">
|
||||||
<option value="perplex">
|
<option value="perplex">
|
||||||
<option value="n-gon">
|
<option value="n-gon">
|
||||||
|
<option value="downpour">
|
||||||
<option value="buttonbutton">
|
<option value="buttonbutton">
|
||||||
<option value="vats">
|
<option value="vats">
|
||||||
<option value="yingYang">
|
<option value="yingYang">
|
||||||
@@ -132,6 +133,8 @@
|
|||||||
stronghold
|
stronghold
|
||||||
commandeer
|
commandeer
|
||||||
stereoMadness
|
stereoMadness
|
||||||
|
buttonbutton
|
||||||
|
downpour
|
||||||
house
|
house
|
||||||
dripp
|
dripp
|
||||||
crossfire
|
crossfire
|
||||||
|
|||||||
10
js/bullet.js
10
js/bullet.js
@@ -7143,6 +7143,7 @@ const b = {
|
|||||||
have: false,
|
have: false,
|
||||||
charge: 0,
|
charge: 0,
|
||||||
isDischarge: false,
|
isDischarge: false,
|
||||||
|
knockBack: 0.001,
|
||||||
chooseFireMethod() {
|
chooseFireMethod() {
|
||||||
if (tech.isFoamPressure) {
|
if (tech.isFoamPressure) {
|
||||||
this.do = this.doCharges
|
this.do = this.doCharges
|
||||||
@@ -7170,6 +7171,9 @@ const b = {
|
|||||||
y: m.pos.y + 30 * Math.sin(m.angle)
|
y: m.pos.y + 30 * Math.sin(m.angle)
|
||||||
}
|
}
|
||||||
b.foam(position, Vector.rotate(velocity, spread), radius)
|
b.foam(position, Vector.rotate(velocity, spread), radius)
|
||||||
|
//knock back player
|
||||||
|
player.force.x -= this.knockBack * velocity.x
|
||||||
|
player.force.y -= this.knockBack * velocity.y
|
||||||
m.fireCDcycle = m.cycle + Math.floor(1.5 * b.fireCDscale);
|
m.fireCDcycle = m.cycle + Math.floor(1.5 * b.fireCDscale);
|
||||||
},
|
},
|
||||||
doCharges() {
|
doCharges() {
|
||||||
@@ -7196,6 +7200,9 @@ const b = {
|
|||||||
y: m.pos.y + 30 * Math.sin(m.angle)
|
y: m.pos.y + 30 * Math.sin(m.angle)
|
||||||
}
|
}
|
||||||
b.foam(position, Vector.rotate(velocity, spread), radius)
|
b.foam(position, Vector.rotate(velocity, spread), radius)
|
||||||
|
//knock back player
|
||||||
|
player.force.x -= this.knockBack * velocity.x
|
||||||
|
player.force.y -= this.knockBack * velocity.y
|
||||||
this.charge -= 0.75
|
this.charge -= 0.75
|
||||||
m.fireCDcycle = m.cycle + 2; //disable firing and adding more charge until empty
|
m.fireCDcycle = m.cycle + 2; //disable firing and adding more charge until empty
|
||||||
} else if (!input.fire) {
|
} else if (!input.fire) {
|
||||||
@@ -7241,6 +7248,9 @@ const b = {
|
|||||||
// } else {
|
// } else {
|
||||||
// }
|
// }
|
||||||
b.foam(position, Vector.rotate(velocity, spread), radius)
|
b.foam(position, Vector.rotate(velocity, spread), radius)
|
||||||
|
//knock back player
|
||||||
|
player.force.x -= this.knockBack * velocity.x
|
||||||
|
player.force.y -= this.knockBack * velocity.y
|
||||||
m.fireCDcycle = m.cycle + Math.floor(1.5 * b.fireCDscale);
|
m.fireCDcycle = m.cycle + Math.floor(1.5 * b.fireCDscale);
|
||||||
this.charge += 1 + tech.isCapacitor
|
this.charge += 1 + tech.isCapacitor
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ function collisionChecks(event) {
|
|||||||
!mob[k].isSlowed && !mob[k].isStunned
|
!mob[k].isSlowed && !mob[k].isStunned
|
||||||
) {
|
) {
|
||||||
let dmg = Math.min(Math.max(0.025 * Math.sqrt(mob[k].mass), 0.05), 0.3) * simulation.dmgScale; //player damage is capped at 0.3*dmgScale of 1.0
|
let dmg = Math.min(Math.max(0.025 * Math.sqrt(mob[k].mass), 0.05), 0.3) * simulation.dmgScale; //player damage is capped at 0.3*dmgScale of 1.0
|
||||||
if (m.isCloak) dmg *= 0.75
|
if (m.isCloak) dmg *= 0.5
|
||||||
mob[k].foundPlayer();
|
mob[k].foundPlayer();
|
||||||
if (tech.isRewindAvoidDeath && (m.energy + 0.05) > Math.min(0.95, m.maxEnergy) && dmg > 0.01) { //CPT reversal runs in m.damage, but it stops the rest of the collision code here too
|
if (tech.isRewindAvoidDeath && (m.energy + 0.05) > Math.min(0.95, m.maxEnergy) && dmg > 0.01) { //CPT reversal runs in m.damage, but it stops the rest of the collision code here too
|
||||||
m.damage(dmg);
|
m.damage(dmg);
|
||||||
@@ -336,15 +336,15 @@ function collisionChecks(event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//determine if player is on the ground
|
//determine if player is on the ground
|
||||||
Events.on(engine, "collisionStart", function(event) {
|
Events.on(engine, "collisionStart", function (event) {
|
||||||
playerOnGroundCheck(event);
|
playerOnGroundCheck(event);
|
||||||
// playerHeadCheck(event);
|
// playerHeadCheck(event);
|
||||||
collisionChecks(event);
|
collisionChecks(event);
|
||||||
});
|
});
|
||||||
Events.on(engine, "collisionActive", function(event) {
|
Events.on(engine, "collisionActive", function (event) {
|
||||||
playerOnGroundCheck(event);
|
playerOnGroundCheck(event);
|
||||||
// playerHeadCheck(event);
|
// playerHeadCheck(event);
|
||||||
});
|
});
|
||||||
Events.on(engine, "collisionEnd", function(event) {
|
Events.on(engine, "collisionEnd", function (event) {
|
||||||
playerOffGroundCheck(event);
|
playerOffGroundCheck(event);
|
||||||
});
|
});
|
||||||
13
js/level.js
13
js/level.js
@@ -10,7 +10,7 @@ const level = {
|
|||||||
// playableLevels: ["pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion"],
|
// playableLevels: ["pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion", "pavilion"],
|
||||||
//see level.populateLevels: (intro, ... , reservoir or factory, reactor, ... , gauntlet, final) added later
|
//see level.populateLevels: (intro, ... , reservoir or factory, reactor, ... , gauntlet, final) added later
|
||||||
playableLevels: ["labs", "rooftops", "skyscrapers", "warehouse", "highrise", "office", "aerie", "satellite", "sewers", "testChamber", "pavilion", "lock"],
|
playableLevels: ["labs", "rooftops", "skyscrapers", "warehouse", "highrise", "office", "aerie", "satellite", "sewers", "testChamber", "pavilion", "lock"],
|
||||||
communityLevels: ["stronghold", "basement", "crossfire", "vats", "run", "n-gon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton"],
|
communityLevels: ["stronghold", "basement", "crossfire", "vats", "run", "n-gon", "house", "perplex", "coliseum", "tunnel", "islands", "temple", "dripp", "biohazard", "stereoMadness", "yingYang", "staircase", "fortress", "commandeer", "clock", "buttonbutton", "downpour"],
|
||||||
trainingLevels: ["walk", "crouch", "jump", "hold", "throw", "throwAt", "deflect", "heal", "fire", "nailGun", "shotGun", "superBall", "matterWave", "missile", "stack", "mine", "grenades", "harpoon"],
|
trainingLevels: ["walk", "crouch", "jump", "hold", "throw", "throwAt", "deflect", "heal", "fire", "nailGun", "shotGun", "superBall", "matterWave", "missile", "stack", "mine", "grenades", "harpoon"],
|
||||||
levels: [],
|
levels: [],
|
||||||
start() {
|
start() {
|
||||||
@@ -27,14 +27,14 @@ const level = {
|
|||||||
// m.immuneCycle = Infinity //you can't take damage
|
// m.immuneCycle = Infinity //you can't take damage
|
||||||
// tech.tech[297].frequency = 100
|
// tech.tech[297].frequency = 100
|
||||||
// m.couplingChange(5)
|
// m.couplingChange(5)
|
||||||
// m.setField("wormhole") //1 standing wave 2 perfect diamagnetism 3 negative mass 4 molecular assembler 5 plasma torch 6 time dilation 7 metamaterial cloaking 8 pilot wave 9 wormhole
|
// m.setField("metamaterial cloaking") //1 standing wave 2 perfect diamagnetism 3 negative mass 4 molecular assembler 5 plasma torch 6 time dilation 7 metamaterial cloaking 8 pilot wave 9 wormhole
|
||||||
// simulation.molecularMode = 2
|
// simulation.molecularMode = 2
|
||||||
// m.damage(0.1);
|
// m.damage(0.1);
|
||||||
// b.giveGuns("nail gun") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser
|
// b.giveGuns("nail gun") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser
|
||||||
// b.giveGuns("wave") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser
|
// b.giveGuns("foam") //0 nail gun 1 shotgun 2 super balls 3 wave 4 missiles 5 grenades 6 spores 7 drones 8 foam 9 harpoon 10 mine 11 laser
|
||||||
// b.guns[3].ammo = 100000000
|
// b.guns[3].ammo = 100000000
|
||||||
// tech.giveTech("recycling")
|
// tech.giveTech("recycling")
|
||||||
// tech.giveTech("dead reckoning")
|
// tech.giveTech("pressure vessel")
|
||||||
// for (let i = 0; i < 1; ++i) tech.giveTech("pseudoscience")
|
// for (let i = 0; i < 1; ++i) tech.giveTech("pseudoscience")
|
||||||
// for (let i = 0; i < 1; ++i) tech.giveTech("options exchange")
|
// for (let i = 0; i < 1; ++i) tech.giveTech("options exchange")
|
||||||
// for (let i = 0; i < 1; i++) tech.giveTech("laser-bot")
|
// for (let i = 0; i < 1; i++) tech.giveTech("laser-bot")
|
||||||
@@ -42,7 +42,7 @@ const level = {
|
|||||||
// for (let i = 0; i < 3; i++) powerUps.directSpawn(450, -50, "tech");
|
// for (let i = 0; i < 3; i++) powerUps.directSpawn(450, -50, "tech");
|
||||||
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "boost");
|
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "boost");
|
||||||
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "coupling");
|
// for (let i = 0; i < 10; i++) powerUps.directSpawn(1750, -500, "coupling");
|
||||||
// level.testing();
|
// level.downpour();
|
||||||
// spawn.nodeGroup(3200, -300, "sniper")
|
// spawn.nodeGroup(3200, -300, "sniper")
|
||||||
// spawn.nodeGroup(2200, -300, "sniper")
|
// spawn.nodeGroup(2200, -300, "sniper")
|
||||||
// spawn.nodeGroup(2200, -300, "sniper")
|
// spawn.nodeGroup(2200, -300, "sniper")
|
||||||
@@ -18166,6 +18166,7 @@ const level = {
|
|||||||
},
|
},
|
||||||
downpour() {
|
downpour() {
|
||||||
simulation.makeTextLog(`<strong>Downpour</strong> by <span class='color-var'>DesBoot</span>`);
|
simulation.makeTextLog(`<strong>Downpour</strong> by <span class='color-var'>DesBoot</span>`);
|
||||||
|
simulation.makeTextLog(`<span class='color-var'>level</span>.onLevel = "Downpour"`);
|
||||||
let mobsspawned = 0
|
let mobsspawned = 0
|
||||||
const laser = level.hazard(7492, -2612, 10, 500, 0.3) //laserintro
|
const laser = level.hazard(7492, -2612, 10, 500, 0.3) //laserintro
|
||||||
|
|
||||||
@@ -18205,7 +18206,7 @@ const level = {
|
|||||||
do {
|
do {
|
||||||
|
|
||||||
ctx.beginPath()
|
ctx.beginPath()
|
||||||
// ctx.fillStyle = "rgba(30,150,117,255)"
|
ctx.fillStyle = "rgba(30,150,117,255)"
|
||||||
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
||||||
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
||||||
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
ctx.rect(Math.random() * 4500 - 2000, -5000, Math.random() * 3 + 2.5, 5000)
|
||||||
|
|||||||
@@ -3841,7 +3841,7 @@ const m = {
|
|||||||
//not shooting (or using field) enable cloak
|
//not shooting (or using field) enable cloak
|
||||||
if (m.energy < 0.05 && m.fireCDcycle < m.cycle && !input.fire) m.fireCDcycle = m.cycle
|
if (m.energy < 0.05 && m.fireCDcycle < m.cycle && !input.fire) m.fireCDcycle = m.cycle
|
||||||
if (m.fireCDcycle + 30 < m.cycle && !input.fire) { //automatically cloak if not firing
|
if (m.fireCDcycle + 30 < m.cycle && !input.fire) { //automatically cloak if not firing
|
||||||
const drain = 0.03
|
const drain = 0.02
|
||||||
if (!m.isCloak && m.energy > drain + 0.03) {
|
if (!m.isCloak && m.energy > drain + 0.03) {
|
||||||
m.energy -= drain
|
m.energy -= drain
|
||||||
m.isCloak = true //enter cloak
|
m.isCloak = true //enter cloak
|
||||||
@@ -3878,7 +3878,7 @@ const m = {
|
|||||||
if (tech.isCloakStun) { //stun nearby mobs after exiting cloak
|
if (tech.isCloakStun) { //stun nearby mobs after exiting cloak
|
||||||
let isMobsAround = false
|
let isMobsAround = false
|
||||||
const stunRange = m.fieldDrawRadius * 1.5
|
const stunRange = m.fieldDrawRadius * 1.5
|
||||||
const drain = 0.15
|
const drain = 0.14
|
||||||
if (m.energy > drain) {
|
if (m.energy > drain) {
|
||||||
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, m.pos)) < stunRange && Matter.Query.ray(map, mob[i].position, m.pos).length === 0 && !mob[i].isBadTarget) {
|
if (Vector.magnitude(Vector.sub(mob[i].position, m.pos)) < stunRange && Matter.Query.ray(map, mob[i].position, m.pos).length === 0 && !mob[i].isBadTarget) {
|
||||||
@@ -3900,7 +3900,7 @@ const m = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m.isCloak) {
|
if (m.isCloak) {
|
||||||
m.fieldRange = m.fieldRange * 0.85 + 115
|
m.fieldRange = m.fieldRange * 0.85 + 130
|
||||||
m.fieldDrawRadius = m.fieldRange * 1.1 //* 0.88 //* Math.min(1, 0.3 + 0.5 * Math.min(1, energy * energy));
|
m.fieldDrawRadius = m.fieldRange * 1.1 //* 0.88 //* Math.min(1, 0.3 + 0.5 * Math.min(1, energy * energy));
|
||||||
m.drawCloak()
|
m.drawCloak()
|
||||||
} else if (m.fieldRange < 4000) {
|
} else if (m.fieldRange < 4000) {
|
||||||
|
|||||||
26
js/tech.js
26
js/tech.js
@@ -5799,7 +5799,7 @@ const tech = {
|
|||||||
frequency: 2,
|
frequency: 2,
|
||||||
frequencyDefault: 2,
|
frequencyDefault: 2,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("mine") && !tech.isFoamMine
|
return tech.haveGunCheck("mine")
|
||||||
},
|
},
|
||||||
requires: "mines, not elephants toothpaste",
|
requires: "mines, not elephants toothpaste",
|
||||||
effect() {
|
effect() {
|
||||||
@@ -6520,6 +6520,27 @@ const tech = {
|
|||||||
b.guns[8].chooseFireMethod()
|
b.guns[8].chooseFireMethod()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// name: "cavitation",
|
||||||
|
// description: "increase <strong>foam</strong> <strong class='color-g'>gun</strong> <strong>recoil</strong> by <strong>300%</strong><br>",
|
||||||
|
// isGunTech: true,
|
||||||
|
// maxCount: 1,
|
||||||
|
// count: 0,
|
||||||
|
// frequency: 2,
|
||||||
|
// frequencyDefault: 2,
|
||||||
|
// allowed() {
|
||||||
|
// return tech.haveGunCheck("foam")
|
||||||
|
// },
|
||||||
|
// requires: "foam",
|
||||||
|
// effect() {
|
||||||
|
// tech.isFoamCavitation = true;
|
||||||
|
// b.guns[8].knockBack = 0.003
|
||||||
|
// },
|
||||||
|
// remove() {
|
||||||
|
// tech.isFoamCavitation = false;
|
||||||
|
// b.guns[8].knockBack = 0.001
|
||||||
|
// }
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
name: "capacitor bank",
|
name: "capacitor bank",
|
||||||
// description: "<strong>charge</strong> effects build up almost <strong>instantly</strong><br><em style = 'font-size:97%;'>throwing <strong class='color-block'>blocks</strong>, foam, railgun, pulse, tokamak</em>",
|
// description: "<strong>charge</strong> effects build up almost <strong>instantly</strong><br><em style = 'font-size:97%;'>throwing <strong class='color-block'>blocks</strong>, foam, railgun, pulse, tokamak</em>",
|
||||||
@@ -11413,5 +11434,6 @@ const tech = {
|
|||||||
hardLanding: null,
|
hardLanding: null,
|
||||||
isNoGroundDamage: null,
|
isNoGroundDamage: null,
|
||||||
isSuperBounce: null,
|
isSuperBounce: null,
|
||||||
isDivisor: null
|
isDivisor: null,
|
||||||
|
isFoamCavitation: null,
|
||||||
}
|
}
|
||||||
10
style.css
10
style.css
@@ -184,7 +184,7 @@ summary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.choose-grid-no-images {
|
.choose-grid-no-images {
|
||||||
border-radius: 12px;
|
border-radius: 8px;
|
||||||
border: 10px solid #444;
|
border: 10px solid #444;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
background-color: #444;
|
background-color: #444;
|
||||||
@@ -210,6 +210,7 @@ summary {
|
|||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#choose-grid::-webkit-scrollbar {
|
#choose-grid::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -483,6 +484,13 @@ summary {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* .card-text */
|
||||||
|
.choose-grid-no-images .card-text,
|
||||||
|
.choose-grid-no-images .research-card,
|
||||||
|
.choose-grid-no-images .cancel-card {
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
/* keeps 4 columns at 1440px */
|
/* keeps 4 columns at 1440px */
|
||||||
/* @media (1500px <= width < 1950px) {
|
/* @media (1500px <= width < 1950px) {
|
||||||
.experiment-grid-module, .choose-grid-module, .pause-grid-module {
|
.experiment-grid-module, .choose-grid-module, .pause-grid-module {
|
||||||
|
|||||||
20
todo.txt
20
todo.txt
@@ -1,24 +1,24 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
mob damage difficulty setting is lower
|
community map downpour by DesBoot
|
||||||
recycling now flashes green when it heals
|
community map buttonbutton by ||Destabilized E||
|
||||||
|
|
||||||
merged cancel and research bars for single column selection
|
rounded borders on no-image mode selection cards
|
||||||
added some dark grey borders for no images selection mode
|
foam gun has some recoil
|
||||||
|
new superball gun image
|
||||||
new images with midJourney V5
|
|
||||||
spores, pilot wave, standing wave
|
|
||||||
|
|
||||||
bug fixes
|
bug fixes
|
||||||
|
|
||||||
*********************************************************** TODO *****************************************************
|
*********************************************************** TODO *****************************************************
|
||||||
|
|
||||||
|
foam gun tech cavitation - a knock back effect, and 1 out of 5 foam bullets are larger and faster?
|
||||||
|
|
||||||
|
Tech: Turbine - Energy generation is proportional to your speed up to +X% energy generation at 40 speed
|
||||||
|
Tech: "Electric Reactive Armor": Defeanse increases by 2% for each 1 energy generation you have
|
||||||
|
|
||||||
wormhole tech - teleport away mobs with mass below 3 when they get too near the player
|
wormhole tech - teleport away mobs with mass below 3 when they get too near the player
|
||||||
short CD, small energy cost, only mobs below a mass
|
short CD, small energy cost, only mobs below a mass
|
||||||
|
|
||||||
foam gun could have a knock back effect
|
|
||||||
maybe with pressure vessel?
|
|
||||||
|
|
||||||
extend brainstorming animation timers to fps cap?
|
extend brainstorming animation timers to fps cap?
|
||||||
will it be smoother or choppier?
|
will it be smoother or choppier?
|
||||||
anything else needs to hit limited fps on a high fps monitor?
|
anything else needs to hit limited fps on a high fps monitor?
|
||||||
|
|||||||
Reference in New Issue
Block a user