Closed NV4s closed 7 months ago
100 milliseconds is way too fast it would mean nothing would ever move Maybe every 100 milliseconds the speed is reduced by .1%
I would like to see what that could do with other techs
also this would be laggy and annoying to code. Maybe increase the knockback by an obscenely high number, (5x?) but disable all block effects (bremsstrahlung, ice9, etc.) and cause it to deal damage when mobs are forced into walls by it.
I might try this in Dumb n-gon https://annonymousnerd87.github.io/
In lore, the speed is divided by half which is why I wanted it. Think of a bunch of flying knives about to hit you and then just stop.
The speed of all enemies will be divided by like 1024 every second
Bruh why. It should make enemies very slow in radius, not just a little slow.
the miscommunication is that alex wants a powerful slow in a small radius, while mason wants a weak slow globally
also I think it should be a projectile/mob repulsion field not just a slow.
Oh it is meant to be a small radius I still believe that dividing speed by 2 every tenth of a second is far too overkill
no because the base field is 100% knockback, so an extreme slow with a small radius is necessary to fully replace the shield
also I think it should be a projectile/mob repulsion field not just a slow.
That would work fairly well
a repulsion field is good because it gets them out of the way so you don't accidentally run into them, without just making everything except lasers useless
it would drain energy proportional to the number of projectiles/mobs in the aoe, and their mass * speed against the field
it works well in Noita, so it should work well in n-gon
You can already get consistent slowing radii with eddy current brake or that healing tech.
More info:
Small radius but extremely overpowered in terms of stopping projectiles and mobs (let's nerf it a little to allow laser and explosions)
There are some stuff I may remove and separate into 2 different upgrades (splat against wall and op slowing will most likely be separated)
this seems similar to eddy current.
that's why I think it should be a repulsion to be more unique
repulsion is how the default shields work
I mean a slow, consistent repulsion over a larger area, like eddie current brake
On Tue, Apr 23, 2024 at 7:01 PM landgreen @.***> wrote:
repulsion is how the default shields work
— Reply to this email directly, view it on GitHub https://github.com/landgreen/n-gon/issues/216#issuecomment-2073856899, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHEAKNCO3ASMMCDQAT3JRT3Y64G6NAVCNFSM6AAAAABGTQMKL6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZTHA2TMOBZHE . You are receiving this because you commented.Message ID: @.***>
I mean maybe a field that slows enemies instead of knocking them back
in my opinion that would make the most sense for standing wave so you can shoot the mobs as they get stuck in slo-mo in front of you
That's my point that I want to have
The splat effect can be an entirely different upgrade.
so this effect?
Yea but a permanent field that has this area of effect
Screencast from 2024-04-24 12-54-32.webm
Maybe something like this where it slowly pushes things away? (In this example it gets stronger when in an inner circle)
m.harmonic3Phase = () => { //normal standard 3 different 2-d circles
const fieldRange1 = (0.75 + 0.3 * Math.sin(m.cycle / 23)) * m.fieldRange * m.harmonicRadius * 2
const fieldRange2 = (0.68 + 0.37 * Math.sin(m.cycle / 37)) * m.fieldRange * m.harmonicRadius * 2
const fieldRange3 = (0.7 + 0.35 * Math.sin(m.cycle / 47)) * m.fieldRange * m.harmonicRadius * 2
const netFieldRange = Math.max(fieldRange1, fieldRange2, fieldRange3)
ctx.fillStyle = "rgba(110,170,200," + Math.min(0.6, (0.04 + 0.7 * m.energy * (0.1 + 0.11 * Math.random()))) + ")";
ctx.beginPath();
ctx.arc(m.pos.x, m.pos.y, fieldRange1, 0, 2 * Math.PI);
ctx.fill();
ctx.beginPath();
ctx.arc(m.pos.x, m.pos.y, fieldRange2, 0, 2 * Math.PI);
ctx.fill();
ctx.beginPath();
ctx.arc(m.pos.x, m.pos.y, fieldRange3, 0, 2 * Math.PI);
ctx.fill();
//360 block
for (let i = 0, len = mob.length; i < len; ++i) {
if (Vector.magnitude(Vector.sub(mob[i].position, m.pos)) - mob[i].radius < netFieldRange && !mob[i].isUnblockable) { // && Matter.Query.ray(map, mob[i].position, m.pos).length === 0
mob[i].locatePlayer();
const distance = Math.sqrt((mob[i].position.x - player.position.x)**2 + (mob[i].position.y - player.position.y)**2);
const direction = Vector.normalise(Vector.sub(mob[i].position, m.pos));
const fieldRanges = [fieldRange1, fieldRange2, fieldRange3].sort((a, b) => b - a);
if (distance < fieldRanges[0]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x * 0.9, y: mob[i].velocity.y * 0.9 });
if (distance < fieldRanges[1]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x * 0.5, y: mob[i].velocity.y + direction.y * 0.5 })
if (distance < fieldRanges[2]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x, y: mob[i].velocity.y + direction.y })
}
}
}
looks great!
On Wed, Apr 24, 2024 at 10:07 AM Cornbread2100 @.***> wrote:
Screencast from 2024-04-24 12-54-32.webm https://github.com/landgreen/n-gon/assets/90143063/c4493e33-fd22-476f-b115-cbbd587b34f6
Maybe something like this where it slowly pushes things away? (In this example it gets stronger when in an inner circle)
m.harmonic3Phase = () => { //normal standard 3 different 2-d circles const fieldRange1 = (0.75 + 0.3 Math.sin(m.cycle / 23)) m.fieldRange m.harmonicRadius 2 const fieldRange2 = (0.68 + 0.37 Math.sin(m.cycle / 37)) m.fieldRange m.harmonicRadius 2 const fieldRange3 = (0.7 + 0.35 Math.sin(m.cycle / 47)) m.fieldRange m.harmonicRadius 2 const netFieldRange = Math.max(fieldRange1, fieldRange2, fieldRange3) ctx.fillStyle = "rgba(110,170,200," + Math.min(0.6, (0.04 + 0.7 m.energy (0.1 + 0.11 Math.random()))) + ")"; ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange1, 0, 2 Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange2, 0, 2 Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange3, 0, 2 Math.PI); ctx.fill(); //360 block for (let i = 0, len = mob.length; i < len; ++i) { if (Vector.magnitude(Vector.sub(mob[i].position, m.pos)) - mob[i].radius < netFieldRange && !mob[i].isUnblockable) { // && Matter.Query.ray(map, mob[i].position, m.pos).length === 0 mob[i].locatePlayer(); const distance = Math.sqrt((mob[i].position.x - player.position.x)2 + (mob[i].position.y - player.position.y)2); const direction = Vector.normalise(Vector.sub(mob[i].position, m.pos)); const fieldRanges = [fieldRange1, fieldRange2, fieldRange3].sort((a, b) => b - a); if (distance < fieldRanges[0]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x 0.9, y: mob[i].velocity.y 0.9 }); if (distance < fieldRanges[1]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x 0.5, y: mob[i].velocity.y + direction.y 0.5 }) if (distance < fieldRanges[2]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x, y: mob[i].velocity.y + direction.y }) } }}
— Reply to this email directly, view it on GitHub https://github.com/landgreen/n-gon/issues/216#issuecomment-2075437485, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHEAKNBBJMZKYFHMVFFHIBTY67REDAVCNFSM6AAAAABGTQMKL6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZVGQZTONBYGU . You are receiving this because you commented.Message ID: @.***>
That's excellent @kgurchiek! Besides the fact that the field isn't more forced against the mob, this is mostly the idea I'm getting. Make it less flexible with aerodynamics when interacting with the field and more pushing. (My idea is to make the force more flexible than standing wave, but less flexible compared to your code addition).
also make it drain energy based on the number and mass of mobs in the aoe
On Wed, Apr 24, 2024 at 10:58 AM Felix Koenig @.***> wrote:
looks great!
On Wed, Apr 24, 2024 at 10:07 AM Cornbread2100 @.***> wrote:
Screencast from 2024-04-24 12-54-32.webm https://github.com/landgreen/n-gon/assets/90143063/c4493e33-fd22-476f-b115-cbbd587b34f6
Maybe something like this where it slowly pushes things away? (In this example it gets stronger when in an inner circle)
m.harmonic3Phase = () => { //normal standard 3 different 2-d circles const fieldRange1 = (0.75 + 0.3 Math.sin(m.cycle / 23)) m.fieldRange m.harmonicRadius 2 const fieldRange2 = (0.68 + 0.37 Math.sin(m.cycle / 37)) m.fieldRange m.harmonicRadius 2 const fieldRange3 = (0.7 + 0.35 Math.sin(m.cycle / 47)) m.fieldRange m.harmonicRadius 2 const netFieldRange = Math.max(fieldRange1, fieldRange2, fieldRange3) ctx.fillStyle = "rgba(110,170,200," + Math.min(0.6, (0.04 + 0.7 m.energy (0.1 + 0.11 Math.random()))) + ")"; ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange1, 0, 2 Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange2, 0, 2 Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(m.pos.x, m.pos.y, fieldRange3, 0, 2 Math.PI); ctx.fill(); //360 block for (let i = 0, len = mob.length; i < len; ++i) { if (Vector.magnitude(Vector.sub(mob[i].position, m.pos)) - mob[i].radius < netFieldRange && !mob[i].isUnblockable) { // && Matter.Query.ray(map, mob[i].position, m.pos).length === 0 mob[i].locatePlayer(); const distance = Math.sqrt((mob[i].position.x - player.position.x)2 + (mob[i].position.y - player.position.y)2); const direction = Vector.normalise(Vector.sub(mob[i].position, m.pos)); const fieldRanges = [fieldRange1, fieldRange2, fieldRange3].sort((a, b) => b - a); if (distance < fieldRanges[0]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x 0.9, y: mob[i].velocity.y 0.9 }); if (distance < fieldRanges[1]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x 0.5, y: mob[i].velocity.y + direction.y 0.5 }) if (distance < fieldRanges[2]) Matter.Body.setVelocity(mob[i], { x: mob[i].velocity.x + direction.x, y: mob[i].velocity.y + direction.y }) } }}
— Reply to this email directly, view it on GitHub https://github.com/landgreen/n-gon/issues/216#issuecomment-2075437485, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHEAKNBBJMZKYFHMVFFHIBTY67REDAVCNFSM6AAAAABGTQMKL6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZVGQZTONBYGU . You are receiving this because you commented.Message ID: @.***>
@AnnonymousNerd87 What is your discord user in the n-gon discord? (The old and more active one.) Also @kgurchiek , make the field drain energy proportionally based on the mass and speed of the mob coming to you (kinda like the basic field draining energy based on the mass of blocks and your output of it).
I don't have discord bc its blocked by lightspeed
On Wed, Apr 24, 2024 at 11:01 AM Drag0n_A13x @.***> wrote:
@AnnonymousNerd87 https://github.com/AnnonymousNerd87 What is your discord user in the n-gon discord? (The old and more active one.) Also @kgurchiek https://github.com/kgurchiek , make the field drain energy proportionally based on the mass and speed of the mob coming to you (kinda like the basic field draining energy based on the mass of blocks and your output of it).
— Reply to this email directly, view it on GitHub https://github.com/landgreen/n-gon/issues/216#issuecomment-2075531234, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHEAKNHY2JBCWCHAZKK6UTDY67XRBAVCNFSM6AAAAABGTQMKL6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZVGUZTCMRTGQ . You are receiving this because you were mentioned.Message ID: @.***>
@AnnonymousNerd87 That's wild. Same here, but on CKA.
I have always had this quest for the holy grail, the one, the universal @.***, but ever since reading Cory Doctorow that quest has been burning with a vengeance. If you haven't read Little Brother yet I would highly recommend it to anyone in the open source community.
On Wed, Apr 24, 2024 at 11:10 AM Drag0n_A13x @.***> wrote:
@AnnonymousNerd87 https://github.com/AnnonymousNerd87 That's wild. Same here, but on CKA.
— Reply to this email directly, view it on GitHub https://github.com/landgreen/n-gon/issues/216#issuecomment-2075544447, or unsubscribe https://github.com/notifications/unsubscribe-auth/BHEAKNHKISVMYVRE5WXLYWLY67YPTAVCNFSM6AAAAABGTQMKL6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZVGU2DINBUG4 . You are receiving this because you were mentioned.Message ID: @.***>
Are you considering the slowing mechanism @landgreen (the webm and code @kgurchiek made)?
I considered it.
Basically, add a standing wave upgrade that slows all projectiles and lasers by dividing their speed by half every 100 milliseconds until they slow to a complete stop. Also, allow m to make mobs go splat if pushed against the standing wave and a wall/barrier.
Edit 1: Small radius but is extremely overpowered in terms of stopping projectiles and mobs (let's nerf it a little to allow laser and explosions). Also mobs take damage if pressed against the barrier (standing wave upgraded) and a wall.
Edit 2: Name: Gojo's Wave Type: Upgrade (Tech) (requires standing wave, not surface plasmons, spherical harmonics, expansion) Link: https://jujutsu-kaisen.fandom.com/wiki/Limitless#Neutral_Limitless:_Infinity Images:
Effects: Pros