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

Make mini ebow more fun #912

Closed
wants to merge 96 commits into from
Closed

Make mini ebow more fun #912

wants to merge 96 commits into from

Conversation

Aviu00
Copy link
Contributor

@Aviu00 Aviu00 commented Nov 20, 2024

About the PR

Mini ebow now knocks down targets and makes them always drop items on hit, it also blurs vision for 10 seconds. It's basically a port of this. Also ebow projectiles are now pierce through glass and get reflected properly by energy reflectors since they are energy projectiles. Raised projectile damage to 15 heat. Removed ebow from nukies because ebow is canonically a traitor item and nukies should not have weapons that shoot through glass. Also removed stamina damage from ebow.

Why / Balance

Right now ebow is just boring. It deals stamina damage, which makes it another form of disabler. By making it knockdown and disarm enemies, it is now more suitable for combinations with other weapons such as esword. Removed multishot component from it because it is better to swap hands and shoot both ebows manually to disarm the target more frequently.

Technical details

Media

2024-11-20.20-45-25.mp4

Requirements

Breaking changes

Changelog

🆑 Aviu

  • add: Mini energy crossbow now deals no stamina damage. Instead it knocks down target, forces them to drop items they are holding and blurs vision for 10 seconds. It is now much quieter.
  • add: Mini energy crossbow projectiles now pierce through glass, they also can be reflected by energy reflectors. Damage increased: 10 -> 15.
  • remove: Removed mini ebow from nukie uplink.

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced the BlurOnCollideComponent and KnockdownOnCollideComponent for enhanced collision interactions.
    • Added a new status effect called "BlurryVision" to impact player visibility.
    • Enhanced projectile functionality with new components and increased damage values.
    • New items added to the uplink catalog, improving gameplay options.
  • Improvements

    • Updated default values for Magnitude and CorrectionPower in the BlurryVisionComponent.
    • Modified weapon properties and conditions in the uplink catalog to refine purchasing logic.
    • Enhanced error handling and mind management in the GhostBar system.
  • Bug Fixes

    • Adjusted damage types and properties for various projectile entities to ensure balanced gameplay.

Copy link
Contributor

coderabbitai bot commented Nov 20, 2024

Important

Review skipped

More than 25% of the files skipped due to max files limit. The review is being skipped to prevent a low-quality review.

185 files out of 275 files are above the max files limit of 75. Please upgrade to Pro plan to get higher limits.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

The pull request introduces several new components and systems related to visual and physical effects upon collision in the game. The BlurryVisionComponent has been updated with default values, while new components like BlurOnCollideComponent and KnockdownOnCollideComponent have been added. Corresponding systems, BlurOnCollideSystem and KnockdownOnCollideSystem, manage the application of these effects during gameplay. Additionally, modifications to weapon and projectile configurations enhance their functionality, and a new status effect, "BlurryVision," has been defined. OwO

Changes

File Path Change Summary
Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs Updated Magnitude to public float Magnitude = 4f; and CorrectionPower to public float CorrectionPower = 2f;.
Content.Shared/_White/Blur/BlurOnCollideComponent.cs Added new component BlurOnCollideComponent with public float BlurTime = 5f;.
Content.Shared/_White/Blur/BlurOnCollideSystem.cs Introduced BlurOnCollideSystem class with methods for handling collisions and applying BlurryVisionComponent effects.
Content.Shared/_White/Knockdown/KnockdownOnCollideComponent.cs Added new component KnockdownOnCollideComponent with a public field Behavior initialized to DropHeldItemsBehavior.NoDrop.
Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs Introduced KnockdownOnCollideSystem class with methods for handling knockdown effects upon collisions.
Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml Added multiple new listings and conditions for items in the uplink catalog, including UplinkMiniatureEnergyCrossbow and UplinkMindcontrolImplanter.
Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml Modified Miniature Energy Crossbow properties and removed Multishot component. Updated properties for EG-4 energy revolver.
Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml Increased damage for BulletMic and added new components like KnockdownOnCollide and BlurOnCollide. Updated BulletPlasmaCutterStrong damage values.
Resources/Prototypes/_Goobstation/status_effects.yml Added new status effect BlurryVision with alwaysAllowed: true.
Content.Server/Entry/EntryPoint.cs Added initialization for ServerCurrencyManager in the Init method.
Content.Server/_Goobstation/Ghostbar/GhostBarSystem.cs Enhanced SpawnPlayer method with additional checks for player's mind status and objectives.
Content.Server/_Goobstation/ServerCurrency/ServerCurrencyManager.cs Updated warning messages in SetBalance and GetBalance methods for clarity in logging.

Possibly related PRs

Suggested labels

Changes: UI, Changes: Sprites, Status: Needs Review

Suggested reviewers

  • Piras314
  • Aidenkrz

OwO In the land of code, where changes abound,
New components and systems are joyfully found!
With blurry visions and knockdowns galore,
Gameplay's enriched, oh what fun to explore!
So let’s pounce on these changes, give them a cheer,
For in this furry world, adventure is near! ✨🐾


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@a-person5660
Copy link
Contributor

10 seconds feels like too long but this is a good change imo. Heat damage doesn't need to go up since its whole thing is stamina damage.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🧹 Outside diff range and nitpick comments (13)
Content.Shared/_White/Blur/BlurOnCollideComponent.cs (2)

4-8: OwO notices your component needs some validation nuzzles

Pounces on the code The component wooks good but we should add some validation to make suwe the BlurTime isn't negative! >w<

Here's a suggesty-westion:

public sealed partial class BlurOnCollideComponent : Component
{
    [DataField]
-   public float BlurTime = 10f;
+   private float _blurTime = 10f;
+   
+   [DataField]
+   public float BlurTime
+   {
+       get => _blurTime;
+       set => _blurTime = Math.Max(0f, value);
+   }
}

4-4: Notices your missing documentation OwO what's this?

Glomps the code We should add some XML documentation to make it more professional-wofessional! >w<

Here's what we could add:

+/// <summary>
+/// Component that applies a blur effect when this entity collides with another entity.
+/// </summary>
public sealed partial class BlurOnCollideComponent : Component
Content.Shared/_White/Knockdown/KnockdownOnCollideComponent.cs (1)

6-10: OwO notices your new component! pounces on the code

The implementation wooks good! nuzzles the code But could use some XML documentation fow future devewopews! >w<

Hewe's a suggestion to make it even bettew! wags tail excitedly

+/// <summary>
+/// Component that handles knockdown behavior when entities collide.
+/// </summary>
 public sealed partial class KnockdownOnCollideComponent : Component
 {
+    /// <summary>
+    /// Determines whether held items should be dropped when knockdown occurs.
+    /// </summary>
     [DataField]
     public DropHeldItemsBehavior Behavior = DropHeldItemsBehavior.NoDrop;
 }
Resources/Prototypes/_Goobstation/status_effects.yml (1)

17-19: OwO notices your new status effect! pounces excitedly

The BlurryVision effect looks purrfectly formatted! nuzzles the code But maybe we should add some documentation like the Vulgarity effect has? >w<

Here's a suggestion wags tail:

 - type: statusEffect
   id: BlurryVision
   alwaysAllowed: true
+  # Added as part of mini ebow rework
+  # Applies a visual blur effect to entities
Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs (1)

7-10: *Pounces on your dependency injection* Hewwo! Need moar null checks!

The dependency injection looks good but we should add a null check in the constructor just to be extra safe! wiggles whiskers

Here's a suggested implementation:

[Dependency] private readonly SharedLayingDownSystem _layingDown = default!;

+public KnockdownOnCollideSystem(SharedLayingDownSystem layingDown)
+{
+    _layingDown = layingDown ?? throw new ArgumentNullException(nameof(layingDown));
+}
Content.Shared/_White/Blur/BlurOnCollideSystem.cs (2)

20-28: Rawr x3 notices your event handlers

The handlers are concise but might need some additional validation! wiggles whiskers thoughtfully

Consider adding these safety checks:

 private void OnEntityHit(Entity<BlurOnCollideComponent> ent, ref ThrowDoHitEvent args)
 {
+    if (!args.Target.Valid)
+        return;
     ApplyEffects(args.Target, ent.Comp);
 }

1-37: *nuzzles your architecture* Your system design is pawsome!

The system aligns well with the PR objectives for the mini ebow changes! However, here are some architectural considerations:

  1. The system could benefit from an interface for status effect application
  2. Consider adding an event for when blur effects are applied for other systems to react to
  3. The hardcoded "BlurryVision" string could be moved to a constants file

purrs contentedly at the clean implementation

Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml (1)

*wiggles whiskers thoughtfully* Hewwo! These changes awe indeed out of scope! >w<

paws at the code curiously After sniffing awound the codebase, I can see that the BulletPlasmaCutterStrong is used by the Plasma Rifle, which is a completely diffewent weapon than the mini ebow! The changes to increase heat damage and structural damage seem unrelated to the PR's goal of modifying the mini ebow. flicks tail decisively

  • The Plasma Rifle in battery_guns.yml uses BulletPlasmaCutterStrong
  • The regular Plasma Cutter uses the normal BulletPlasmaCutter
  • Neither of these are related to the Miniature Energy Crossbow changes! owo

nuzzles the code These modifications should be in their own separate PR for better organization and review! *purrs helpfully*

🔗 Analysis chain

Line range hint 83-92: *confused head tilt* Notices unrelated changes!

boops the code gently UwU what's this? The changes to BulletPlasmaCutterStrong seem unrelated to the mini ebow modifications described in the PR! Should these modifications be in a separate PR? nervous tail swish

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if these changes are mentioned elsewhere
rg -l "BulletPlasmaCutterStrong" --type yaml

Length of output: 225


Script:

#!/bin/bash
# Let's check the battery_guns.yml to see if these changes are related
cat Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml

Length of output: 3772


Script:

#!/bin/bash
# Let's also check the PR description or commit messages for context
git log -p --grep="plasma" -i

Length of output: 0


Script:

#!/bin/bash
# And check for any related changes in the PR
rg "plasma.*cutter" -i

Length of output: 2217


Script:

#!/bin/bash
# Let's check the plasma cutter file to understand the weapon system better
cat Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Basic/plasma_cutter.yml

Length of output: 1021


Script:

#!/bin/bash
# Let's also check if there are any recent changes to these files
git diff --name-only HEAD~1 | grep -i "plasma"

Length of output: 46

Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml (2)

Line range hint 1-82: Rawr x3 notices your missing item drop functionality

OwO what's this? The PR mentioned making targets drop their items on impact, but I don't see any component for that! wiggles tail excitedly

Here's what we need to add:

+ - type: DropItemOnCollide
+   probability: 1.0

Line range hint 1-82: *Paws at the missing Multishot component*

Hewwo! I see you removed the Multishot component as mentioned in the PR! That's good! nuzzles approvingly But we should document this change in the description UwU

  description: The syndicate's energy crossbow, small, silent and deadly.
+ # Note: Multishot removed to encourage manual dual-wielding for more tactical gameplay
Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml (3)

Line range hint 126-141: *notices your clown-specific items* glomps the code

Hewo! The gwue and wube gwenade restrictions to Clown/Mime are purrfect for role-specific gear! However... tilts head curiously the prices seem quite different (14 TC vs 5 TC). Should they be more similar since they're both movement-affecting grenades? >w<

Consider normalizing the prices or documenting the reason for the large difference in the comments~


Line range hint 183-195: *paws at the mindcontwol implant* rawr x3

The comment about nukies having "too much TC" should be spelled correctly for better code quality! adjusts glasses professionally

-      # i guess we dont let nukies have this, they have to mutch TC
+      # We don't let nukies have this since they have too much TC

Line range hint 1-205: *notices your whole file* Time for a big snuggle review!

A few overall observations about the catalog structure:

  1. Some items are missing icons while others have them defined sad face
  2. Some descriptions use translation keys (uplink-*-desc) while others are hardcoded confused tail swish
  3. The TC costs could use more explanatory comments like the hardsuit ones have!

Consider:

  • Adding a style guide for consistent icon definitions
  • Moving all descriptions to translation files
  • Adding pricing justification comments for balance purposes

nuzzles the code one last time

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 83dd4de and b14d5bb.

📒 Files selected for processing (9)
  • Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs (1 hunks)
  • Content.Shared/_White/Blur/BlurOnCollideComponent.cs (1 hunks)
  • Content.Shared/_White/Blur/BlurOnCollideSystem.cs (1 hunks)
  • Content.Shared/_White/Knockdown/KnockdownOnCollideComponent.cs (1 hunks)
  • Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs (1 hunks)
  • Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml (1 hunks)
  • Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml (1 hunks)
  • Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml (1 hunks)
  • Resources/Prototypes/_Goobstation/status_effects.yml (1 hunks)
🔇 Additional comments (13)
Content.Shared/_White/Blur/BlurOnCollideComponent.cs (1)

6-7: Your DataField looks pawfect! wags tail

The default value of 10 seconds matches the PR requirements! Good job! gives headpats

Resources/Prototypes/_Goobstation/status_effects.yml (1)

17-19: perks ears Let's verify the blur systems! OwO

bounces around excitedly We should make sure all the blur components are working together properly!

paws at keyboard Running this script:

✅ Verification successful

*pounces excitedly* Yay! The blurry vision system is fully implemented and working! >w<

*nuzzles the code* The BlurryVision status effect is properly integrated with:

  • A component that handles magnitude and networking uwu
  • A shared system that handles vision correction through glasses :3
  • A client-side system with proper overlay management *wags tail*
  • A fully implemented shader-based overlay for the visual effects >w<
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for related blur components and systems
# UwU let's find all the blur-related files!

echo "*sniffs for blur components*"
rg -l "BlurryVision|BlurOnCollide|BlurTime"

echo "*investigates blur systems integration*"
ast-grep --pattern 'class $BLUR_CLASS { 
  $$$
  BlurryVision
  $$$
}'

Length of output: 1002


Script:

#!/bin/bash
# *wiggles whiskers* Let's check the implementation of our blur systems! >w<

echo "*sniffs the BlurryVision component implementation*"
rg -A 10 "BlurryVisionComponent" Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs

echo "*investigates the BlurryVision system implementation* OwO"
rg -A 15 "class BlurryVisionSystem" Content.Shared/Eye/Blinding/Systems/BlurryVisionSystem.cs

echo "*peeks at the client-side implementation* *tail swishes*"
rg -A 15 "class BlurryVisionSystem" Content.Client/Eye/Blinding/BlurryVisionSystem.cs

echo "*examines the overlay implementation* >w<"
rg -A 15 "class BlurryVisionOverlay" Content.Client/Eye/Blinding/BlurryVisionOverlay.cs

Length of output: 3487

Content.Shared/Eye/Blinding/Components/BlurryVisionComponent.cs (2)

24-24: *glomps the CorrectionPower value* Purrfect match! >w<

The default CorrectionPower matches the DefaultCorrectionPower constant of 2f! wags tail excitedly


18-18: OwO notices your Magnitude value! pounces on the code

The default Magnitude of 4f seems within bounds (MaxMagnitude is 6f), but wet's make suwe it's not too stwong~ nuzzles the PR objectives

✅ Verification successful

*nuzzles the code* Youw Magnitude is purrfectly fine! uwu

The default Magnitude of 4f is just wight! wags tail excitedly It's below the MaxMagnitude of 6f defined in the same file, and the BlurryVisionOverlay handles it nicely with proper scaling~ happy bounces

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if this magnitude value is consistent across blur effects
rg -g '!*.{md,txt}' --type-add 'yaml:*.yml' -t yaml 'magnitude.*4' 

Length of output: 68


Script:

#!/bin/bash
# Let's search for MaxMagnitude constant and other blur-related magnitude values
ast-grep --pattern 'const float MaxMagnitude = $_'

# Also search for any other magnitude-related constants or fields
rg -g '!*.{md,txt}' '(float|const).*[Mm]agnitude'

Length of output: 684

Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs (3)

1-5: OwO Noticed your imports are purrfectly organized! nuzzles

The namespace organization and imports are clean and well-structured! wags tail excitedly


19-28: *Glomps your event handlers* These are so smol and cute!

The event handlers are nicely focused and follow the Single Responsibility Principle! happy tail swishes


1-33: *Bounces around excitedly* Verify the knockdown behavior with other systems!

We should make sure this plays nicely with other status effects! wiggles nose curiously

✅ Verification successful

*Wags tail excitedly* The knockdown system is pawfectly integrated! OwO

After sniffing around the codebase, I can confirm that the KnockdownOnCollideSystem works harmoniously with other status effects! nuzzles code Here's why:

  • The SharedLayingDownSystem properly handles knockdown states and coordinates with other systems through events
  • The SharedStunSystem has explicit integration with LayingDownSystem and handles all the status effect interactions
  • There's proper coordination between standing/lying states and other status effects like stuns

The system properly drops items based on behavior settings and respects mob states too! *happy tail swishes*

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential conflicts with other status effect systems
ast-grep --pattern 'class $_ : EntitySystem
{
  $$$
  TryLieDown($_) {
    $$$
  }
  $$$
}'

# Look for other systems that might interfere with knockdown
rg -l "LayingDownSystem|StatusEffectSystem" 

Length of output: 403


Script:

#!/bin/bash
# Let's check the SharedLayingDownSystem implementation! *wiggles whiskers*
cat Content.Shared/_White/Standing/SharedLayingDownSystem.cs

# And peek at the stun system too! *twitches ears curiously*
cat Content.Shared/Stunnable/SharedStunSystem.cs

Length of output: 18775

Content.Shared/_White/Blur/BlurOnCollideSystem.cs (3)

1-6: OwO notices your imports are purrfectly organized! nuzzles

The imports are clean and relevant to the functionality. You've included all the necessary namespaces for projectiles, status effects, and throwing mechanics! wags tail excitedly


8-10: *pounces on your dependency injection* Hewwo there!

The dependency injection for StatusEffectsSystem is properly marked as non-null with default!, which is super duper important for type safety! noms carefully


12-18: OwO What's this? A wittle initialization method! boops

The event subscriptions are properly set up, but we should consider adding error handling for edge cases! adjusts programming glasses carefully

paws at keyboard Let's check if these events are properly handled elsewhere:

✅ Verification successful

OwO Looks wike evewything is in owdew! nuzzles code

The event handlers for both ProjectileHitEvent and ThrowDoHitEvent are properly implemented in BlurOnCollideSystem.cs, following the same pattern as other similar systems in the codebase. Each event is handled by its respective method that calls ApplyEffects(), which is consistent with the established pattern across multiple systems like KnockdownOnCollideSystem, StaminaSystem, etc.

The error handling is actually built into the event system itself, and the implementation follows the same robust pattern used throughout the codebase. wags tail happily

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for proper event handling
rg -A 5 "ProjectileHitEvent|ThrowDoHitEvent" --type cs

Length of output: 21179

Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml (1)

16-16: OwO notices your damage buff!

nuzzles the code The heat damage increase fwom 10 to 15 matches the PR objectives! wags tail excitedly

Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml (2)

69-73: OwO notices your nukie restrictions! pounces on the code

The bwackwisting of the mini eboww fwom the nukie upwink is purrfectly aligned with the PR objectives! nuzzles the code


Line range hint 89-94: *notices your hawdsuit pwicing* What's this??

The Syndiemedic hawdsuit is mawked as a "novelty item for the larp" but the pwicing (55 TC) seems a bit low compared to other hawdsuits! boops the price tag nervously

Consider increasing the price to maintain balance with other hardsuits uwu~

@lanse12
Copy link
Contributor

lanse12 commented Nov 20, 2024

ss13 accurate ebow

@Aidenkrz
Copy link
Contributor

knocks down targets and makes them always drop items on hit, it also blurs vision for 10 seconds

this sounds OP as fuck

@Aviu00
Copy link
Contributor Author

Aviu00 commented Nov 20, 2024

knocks down targets and makes them always drop items on hit, it also blurs vision for 10 seconds

this sounds OP as fuck

I'll decrease its firerate later then

@Aidenkrz
Copy link
Contributor

Remove the knocking down and dropping items. Stun damage already does that, just have it blur vision for 5 seconds.

@Aviu00
Copy link
Contributor Author

Aviu00 commented Nov 20, 2024

Remove the knocking down and dropping items. Stun damage already does that, just have it blur vision for 5 seconds.

I removed stun damage. Can add it later, I'm just working on another thing right now. Can also make it knockdown but never drop items.

@Aviu00 Aviu00 marked this pull request as draft November 20, 2024 22:34
@lanse12
Copy link
Contributor

lanse12 commented Nov 20, 2024

knockdown and blur vision for 5 seconds would be nice as it's like that on 13 and makes it viable with esword

@whateverusername0
Copy link
Contributor

whateverusername0 commented Nov 22, 2024

make the cooldown a bit higher, like 6-7 seconds so that vision blur would pass by the time it recharged to give the other side somewhat of a chance to act.
keep the 5 second vision blur but lower the knockdown time to 3-4 seconds again to give the opposite side somewhat of a chance and avoid stunlocks.

overall looks good gj pro :godmode:

@Aviu00 Aviu00 mentioned this pull request Nov 24, 2024
2 tasks
@Aviu00 Aviu00 marked this pull request as ready for review November 27, 2024 14:45
@Aviu00
Copy link
Contributor Author

Aviu00 commented Nov 27, 2024

Reduced its fire rate and made it drop items only if the person is standing. Also brought back multishot so it's usable with pistols. Reduced blur time to 5 seconds.

Aidenkrz and others added 15 commits November 27, 2024 17:49
* Update applicable heal values

* Reduced Healing Item DoAfter Delay from 3s to 2s

* Advanced brute meds were a bit overtuned. Buffed bloodpack bloodloss heal amount.

* Buff max stack amount for applicables and prices accordingly.

* Stack amounts were overtuned, reduced down to 15 max stack. Increased caustic healing on ointment.

* Slight buffs to burn chems, brute chems, and dylovene.

* Reduced bloodpack heal amount, was overtuned.
…-Station#911)

* Add gasp and deathgasp collections to species missing them, split harpy genders

* Added distinct harpy genders to vocal component
* Fix hijack

* Reenable hijack

* Revert "remove evac shuttle emag lmao (#21657)"

This reverts commit 509d269.

* Ok rabbit

* Add comments
* Added...uhh, what was it? Oh right, Dementia

* Fixed prefixes and suffixes

* Revert "Fixed prefixes and suffixes"

This reverts commit dfdf385.

* Fixed issues

* Revert "Fixed issues"

This reverts commit ad788c7.

* Fixed Issues
whateverusername0 and others added 22 commits November 27, 2024 17:49
* i got that dawg in me

* dasasdsaddas

* jhkhkjj

* my lazy ass is not doing the rest

* finally.

* finally.

* jesus christ 1

* help me

* jesus christ 2

* UAAAAWHGHHGG BUABHAUBHAUBHHGH

* jesus christ 3

* sdfjsdkghjdfkljbhsfuobd

* 1984

* ash lore update

* THE CURSE OF 220

* ultra violencce

* fart

* fdgfdgbfdbf

* fgbdfgndfgn

* it's raw propheting time

* blbkblbkglbgkbgbgbgdfbfgbbb AAAAAAAAAAAAAAAAAAAAAAAAA

* fdbfsgbybdf

* bkbgkblkgbgbngfkb

* void path part 1

* REAL!!!!!!

* it is working

* ok looks good to me

* random influence spawn

* hey shitass, wanna see me bypass yaml linter?

* RAAAAAAAAAAGH

* dghgdfbsfdgbsdf

* dfvsfvavsd

* help

* help

* bbnvbnvmvbnmvbnmvbn

* guiedbook

* fhfdsghfgdhdfgh

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* please

* fucking
die

* vlkblvkbbgjhjfbhnbkvbnf A

* i am malding

* 6666 lines

* FUCK

* GOD SAVE MY SOUL!!

* revert store shitassery

* dfvdfgdf

* Reapply "Uplink discounts (Goob-Station#580)"

This reverts commit 55540db.

* more uplink shittery revert

* FUCK

* based

* dvsfv

* dghfgghfgh

* blnkbnbknlbnklb

* :finnadie:

* finally. :finnadie:

* yeah

* bnbnmbvnm

* vblknknvblnkvblknklvbn

* fuck

* gaming

* bnkb,nkvbnklvbknvb

* final fixez

* I AM GOING TO KILL MYSELF

* finally

* yay guidebook

* ugh

* fuck

* fuck

* bruh.

* guidebook

* bruh

* source

* f-

* n lvjbl nvb;nkvb;lnkvl;bn

* GACK

* WHAT

* g

* gaming 2

* gaming 2

* docks

* attribushions

* balls

* blade path cooking up...

* more placeholders and shit

* L

* more placeholders holy shit!!!

* W

* W2

* LMAOOOOOOOOO

* huh?

* fix checks, probably

* W?

* f

* POWAH!!!

* ai faction lulz

---------

Co-authored-by: whateverusername0 <whateveremail>
Co-authored-by: Piras314 <[email protected]>
* Hardlight bow traitor item

* Blacklist from nukies.

* Edit uplink catalog

* Balance.

* Nerf bees.

* Increase cost.

* Tweaks.

* Remove ChangeTemperatureOnHit.
* full fucking send

* ope forgot to remove the EE scripts

* fix test

* fix shitcode fail

* DELTA THAT VALUE IS NULLABLE

* whoopsie daysie

* fixed???

* chat is this real

* bugfixes

* more bugfixes

* goobmed
Co-authored-by: deltanedas <@deltanedas:kde.org>
* add ai obey law 0, make emag law -1, change emag law

* make AI ion stormable
* Knockdown alert & flashbang buff.

* Stun stuff.

* Reagents stuff.

* Tweaks.

* Add energy bola.

* Tweak disabler bolts.

* Smoke ingestion blocker.

* More tweaks.

* Fix.

* Add descriptions.

* Buff combat and merc boots.

* Redo autoinjector.

* Fix air tank.

* Increase use delay.

* Boot tweaks.
…e your ears bleed anymore (Goob-Station#976)

* Fix vehicles, some random mapping improvements, and jukebox don't make your ears bleed anymore

* Remove invalid from Kettle
@Aviu00
Copy link
Contributor Author

Aviu00 commented Nov 27, 2024

I fucked up

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (4)
Content.Server/_Goobstation/Ghostbar/GhostBarSystem.cs (1)

57-61: OwO What's this? notices your error message

The null check is super duper good for safety! But maybe we could make the warning message more helpful for future debugging? wags tail excitedly

-            Log.Warning($"Failed to find mind for player {player.Name}.");
+            Log.Warning($"Failed to find mind for player {player.Name} during ghost bar spawn attempt. Player session: {player.SessionId}");
Content.Server/_Goobstation/ServerCurrency/ServerCurrencyManager.cs (2)

153-153: OwO Verify the logging output format nuzzles

pounces on the code I noticed you changed the userId logging format! While using ToString() works, we should make suwe it pwovides enough debugging infowmation~ Consider using structured logging instead!

Here's a suggestion that would make the logs even more helpful wags tail:

-_sawmill.Warning($"Attempted to set balance, which was not loaded for player {userId.ToString()}");
+_sawmill.Warning("Attempted to set balance for unloaded player data. Player: {UserId}", userId);

176-176: UwU Same logging change needed hewe too! glomps

notices your code For consistency with the previous change, we should update this warning message too! >w<

Here's the matching change nuzzles the code:

-_sawmill.Warning($"Attempted to get balance, which was not loaded for player {userId.ToString()}");
+_sawmill.Warning("Attempted to get balance for unloaded player data. Player: {UserId}", userId);
Content.Server/Entry/EntryPoint.cs (1)

116-116: *nuzzles the architecture* Good feature isolation!

Rawr x3 The Goobstation currency feature is nicely isolated! notices your clean architecture This makes it easier to maintain and modify without affecting other systems! OwO

Consider documenting the Goobstation feature's components in a README or wiki page for future developers! wags tail excitedly

🛑 Comments failed to post (1)
Content.Server/_Goobstation/Ghostbar/GhostBarSystem.cs (1)

100-103: ⚠️ Potential issue

*Pounces on a potential race condition* Rawr! We need to be careful here!

There's a potential race condition between checking the objectives and wiping the mind! nervous tail swishing If something modifies the mind between these operations, we might get unexpected behavior!

Here's a safer approach:

-        if (mind.Objectives.Count == 0)
-            _mindSystem.WipeMind(player);
-        mindId = _mindSystem.CreateMind(data.UserId, profile.Name).Owner;
-        _mindSystem.TransferTo(mindId, mobUid, true);
+        var currentMind = mind;
+        if (currentMind.Objectives.Count == 0)
+        {
+            _mindSystem.WipeMind(player);
+            mindId = _mindSystem.CreateMind(data.UserId, profile.Name).Owner;
+            _mindSystem.TransferTo(mindId, mobUid, true);
+        }
+        else
+        {
+            _mindSystem.TransferTo(mindId, mobUid, true);
+        }

Nuzzles the code This way we keep the mind's state consistent throughout the operation! UwU

Committable suggestion skipped: line range outside the PR's diff.

@Aviu00 Aviu00 mentioned this pull request Nov 27, 2024
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.