New Mage Program Update
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 20/100
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:
-
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
-
It's been asked to adjust the initial base spell lists and set a min level 40 check for highest spells. Resolves with: #234
-
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from returnoftheshadow/RotS_Live
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
returnoftheshadow/RotS_Live#521 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
returnoftheshadow/RotS_Live#485 ·
Maintainers usually reply within 1 day
-
Remove dead object refresh code (check_inventory_proto and friends)Possibly taken @drelidan7 claimed this 4 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
returnoftheshadow/RotS_Live#414 ·
Maintainers usually reply within 1 day
-
purge <player> idle-saves the immortal instead of the playerPossibly taken @bskalpavrukshab25-sketch claimed this 14 days ago. Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
returnoftheshadow/RotS_Live#411 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
returnoftheshadow/RotS_Live#410 · 2 comments ·
Maintainers usually reply within 1 day
All issues in returnoftheshadow/RotS_Live
Similar issues
-
v3: Lua m.setvar() returns -1 on errors, so the script gets stack garbagePossibly taken A pull request linked to this issue is open or already merged. Open3.x bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
owasp-modsecurity/ModSecurity#3731 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Sendspin/sendspin-cpp-cli#111 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 74/100
scp-fs2open/fs2open.github.com#7984 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 4 days
-
core docs p3
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
RunanywhereAI/runanywhere-sdks#1199 ·
Maintainers usually reply within 1 day