drone and spores bullet adjustments
This commit is contained in:
@@ -111,7 +111,7 @@
|
||||
</tr> -->
|
||||
</table>
|
||||
<br>
|
||||
<a href="https://github.com/landgreen/landgreen.github.io/tree/master/sidescroller">
|
||||
<a href="https://github.com/landgreen/n-gon">
|
||||
<svg viewBox="0 0 100 16" xmlns="http://www.w3.org/2000/svg" fill="#1B1F23">
|
||||
<path d="M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z" />
|
||||
<g stroke='none' font-size="8px" font-family="Arial Black, sans-serif">
|
||||
|
||||
134
js/bullets.js
134
js/bullets.js
@@ -719,35 +719,29 @@ const b = {
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "swarm",
|
||||
name: "spores",
|
||||
ammo: 0,
|
||||
ammoPack: 7,
|
||||
ammoPack: 6,
|
||||
have: false,
|
||||
fire() {
|
||||
const me = bullet.length;
|
||||
const dir = mech.angle;
|
||||
bullet[me] = Bodies.polygon(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), 20, 4.5, b.fireAttributes(dir));
|
||||
b.fireProps(40, 15, dir, me); //cd , speed
|
||||
b.fireProps(25, 20, dir, me); //cd , speed
|
||||
b.drawOneBullet(bullet[me].vertices);
|
||||
Matter.Body.setDensity(bullet[me], 0.000001);
|
||||
bullet[me].endCycle = game.cycle + 250;
|
||||
bullet[me].frictionAir = 0.001;
|
||||
bullet[me].endCycle = game.cycle + 100;
|
||||
bullet[me].frictionAir = 0;
|
||||
bullet[me].friction = 0.5;
|
||||
bullet[me].restitution = 0.3;
|
||||
// Matter.Body.setDensity(bullet[me], 0.000001);
|
||||
// bullet[me].friction = 0.15;
|
||||
// bullet[me].restitution = 0;
|
||||
|
||||
// bullet[me].explodeRad = 350 + Math.floor(Math.random() * 60);
|
||||
bullet[me].minDmgSpeed = 0;
|
||||
bullet[me].onDmg = function () {
|
||||
// this.endCycle = 0; //bullet ends cycle after doing damage //this triggers explosion
|
||||
};
|
||||
bullet[me].onDmg = function () {};
|
||||
bullet[me].do = function () {
|
||||
const SCALE = 1.007
|
||||
const SCALE = 1.017
|
||||
Matter.Body.scale(this, SCALE, SCALE);
|
||||
this.frictionAir += 0.00021;
|
||||
|
||||
this.force.y += this.mass * 0.0005;
|
||||
this.force.y += this.mass * 0.00045;
|
||||
};
|
||||
|
||||
//spawn bullets on end
|
||||
@@ -755,26 +749,26 @@ const b = {
|
||||
const NUM = 11;
|
||||
for (let i = 0; i < NUM; i++) {
|
||||
const bIndex = bullet.length;
|
||||
const RADIUS = 5 + 2 * (Math.random() - 0.5)
|
||||
const RADIUS = 4 + 2 * Math.random();
|
||||
bullet[bIndex] = Bodies.circle(this.position.x, this.position.y, RADIUS, {
|
||||
// density: 0.0015, //frictionAir: 0.01,
|
||||
restitution: 1,
|
||||
restitution: 0.9,
|
||||
angle: dir,
|
||||
friction: 0,
|
||||
frictionAir: 0.01,
|
||||
dmg: 1.25, //damage done in addition to the damage from momentum
|
||||
dmg: 1.3, //damage done in addition to the damage from momentum
|
||||
classType: "bullet",
|
||||
collisionFilter: {
|
||||
category: 0x000100,
|
||||
mask: 0x000011 //mask: 0x000101, //for self collision
|
||||
},
|
||||
endCycle: game.cycle + 300 + Math.floor(Math.random() * 120),
|
||||
endCycle: game.cycle + 300 + Math.floor(Math.random() * 240),
|
||||
minDmgSpeed: 0,
|
||||
onDmg() {
|
||||
this.endCycle = 0; //bullet ends cycle after doing damage
|
||||
},
|
||||
onEnd() {},
|
||||
lookFrequency: 27 + Math.floor(17 * Math.random()),
|
||||
lookFrequency: 57 + Math.floor(37 * Math.random()),
|
||||
do() {
|
||||
this.force.y += this.mass * 0.00025; // high gravity because of the high friction
|
||||
|
||||
@@ -809,9 +803,6 @@ const b = {
|
||||
}
|
||||
},
|
||||
});
|
||||
// bullet[bIndex].explodeRad = 100 + Math.floor(Math.random() * 30);
|
||||
// bullet[bIndex].onEnd = b.explode; //makes bullet do explosive damage before despawn
|
||||
|
||||
const SPEED = 9;
|
||||
const ANGLE = 2 * Math.PI * Math.random()
|
||||
Matter.Body.setVelocity(bullet[bIndex], {
|
||||
@@ -827,22 +818,22 @@ const b = {
|
||||
{
|
||||
name: "drones",
|
||||
ammo: 0,
|
||||
ammoPack: 27,
|
||||
ammoPack: 23,
|
||||
have: false,
|
||||
fire() {
|
||||
const MAX_SPEED = 6 //+ 2 * (Math.random() - 0.5)
|
||||
const THRUST = 0.0015 //+ 0.0004 * (Math.random() - 0.5)
|
||||
const MAX_SPEED = 6
|
||||
const THRUST = 0.0015
|
||||
const dir = mech.angle + 0.7 * (Math.random() - 0.5);
|
||||
const me = bullet.length;
|
||||
const RADIUS = 6 + 2.5 * (Math.random() - 0.5)
|
||||
const RADIUS = 4 + 4 * Math.random()
|
||||
bullet[me] = Bodies.circle(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), RADIUS, {
|
||||
angle: dir,
|
||||
friction: 0,
|
||||
frictionAir: 0.0005,
|
||||
restitution: 1,
|
||||
dmg: 0.15, //damage done in addition to the damage from momentum
|
||||
lookFrequency: 67 + Math.floor(23 * Math.random()),
|
||||
endCycle: game.cycle + 540 + 120 * Math.random(),
|
||||
dmg: 0.18, //damage done in addition to the damage from momentum
|
||||
lookFrequency: 79 + Math.floor(32 * Math.random()),
|
||||
endCycle: game.cycle + 720 + 300 * Math.random(),
|
||||
classType: "bullet",
|
||||
collisionFilter: {
|
||||
category: 0x000100,
|
||||
@@ -850,6 +841,7 @@ const b = {
|
||||
},
|
||||
minDmgSpeed: 0,
|
||||
lockedOn: null,
|
||||
isFollowMouse: true,
|
||||
onDmg() {
|
||||
this.lockedOn = null
|
||||
}, //this.endCycle = 0 //triggers despawn
|
||||
@@ -861,6 +853,7 @@ const b = {
|
||||
if (!(game.cycle % this.lookFrequency)) {
|
||||
this.close = null;
|
||||
this.lockedOn = null;
|
||||
this.isFollowMouse = true; //if no target is found default to follow mouse
|
||||
let closeDist = Infinity;
|
||||
for (let i = 0, len = mob.length; i < len; ++i) {
|
||||
if (
|
||||
@@ -875,14 +868,16 @@ const b = {
|
||||
this.close = mob[i].position;
|
||||
closeDist = DIST;
|
||||
this.lockedOn = mob[i]
|
||||
this.isFollowMouse = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//accelerate towards mobs
|
||||
if (this.lockedOn) {
|
||||
const UNIT_VECTOR = Matter.Vector.normalise(Matter.Vector.sub(this.position, this.lockedOn.position))
|
||||
this.force = Matter.Vector.mult(UNIT_VECTOR, -this.mass * THRUST)
|
||||
if (this.lockedOn) { //accelerate towards mobs
|
||||
this.force = Matter.Vector.mult(Matter.Vector.normalise(Matter.Vector.sub(this.position, this.lockedOn.position)), -this.mass * THRUST)
|
||||
} else if (this.isFollowMouse) { //accelerate towards mouse
|
||||
this.force = Matter.Vector.mult(Matter.Vector.normalise(Matter.Vector.sub(this.position, game.mouseInGame)), -this.mass * THRUST)
|
||||
}
|
||||
|
||||
// speed cap instead of friction to give more agility
|
||||
if (this.speed > MAX_SPEED) {
|
||||
@@ -892,10 +887,9 @@ const b = {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
// b.fireAttributes(dir));
|
||||
b.fireProps(4, MAX_SPEED, dir, me); //cd , speed
|
||||
b.fireProps(10, MAX_SPEED, dir, me); //cd , speed
|
||||
b.drawOneBullet(bullet[me].vertices);
|
||||
// Matter.Body.setDensity(bullet[me], 0.000001);
|
||||
// bullet[me].onDmg = function () {
|
||||
@@ -903,6 +897,74 @@ const b = {
|
||||
// };
|
||||
}
|
||||
},
|
||||
// {
|
||||
// name: "flock", // shards
|
||||
// ammo: 0,
|
||||
// ammoPack: 1027,
|
||||
// have: false,
|
||||
// fire() {
|
||||
// const me = bullet.length;
|
||||
// const dir = mech.angle + 0.7 * (Math.random() - 0.5);
|
||||
// const RADIUS = 6 + 2.5 * (Math.random() - 0.5)
|
||||
// // bullet[me] = Bodies.rectangle(mech.pos.x + 40 * Math.cos(mech.angle), mech.pos.y + 40 * Math.sin(mech.angle), 31, 2, b.fireAttributes(dir));
|
||||
// // bullet[me] = Bodies.circle(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), RADIUS, {
|
||||
// bullet[me] = Bodies.rectangle(mech.pos.x + 40 * Math.cos(mech.angle), mech.pos.y + 40 * Math.sin(mech.angle), 31, 2, {
|
||||
// angle: dir,
|
||||
// friction: 0,
|
||||
// frictionAir: 0.02,
|
||||
// restitution: 0.2,
|
||||
// dmg: 0.15, //damage done in addition to the damage from momentum
|
||||
// lookFrequency: 67 + Math.floor(23 * Math.random()),
|
||||
// endCycle: game.cycle + 540 + 120 * Math.random(),
|
||||
// classType: "bullet",
|
||||
// collisionFilter: {
|
||||
// category: 0x000100,
|
||||
// mask: 0x000111
|
||||
// },
|
||||
// minDmgSpeed: 0,
|
||||
// onDmg() {
|
||||
// this.endCycle = 0 //triggers despawn
|
||||
// // this.explodeRad = this.speed * 10
|
||||
// },
|
||||
// // explodeRad: 10,
|
||||
// // onEnd: b.explode,
|
||||
// onEnd() {},
|
||||
// do() {
|
||||
// // drain ammo
|
||||
// // if (!(game.cycle % this.lookFrequency)) {
|
||||
// // if (b.guns[b.activeGun].ammo > 0) {
|
||||
// // b.guns[b.activeGun].ammo--;
|
||||
// // game.updateGunHUD();
|
||||
// // }
|
||||
// // }
|
||||
|
||||
|
||||
// this.force.y += this.mass * 0.0002; //gravity
|
||||
|
||||
// //accelerate towards mouse
|
||||
// const THRUST = 0.0015
|
||||
// const UNIT_VECTOR = Matter.Vector.normalise(Matter.Vector.sub(this.position, game.mouseInGame))
|
||||
// this.force = Matter.Vector.mult(UNIT_VECTOR, -this.mass * THRUST)
|
||||
|
||||
// // speed cap
|
||||
// if (this.speed > 16) {
|
||||
// Matter.Body.setVelocity(this, {
|
||||
// x: this.velocity.x * 0.97,
|
||||
// y: this.velocity.y * 0.97
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// // bullet[me].onEnd = b.explode; //makes bullet do explosive damage before despawn
|
||||
// // b.fireAttributes(dir));
|
||||
// b.fireProps(4, 4, dir, me); //cd , speed
|
||||
// b.drawOneBullet(bullet[me].vertices);
|
||||
// // Matter.Body.setDensity(bullet[me], 0.000001);
|
||||
// // bullet[me].onDmg = function () {
|
||||
// // this.endCycle = 0; //bullet ends cycle after doing damage
|
||||
// // };
|
||||
// }
|
||||
// },
|
||||
{
|
||||
name: "wave beam",
|
||||
ammo: 0,
|
||||
|
||||
10
js/level.js
10
js/level.js
@@ -13,7 +13,7 @@ const level = {
|
||||
// game.zoomScale = 1400 //1400
|
||||
if (game.levelsCleared === 0) {
|
||||
this.intro(); //starting level
|
||||
// b.giveGuns(11) // set a starting gun for testing
|
||||
// b.giveGuns(10) // set a starting gun for testing
|
||||
// game.levelsCleared = 3; //for testing to simulate all possible mobs spawns
|
||||
// this.bosses();
|
||||
// this.testingMap();
|
||||
@@ -1385,11 +1385,11 @@ const level = {
|
||||
}
|
||||
},
|
||||
levelAnnounce() {
|
||||
let text = "L" + (game.levelsCleared) + " " + level.levels[level.onLevel];
|
||||
if (game.levelsCleared === 0) text = "";
|
||||
let text = (game.levelsCleared) + " " + level.levels[level.onLevel];
|
||||
document.title = "n-gon: L" + text;
|
||||
game.makeTextLog("level " + text, 300);
|
||||
// if (game.levelsCleared === 0) text = "";
|
||||
// text = "Level " + (game.levelsCleared + 1) + ": " + spawn.pickList[0] + "s + " + spawn.pickList[1] + "s";
|
||||
game.makeTextLog(text, 300);
|
||||
document.title = "n-gon: " + text;
|
||||
|
||||
// text = text + " with population: ";
|
||||
// for (let i = 0, len = spawn.pickList.length; i < len; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user