Skip to content

Conversation

@collectioncard
Copy link
Member

No description provided.

cornerloan and others added 30 commits March 23, 2025 00:21
Changed NoteHit in namespace to EnemyNoteHit, since that was what I implied it to be, and it wasn't being used anyway.

Added two relics:
Chips: deals damage when you hit enemy notes
Paper Cut: deals daamge each loop
New note type: shield, gives the player one charge of block
- Block now appears above the health bar when any puppet has charge(s).
- Block fully negates one source of damage and removes a charge.

New relic: Chips, deals one point of damage whenever the player hits any note (should be balanced later)
Singleton instance with new eventargs classes to better pass information where accessible for battle events
Could still use some tweaking and juice
Refactored split functions
Left selection array functions as distinct because those will need to be slightly different anyways
Added button group to Reward Select Descriptions change on focus change without setting _selection
-added relic "chips": deal damage when any note is hit

-added relic "paper cut": deal damage each loop

-added note "shield": gain 1 charge of block

-added block mechanic: currently the shield note type gives 1 charge of block (stacking), which fully negates 1 instance of damage
Added handling for multiple enemies in a fight
These changes can be made for a fight at the Config level
Enemies now will finish their damage animation before becoming invisible and signaling for death.
still need to redo GetRandomRelics() in scribe to account for rarities, might wait until more items implemented.
Added 4 new relics:
-Energy Drink: decreases max combo bar on pickup
- Bandage: heals player after each combat
- Medkit: heals player after each loop
- Vinyl record: all loop effects trigger twice (excluding vinyl record)
General Theme for typical buttons, and other major control nodes later
Display button for display buttons, for now load them as packed scenes
Settled on assets we'll use for now.
Updated all UI scenes

Co-Authored-By: Evelyn Fu (cwispibean) <91583791+efu6ucsc@users.noreply.github.com>
They now use the new selection cursor, and don't have the default Godot styling
Also they are correctly centered on their position now.
Font prefers 16 mult sizes
Title size -> override to 32
Mid size buttons -> override to 24
Adjusted margins, or added margin containers to some UI scenes to better adjust size changes from font size differences
Add Fibberish to README
For reference, CC0 1.0 Universal, but attributing is nice.
Scenes pause when controller is disconnected, or window is un focused.
This should mainly just consumer controller input
Also fix controller button attempting to grab focus when no controller is plugged in, and controller setting was last set.
This would be a good addition, just want to better incorporate it in eventually.
Ideally with a proposed status effect system.

Co-Authored-By: Connor Lowe <74088480+cornerloan@users.noreply.github.com>
LifeHckr and others added 14 commits April 16, 2025 17:42
Chips could cause error if triggered after all enemies die.
Its also really strong currently, increase its rarity
Make HP bars smaller to fit enemies
Add Energy Drink sprite
* Added rerolls

Added reroll functionality to rewardSelectionUI
Added applicable player stat
Added player stat for additional rewards

* Implement Relic rewards by rarity

Rework GetRandomRelics to get relics based on rarities and odds by rarity
Added RelicRarityPools
Added RarityOdds stat to player
New behavior explained in in-code documentation

* Added rarity outlines for relics
* user can remap controls using custom keys

issues being worked on still:
- UI is not attempting to look clean or good yet
- only one implementation, need to separate keyboard and controller into different tabs
- need to ensure no duplicate keys for mapped inputs
- remapping a key to the "accept" button causes the remapping popup to immediately reopen

* controller remapping added, anti-dupes maybe works?

I think the anti-duplicates works, but can use another set of eyes on it during our meeting on thursday.
Believed issue: I think that InputMap isn't properly updating when being ran through the editor. WASDE are always invalid notes to change to.

* no more duplicate controls

-still not pretty looking
-still can move around UI while inputting the new key selection

* remap popup disables UI movement

* everything works

- needs an appearance revamp
- should maybe allow user to remap inventory and pause key, since we disallow people to rebind to those keys

* updated to include inventory, merged milestone1

* appearance revamp

- ui cannot be maneuvered left and right in the tabs

* Updated translations

- still need to fix UI movement controls

* we hate spaghetti

- still can't figure out the UI maneuverability issue

* Add translations

Also adjusted control spacing to accommodate Chinese

* Refactored control settings

Fix neighbors in controls remapping
Made ui_cancel end the input screen
Simplified dictionaries and awkward reused strings
Added documentation
Standardized node names

* Beautify controls screen

Should def make custom tabs sooner than later.

---------

Co-authored-by: LifeHckr <jarodthereal@gmail.com>
* Status Effects Implemented

Refactored damage taking into DamageInstances
Added StatusEffect class
Added Block Status as an example

* Refactored targetting to include Player targetting

* Add Mulligan status effect

Allows the player to ignore the combo penalty of a missed note
* added 2 note types

- added debug button to refill energy, the number 9
- added echo note, deals increased damage with each loop
- added explosive note, deals damage to all enemies

* added poison note & status

* added translations

* Fix issue with note target type not getting cloned

---------

Co-authored-by: LifeHckr <jarodthereal@gmail.com>
* Added MapConfig Struct

* Reworked map systems to use configs

* Added handling for new areas

Important scenes' backgrounds change based on area.
Added a transitional scene between areas
MapConfigs set for each area
Ability to generate new map for new area.
Map in Cartographer to better show nearby map rooms.

* Cleanup for merge

* Standardized background changing

Created AreaBasedBackground class
* Start migration away from midi

* Remove midi library and other midi bits

* Remove midi references in docs

also change some arrays to collections format. Maybe that'll fix stuff?

* Remove bad UID from song maps
She says not to ever change this
Better tie in NPB values to playerstats
Added max combo multi
NoteToComboIncrease made a stat
Closes #109
* fixed menu losing focus with multiple inputs

* fixed same issue for inventory screen

* Simplify focus fix logic

Co-Authored-By: Connor Lowe <74088480+cornerloan@users.noreply.github.com>

---------

Co-authored-by: LifeHckr <jarodthereal@gmail.com>
Cherry picked from main
@collectioncard collectioncard added this to the Launch Milestone 1 milestone Apr 27, 2025
@coderabbitai
Copy link

coderabbitai bot commented Apr 27, 2025

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.

69 files out of 180 files are above the max files limit of 100. 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.

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this 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.

@collectioncard collectioncard requested a review from Copilot April 27, 2025 16:59
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR finalizes Milestone 1 by updating note management and resource loading to use song map files instead of MIDI files. Key changes include:

  • Updating the Note class to add a TargetType property and corresponding constructor parameter.
  • Modifying SongTemplate to replace MIDI-specific fields with song map and adjusted enemy scene path representations.
  • Introducing new resource classes (NoteInfo and NoteChart) and reworking MidiMaestro to load these resources.

Reviewed Changes

Copilot reviewed 301 out of 316 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Classes/Notes/Note.cs Added a TargetType property and updated the constructor, clone method, and added a new setter method.
Classes/MidiMaestro/SongTemplate.cs Replaced MIDI field(s) with song map related fields and modified the type of EnemyScenePath.
Classes/MidiMaestro/NoteInfo.cs Introduced a new resource class for storing note beat and length information.
Classes/MidiMaestro/NoteChart.cs Created a resource for managing note lanes with methods to add, remove, and reset note data.
Classes/MidiMaestro/MidiMaestro.cs Revised file loading to switch from a MIDI file to a song map resource, updating note retrieval accordingly.
Files not reviewed (15)
  • Audio/songMaps/Song1.tres: Language not supported
  • Audio/songMaps/Song2.tres: Language not supported
  • Audio/songMaps/Song3.tres: Language not supported
  • Classes/MidiMaestro/NoteChart.cs.uid: Language not supported
  • Classes/MidiMaestro/NoteInfo.cs.uid: Language not supported
  • Classes/Notes/Assets/Note_PlayerBlock.png.import: Language not supported
  • Classes/Notes/Assets/Note_PlayerEcho.png.import: Language not supported
  • Classes/Notes/Assets/Note_PlayerExplosive.png.import: Language not supported
  • Classes/Notes/Assets/Note_PlayerPoison.png.import: Language not supported
  • Classes/Relics/Assets/Relic_Bandage.png.import: Language not supported
  • Classes/Relics/Assets/Relic_Chips.png.import: Language not supported
  • Classes/Relics/Assets/Relic_EnergyDrink.png.import: Language not supported
  • Classes/Relics/Assets/Relic_Medkit.png.import: Language not supported
  • Classes/Relics/Assets/Relic_PaperCut.png.import: Language not supported
  • Classes/Relics/Assets/Relic_VinylRecord.png.import: Language not supported

public string Name { get; set; }
private int _baseVal;
public float CostModifier { get; private set; }
public Targetting TargetType { get; private set; }
Copy link

Copilot AI Apr 27, 2025

Choose a reason for hiding this comment

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

[nitpick] Consider verifying whether 'Targetting' is intentionally spelled with a double 't' or if 'Targeting' is preferred.

Suggested change
public Targetting TargetType { get; private set; }
public Targeting TargetType { get; private set; }

Copilot uses AI. Check for mistakes.
public void RemoveNote(ArrowType type, float beat)
{
if (beat == 0)
return; //All my homies hate beat 0
Copy link

Copilot AI Apr 27, 2025

Choose a reason for hiding this comment

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

[nitpick] Consider revising the comment language to maintain a professional tone.

Suggested change
return; //All my homies hate beat 0
return; // Beat 0 is reserved and cannot be modified.

Copilot uses AI. Check for mistakes.
{
if (beat == 0)
return; //All my homies hate beat 0
if (GetLane(type).Any(note => Math.Abs(note.Beat - beat) < Precision)) //Fuck it, traverse the whole array.
Copy link

Copilot AI Apr 27, 2025

Choose a reason for hiding this comment

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

[nitpick] Consider revising the comment to remove informal language for clarity and professionalism.

Suggested change
if (GetLane(type).Any(note => Math.Abs(note.Beat - beat) < Precision)) //Fuck it, traverse the whole array.
if (GetLane(type).Any(note => Math.Abs(note.Beat - beat) < Precision)) // Check if any note in the lane is close to the specified beat within the defined precision.

Copilot uses AI. Check for mistakes.
@LifeHckr LifeHckr self-requested a review April 27, 2025 22:00
Copy link
Contributor

@LifeHckr LifeHckr left a comment

Choose a reason for hiding this comment

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

Ready to groove

@LifeHckr LifeHckr merged commit 619060a into main Apr 27, 2025
2 checks passed
@LifeHckr LifeHckr deleted the Milestone1 branch April 27, 2025 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants