1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2024-09-19 14:05:02 +01:00
notnotdnethack/include/mutations.h
ChrisANG 2390fc0afa Squashed commit of the following:
commit efef78be8af879d37a73949ee49c6019f0feba9a
Author: chris <ohmygod.stopitwiththis.com>
Date:   Sun Aug 27 16:08:44 2023 -0400

    YogSothoth twincast: Adjust make web monster spell to barf bolt

    Web is really annoying

commit e504c955ca771b5932933b1b077441b05849ad7a
Author: chris <ohmygod.stopitwiththis.com>
Date:   Sun Aug 27 13:02:43 2023 -0400

    Wizcult debug command

    Join any cult, manipulate cult mutagen, favor, and devotion levels.

commit 4bab4cf7fe3fa2a5891df15983837f234fa0fee9
Author: chris <ohmygod.stopitwiththis.com>
Date:   Sun Aug 27 12:33:56 2023 -0400

    Bugfix: Illumination of Shub gave no benefit

    Failed to use the modified en bonus.

commit ac56c820d3b00d33437f87d5deafd8719f63950c
Author: chris <ohmygod.stopitwiththis.com>
Date:   Sun Aug 27 12:32:25 2023 -0400

    Improve "make weaker"/bubbling yog-sothoth weapon effect

    Now drains 2d6 hp (leaving at least 1 current HP)

    Rolls resistance vs artifact weapons, draining a like amount of hp bonus (vs. PC) or maxHP/levels (vs. monsters) on a fail.

    This makes it non-pointless vs. the vast majority of targets.

commit e6c258aa4d37a8af23a844a5d1f93e8d2b569eea
Author: ChrisANG <you@example.com>
Date:   Fri Aug 18 15:30:43 2023 -0400

    Tweak: Dark young can talk

    They can in lore, and not being able to talk is pretty bad in a permanent form.

commit cfdd304dd0943f66e3fd2818a6259e4a4869da75
Author: chris <ohmygod.stopitwiththis.com>
Date:   Sun Jul 30 01:20:40 2023 -0400

    Yog-Sothoth Cult and cult revisions

    Madmen now gain cult value at 70% the normal rate (which makes it easier for them to get multiple major boons/fully exploit cults as a Bokrug madman).

    Cult mutations general handling
    -Unified list+basic utility macros in mutations.c and mutations.h
    -All cults track mutagen consumed and mutations granted.
    --Only Shubbie and Yog actually use these counters currently.
    -Mutations have a body part associated with them. This is not currently used.

    Yog-Sothoth (based heavily on Through the Gates of the Silver Key and The Dunwich Horror, and also Elden Ring)
    -Binder spirit
    --Binding duration will not count down while you have the silver key in inventory
    --Causes you to passively attack adjacent targets with blood-sucking tentacles for 3d3 damage
    --Monsters with a keen sense of smell typically spawn hostile, and always know your position (As a foulness shall ye know Them)
    --Ritual: The seal must be drawn on a square with a portal, teleport trap, or levelport trap, OR you must have the silver key in open inventory.
    --Skill: Firearms (time travel)
    --Passive: Protection from shape changers, bloodsense
    --Actives:
    ---Burst of Madness: Fire a ray of magenta fire in the chosen direction. This ray can be reflected but does not bounce off walls. The ray deals fire and magic damage, and exposes the target to your madnesses (sharing your madnesses gains cult credit).
    ---Unendurable Madness: Causes multiple magenta fire explosions in the chosen direction. These explosions repeatedly expose targets to your madnesses. These explosions require both fire and magic res to resist the damage.
    ---Contact Yog-Sothoth: Gain a boon or major boon from Yog if your cult credit is good.
    --Mark: the tentacles, strange feet, possibly flaming eyes if those mutations are chosen.
    ---Requires clothing, boots, and sufficient eyewear.
    --Taboo: destroying a trap (levelport, teleport, magic, or polymorph) with a wand of cancellation.
    -Boons
    --Yog-Sothoth weapon oprop (major)
    --Lesser magic oprop (major)
    --Create twin sibling monster (major)
    --Mutate (mutagen)
    --Escape from curses(minor): Teleport cursed items to floor
    --Return of memory (minor): +10% memory for all spells
    --Continued companionship (minor): +20% (1000 moves) for all binding durations
    --Return of your twin (minor): Summons the twin sibling, retreving it from another level and/or restoring it from "death"
    --Primordial waters: technically a potion type, mostly granted as a boon effect. Acid damage fixes petrification, increases energy. Builds Yog-Sothoth mutagen.
    -Weapon oprop
    --As with shubbie's oprop, changes effects. Unlike shubbies oprop, "ticks" at a rate of 1/100 turns.
    --Teleport theft (starry): Teleports one piece of armor off the target's body, or deals +1x damage if they aren't wearing armor.
    ---Random-teleport-obj code is refactored to avoid placing the object at your feet before relocating it.
    --Vampiric (grasping): Drains the target's blood, healing you, giving sothoth credit, and possibly draining levels from the target.
    --Flame and fear (groaning): +1d6 damage, +1d6 additional if non-fire-immune, inflicts fear/panic on the target
    --Depower (bubbling): Polymorphs the target into their least-mature form, if they fail a resist check.
    --Dessicate (auroral): +1x vs. watery monsters, +0x vs. nonliving or anhydrous monsters, +.5x otherwise, healing wielder, grants sothoth credit.
    --Stench (stinking): +1d6 vs. non-breathless non-poison-immune targets. Targets that eat may vomit, losing turns (if you are hit you become vomiting, which is a very dangerous situation!)
    --Magic (cerulean): +4d6+spe magic damage (min +1)
    --Mad fire (magenta-burning): Exposes the target to your madnesses if you *fail* a generic unblockable madness check, deals +2d6 damage to non-fire-res targets AND +4d4+spe damage to non-magic-res targets if they are exposed.
    -Mutations:
    --The total amount of mutagen requried for each new mutation grows quadratically ((m+2)^2, where m is the number of mutations granted so far)
    --Gaze 1: Enables the first mad fire active ability (burst of madness). The twin also gains a version of this spell, if it has spellcasting.
    --Gaze 2: Can only be chosen after gaze 1. Enables the second mad fire active spirit ability (unendurable madness). Increases the chance of the Twin casting its madness-fire ray spell.
    --Twin mind: While Yog is bound, you make passive monster spellcasting attacks with range 2 if you don't make a tentacle attack. Also gives the twin spellcasting.
    --Twin dreams: While Yog is bound, grants a mind blast or boosts existing mind blast (+(lev+7)/14 dice, two rolls to hit (twin dice only apply if the first roll hits)).
    --Twin lifesave: While Yog is bound and the twin sibling is visible, Lifesaves the PC at the expense of the pet twin (The twin can be revivied as a minor boon, but the mutation will need to be re-applied).
    -Hyperborean dial
    --This puzzle/tool teaches the PC the Yog Sothoth seal when completed.
    --The puzzel can only be completed while asleep (though extra puzzles can be completed up to the current limit by applying them)
    --Applying a puzzle that is at the current limit reminds the player that the PC solved it while asleep.
    -Outlands inclusion: Sentenel Clearing
    --A ring of "standing stones" (boulders in rock squares) and some leveled-up shaman/cleric monsters of the yog-sothoth faction.
    --Has a special levelport trap in the center of the ring. Being affected by this trap (meaning *not* magic resistant!) teaches the PC the Yog-Sothoth seal.
    -Invoking the Silver Key while standing on a Yog-Sothoth altar (such as those found in R'lyeh) teaches the Yog-Sothoth seal.
    --This sets the artifact invoke timer.

    -Twin Sibling
    --2d6 vampire, d12 phys, d6 spells, phys scaling, clings to ceiling.
    --Attacks adjacent monsters with passive blood-sucking tentacles
    --Imune to polymorph
    --Vanishes while Yog-Sothoth binder spirit is not bound.
    --While not on level, has a 1/6th chance to move one level closer or farther from you, and a 1/66th chance to move between dungeons to follow you.
    ---This behavior can be suppressed by instructing it to "wait"
    --Does not actually die when killed, but does vanish until you re-summon it as a minor boon.
    --Gains spellcasting if you have the "Twin Mind" mutation
    --Gains no cooldown casting if you have the Shubbie Radiance mutation
    --Gains mind blasts if you have the Yog-Sothoth Twin Dreams mutation
    --If lower level than you, gains a HP from every kill, rapidly leveling up as a result.

    Shub Nugganoth revisions
    -Add a semi-dedicated "itinerant priestess" creature to replace the generic shubbie priestess in the Madman quest
    --Weapon, offhand weapon, holy touch after insight 40, d6 clerical spellcasting, 4d4 magm retalitory attack, naturally magic-immune, can reach level 30. An alien from the universe next-door.
    --Is a "monk" as well as a "priest"
    --Gets the two Shubbie priestess spells
    --Can heal as a touch after 40 insight, and has a built-in unicorn horn
    --Can sing to back up the PC (showing off the adjusted messages for mistweaver monsters generally)
    -Add mutations. Mutations are minor boons. The first mutation requires 3 goat's milk potions to have been drunk, each subsequent mutation requires one more potion than the previous (so 4 more/7 total, then 5 more/12 total, etc.)
    --Abohorrent spore: Slotless lifesaving that converts the PC into a permapoly'd dark young. This uses up the spore, though the PC can re-purchase the mutation.
    --Crawling Flesh
    ---Improves healing. 1/3rd chance of healling 1 HP as a result of a "failed" flat madness role.
    ---When below 1/2 HP, may suddenly heal +1/2 HP as a result of a successful insight check. This costs 40 to 100 nutrition and drives nearby monsters insane and/or causes them to puke and become immoble for 4 turns and flee for 44 turns.
    ---Also causes the Yog-Sothoth Twin to heal +1 HP per turn.
    --Tendril hair
    ---Prevents item theft attacks.
    ---Gives bonus to resist seduction attacks.
    --Mindstealing tongue
    ---Adds an extra attack that causes the struck target to attack an ally
    ---If the yog-sothoth twin pet can cast spells, this enables a crush bolt spell.
    --Radiance
    ---Reduces your HP bonus by your Insanity, increases your energy bonus by Insanity.
    ---Since the HP bonus adjustment happens before diminishing returns is calculated, this can be a good deal if you have drunk lots of full healing.
    --Shifting mind
    ---"Un allocates" all skill points, allowing respecing. This mutation isn't gained, and can be re-selected later.
    --Claws
    ---If the yog-sothoth twin can cast spells, this enables a spacewarp spell.

    Silver Flame revisions
    -Curse proof glaze revised to be body armor only, 100%
    -Wrath gloves: Increases damage bonus by 50%.
    -Share burdens footwear: +200 (or 20%) carry cap.
    -Preserve life helms: Your helm provides life saving when worn. The property is removed when the effect triggers; the helm is not destroyed. The helm will be eligible to have the property re-added as a later major boon.

    Ibite Arm revisions
    -Add upgrades, favor, and a boon counter.
    --The Arm can be upgraded via #invoke (uses invoke timer)
    --These upgrades don't increment other boon/wish counters, so the Arm stacks with other cults very effectively
    -Favor:
    --Gains favor when killing human mercenaries, nobility, or priests
    --Deals +1d10 damage vs. all humans (human-bane, effectively)
    -Upgrades:
    --Wave: The hand portion (not the elbow/primary attack) deals +6d6 water damage instead of +2d4
    --Revoke: The hand portion takes the targets inventory and drops it on your square. The target rolls resistance *after* each item is taken, ending the effect on a success.
    --Destroy: Deals +1x damage vs. unalive targets. The hand portion digs out squares.
    --Teleport: The Arm can be used to teleport via #invoke (uses invoke timer)
    --Levelport: The Arm can be used to levelport via #invoke (uses invoke timer)
    --Branchport: The Arm can be used to branchport via #invoke (uses invoke timer)
    ---Branchport code is re-factored to avoid copypasta.
    --Reflect: The Arm grants Reflection when wielded, AND can have Silver Flame oprops applied.
    -Influenced by some other effects
    --Shubbies clawed hand mutation confers claws to the arm as well

    Quest revision
    -Bergonic chair
    --Starts with 3d3 charges.
    --Sitting consumes a charge, shocks you, and may
    ---Give a point of int (or other mental stat, 33%)
    ---Drain a point of wis (or other mental stat, 33%)
    ---Give 500-599 turns of clairvoyance.
    ---Do enlightenment
    ---Grant knowledge of your pack contents (0(all)-4 items) plus 2-7 random objects.
    ---Aggravate monsters
    ---Deal fire damage as well
    ---Enchant helmet by +1 (to a max of +5)
    ---Inflict nightmares (hallu plus confusion) and sleep for 200-399 turns.
    -Side area on observation level: currently contains a room with a hyperborean dial, a bed, a bergonic chair, and a writing desk with some sleeping potions. Overall should be a pretty big hint about how to use the dial, though you probably don't want to do it in the quest. The lower regions of the quest also contain bedrolls.

    Bugfixs:
    -Shuby should give *subsequent* holy symbols with 1/4 probability, not the first (which still depends on gifts?)
    -Centaur chieftains in the lost cities are goat monsters.
    -"straitjacketed_mon" now includes shackled arms
    -Fixed a bug in the code that doubles cold explosion damage for fire-resistant monsters.
    -Cha casters (Psions) can also spellcast through helms of telepathy
    -A_NONE PCs are also burned by holy water
    -A_NONE PCs also get alignment from foocubi
    -Monsters with ONLY telepathic vision are always affected by PC mind blasts (similar to how a blind PC is affected).
2023-08-27 19:38:46 -04:00

72 lines
1.5 KiB
C

/* SCCS Id: @(#)thoughtglyph.h 3.4 1997/05/01 */
/* Copyright (c) Izchak Miller, 1989. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef MUTATION_H
#define MUTATION_H
/* Macros for messages referring to hands, eyes, feet, etc... */
#define ARM 0
#define EYE 1
#define FACE 2
#define FINGER 3
#define FINGERTIP 4
#define FOOT 5
#define HAND 6
#define HANDED 7
#define HEAD 8
#define LEG 9
#define LIGHT_HEADED 10
#define NECK 11
#define SPINE 12
#define TOE 13
#define HAIR 14
#define BLOOD 15
#define LUNG 16
#define NOSE 17
#define STOMACH 18
#define HEART 19
#define BODY_SKIN 20
#define BODY_FLESH 21
#define BEAT 22
#define BONES 23
#define EAR 24
#define EARS 25
#define TONGUE 26
#define BRAIN 27
#define CREAK 28
#define CRACK 29
struct mutationtype {
int mutation;
int bodypart;
const char * name;
const char * description;
};
/* mutations (Must be non-zero) */
#define ABHORRENT_SPORE 1
#define CRAWLING_FLESH 2
#define SHUB_RADIANCE 3
#define TENDRIL_HAIR 4
#define SHIFTING_MIND 5
#define SHUB_CLAWS 6
#define MIND_STEALER 7
#define YOG_GAZE_1 8
#define YOG_GAZE_2 9
#define TWIN_MIND 10
#define TWIN_DREAMS 11
#define BY_THE_SMELL 12
#define TWIN_SAVE 13
#define LAST_MUTATION TWIN_SAVE
#define MUTATION_LISTSIZE ((LAST_MUTATION-1)/32 + 1)
#define check_mutation(mut) !!((u.mutations[(mut-1)/32]) & (0x1L << ((mut-1)%32)))
#define add_mutation(mut) (u.mutations[(mut-1)/32] |= (0x1L << ((mut-1)%32)))
#define remove_mutation(mut) (u.mutations[(mut-1)/32] &= ~(0x1L << ((mut-1)%32)))
#endif /* MUTATION_H */