super duper
tech: super duper - fire +0-2 extra super balls super balls no longer part of MIRV bug fix for plasma extruder interaction with doors that collide with power ups mantisBoss moves slower, can be damaged for longer time, has less total life, has a smaller punch range
This commit is contained in:
@@ -1789,8 +1789,8 @@ const b = {
|
|||||||
collisionFilter: {
|
collisionFilter: {
|
||||||
// category: 0,
|
// category: 0,
|
||||||
// mask: 0, //cat.mob | cat.mobBullet | cat.mobShield
|
// mask: 0, //cat.mob | cat.mobBullet | cat.mobShield
|
||||||
category: cat.bullet,
|
category: 0, //cat.bullet,
|
||||||
mask: cat.map, //cat.mob | cat.mobBullet | cat.mobShield
|
mask: 0, //cat.map, //cat.mob | cat.mobBullet | cat.mobShield
|
||||||
},
|
},
|
||||||
beforeDmg() {},
|
beforeDmg() {},
|
||||||
onEnd() {},
|
onEnd() {},
|
||||||
@@ -4879,7 +4879,7 @@ const b = {
|
|||||||
const SPEED = input.down ? 43 : 36
|
const SPEED = input.down ? 43 : 36
|
||||||
m.fireCDcycle = m.cycle + Math.floor((input.down ? 23 : 15) * b.fireCDscale); // cool down
|
m.fireCDcycle = m.cycle + Math.floor((input.down ? 23 : 15) * b.fireCDscale); // cool down
|
||||||
const SPREAD = input.down ? 0.08 : 0.13
|
const SPREAD = input.down ? 0.08 : 0.13
|
||||||
const num = tech.missileCount + 2
|
const num = 3 + Math.floor(tech.extraSuperBalls * Math.random())
|
||||||
const radius = 11 * tech.bulletSize
|
const radius = 11 * tech.bulletSize
|
||||||
let dir = m.angle - SPREAD * (num - 1) / 2;
|
let dir = m.angle - SPREAD * (num - 1) / 2;
|
||||||
for (let i = 0; i < num; i++) {
|
for (let i = 0; i < num; i++) {
|
||||||
@@ -4912,7 +4912,7 @@ const b = {
|
|||||||
const dir = m.angle
|
const dir = m.angle
|
||||||
const x = m.pos.x
|
const x = m.pos.x
|
||||||
const y = m.pos.y
|
const y = m.pos.y
|
||||||
const num = tech.missileCount + 2
|
const num = 3 + Math.floor(tech.extraSuperBalls * Math.random())
|
||||||
const delay = Math.floor((input.down ? 18 : 12) * b.fireCDscale)
|
const delay = Math.floor((input.down ? 18 : 12) * b.fireCDscale)
|
||||||
m.fireCDcycle = m.cycle + delay; // cool down
|
m.fireCDcycle = m.cycle + delay; // cool down
|
||||||
|
|
||||||
|
|||||||
15
js/level.js
15
js/level.js
@@ -18,10 +18,10 @@ const level = {
|
|||||||
// localSettings.levelsClearedLastGame = 10
|
// localSettings.levelsClearedLastGame = 10
|
||||||
// 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("pilot wave")
|
// m.setField("plasma torch")
|
||||||
// b.giveGuns("harpoon")
|
// b.giveGuns("harpoon")
|
||||||
tech.giveTech("relay switch")
|
// tech.giveTech("extruder")
|
||||||
tech.giveTech("thermocouple")
|
// tech.giveTech("thermocouple")
|
||||||
// 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 < 9; i++) tech.giveTech("annelids")
|
// for (let i = 0; i < 9; i++) tech.giveTech("annelids")
|
||||||
// tech.giveTech("tinsellated flagella")
|
// tech.giveTech("tinsellated flagella")
|
||||||
@@ -30,7 +30,7 @@ const level = {
|
|||||||
// for (let i = 0; i < 1; i++) tech.giveTech("reticulum")
|
// for (let i = 0; i < 1; i++) tech.giveTech("reticulum")
|
||||||
// for (let i = 0; i < 2; i++) tech.giveTech("laser-bot")
|
// for (let i = 0; i < 2; i++) tech.giveTech("laser-bot")
|
||||||
// tech.tech[297].frequency = 100
|
// tech.tech[297].frequency = 100
|
||||||
// level.crouch();
|
// level.deflect();
|
||||||
|
|
||||||
if (simulation.isTraining) { level.walk(); } else { level.intro(); }
|
if (simulation.isTraining) { level.walk(); } else { level.intro(); }
|
||||||
// level.testing(); //not in rotation, used for testing
|
// level.testing(); //not in rotation, used for testing
|
||||||
@@ -671,6 +671,9 @@ const level = {
|
|||||||
//exit room glow
|
//exit room glow
|
||||||
ctx.fillStyle = "rgba(0,255,255,0.05)"
|
ctx.fillStyle = "rgba(0,255,255,0.05)"
|
||||||
ctx.fillRect(1600, -400, 400, 400)
|
ctx.fillRect(1600, -400, 400, 400)
|
||||||
|
//center falling bullets
|
||||||
|
ctx.fillStyle = "rgba(255,0,255,0.013)" //pink?
|
||||||
|
ctx.fillRect(650, -2800, 600, 2800)
|
||||||
};
|
};
|
||||||
|
|
||||||
spawn.mapRect(-2750, -2800, 2600, 4600); //left wall
|
spawn.mapRect(-2750, -2800, 2600, 4600); //left wall
|
||||||
@@ -3491,9 +3494,9 @@ const level = {
|
|||||||
// spawn.launcherBoss(3200, -500)
|
// spawn.launcherBoss(3200, -500)
|
||||||
// spawn.blockBoss(1700, -500)
|
// spawn.blockBoss(1700, -500)
|
||||||
// spawn.blinkBoss(3200, -500)
|
// spawn.blinkBoss(3200, -500)
|
||||||
// spawn.mantisBoss(1700, -500)
|
spawn.mantisBoss(1700, -500)
|
||||||
// spawn.tetherBoss(1700, -500) //go to actual level?
|
// spawn.tetherBoss(1700, -500) //go to actual level?
|
||||||
spawn.revolutionBoss(1900, -500)
|
// spawn.revolutionBoss(1900, -500)
|
||||||
// spawn.bomberBoss(1400, -500)
|
// spawn.bomberBoss(1400, -500)
|
||||||
// spawn.cellBossCulture(1600, -500)
|
// spawn.cellBossCulture(1600, -500)
|
||||||
// spawn.shieldingBoss(1700, -500)
|
// spawn.shieldingBoss(1700, -500)
|
||||||
|
|||||||
19
js/spawn.js
19
js/spawn.js
@@ -1911,14 +1911,14 @@ const spawn = {
|
|||||||
mobs.spawn(x, y, 5, radius, "#6ba");
|
mobs.spawn(x, y, 5, radius, "#6ba");
|
||||||
let me = mob[mob.length - 1];
|
let me = mob[mob.length - 1];
|
||||||
me.babyList = [] //list of mobs that are apart of this boss
|
me.babyList = [] //list of mobs that are apart of this boss
|
||||||
Matter.Body.setDensity(me, 0.002); //extra dense //normal is 0.001 //makes effective life much larger and damage on collision
|
Matter.Body.setDensity(me, 0.001); //extra dense //normal is 0.001 //makes effective life much larger and damage on collision
|
||||||
me.damageReduction = 0.1 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) //normal is 1, most bosses have 0.25
|
me.damageReduction = 0.15 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1) //normal is 1, most bosses have 0.25
|
||||||
me.isBoss = true;
|
me.isBoss = true;
|
||||||
me.friction = 0;
|
me.friction = 0;
|
||||||
me.frictionAir = 0.0067;
|
me.frictionAir = 0.0067;
|
||||||
me.g = 0.0002; //required if using this.gravity
|
me.g = 0.0002; //required if using this.gravity
|
||||||
me.seePlayerFreq = 300;
|
me.seePlayerFreq = 300;
|
||||||
const springStiffness = 0.0004; //simulation.difficulty
|
const springStiffness = 0.0001; //simulation.difficulty
|
||||||
const springDampening = 0.005;
|
const springDampening = 0.005;
|
||||||
|
|
||||||
me.springTarget = {
|
me.springTarget = {
|
||||||
@@ -2006,7 +2006,7 @@ const spawn = {
|
|||||||
this.cons2.length = 100 + 1.5 * this.radius;
|
this.cons2.length = 100 + 1.5 * this.radius;
|
||||||
|
|
||||||
this.isInvulnerable = false
|
this.isInvulnerable = false
|
||||||
this.invulnerabilityCountDown = 40 + Math.max(0, 70 - simulation.difficulty * 2)
|
this.invulnerabilityCountDown = 45 + Math.max(0, 70 - simulation.difficulty)
|
||||||
this.damageReduction = this.startingDamageReduction
|
this.damageReduction = this.startingDamageReduction
|
||||||
for (let i = 0; i < this.babyList.length; i++) {
|
for (let i = 0; i < this.babyList.length; i++) {
|
||||||
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
||||||
@@ -2020,7 +2020,7 @@ const spawn = {
|
|||||||
this.cons2.length = -200;
|
this.cons2.length = -200;
|
||||||
|
|
||||||
this.isInvulnerable = false
|
this.isInvulnerable = false
|
||||||
this.invulnerabilityCountDown = 40 + Math.max(0, 70 - simulation.difficulty * 2)
|
this.invulnerabilityCountDown = 45 + Math.max(0, 70 - simulation.difficulty)
|
||||||
this.damageReduction = this.startingDamageReduction
|
this.damageReduction = this.startingDamageReduction
|
||||||
for (let i = 0; i < this.babyList.length; i++) {
|
for (let i = 0; i < this.babyList.length; i++) {
|
||||||
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
if (this.babyList[i].alive) this.babyList[i].damageReduction = this.startingDamageReduction
|
||||||
@@ -2100,6 +2100,7 @@ const spawn = {
|
|||||||
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
powerUps.spawnBossPowerUp(this.position.x, this.position.y)
|
||||||
for (let i = 0; i < this.babyList.length; i++) {
|
for (let i = 0; i < this.babyList.length; i++) {
|
||||||
if (this.babyList[i].alive) {
|
if (this.babyList[i].alive) {
|
||||||
|
this.babyList[i].collisionFilter.mask = cat.map | cat.bullet | cat.player
|
||||||
this.babyList[i].isInvulnerable = false
|
this.babyList[i].isInvulnerable = false
|
||||||
this.babyList[i].damageReduction = this.startingDamageReduction
|
this.babyList[i].damageReduction = this.startingDamageReduction
|
||||||
this.babyList[i].collisionFilter.mask = cat.bullet | cat.player | cat.map | cat.body
|
this.babyList[i].collisionFilter.mask = cat.bullet | cat.player | cat.map | cat.body
|
||||||
@@ -2107,7 +2108,7 @@ const spawn = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const sideLength = 120 // distance between each node mob
|
const sideLength = 80 // distance between each node mob
|
||||||
const nodes = 3
|
const nodes = 3
|
||||||
const angle = 2 * Math.PI / nodes
|
const angle = 2 * Math.PI / nodes
|
||||||
spawn.allowShields = false; //don't want shields on individual mobs, it messes with the constraints
|
spawn.allowShields = false; //don't want shields on individual mobs, it messes with the constraints
|
||||||
@@ -2118,10 +2119,10 @@ const spawn = {
|
|||||||
babyMob.fill = "rgb(68, 102, 119)"
|
babyMob.fill = "rgb(68, 102, 119)"
|
||||||
babyMob.isBoss = true;
|
babyMob.isBoss = true;
|
||||||
// Matter.Body.setDensity(babyMob, 0.001); //extra dense //normal is 0.001 //makes effective life much larger and increases damage
|
// Matter.Body.setDensity(babyMob, 0.001); //extra dense //normal is 0.001 //makes effective life much larger and increases damage
|
||||||
babyMob.damageReduction = 0.1 / (tech.isScaleMobsWithDuplication ? 1 + tech.duplicationChance() : 1)
|
babyMob.damageReduction = this.startingDamageReduction
|
||||||
babyMob.collisionFilter.mask = cat.bullet | cat.player //can't touch other mobs //cat.map | cat.body |
|
babyMob.collisionFilter.mask = cat.bullet | cat.player //can't touch other mobs //cat.map | cat.body |
|
||||||
babyMob.delay = 60 + 50 * simulation.CDScale;
|
babyMob.delay = 60 + 55 * simulation.CDScale + Math.floor(Math.random() * 20);
|
||||||
babyMob.strikeRange = 600
|
babyMob.strikeRange = 400
|
||||||
babyMob.onHit = function() {
|
babyMob.onHit = function() {
|
||||||
this.cd = simulation.cycle + this.delay;
|
this.cd = simulation.cycle + this.delay;
|
||||||
//dislodge ammo
|
//dislodge ammo
|
||||||
|
|||||||
82
js/tech.js
82
js/tech.js
@@ -4230,33 +4230,6 @@ const tech = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "super ball",
|
|
||||||
description: "fire just <strong>1 large</strong> super <strong>ball</strong><br>that <strong>stuns</strong> mobs for <strong>3</strong> second",
|
|
||||||
isGunTech: true,
|
|
||||||
maxCount: 1,
|
|
||||||
count: 0,
|
|
||||||
frequency: 2,
|
|
||||||
frequencyDefault: 2,
|
|
||||||
allowed() {
|
|
||||||
return tech.haveGunCheck("super balls") && tech.missileCount === 1 && !tech.superBallDelay
|
|
||||||
},
|
|
||||||
requires: "super balls, but not MIRV or supertemporal",
|
|
||||||
effect() {
|
|
||||||
tech.oneSuperBall = true;
|
|
||||||
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
|
||||||
if (b.guns[i].name === "super balls") b.guns[i].chooseFireMethod()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
remove() {
|
|
||||||
if (tech.oneSuperBall) {
|
|
||||||
tech.oneSuperBall = false;
|
|
||||||
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
|
||||||
if (b.guns[i].name === "super balls") b.guns[i].chooseFireMethod()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "super sized",
|
name: "super sized",
|
||||||
description: `increase <strong>super ball</strong> radius by <strong>14%</strong><br>increases <strong class='color-d'>damage</strong> by about <strong>27%</strong>`,
|
description: `increase <strong>super ball</strong> radius by <strong>14%</strong><br>increases <strong class='color-d'>damage</strong> by about <strong>27%</strong>`,
|
||||||
@@ -4276,6 +4249,52 @@ const tech = {
|
|||||||
tech.bulletSize = 1;
|
tech.bulletSize = 1;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "super duper",
|
||||||
|
description: `randomly fire <strong>+0</strong>, <strong>+1</strong>, or <strong>+2</strong> extra <strong>super balls</strong>`,
|
||||||
|
isGunTech: true,
|
||||||
|
maxCount: 9,
|
||||||
|
count: 0,
|
||||||
|
frequency: 2,
|
||||||
|
frequencyDefault: 2,
|
||||||
|
allowed() {
|
||||||
|
return tech.haveGunCheck("super balls") && !tech.oneSuperBall
|
||||||
|
},
|
||||||
|
requires: "super balls, not super ball",
|
||||||
|
effect() {
|
||||||
|
tech.extraSuperBalls += 3
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
tech.extraSuperBalls = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "super ball",
|
||||||
|
description: "fire just <strong>1 large</strong> super <strong>ball</strong><br>that <strong>stuns</strong> mobs for <strong>3</strong> second",
|
||||||
|
isGunTech: true,
|
||||||
|
maxCount: 1,
|
||||||
|
count: 0,
|
||||||
|
frequency: 2,
|
||||||
|
frequencyDefault: 2,
|
||||||
|
allowed() {
|
||||||
|
return tech.haveGunCheck("super balls") && !tech.extraSuperBalls && !tech.superBallDelay
|
||||||
|
},
|
||||||
|
requires: "super balls, not super duper or supertemporal",
|
||||||
|
effect() {
|
||||||
|
tech.oneSuperBall = true;
|
||||||
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
|
if (b.guns[i].name === "super balls") b.guns[i].chooseFireMethod()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
remove() {
|
||||||
|
if (tech.oneSuperBall) {
|
||||||
|
tech.oneSuperBall = false;
|
||||||
|
for (i = 0, len = b.guns.length; i < len; i++) { //find which gun
|
||||||
|
if (b.guns[i].name === "super balls") b.guns[i].chooseFireMethod()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "phase velocity",
|
name: "phase velocity",
|
||||||
description: "matter wave <strong>propagates</strong> faster through <strong>solids</strong><br>increase matter wave <strong class='color-d'>damage</strong> by <strong>15%</strong>",
|
description: "matter wave <strong>propagates</strong> faster through <strong>solids</strong><br>increase matter wave <strong class='color-d'>damage</strong> by <strong>15%</strong>",
|
||||||
@@ -4486,9 +4505,9 @@ const tech = {
|
|||||||
frequency: 2,
|
frequency: 2,
|
||||||
frequencyDefault: 2,
|
frequencyDefault: 2,
|
||||||
allowed() {
|
allowed() {
|
||||||
return tech.haveGunCheck("missiles") || tech.missileBotCount || tech.haveGunCheck("grenades") || (tech.haveGunCheck("super balls") && !tech.oneSuperBall)
|
return tech.haveGunCheck("missiles") || tech.missileBotCount || tech.haveGunCheck("grenades")
|
||||||
},
|
},
|
||||||
requires: "missiles, grenades, super balls, not super ball",
|
requires: "missiles, grenades",
|
||||||
effect() {
|
effect() {
|
||||||
tech.missileCount++;
|
tech.missileCount++;
|
||||||
},
|
},
|
||||||
@@ -8861,7 +8880,7 @@ const tech = {
|
|||||||
this.frequency = 0;
|
this.frequency = 0;
|
||||||
this.description = `<strong class="lore-text">null</strong> is open at level.final()`
|
this.description = `<strong class="lore-text">null</strong> is open at level.final()`
|
||||||
} else {
|
} else {
|
||||||
this.frequency += lore.techGoal
|
this.frequency += lore.techGoal * 2
|
||||||
// for (let i = 0; i < tech.tech.length; i++) { //set name for all unchosen copies of this tech
|
// for (let i = 0; i < tech.tech.length; i++) { //set name for all unchosen copies of this tech
|
||||||
// if (tech.tech[i].isLore && tech.tech[i].count === 0) tech.tech[i].description = `${lore.techCount+1}/${lore.techGoal}<br><em>add copies of <strong class="lore-text">this</strong> to the potential <strong class='color-m'>tech</strong> pool</em>`
|
// if (tech.tech[i].isLore && tech.tech[i].count === 0) tech.tech[i].description = `${lore.techCount+1}/${lore.techGoal}<br><em>add copies of <strong class="lore-text">this</strong> to the potential <strong class='color-m'>tech</strong> pool</em>`
|
||||||
// }
|
// }
|
||||||
@@ -9203,5 +9222,6 @@ const tech = {
|
|||||||
isBrainstorm: null,
|
isBrainstorm: null,
|
||||||
isBrainstormActive: null,
|
isBrainstormActive: null,
|
||||||
brainStormDelay: null,
|
brainStormDelay: null,
|
||||||
wormSize: null
|
wormSize: null,
|
||||||
|
extraSuperBalls: null
|
||||||
}
|
}
|
||||||
23
todo.txt
23
todo.txt
@@ -1,17 +1,13 @@
|
|||||||
******************************************************** NEXT PATCH **************************************************
|
******************************************************** NEXT PATCH **************************************************
|
||||||
|
|
||||||
revolutionBoss is immune to damage at 1/4,1/2,3/4 health until it's laser spins around one revolution
|
tech: super duper - fire +0-2 extra super balls
|
||||||
|
super balls no longer part of MIRV
|
||||||
thermocouple produces 1-9 -> 4-13 ice nine bullet
|
|
||||||
thermocouple is on by default until next patch
|
|
||||||
|
|
||||||
decoherence rewrite with flags instead of a banish array, to fix bugs
|
|
||||||
|
|
||||||
|
|
||||||
|
bug fix for plasma extruder interaction with doors that collide with power ups
|
||||||
|
mantisBoss moves slower, can be damaged for longer time, has less total life, has a smaller punch range
|
||||||
|
|
||||||
******************************************************** TODO ********************************************************
|
******************************************************** TODO ********************************************************
|
||||||
|
|
||||||
|
|
||||||
merge various multi bullet tech under one name
|
merge various multi bullet tech under one name
|
||||||
|
|
||||||
training
|
training
|
||||||
@@ -42,13 +38,15 @@ training
|
|||||||
done superball - use 1 ammo to take out several mobs
|
done superball - use 1 ammo to take out several mobs
|
||||||
done matter wave - kill a mob inside a map element
|
done matter wave - kill a mob inside a map element
|
||||||
done missiles - take out mobs that are around corner and have them drop on a button
|
done missiles - take out mobs that are around corner and have them drop on a button
|
||||||
grenades - use 1 ammo to take out several mobs at once
|
grenades - use 1 ammo to take out a ring of mob`s
|
||||||
spores - use 1 ammo to take out several mobs at once
|
spores - use 1 ammo to take out several mobs at once, you have to block with your shield until the mobs die
|
||||||
drones - use mouse to bring drones around a corner
|
drones - use mouse to bring drones around a couple corners
|
||||||
foam - slow boss mob, and run away
|
foam - slow boss mob, and run away
|
||||||
harpoon - kill one close mob, pick up ammo that is out of reach, first at several far away mobs with crouch
|
harpoon - kill one close mob, pick up ammo that is out of reach, first at several far away mobs with crouch
|
||||||
|
or just some hard melee combat
|
||||||
mine - built kill zone, get mobs to follow into mine kill zone
|
mine - built kill zone, get mobs to follow into mine kill zone
|
||||||
laser - reflect off walls to hit mob
|
maybe a boss mob?
|
||||||
|
laser - reflect off walls to hit mobs
|
||||||
field rooms:
|
field rooms:
|
||||||
standing wave - bullets come from every direction
|
standing wave - bullets come from every direction
|
||||||
perfect diamagnetism - drop field to rapid stream of bullets and fire gun at them
|
perfect diamagnetism - drop field to rapid stream of bullets and fire gun at them
|
||||||
@@ -64,6 +62,7 @@ training
|
|||||||
also make a harder version of stacking blocks
|
also make a harder version of stacking blocks
|
||||||
portal rooms
|
portal rooms
|
||||||
jump at the top of a elevator to jump high
|
jump at the top of a elevator to jump high
|
||||||
|
use the double constrained platforms
|
||||||
combat rooms:
|
combat rooms:
|
||||||
kill so many mobs that the mob bodies pile up and you can get over a wall by jumping on them
|
kill so many mobs that the mob bodies pile up and you can get over a wall by jumping on them
|
||||||
boss gauntlet, spawn with nothing but a few power ups and fight 10 bosses
|
boss gauntlet, spawn with nothing but a few power ups and fight 10 bosses
|
||||||
|
|||||||
Reference in New Issue
Block a user