diff --git a/js/bullets.js b/js/bullets.js
index fecdb8d..ab910df 100644
--- a/js/bullets.js
+++ b/js/bullets.js
@@ -393,7 +393,7 @@ const b = {
for (let i = 0, len = mob.length; i < len; ++i) {
if (mob[i].alive) {
sub = Matter.Vector.sub(bullet[me].position, mob[i].position);
- dist = Matter.Vector.magnitude(sub);
+ dist = Matter.Vector.magnitude(sub) - mob[i].radius;
if (dist < radius) {
mob[i].damage(dmg * damageScale);
mob[i].locatePlayer();
@@ -1082,22 +1082,22 @@ const b = {
}
},
{
- name: "M80",
+ name: "grenade",
description: "rapidly fire small bouncy bombs
explodes on contact or after 2 seconds",
ammo: 0,
- ammoPack: 45,
+ ammoPack: 20,
have: false,
fire() {
const me = bullet.length;
const dir = mech.angle; // + Math.random() * 0.05;
bullet[me] = Bodies.circle(mech.pos.x + 30 * Math.cos(mech.angle), mech.pos.y + 30 * Math.sin(mech.angle), 10 * b.modBulletSize, b.fireAttributes(dir, false));
- b.fireProps(mech.crouch ? 15 : 8, mech.crouch ? 32 : 24, dir, me); //cd , speed
+ b.fireProps(mech.crouch ? 40 : 25, mech.crouch ? 40 : 30, dir, me); //cd , speed
b.drawOneBullet(bullet[me].vertices);
Matter.Body.setDensity(bullet[me], 0.000001);
- bullet[me].totalCycles = 120;
+ bullet[me].totalCycles = 100;
bullet[me].endCycle = game.cycle + Math.floor(120 * b.modBulletsLastLonger);
bullet[me].restitution = 0.6;
- bullet[me].explodeRad = 130;
+ bullet[me].explodeRad = 220;
bullet[me].onEnd = b.explode; //makes bullet do explosive damage before despawn
bullet[me].minDmgSpeed = 1;
bullet[me].dmg = 0.25;
@@ -1111,8 +1111,8 @@ const b = {
}
},
{
- name: "grenades",
- description: "fire a huge sticky bomb
explodes on contact or after 2 seconds",
+ name: "vacuum bomb",
+ description: "fire a huge bomb that pulls things in before it explodes
explodes after 2 seconds",
ammo: 0,
ammoPack: 5,
have: false,
@@ -1134,15 +1134,44 @@ const b = {
bullet[me].restitution = 0;
bullet[me].friction = 1;
- bullet[me].explodeRad = 380 + Math.floor(Math.random() * 60);
+ bullet[me].explodeRad = 400 + Math.floor(Math.random() * 60);
bullet[me].onEnd = b.explode; //makes bullet do explosive damage before despawn
bullet[me].minDmgSpeed = 1;
bullet[me].onDmg = function () {
- this.endCycle = 0; //bullet ends cycle after doing damage //this triggers explosion
+ // this.endCycle = 0; //bullet ends cycle after doing damage //this triggers explosion
};
bullet[me].do = function () {
//extra gravity for harder arcs
this.force.y += this.mass * 0.0022;
+
+ //before the explosion suck in stuff
+ if (game.cycle > this.endCycle - 40) {
+ const that = this
+
+ function suck(who, mag = 0.08, radius = that.explodeRad * 2) {
+ for (i = 0, len = who.length; i < len; i++) {
+ const sub = Matter.Vector.sub(that.position, who[i].position);
+ const dist = Matter.Vector.magnitude(sub);
+ if (dist < radius && dist > 100) {
+ knock = Matter.Vector.mult(Matter.Vector.normalise(sub), mag * who[i].mass / Math.sqrt(dist));
+ who[i].force.x += knock.x;
+ who[i].force.y += knock.y;
+ }
+ }
+ }
+ if (game.cycle > this.endCycle - 5) {
+ suck(body, -0.08)
+ suck(mob, -0.08)
+ suck(powerUp, -0.08)
+ } else {
+ suck(body)
+ suck(mob)
+ suck(powerUp)
+ }
+
+ }
+
+
//draw timer
if (!(game.cycle % 10)) {
if (this.isFlashOn) {