New Mage Program Update

Open
#243 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
20/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp
Domain
game-dev

Research direction

The issue describes mage program 31, its spell lists, interrupt counter, switch tactics, and special abilities, but does not name source files or tests. Start by locating program 31 and reading the related changes in #217, #234, #244, and #248. The listed updates are resolved by those issues, so confirm whether any work remains before attempting a change.

Written by the indexing model from the issue text.

Description

Currently program 31 (added with #217) has variants for spell lists, based on "specialization" keywords added to the mob alias. There are several keywords that work in conjunction (as of #248) to set the mage combat spell lists like: "fmage", "lmage", "cmage", "dmage", "lumage", "defaultm"; the default is none. Additionally the "conj" keyword can be applied as a modifier to cast regen and curing when outside of combat, also confuse and poison during combat. Special modifier "shield" will be added with #234. As of #248, level restricted spells always add to the spell list. Cast chance is mob level + 20 (as of #248).

A goal of this program is to switch tactics if the caster keeps getting interrupted. An interrupt counter and timer variable have been added to char. As the caster gets interrupted the counter increments (max 3) and sets the timer to 10. Each mob_act deducts 1 from the timer. At the limit the caster will stop casting, attack physically, and may attempt a special ability. Once the mob leaves combat, the next mob_act will reset the counter and timer.

Currently, the only switch tactic phase special ability is "shield" (optional as of #244). During the phase, with at least 12 stam, and doesn't have shield applied: it has a 50% chance to disengage combat (like flash but without a message to prevent people from creating triggers that would make it all pointless) and then cast shield. Then it goes back to its regular activity cycle, which may cast heals before attacking.

Special abilities are mainly referring to spells that require an additional keyword and might have other rules around them. As mentioned, "shield" only works during the switch tact phase. Additionally, "terror" has been added (#248), where it has a 20% chance to be picked to cast, if the caster is under 25% health.

The idea of special abilities and the switch tactics phase is that once the casting interrupt limit is reached, we let the mob take a different approach, with the default being physical attacks. In case with "shield", it becomes more defensive by casting shield and relies on regular attacks to damage during the phase. This could grow into many different tactical approaches. Likely, certain spells like fear would be more of an optional special ability added later, than a regular spell in list. The majority of the spell system has been refactored to be available to other programs.

Updates:

  1. Its been asked to separate the shield "special" from the base prog itself. It will be moved to a separate modifier keyword for now. Resolves with: #244

  2. It's been asked to adjust the initial base spell lists and set a min level 40 check for highest spells. Resolves with: #234

  3. Terror has been added. Spells can also be better level restricted and added to list. Major refactor, way more dynamic and concise. Resolves with #248

Dominant language
C++
Stars
3
Forks
4
Avg merge
18h 36m
Merged PRs (30d)
87

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from returnoftheshadow/RotS_Live

All issues in returnoftheshadow/RotS_Live

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.