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

Full cult gamemode refactor - Foundational work (runes, talismans, arcane tome) #9053

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

Conversation

Ilysen
Copy link
Contributor

@Ilysen Ilysen commented Mar 12, 2023

this was originally a project I mothballed. then I had an actual real life dream that I was a nar-sie cultist, though, and at that point it kind of became a legal requirement that I finish it

purpose

cult's code is among the oldest in the repo, and it shows. the amount of bugs and overhead is ludicrous for what it is, the code quality is in general pretty hideous, and the age shows abundantly. cult never really gets played, and I'm fairly sure that the bad code quality is a pretty big reason for why. even if it's just bringing it up to the same functionality as current (more or less), having the code be modernized paves the way for making it not suck or to have it be reworked.

the goal here is to ensure roughly full feature parity with the current code, barring deliberate adjustments and removals. although the code is being completely remade, having the gameplay start more or less the same seems like a good start towards potential feature updates in the future.

details

key front-end changes
  • Blood Boil rune removed (massive AoE damage with a chance to gib; not HRP-friendly)
  • Manifest Ghost rune removed (create hordes of invincible ghost-controlled humans; not HRP-friendly. could replace it with a Seance rune if the goal is to speak with the dead)
  • the Communicate rune now functions by relaying speech from adjacent cultists, instead of asking for a message. it can be muted/unmuted by invoking it
  • Drain Blood now actually drains blood (instead of just causing brute damage), and the weird half-made "blood hunger" mechanic has been removed
  • Armor rune now split into Armor and Weapon; the former just creates the robes, while the latter just creates the weapon. this was requested by Woodrat, to hopefully help dispel the mixed signals that come with getting a free deadly weapon with your robes
  • cult robes are now hooded; i.e. the hood is part of the robes and can be pushed up and down, rather than being a separate clothing item
  • arbitrary rune cap removed (although it could easily be reinstated for any reason)
  • the arcane tome now has nanoui, including in-game documentation
  • runes and talismans can now be examined to get a summary of what they do
  • general description and text consistency across the board
key back-end changes

where to begin?

  • completely refactored /obj/effect/rune from scratch. logic is now dependent on various subtypes, rather than being base-level procs. a bunch of logic like required invokers and such can now be easily overridden (and in some cases varedited) on a per-type basis.
  • completely refactored /obj/item/paper/talisman from scratch in much the same way as runes - logic has been generalized and moved onto subtypes as relevant
  • completely refactored arcane tomes. they're now way cleaner, less snowflakey, and have a spooky new ui.
  • removed the vestiges of the cult word research system. word meanings are now always fixed, and only used for drawing rune sprites.

to-do

  • feature parity with existing gameplay
  • documentation - put comments on everything
  • consistency - make sure messages use similar spans, precedent, and so on
  • stress testing (testmerge?)
  • it might be beneficial to get staff input wrt mechanical changes they want to happen. I've already gotten a little bit of feedback but I could definitely use more before merge

media/extra info

early example of the tome's nanoUI interface:

c5V5yJ8E0e.mp4

the alchemical symbol used in the background image is in the public domain and is taken from this wikimedia commons page

testing

I've done quite a bit of testing of various runes, talismans, and things on a local server using my own account and a guest client, both with spawned-in things and with tomes created the regular ways. so far things feel pretty stable in casually messing around with the tools the antagonist has, but it's definitely nothing that'd compare to an actual round of play.

@Ilysen Ilysen changed the title Full cult gamemode refactor Full cult gamemode refactor - Foundational work (runes, talismans, arcane tome) Mar 13, 2023
@Ilysen
Copy link
Contributor Author

Ilysen commented Mar 13, 2023

Looking at the code for soul stones, it turns out that it'll be a pretty big undertaking unto itself; as a result, to make the maintainers at least somewhat less horrified, I'll defer it for a future PR so that this one can focus on the main stuff.

@Ilysen Ilysen force-pushed the cult-refactor-take-dos branch 2 times, most recently from 317d2a3 to c115e94 Compare March 13, 2023 11:38
@Ilysen
Copy link
Contributor Author

Ilysen commented Mar 14, 2023

There's still testing in progress and general touchups here and there, but I am tentatively ready to say that I think this might be ready for review. I'm sure there's lots to do and plenty of mistakes I've made, but my (new) goal of getting the runes, talismans, and tomes refactored seems to be mostly complete. If this gets merged, follow-up stuff would include work on constructs.

@Ilysen Ilysen marked this pull request as ready for review March 14, 2023 10:08
@Atermonera Atermonera added Feature The PR adds new functionality in some way. Refactor The PR heavily modifies or rewrites an existing feature. labels Mar 25, 2023
@Atermonera Atermonera self-assigned this Mar 25, 2023
Ava and others added 5 commits April 1, 2023 04:03
…cult-refactor-take-dos

# Conflicts:
#	code/game/gamemodes/cult/ritual.dm
#	code/game/gamemodes/cult/runes.dm
#	icons/mob/suit.dmi
#	icons/obj/clothing/suits.dmi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature The PR adds new functionality in some way. Refactor The PR heavily modifies or rewrites an existing feature.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants