The T.o.M.E. Library - Script 'ZAngband mutations (20kB)'

NameZAngband mutations (20kB)
Version0.0.3
Authorm.marangio@web.de
DescriptionHere is a list of 40 old ZAngband mutations (all activable mutations and some fixed mutations). One power (28-laser eye) was changed in the C code, it's scripted in Lua now.

Known problems:

* When gaining or losing a new power, the string is printed twice (once in the script and once in ToME). get_text and lose_text should be either empty or replaced in these cases.

* Cancelling out a mutation requires a little more coding. Mutations are only opposed now.

* some powers seems to work incorrectly:
- 9/ smell metal: there are only a few dungeons with treasure veins.
- 16/ detect curses: not all cursed objects are detected.
- 18/ polymorph: a user reported some crashes, don't use this mutation.
- 24/ weigh magic: not all temporary spells are listed.

* some of the 96 mutations in ZAngband cannot be coded in ToME 2.x (e.g. scorpion tail)
Last update18/10/2004
Script
-- The old activable corruptions / mutations

MUT1_SPIT_ACID = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Spit Acid",
	["get_text"]    = "You gain the ability to spit acid.",
	["lose_text"]   = "You lose the ability to spit acid.",
	["desc"]        = 
	{
			  "  Fires an acid ball.",
			  "  Damage=level Radius 1+(level/30)",
			  "  Level=9, Cost=9, Stat=DEX, Difficulty=15",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_SPIT_ACID)
		end,
	},
}

MUT1_BR_FIRE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Fire Breath",
	["get_text"]    = "You gain the ability to breathe fire.",
	["lose_text"]   = "You lose the ability to breathe fire.",
	["desc"]        = 
	{
			  "  Fires a fire ball.",
			  "  Damage=2*level Radius 1+(level/20)",
			  "  Level=20, Cost=10, Stat=CON, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_BR_FIRE)
		end,
	},
}

MUT1_HYPN_GAZE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Hypnotic Gaze",
	["get_text"]    = "Your eyes look mesmerizing...",
	["lose_text"]   = "Your eyes look uninteresting.",
	["desc"]        = 
	{
			  "  Tries to make a monster your pet.",
			  "  Power=level",
			  "  Level=12, Cost=12, Stat=CHR, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_HYPN_GAZE)
		end,
	},
}

MUT1_TELEKINES = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Telekinesis",
	["get_text"]    = "You gain the ability to move objects telekinetically.",
	["lose_text"]   = "You lose the ability to move objects telekinetically.",
	["desc"]        = 
	{
			  "  Move an object in line of sight to you.",
			  "  Max weight equal to (level) pounds",
			  "  Level=9, Cost=9, Stat=WIS, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_TELEKINES)
		end,
	},
}

MUT1_VTELEPORT = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Teleport",
	["get_text"]    = "You gain the power of teleportation at will.",
	["lose_text"]   = "You lose the power of teleportation at will.",
	["desc"]        = 
	{
			  "  Teleports the player at will.",
			  "  Distance 10+4*level squares",
			  "  Level=7, Cost=7, Stat=WIS, Difficulty=15",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_VTELEPORT)
		end,
	},
}

MUT1_MIND_BLST = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Mind Blast",
	["get_text"]    = "You gain the power of Mind Blast.",
	["lose_text"]   = "You lose the power of Mind Blast.",
	["desc"]        = 
	{
			  "  Fires a mind blasting bolt (psi damage).",
			  "  Psi Damage (3+(level-1)/5)d3",
			  "  Level=5, Cost=3, Stat=WIS, Difficulty=15",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_MIND_BLST)
		end,
	},
}

MUT1_RADIATION = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Emit Radiation",
	["get_text"]    = "You start emitting hard radiation.",
	["lose_text"]   = "You stop emitting hard radiation.",
	["desc"]        = 
	{
			  "  Fires a ball of hard radiation (nuke damage).",
			  "  Damage level*2 Radius 3+level/20",
			  "  Level=15, Cost=15, Stat=CON, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_RADIATION)
		end,
	},
}

MUT1_VAMPIRISM = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Vampiric Drain",
	["get_text"]    = "You become vampiric.",
	["lose_text"]   = "You are no longer vampiric.",
	["desc"]        = 
	{
			  "  You can drain life from a foe like a vampire.",
			  "  Drains (level+1d(level))*(level/10) hitpoints,",
			  "  heals you and satiates you. Doesn't work on all monsters",
			  "  Level=4, Cost=5, Stat=CON, Difficulty=9",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_VAMPIRISM)
		end,
	},
}

MUT1_SMELL_MET = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Smell Metal",
	["get_text"]    = "You smell a metallic odour.",
	["lose_text"]   = "You no longer smell a metallic odour.",
	["desc"]        = 
	{
			  "  You can detect nearby precious metal (treasure).",
			  "  Radius 25",
			  "  Level=3, Cost=2, Stat=INT, Difficulty=12",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_SMELL_MET)
		end,
	},
}

MUT1_SMELL_MON = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Smell Monsters",
	["get_text"]    = "You smell filthy monsters.",
	["lose_text"]   = "You no longer smell filthy monsters.",
	["desc"]        = 
	{
			  "  You can detect nearby monsters.",
			  "  Radius 25",
			  "  Level=5, Cost=4, Stat=INT, Difficulty=15",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_SMELL_MON)
		end,
	},
}

MUT1_BLINK = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Blink",
	["get_text"]    = "You gain the power of minor teleportation.",
	["lose_text"]   = "You lose the power of minor teleportation.",
	["desc"]        = 
	{
			  "  You can teleport yourself short distances (10 squares).",
			  "  Level=3, Cost=3, Stat=WIS, Difficulty=12",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_BLINK)
		end,
	},
}

MUT1_EAT_ROCK = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Eat Rock",
	["get_text"]    = "The walls look delicious.",
	["lose_text"]   = "The walls look unappetizing.",
	["desc"]        = 
	{
			  "  You can consume solid rock with food benefit,",
			  "  leaving an empty space behind.",
			  "  Level=8, Cost=12, Stat=CON, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_EAT_ROCK)
		end,
	},
}

MUT1_SWAP_POS = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Swap Position",
	["get_text"]    = "You feel like walking a mile in someone else's shoes.",
	["lose_text"]   = "You feel like staying in your own shoes.",
	["desc"]        = 
	{
			  "  You can switch locations with another being,",
			  "  unless it resists teleportation.",
			  "  Level=15, Cost=12, Stat=DEX, Difficulty=16",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_SWAP_POS)
		end,
	},
}

MUT1_SHRIEK = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Shriek",
	["get_text"]    = "Your vocal cords get much tougher.",
	["lose_text"]   = "Your vocal cords get much weaker.",
	["desc"]        = 
	{
			  "  Fires a sound ball and aggravates monsters.",
			  "  Damage=level*4, Radius=8, centered on player",
			  "  Level=4, Cost=4, Stat=CON, Difficulty=6",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_SHRIEK)
		end,
	},
}

MUT1_ILLUMINE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Illuminate",
	["get_text"]    = "You can light up rooms with your presence.",
	["lose_text"]   = "You can no longer light up rooms with your presence.",
	["desc"]        = 
	{
			  "  You can emit bright light that illuminates an area.",
			  "  Damage=2d(level/2) Radius=(level/10)+1",
			  "  Level=3, Cost=2, Stat=INT, Difficulty=10",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_ILLUMINE)
		end,
	},
}

MUT1_DET_CURSE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Detect Curses",
	["get_text"]    = "You can feel evil magics.",
	["lose_text"]   = "You can no longer feel evil magics.",
	["desc"]        = 
	{
			  "  You can feel the danger of evil magic.",
			  "  It detects cursed items in the inventory",
			  "  Level=7, Cost=14, Stat=WIS, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_DET_CURSE)
		end,
	},
}

MUT1_BERSERK = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Berserk",
	["get_text"]    = "You feel a controlled rage.",
	["lose_text"]   = "You no longer feel a controlled rage.",
	["desc"]        = 
	{
			  "  You can drive yourself into a berserk frenzy.",
			  "  It grants super-heroism. Duration=10+1d(level)",
			  "  Level=8, Cost=8, Stat=STR, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_BERSERK)
		end,
	},
}

MUT1_POLYMORPH = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Polymorph",
	["get_text"]    = "Your body seems mutable.",
	["lose_text"]   = "Your body seems stable.",
	["desc"]        = 
	{
			  "  You can polymorph yourself at will.",
			  "  Level=18, Cost=20, Stat=CON, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_POLYMORPH)
		end,
	},
}

MUT1_MIDAS_TCH = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Midas touch",
	["get_text"]    = "You gain the Midas touch.",
	["lose_text"]   = "You lose the Midas touch.",
	["desc"]        = 
	{
			  "  You can turn ordinary items to gold.",
			  "  Turns a non-artifact object into 1/3 its value in gold",
			  "  Level=10, Cost=5, Stat=INT, Difficulty=12",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_MIDAS_TCH)
		end,
	},
}

MUT1_GROW_MOLD = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Grow Mold",
	["get_text"]    = "You feel a sudden affinity for mold.",
	["lose_text"]   = "You feel a sudden dislike for mold.",
	["desc"]        = 
	{
			  "  You can cause mold to grow near you.",
			  "  Summons up to 8 molds around the player",
			  "  Level=1, Cost=6, Stat=CON, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_GROW_MOLD)
		end,
	},
}

MUT1_RESIST = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Resist Elements",
	["get_text"]    = "You feel like you can protect yourself.",
	["lose_text"]   = "You feel like you might be vulnerable.",
	["desc"]        = 
	{
			  "  You can harden yourself to the ravages of the elements.",
			  "  Level dependant chance of gaining resistances to the four ",
			  "  elements and poison. Duration=20 + d20",
			  "  Level=10, Cost=12, Stat=CON, Difficulty=12",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_RESIST)
		end,
	},
}

MUT1_EARTHQUAKE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Earthquake",
	["get_text"]    = "You gain the ability to wreck the dungeon.",
	["lose_text"]   = "You lose the ability to wreck the dungeon.",
	["desc"]        = 
	{
			  "  You can bring down the dungeon around your ears.",
			  "  Radius=10, center on the player",
			  "  Level=12, Cost=12, Stat=STR, Difficulty=16",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_EARTHQUAKE)
		end,
	},
}

MUT1_EAT_MAGIC = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Eat Magic",
	["get_text"]    = "Your magic items look delicious.",
	["lose_text"]   = "Your magic items no longer look delicious.",
	["desc"]        = 
	{
			  "  You can consume magic energy for your own use.",
			  "  Drains staves, wands and rods to replenish spell points.",
			  "  Level=17, Cost=1, Stat=WIS, Difficulty=15",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_EAT_MAGIC)
		end,
	},
}

MUT1_WEIGH_MAG = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Weigh Magic",
	["get_text"]    = "You feel you can better understand the magic around you.",
	["lose_text"]   = "You no longer sense magic.",
	["desc"]        = 
	{
			  "  You can feel the strength of most magics affecting you.",
			  "  Level=6, Cost=6, Stat=INT, Difficulty=10",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_WEIGH_MAG)
		end,
	},
}

MUT1_STERILITY = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Sterilize",
	["get_text"]    = "You can give everything around you a headache.",
	["lose_text"]   = "You hear a massed sigh of relief.",
	["desc"]        = 
	{
			  "  You can cause mass impotence, at a cost.",
			  "  Prevents any breeders on current level from breeding.",
			  "  Level=20, Cost=40, Stat=CHR, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_STERILITY)
		end,
	},
}

MUT1_PANIC_HIT = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Panic Hit",
	["get_text"]    = "You suddenly understand how thieves feel.",
	["lose_text"]   = "You no longer feel jumpy.",
	["desc"]        = 
	{
			  "  You can run for your life after hitting something.",
			  "  Allows you to hit a monster and immediately teleport 30 squares.",
			  "  Level=10, Cost=12, Stat=DEX, Difficulty=14",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_PANIC_HIT)
		end,
	},
}

MUT1_DAZZLE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Dazzle",
	["get_text"]    = "You gain the ability to emit dazzling lights.",
	["lose_text"]   = "You lose the ability to emit dazzling lights.",
	["desc"]        = 
	{
			  "  You can emit confusing, blinding radiation.",
			  "  Attempts to stun, confuse and terrify all monsters in sight.",
			  "  Level=7, Cost=15, Stat=CHR, Difficulty=8",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_DAZZLE)
		end,
	},
}

MUT1_LASER_EYE = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Laser Eye",
	["get_text"]    = "Your eyes burn for a moment.",
	["lose_text"]   = "Your eyes burn for a moment, then feel soothed.",
	["desc"]        = 
	{
			  "  Your eyes can fire laser beams.",
			  "  Fires light beam, damage=level*2",
			  "  Level=7, Cost=10, Stat=WIS, Difficulty=9",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(POWER_LASER_EYE)
		end,
	},
}

-- A Lua power, since PWR_DARKRAY has some changed text
POWER_LASER_EYE = add_power
{
	["name"] =      "Laser Eye",
	["desc"] =      "Your eyes can fire laser beams.",
	["desc_get"] =  "Your eyes burn for a moment.",
	["desc_lose"] = "Your eyes burn for a moment, then feel soothed.",
	["level"] =     7,
	["cost"] =      10,
	["stat"] =      A_WIS,
	["fail"] =      9,
	["power"] =     function()
			local ret, dir = get_aim_dir()
			if ret == FALSE then return end
			return fire_beam(GF_LITE, dir, 2*player.lev)
	end,
}

MUT1_RECALL = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Recall",
	["get_text"]    = "You feel briefly homesick, but it passes.",
	["lose_text"]   = "You feel briefly homesick.",
	["desc"]        = 
	{
			  "  You can travel between the surface and the depths.",
			  "  Acts like Word of Recall (Time=15+d21).",
			  "  Level=17, Cost=50, Stat=INT, Difficulty=16",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_RECALL)
		end,
	},
}

MUT1_BANISH = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Banish Evil",
	["get_text"]    = "You feel a holy wrath fill you.",
	["lose_text"]   = "You no longer feel a holy wrath.",
	["desc"]        = 
	{
			  "  You can send evil creatures directly to the Nether Realm.",
			  "  Removes one evil monster.",
			  "  Level=25, Cost=25, Stat=WIS, Difficulty=18",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_BANISH)
		end,
	},
}

MUT1_COLD_TOUCH = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Cold Touch",
	["get_text"]    = "Your hands get very cold.",
	["lose_text"]   = "Your hands warm up.",
	["desc"]        = 
	{
			  "  You can freeze things with a touch.",
			  "  Fires a frost bolt (Damage=level*2)",
			  "  Level=2, Cost=2, Stat=CON, Difficulty=11",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_COLD_TOUCH)
		end,
	},
}

MUT1_LAUNCHER = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Throw Object",
	["get_text"]    = "Your throwing arm feels much stronger.",
	["lose_text"]   = "Your throwing arm feels much weaker.",
	["desc"]        = 
	{
			  "  You can hurl objects with great force.",
			  "  Level dependant multiplier for thrown objects",
			  "  ranging from x2 to x5 at level 48",
			  "  Level=1, Cost=10, Stat=STR, Difficulty=6",
	},
	["hooks"]       =
	{
		[HOOK_CALC_POWERS] = function()
			player.add_power(PWR_LAUNCHER)
		end,
	},
}




-- The old permanent mutations

MUT3_HYPER_STR = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Hyper Strength",
	["get_text"]    = "You turn into a superhuman he-man!",
	["lose_text"]   = "Your muscles revert to normal.",
	["desc"]        = 
	{
			  "  You are superhumanly strong (+4 STR, -1 INT, -1 WIS).",
	},
	-- No oppose field, it will be automatically set by MUT3_PUNY
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_STR, 4)
			player.modify_stat(A_INT, -1)
			player.modify_stat(A_WIS, -1)
		end,
	},
}

MUT3_PUNY = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Puny",
	["get_text"]    = "Your muscles wither away...",
	["lose_text"]   = "Your muscles revert to normal.",
	["desc"]        = 
	{
			  "  You are puny (-4 STR, +2 DEX).",
	},
	["oppose"] =
	{
			[MUT3_HYPER_STR] = TRUE
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_STR, -4)
			player.modify_stat(A_DEX, 2)
		end,
	},
}

MUT3_HYPER_INT = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Hyper Intelligence",
	["get_text"]    = "Your brain evolves into a living computer!",
	["lose_text"]   = "Your brain reverts to normal.",
	["desc"]        = 
	{
			  "  Your brain is a living computer (+4 INT/WIS).",
	},
	-- No oppose field, it will be automatically set by MUT3_MORONIC
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_INT, 4)
			player.modify_stat(A_WIS, 4)
		end,
	},
}

MUT3_MORONIC = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Puny",
	["get_text"]    = "Your brain withers away...",
	["lose_text"]   = "Your brain reverts to normal.",
	["desc"]        = 
	{
			  "  You are moronic (-4 INT/WIS).",
	},
	["oppose"] =
	{
			[MUT3_HYPER_INT] = TRUE
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_INT, -4)
			player.modify_stat(A_WIS, -4)
		end,
	},
}

MUT3_RESILIENT = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Resilient",
	["get_text"]    = "You become extraordinarily resilient.",
	["lose_text"]   = "You become ordinarily resilient again.",
	["desc"]        = 
	{
			  "  You are very resilient (+4 CON).",
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_CON, 4)
		end,
	},
}

MUT3_ALBINO = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Albino",
	["get_text"]    = "You turn into an albino! You feel frail...",
	["lose_text"]   = "You are no longer an albino!",
	["desc"]        = 
	{
			  "  You are albino (-4 CON).",
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_CON, -4)
		end,
	},
}

MUT3_LIMBER = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Limberness",
	["get_text"]    = "Your muscles become limber.",
	["lose_text"]   = "Your muscles stiffen.",
	["desc"]        = 
	{
			  "  Your body is very limber (+3 DEX, -1 STR).",
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_STR, -1)
			player.modify_stat(A_DEX, 3)
		end,
	},
}

MUT3_ARTHRITIS = add_corruption
{
	["color"] = TERM_RED,
	["name"]  = "Arthritis",
	["get_text"]    = "Your joints suddenly hurt.",
	["lose_text"]   = "Your joints stop hurting.",
	["desc"]        = 
	{
			  "  Your joints ache constantly (-3 DEX).",
	},
	["oppose"] =
	{
			[MUT3_LIMBER] = TRUE
	},
	["hooks"]       =
	{
		[HOOK_CALC_BONUS] = function()
			player.modify_stat(A_DEX, -3)
		end,
	},
}

Update

Maintained by DarkGod. Contact.