diff --git a/js/bullet.js b/js/bullet.js index 35ec8f9..43966d6 100644 --- a/js/bullet.js +++ b/js/bullet.js @@ -3230,8 +3230,7 @@ const b = { mech.energy -= mech.fieldRegen + mod.laserFieldDrain * mod.isLaserDiode if (mod.isWideLaser) { const off = 8 - const dmg = 0.6 * mod.laserDamage // 5 * 0.4 = 200% more damage - // ctx.lineCap = 'butt'; + const dmg = 0.4 * mod.laserDamage // 5 * 0.4 = 200% more damage b.laser({ x: mech.pos.x + 20 * Math.cos(mech.angle), y: mech.pos.y + 20 * Math.sin(mech.angle) @@ -3252,7 +3251,18 @@ const b = { y: i * off * Math.sin(mech.angle - Math.PI / 2) }), mech.angle, dmg, 0, true) } - // ctx.lineCap = 'round'; + } else if (mod.beamSplitter) { + let dmg = mod.laserDamage * 0.9 + const where = { + x: mech.pos.x + 20 * Math.cos(mech.angle), + y: mech.pos.y + 20 * Math.sin(mech.angle) + } + b.laser(where, mech.angle, dmg) + for (let i = 1; i < 1 + mod.beamSplitter; i++) { + b.laser(where, mech.angle + i * 0.2, dmg) + b.laser(where, mech.angle - i * 0.2, dmg) + dmg *= 0.9 + } } else { b.laser() } diff --git a/js/mods.js b/js/mods.js index 02df635..e2dc509 100644 --- a/js/mods.js +++ b/js/mods.js @@ -2352,24 +2352,39 @@ const mod = { mod.laserFieldDrain = 0.0012; } }, + { + name: "beam splitter", + description: `your laser is split into diverging beams
decrease damage by 10%`, + maxCount: 9, + count: 0, + allowed() { + return mod.haveGunCheck("laser") && !mod.isWideLaser + }, + requires: "laser, not specular reflection", + effect() { + mod.beamSplitter++ + }, + remove() { + mod.beamSplitter = 0 + } + }, { name: "diffuse beam", - description: "laser beam is wider but doesn't reflect
increase damage and energy drain by 150%", + description: "laser beam is wider and doesn't reflect
increase damage by 100%", maxCount: 1, count: 0, allowed() { - return mod.haveGunCheck("laser") && mod.laserReflections < 3 + return mod.haveGunCheck("laser") && mod.laserReflections < 3 && !mod.beamSplitter }, requires: "laser, not specular reflection", effect() { mod.isWideLaser = true - mod.laserFieldDrain = 0.0012 * 2.5 //base is 0.002 }, remove() { mod.isWideLaser = false - mod.laserFieldDrain = 0.0012; } }, + // { // name: "waste heat recovery", // description: "laser damage grows by 400% as you fire
but you periodically eject your health", @@ -2973,5 +2988,6 @@ const mod = { aimDamage: null, isNoFireDefense: null, isNoFireDamage: null, - duplicateChance: null + duplicateChance: null, + beamSplitter: null } \ No newline at end of file diff --git a/todo.txt b/todo.txt index 4dc86fb..b17e338 100644 --- a/todo.txt +++ b/todo.txt @@ -1,11 +1,11 @@ -mod: stimulated emission - 8% chance to duplicate power ups -laser mod: diffuse beam - laser is wide but doesn't reflect, 150% damage and energy drain +laser mod: beam splitter - laser is split into diverging beams, but does 10% less damage ************** TODO - n-gon ************** -write a function that returns collisions -mod: laser gets increased damage with each reflection -mod: laser is 3 thick beams that look like one, but can separate into three at corners +laser mod, increase damage, but ass some angular spread to 5 laser beam + require diffuse + +use the b.laser() function mod set a max speed cap based on distance from player while field is active mod for a field, or bot?