Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Boingo Glove #26052

Closed
wants to merge 11 commits into from
Closed

Conversation

brainfood1183
Copy link
Contributor

About the PR

Added - Boingo Glove
Added - GasPoweredThrowerComponent
Modified - MeleeSystemComponent
Added - boing.ogg

Boingo Glove is a pneumatic boxing glove that works similarly to the gorilla gauntlets except instead of requiring an anomaly core, it requires a gas canister(with gas inside). The Boingo Glove cannot move anomalies but can move items (and mobs). Boingo Glove does some stamina damage.

Technical details

GasPoweredThrowerComponent works similarly to the AnomalyCorePoweredThrowerComponent but instead of inserting an anomaly core it is requires a gas tank.

MeleeSystemComponent now has a bool which if true allows a melee attack to target an entity without the damageablecomponent.

Media

Desktop.2024.03.12.-.18.42.29.03.mp4
  • I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

🆑

  • add: Crew may now craft an improvised pneumatic boxing glove nicknamed a Boingo Glove.

@github-actions github-actions bot added the Changes: Sprites Should be reviewed or fixed by people who are knowledgeable with spriting or visual design. label Mar 12, 2024
Copy link
Contributor

github-actions bot commented Mar 12, 2024

RSI Diff Bot; head commit e6e655e merging into ef72d3c
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Weapons/Melee/boingo_glove.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added
tank Added

Edit: diff updated after e6e655e

@Tayrtahn
Copy link
Member

Not sure how I feel about it pushing anchored objects around.

Does it work on tables? Airlocks? Windows/walls?

@UbaserB
Copy link
Member

UbaserB commented Mar 12, 2024

I love this so much

@VektorZ1
Copy link

Boing

@SlamBamActionman
Copy link
Member

This is a funny item. It's also really strong.

It def shouldn't work for anchored objects, that just invites a whole new level of harassing every single department ever.

Considering how cheap and easy it is to craft, I'd have gone with a lowered max launch distance and # of uses per tank. Maybe 1 sec launch time instead of the default 3? And 6-8 uses instead of 14 (Gorilla has like 5 iirc)?

@VektorZ1
Copy link

Perhaps if doing a strong nerf, it might be worth adding advanced and admem versions

@brainfood1183
Copy link
Contributor Author

Not sure how I feel about it pushing anchored objects around.

Does it work on tables? Airlocks? Windows/walls?

doesnt work on any of those.

@brainfood1183
Copy link
Contributor Author

This is a funny item. It's also really strong.

It def shouldn't work for anchored objects, that just invites a whole new level of harassing every single department ever.

Considering how cheap and easy it is to craft, I'd have gone with a lowered max launch distance and # of uses per tank. Maybe 1 sec launch time instead of the default 3? And 6-8 uses instead of 14 (Gorilla has like 5 iirc)?

will take this into consideration when i look at balancing it based on feedback.

@lzk228
Copy link
Contributor

lzk228 commented Mar 12, 2024

lmao i love the sound
and i agree with Tayrtahn
it weird to push anchored objects

Copy link
Contributor

@metalgearsloth metalgearsloth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would I get a gorilla if this is trivial to make and mass produce.

Comment on lines +24 to +30

/// <summary>
/// If true attack will hit items.
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public bool HitItem = false;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be using events.

Comment on lines +70 to +82

private Entity<GasTankComponent>? GetGas(EntityUid uid)
{
if (!TryComp<GasPoweredThrowerComponent>(uid, out var gaspowered))
return null;

if (!Container.TryGetContainer(uid, gaspowered.TankSlotId, out var container) ||
container is not ContainerSlot slot || slot.ContainedEntity is not { } contained)
return null;

return TryComp<GasTankComponent>(contained, out var gasTank) ? (contained, gasTank) : null;
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You shouldn't be hardcoding a generic gas tank check to this system, just use an existing atmos method and if it doesn't exist then make it.

Comment on lines 38 to 70
}
private void OnAttemptMeleeThrowOnHit(Entity<GasPoweredThrowerComponent> ent, ref AttemptMeleeThrowOnHitEvent args)
{
var (uid, comp) = ent;

args.Cancelled = false;
args.Handled = true;

var gas = GetGas(ent);
if (gas == null && comp.GasUsage > 0f)
{
args.Cancelled = true;
return;
}

Audio.PlayPvs(comp.HitSound, uid, AudioParams.Default.WithVariation(0.025f).WithVolume(8f));

if (gas == null)
return;

var environment = _atmos.GetContainingMixture(ent, false, true);
var removed = _gasTank.RemoveAir(gas.Value, comp.GasUsage);
if (environment != null && removed != null)
{
_atmos.Merge(environment, removed);
}

if (gas.Value.Comp.Air.TotalMoles >= comp.GasUsage)
return;

_itemSlots.TryEject(uid, comp.TankSlotId, uid, out _);
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're doing a bunch of state changes in an attempt event; attempts should just be cancelling the melee hit or not and not actually changing anything.

You need to split this out into the other meleethrowonhit events.

Comment on lines +25 to +38

private void OnContainerInserting(EntityUid uid, GasPoweredThrowerComponent component, ContainerIsInsertingAttemptEvent args)
{
if (args.Container.ID != component.TankSlotId)
return;

if (!TryComp<GasTankComponent>(args.EntityUid, out var gas))
return;

if (gas.Air.TotalMoles >= component.GasUsage && component.GasUsage > 0f)
return;

args.Cancel();
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Silently mispredicting due to serverside code is really awful and should be providing feedback.

Comment on lines +33 to +36

if (gas.Air.TotalMoles >= component.GasUsage && component.GasUsage > 0f)
return;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this even supposed to block if the total moles in the tank is more than required for gas? That doesn't make sense to me?

Content.Server/Weapons/Melee/GasPoweredMeleeThrowSystem.cs Outdated Show resolved Hide resolved
@metalgearsloth metalgearsloth added the Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. label Mar 12, 2024
@brainfood1183
Copy link
Contributor Author

brainfood1183 commented Mar 13, 2024

Why would I get a gorilla if this is trivial to make and mass produce.

Gorilla is designed to move anomalies around, thats why its science equipment. Boingo Glove has no interaction with anomales.

@K-Dynamic
Copy link
Contributor

This is like 10x better than a force gun and craftable on roundstart ngl

Punching a syndiebomb away is both based and makes defusing/spacing bomb too easy

@deltanedas
Copy link
Contributor

it shouldnt work on anchored things

@CatMagic1
Copy link

make it do actual knockback instead of just like dragging things at a constant speed!!!!!!

i love it

@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Mar 14, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@brainfood1183
Copy link
Contributor Author

it shouldnt work on anchored things

Yea i think this should be the case. Will change it.

@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. label Mar 14, 2024
@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Mar 24, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. label Mar 24, 2024
@ThunderBear2006
Copy link
Contributor

The effect seems a little delayed, otherwise looks great lol

@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Mar 31, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. label Apr 1, 2024
@mirrorcult
Copy link
Contributor

this severely overlaps with the GORILLA and has a lot of dupe code with pneumatic cannon, i would rather see this as just a power fist item for traitors or something like ss13

@brainfood1183
Copy link
Contributor Author

this severely overlaps with the GORILLA and has a lot of dupe code with pneumatic cannon, i would rather see this as just a power fist item for traitors or something like ss13

this can be closed i think. Not really feasable to work on it.

@mirrorcult mirrorcult added the Feature Freeze: Closed from May 10 to June 14 This PR is still active, but will be closed from May 10 to June 14 as part of the feature freeze. label May 6, 2024
@Emisse
Copy link
Contributor

Emisse commented May 10, 2024

Closed due to feature freeze May 10th-June 14th. Comment to have it reopen after this.

@Emisse Emisse closed this May 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Sprites Should be reviewed or fixed by people who are knowledgeable with spriting or visual design. Feature Freeze: Closed from May 10 to June 14 This PR is still active, but will be closed from May 10 to June 14 as part of the feature freeze. Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.