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?