Skip to content

feature/invasion spawn table configuration#757

Open
eduardosmaniotto wants to merge 13 commits intoMUnique:masterfrom
eduardosmaniotto:feature/invasion-spawn-table
Open

feature/invasion spawn table configuration#757
eduardosmaniotto wants to merge 13 commits intoMUnique:masterfrom
eduardosmaniotto:feature/invasion-spawn-table

Conversation

@eduardosmaniotto
Copy link
Copy Markdown
Contributor

  1. Configurable spawn tables - Invasion monster spawns are no longer hardcoded. Admins can now configure which monsters spawn, on which maps, and how many via the admin panel.
  2. Two spawn strategies - Monsters can either spawn on a random map from a configured list, or on all configured maps simultaneously.
  3. Random spawn positions - Monsters spawn at random walkable coordinates instead of fixed coordinate ranges.
  4. Prevents overlapping events - Added check to ensure a new invasion doesn't start while the previous one is still running based on task duration.
  5. Better cleanup - Improved async monster cleanup to avoid issues with the previous event-based approach.

If you don't want to manually create default values, you can delete the plugin configuration and restart the server to recreate them:

DELETE FROM config."PlugInConfiguration" WHERE "TypeId" = '06D18A9E-2919-4C17-9DBC-6E4F7756495C';
DELETE FROM config."PlugInConfiguration" WHERE "TypeId" = '548A76CC-242C-441C-BC9D-6C22745A2D72';
DELETE FROM config."PlugInConfiguration" WHERE "TypeId" = '6542E452-9780-45B8-85AE-4036422E9A6E';

@eduardosmaniotto eduardosmaniotto marked this pull request as ready for review April 21, 2026 16:35
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the invasion event system to be data-driven rather than hardcoded. By introducing configurable spawn tables, admins gain granular control over monster spawns, map distribution, and spawn strategies. The changes also improve event reliability by adding duration-based overlap prevention and more robust cleanup mechanisms, while providing a new UI component for easier configuration management.

Highlights

  • Configurable Invasion Spawns: Invasion monster spawns are now fully configurable via the admin panel, removing hardcoded spawn logic.
  • Flexible Spawn Strategies: Added support for spawning monsters on a random map from a list or simultaneously across all configured maps.
  • Improved Spawn Logic: Monsters now spawn at random walkable coordinates, and event overlap is prevented through task duration checks.
  • UI Enhancements: Introduced a new admin panel component for managing invasion spawn tables, including map selection and coordinate configuration.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the invasion event system to support flexible monster spawn configurations, including random map selection and coordinate generation. Key improvements include O(1) random walkable point lookups in GameMapTerrain, a centralized configuration system for invasions, and enhanced state management to prevent overlapping events. The review feedback identifies a concurrency issue with the _cleanupHandlers list and suggests reordering the state reset logic to prevent stale data from triggering redundant messages or spawns when an event run is skipped.

Comment thread src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs Outdated
Comment thread src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs Outdated
Comment thread src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs
Comment thread src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs
Comment thread src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs
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.

1 participant