Skip to content

Commit

Permalink
Split ogre mage and wizard spell sets, alter both (elliptic)
Browse files Browse the repository at this point in the history
Wizards and their more common spell set semi-derivatives, ogre mages, are
some of the last of the monsters with many spellbooks, no basic rules held
between any of them, and no shared spellcasting company to focus on dilution
with. Aside from being a bit much of a broad range of rather mixed spell
arrangements, ogre mage bands cooperate better with the hexes than with
the potential accidental friendly-fire with Mystic Blast or Fireball.

As such, the five spellsets on wizards and five alterations on such for ogre
mages have been split and altered into three sets for the both of them, with
the shared set of course being the one with Lehudib's Crystal Spear.

Ogre mages get:
 * Haste Other, Lightning Bolt, Slow, Paralyse, Haste
 * Haste Other, Venom Bolt, Confuse, Slow, Invisibility
 * Haste Other, Bolt of Fire, Bolt of Cold, Lehudib's Crystal Spear, Blink
while wizards get:
 * Stone Arrow, Lightning Bolt, Banishment, Invisibility
 * Mystic Blast, Fireball, Paralyse, Blink
 * Bolt of Cold, Lehudib's Crystal Spear, Slow, Haste

This sort of works out? Wizards focus on their highlights and ogre mages
mostly focus down harder on supporting their ogres- to the point of them
casting Paralyse more often and no longer casting Banishment. Plus, each
monster's sets share minimal overlap.

Erolcha's randomized spell set mechanics are thrown onto the wizard spell
set (she has no ogre companions to haste), though, and with thus more
frequent banishment chances she gets nudged down a floor: starting on D:9
instead of D:8. Erica and Louise's spell sets, which were previously copies
of the above changed Venom Bolt and Banishment spell sets, are peserved in
being split off from this due to not as costing much knowledge-overhead-wise.
  • Loading branch information
regret-index committed Jul 9, 2016
1 parent 1ce7b77 commit 87348de
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 69 deletions.
2 changes: 1 addition & 1 deletion crawl-ref/source/dat/des/builder/uniques.des
Expand Up @@ -119,7 +119,7 @@ DEPTH: D:8-11, Orc:1, Lair:1-2
: place_unique(_G, "Erica")

NAME: uniq_erolcha
DEPTH: D:8-13, Orc, !Orc:$
DEPTH: D:9-13, Orc
: place_unique(_G, "Erolcha")

NAME: uniq_eustachio
Expand Down
4 changes: 2 additions & 2 deletions crawl-ref/source/mon-data.h
Expand Up @@ -7105,7 +7105,7 @@ DUMMY(MONS_HELL_LORD, '&', COLOUR_UNDEF, "hell lord", TILEP_MONS_PROGRAM_BUG)
20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, 60,
{ {AT_HIT, AF_PLAIN, 10}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
9, 630,
0, 11, MST_WIZARD_II, CE_CLEAN, S_SHOUT,
0, 11, MST_ERICA, CE_CLEAN, S_SHOUT,
I_HUMAN, HT_LAND, 10, DEFAULT_ENERGY,
MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM, MON_SHAPE_HUMANOID,
{TILEP_MONS_ERICA}, TILE_ERROR
Expand Down Expand Up @@ -7157,7 +7157,7 @@ DUMMY(MONS_HELL_LORD, '&', COLOUR_UNDEF, "hell lord", TILEP_MONS_PROGRAM_BUG)
15, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, 80,
{ {AT_HIT, AF_PLAIN, 17}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
13, 1040,
0, 10, MST_WIZARD_IV, CE_CLEAN, S_SHOUT,
0, 10, MST_LOUISE, CE_CLEAN, S_SHOUT,
I_HUMAN, HT_LAND, 10, DEFAULT_ENERGY,
MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM, MON_SHAPE_HUMANOID,
{TILEP_MONS_LOUISE}, TILE_ERROR
Expand Down
99 changes: 37 additions & 62 deletions crawl-ref/source/mon-spell.h
Expand Up @@ -503,51 +503,28 @@ static const mon_spellbook mspell_list[] =
// Wizard sets are also used by Erolcha.
{ MST_WIZARD_I,
{
{ SPELL_MAGIC_DART, 10, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_CONFUSE, 10, MON_SPELL_WIZARD },
{ SPELL_PARALYSE, 10, MON_SPELL_WIZARD },
{ SPELL_HASTE, 10, MON_SPELL_WIZARD },
{ SPELL_STONE_ARROW, 14, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 12, MON_SPELL_WIZARD },
{ SPELL_BANISHMENT, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 14, MON_SPELL_WIZARD },
}
},

// Shared with Erica.
{ MST_WIZARD_II,
{
{ SPELL_VENOM_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_ISKENDERUNS_MYSTIC_BLAST, 10, MON_SPELL_WIZARD },
{ SPELL_CONFUSE, 10, MON_SPELL_WIZARD },
{ SPELL_SLOW, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 10, MON_SPELL_WIZARD },
{ SPELL_ISKENDERUNS_MYSTIC_BLAST, 14, MON_SPELL_WIZARD },
{ SPELL_FIREBALL, 12, MON_SPELL_WIZARD },
{ SPELL_PARALYSE, 12, MON_SPELL_WIZARD },
{ SPELL_BLINK, 12, MON_SPELL_WIZARD },
}
},

{ MST_WIZARD_III,
{
{ SPELL_BOLT_OF_FIRE, 12, MON_SPELL_WIZARD },
{ SPELL_BOLT_OF_COLD, 12, MON_SPELL_WIZARD },
{ SPELL_BOLT_OF_COLD, 14, MON_SPELL_WIZARD },
{ SPELL_LEHUDIBS_CRYSTAL_SPEAR, 12, MON_SPELL_WIZARD },
{ SPELL_BLINK, 12, MON_SPELL_WIZARD },
}
},

// Shared with Louise.
{ MST_WIZARD_IV,
{
{ SPELL_STING, 10, MON_SPELL_WIZARD },
{ SPELL_STONE_ARROW, 10, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_BANISHMENT, 10, MON_SPELL_WIZARD },
{ SPELL_BLINK, 10, MON_SPELL_WIZARD },
}
},

{ MST_WIZARD_V,
{
{ SPELL_THROW_FLAME, 10, MON_SPELL_WIZARD },
{ SPELL_FIREBALL, 10, MON_SPELL_WIZARD },
{ SPELL_PARALYSE, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 10, MON_SPELL_WIZARD },
{ SPELL_SLOW, 12, MON_SPELL_WIZARD },
{ SPELL_HASTE, 12, MON_SPELL_WIZARD },
}
},

Expand Down Expand Up @@ -1147,20 +1124,20 @@ static const mon_spellbook mspell_list[] =
// ('O') Ogres.
{ MST_OGRE_MAGE_I,
{
{ SPELL_LIGHTNING_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_CONFUSE, 10, MON_SPELL_WIZARD },
{ SPELL_PARALYSE, 10, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 12, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_SLOW, 10, MON_SPELL_WIZARD },
{ SPELL_PARALYSE, 10, MON_SPELL_WIZARD },
{ SPELL_HASTE, 10, MON_SPELL_WIZARD },
}
},

{ MST_OGRE_MAGE_II,
{
{ SPELL_ISKENDERUNS_MYSTIC_BLAST, 10, MON_SPELL_WIZARD },
{ SPELL_VENOM_BOLT, 12, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_CONFUSE, 10, MON_SPELL_WIZARD },
{ SPELL_SLOW, 10, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 10, MON_SPELL_WIZARD },
}
},
Expand All @@ -1169,31 +1146,9 @@ static const mon_spellbook mspell_list[] =
{
{ SPELL_BOLT_OF_FIRE, 10, MON_SPELL_WIZARD },
{ SPELL_BOLT_OF_COLD, 10, MON_SPELL_WIZARD },
{ SPELL_LEHUDIBS_CRYSTAL_SPEAR, 10, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_BLINK, 10, MON_SPELL_WIZARD },
{ SPELL_MINOR_HEALING, 10, MON_SPELL_WIZARD | MON_SPELL_EMERGENCY },
}
},

{ MST_OGRE_MAGE_IV,
{
{ SPELL_STING, 10, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_BANISHMENT, 10, MON_SPELL_WIZARD },
{ SPELL_LEHUDIBS_CRYSTAL_SPEAR, 12, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_BLINK, 10, MON_SPELL_WIZARD },
{ SPELL_MINOR_HEALING, 10, MON_SPELL_WIZARD | MON_SPELL_EMERGENCY },
}
},

{ MST_OGRE_MAGE_V,
{
{ SPELL_THROW_FLAME, 10, MON_SPELL_WIZARD },
{ SPELL_FIREBALL, 10, MON_SPELL_WIZARD },
{ SPELL_TELEPORT_OTHER, 20, MON_SPELL_WIZARD },
{ SPELL_HASTE_OTHER, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 10, MON_SPELL_WIZARD },
}
},

Expand Down Expand Up @@ -2061,6 +2016,16 @@ static const mon_spellbook mspell_list[] =
}
},

{ MST_ERICA,
{
{ SPELL_VENOM_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_ISKENDERUNS_MYSTIC_BLAST, 10, MON_SPELL_WIZARD },
{ SPELL_CONFUSE, 10, MON_SPELL_WIZARD },
{ SPELL_SLOW, 10, MON_SPELL_WIZARD },
{ SPELL_INVISIBILITY, 10, MON_SPELL_WIZARD },
}
},

{ MST_MAURICE,
{
{ SPELL_SPRINT, 14, MON_SPELL_WIZARD },
Expand Down Expand Up @@ -2093,6 +2058,16 @@ static const mon_spellbook mspell_list[] =
}
},

{ MST_LOUISE,
{
{ SPELL_STING, 10, MON_SPELL_WIZARD },
{ SPELL_STONE_ARROW, 10, MON_SPELL_WIZARD },
{ SPELL_LIGHTNING_BOLT, 10, MON_SPELL_WIZARD },
{ SPELL_BANISHMENT, 10, MON_SPELL_WIZARD },
{ SPELL_BLINK, 10, MON_SPELL_WIZARD },
}
},

{ MST_FRANCES,
{
{ SPELL_THROW_ICICLE, 12, MON_SPELL_WIZARD },
Expand Down
6 changes: 2 additions & 4 deletions crawl-ref/source/mon-util.cc
Expand Up @@ -2426,12 +2426,10 @@ static vector<mon_spellbook_type> _mons_spellbook_list(monster_type mon_type)

case MONS_WIZARD:
case MONS_EROLCHA:
return { MST_WIZARD_I, MST_WIZARD_II, MST_WIZARD_III, MST_WIZARD_IV,
MST_WIZARD_V };
return { MST_WIZARD_I, MST_WIZARD_II, MST_WIZARD_III };

case MONS_OGRE_MAGE:
return { MST_OGRE_MAGE_I, MST_OGRE_MAGE_II, MST_OGRE_MAGE_III,
MST_OGRE_MAGE_IV, MST_OGRE_MAGE_V };
return { MST_OGRE_MAGE_I, MST_OGRE_MAGE_II, MST_OGRE_MAGE_III };

case MONS_ANCIENT_CHAMPION:
return { MST_ANCIENT_CHAMPION_I, MST_ANCIENT_CHAMPION_II };
Expand Down

0 comments on commit 87348de

Please sign in to comment.