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

Golem enhancements #8553

Open
wants to merge 31 commits into
base: master
Choose a base branch
from

Conversation

VmpOS2NHSkhkejA9
Copy link
Contributor

@VmpOS2NHSkhkejA9 VmpOS2NHSkhkejA9 commented Feb 11, 2025

About The Pull Request

psa: if I say difficulty or level I mean seismic level.

This PR reworks golems, making them more unique, making their AI far more lethal and adjusting spawns to complement both a more controlled learning curve for new players and making higher difficulties signifigantly harder.

Improve, replace and add golem types:

Level 1:

Coal and iron golems. They're mostly unchanged from before.

Level 2:

Silver golems: ranged enemies that fire stun bolts.

Level 3:

Platinum golems: A melee enemy that charges at players for a high damage attack unless dodged.
Uranium golems: Mostly unchanged from before. They heal nearby golems as before, but now they will also try to follow targets at a distance without themselves attacking.

Level 4:

Coal golems are replaced by graphite golems: They grab players instead of dealing damage normally, locking them in place for other golems to deal a killing blow.
Plasma golems: Suicide bombers. They can no longer be defused, and will begin detonating on their own if they enter melee range.

Level 5:

Gold golems: Ranged lethal golems, they spawn spikes under their target, which will damage non-golems standing on them if they don't move out of the way quickly enough.
Silver golems replaced by ancient silver golems: They retreat if their target gets too close, making them harder to kill with a single melee attack.

gold golems are a reference to something...

Level 6:

Diamond golems: Unchanged. Very high health tanks.
Ansible golems: Mostly the same as before, except they'll maintain a distance away from their target, fleeing if too close.

Rework golem spawns to be weighted and follow a few difficulty-dependent rules:

  • Spawns are weighted based on the difficulty, with higher difficulties introducing different types and replacing easier enemy types with tougher variants of themselves, ie, coal golem -> graphite golem at difficulty 4
  • Golems spawn in groups of 3, 4 or 5 depending on the difficulty

Signifigant golem AI improvements:

  • Golems have had their view range increased by 1, making it signifigantly more difficult to pick them off from the edge of your view. Barring diagonals: if you can see them, they can see you.
  • Golems will share their target with their group - if one spots you, all of the ones nearby will. You cannot fight golems one-by-one.

I hope this PR can see some player testing before a full merge; it's not really possible for me to balance higher difficulties alone when they're designed to be impossible alone.

Why It's Good For The Game

Mining is boring and repetitive. By diversifying enemies and making them unique, mining may even become fun again. It's also really easy? This should make it wayyyy tougher. Difficulties mean nothing if you can take on max difficulty with your starting equipment and an inkling of practice.

Testing

Individually tested golems on the ship by spawning them and testing their behaviour. All of them work individually in a vacuum, and the AI improvements work with groups.
I confirmed golems spawn properly in caves, in the groups they are expected to spawn in with proper spacing between spawns.
I tried to test them in the wild, by playing some miner and doing a seismic level 2 cave. This failed, miserably. I cannot test gameplay currently because it's too hard for me.

Hell.1.-.Trim.mp4

(please ignore the bgm I don't know how to edit it out)

Changelog

🆑
add: Gold golems; lethal ranged enemies that summon spikes under their target
balance: massive difficulty increase for cave mining; Spawns have been reworked to spawn golems in groups with types dependent on seismic level. Additionally, new types have been added, some have been reworked and their AI has been tuned up to let them see further and attack in coordinated groups, making it far more difficult to pick them off alone.
imageadd: added icons for gold golem spikes
code: Basic grab functionality for superior animals; their AI still isn't set to do this, so it must be trigged externally by each mob that intends to grab.
/:cl:

@VmpOS2NHSkhkejA9 VmpOS2NHSkhkejA9 marked this pull request as draft February 11, 2025 00:22
@VmpOS2NHSkhkejA9
Copy link
Contributor Author

there is also a handful of code changes affecting grabs and superior animals that I needed to make to make some of this possible (mostly the enhanced coal golems honestly) so I'm praying for no merge conflicts

Wrill added 8 commits February 11, 2025 00:32
limited CPU and its consequences on the human race
it knocks players out in only a few shots- it's disproportionately strong for the level it's introduced at.
@VmpOS2NHSkhkejA9 VmpOS2NHSkhkejA9 marked this pull request as ready for review February 12, 2025 14:13
@VmpOS2NHSkhkejA9
Copy link
Contributor Author

This is in a functional state now, and works as intended. The balance in seismic levels 4, 5 and 6 are untested; I can't test a difficulty alone if that difficulty is designed to be near impossible. Hopefully this can end up on the test server for a bit before merge.

Copy link
Contributor

@TheShown911 TheShown911 left a comment

Choose a reason for hiding this comment

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

Probably good, should be tested


var/list/mob/living/carbon/superior_animal/golem/golems_to_spawn = list()

switch(seismic_lvl)
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it would be simpler and easier to balance to have a dictionary of golem weights for each seismic level instead of this messy switch with a lot of ternary statements but i guess it works


// OneStar patrol borg that defends OneStar facilities
GLOBAL_LIST_EMPTY(all_golems) // golems check this list to loop over allies
GLOBAL_LIST_EMPTY(active_golems) // smaller list that only contains golems with a current target mob
Copy link
Contributor

Choose a reason for hiding this comment

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

We can make a golem SS for this :mitosis:

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have no idea how subsystems work

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.

2 participants