Skip to content

Commit

Permalink
New species: Basajaunak
Browse files Browse the repository at this point in the history
Basajaunak are a large, magic-oriented species, themed after the Basque
mythological creature said to rule the forest. They have the same armour
restrictions and weapon allowances as Ogres and Trolls, and likewise
have high strength and hit points.  Proficient magic users, they have
high intelligence and MP, but with flat magical aptitudes save for some
proficiency with spell-casting, hexes, and charms.

They prefer use of magic over physical combat, having generally poor
melee, defensive, and ranged aptitudes. Starting with generous HP and
having good fighting skill will offset their lack of other defenses, but
those defenses improve slowly.

Species abbreviation: Ba
Base stats: str 10, int 9, dex 5
Receive either str or int every 3 levels
Base Stealth:    9 (same as Og/Tr)

Apts:
HP:              2
MP:              1
XP:             -1
MR:              4

FIGHTING:        1
ARMOUR:         -2
DODGING:        -2
SHIELDS:        -1
STEALTH:        -1

UNARMED_COMBAT: -1
SHORT_BLADES:   -1
LONG_BLADES:    -1
AXES:           -1
MACES_FLAILS:   -1
POLEARMS:       -1
STAVES:         -1

SLINGS:         -2
BOWS:           -2
CROSSBOWS:      -2
THROWING:       -2

SPELLCASTING:    1
CONJURATIONS:    0
HEXES:           1
CHARMS:          2
SUMMONINGS:      0
NECROMANCY:      0
TRANSLOCATIONS:  0
TRANSMUTATIONS:  0
FIRE_MAGIC:      0
ICE_MAGIC:       0
AIR_MAGIC:       0
EARTH_MAGIC:     0
POISON_MAGIC:    0

INVOCATIONS:     0
EVOCATIONS:      0

Apocrypha:

BaAE, BaAK, BaAM, BaAr, BaAs, BaBe, BaCj, BaCK, BaEE, BaEn, BaFE, BaFi,
BaGl, BaHu, BaIE, BaMo, BaNe, BaSk, BaSu, BaTm, BaVM, BaWn, BaWr, BaWz

hair stats: almost entirely hair
  • Loading branch information
gammafunk committed Sep 20, 2016
1 parent d470d59 commit 522dbc7
Show file tree
Hide file tree
Showing 18 changed files with 127 additions and 14 deletions.
9 changes: 9 additions & 0 deletions crawl-ref/docs/crawl_manual.rst
Expand Up @@ -1531,6 +1531,15 @@ Trolls
from even the most terrible wounds. They learn slowly indeed - as slowly as
Demon Spawn - and need a great amount of food to survive.

Basajaunak
Basajaunak are large, hair-covered creatures said to rule the forest. They
possess great strength and intelligence, yet mature somewhat slowly.

Although Basajaunak prefer the use of magic over physical combat, which they
learn poorly, their size allows them use of the largest weapons as well as
boulders for throwing. Their resilient bodies provide a natural offset to
their lack of combat skill and limited choice of armour.

Minotaurs
The Minotaurs are yet another species of hybrids - Human bodies with bovine
heads. They delve into the Dungeon because of their instinctive love of
Expand Down
39 changes: 39 additions & 0 deletions crawl-ref/source/aptitudes.h
Expand Up @@ -1482,6 +1482,45 @@ static const species_skill_aptitude species_skill_aptitudes[] =
APT(SP_VINE_STALKER, SK_POISON_MAGIC, 0),
APT(SP_VINE_STALKER, SK_INVOCATIONS, 0),
APT(SP_VINE_STALKER, SK_EVOCATIONS, -1),

// SP_BASAJAUN
APT(SP_BASAJAUN, SK_FIGHTING, 1),
APT(SP_BASAJAUN, SK_SHORT_BLADES, -1),
APT(SP_BASAJAUN, SK_LONG_BLADES, -1),
APT(SP_BASAJAUN, SK_AXES, -1),
APT(SP_BASAJAUN, SK_MACES_FLAILS, -1),
APT(SP_BASAJAUN, SK_POLEARMS, -1),
APT(SP_BASAJAUN, SK_STAVES, -1),
APT(SP_BASAJAUN, SK_SLINGS, -2),
APT(SP_BASAJAUN, SK_BOWS, -2),
APT(SP_BASAJAUN, SK_CROSSBOWS, -2),
APT(SP_BASAJAUN, SK_THROWING, -2),
APT(SP_BASAJAUN, SK_ARMOUR, -2),
APT(SP_BASAJAUN, SK_DODGING, -2),
APT(SP_BASAJAUN, SK_STEALTH, -1),
#if TAG_MAJOR_VERSION == 34
APT(SP_BASAJAUN, SK_STABBING, UNUSABLE_SKILL),
#endif
APT(SP_BASAJAUN, SK_SHIELDS, -1),
#if TAG_MAJOR_VERSION == 34
APT(SP_BASAJAUN, SK_TRAPS, UNUSABLE_SKILL),
#endif
APT(SP_BASAJAUN, SK_UNARMED_COMBAT, -1),
APT(SP_BASAJAUN, SK_SPELLCASTING, 1),
APT(SP_BASAJAUN, SK_CONJURATIONS, 0),
APT(SP_BASAJAUN, SK_HEXES, 1),
APT(SP_BASAJAUN, SK_CHARMS, 2),
APT(SP_BASAJAUN, SK_SUMMONINGS, 0),
APT(SP_BASAJAUN, SK_NECROMANCY, 0),
APT(SP_BASAJAUN, SK_TRANSLOCATIONS, 0),
APT(SP_BASAJAUN, SK_TRANSMUTATIONS, 0),
APT(SP_BASAJAUN, SK_FIRE_MAGIC, 0),
APT(SP_BASAJAUN, SK_ICE_MAGIC, 0),
APT(SP_BASAJAUN, SK_AIR_MAGIC, 0),
APT(SP_BASAJAUN, SK_EARTH_MAGIC, 0),
APT(SP_BASAJAUN, SK_POISON_MAGIC, 0),
APT(SP_BASAJAUN, SK_INVOCATIONS, 0),
APT(SP_BASAJAUN, SK_EVOCATIONS, 0),
};

#endif
4 changes: 3 additions & 1 deletion crawl-ref/source/dat/des/altar/overflow.des
Expand Up @@ -108,7 +108,9 @@ function callback.xom_greatest_gift(data, triggerable, triggerer, marker, ev)
end

function species_mock(e)
if you.race() == "Centaur" then
if you.race() == "Basajaun" then
e.kmons("1 = hog")
elseif you.race() == "Centaur" then
e.kmons("1 = dart slug")
elseif you.race() == "Demigod" then
e.kmons("1 = titan simulacrum")
Expand Down
4 changes: 4 additions & 0 deletions crawl-ref/source/dat/descript/monsters.txt
Expand Up @@ -572,6 +572,10 @@ balrug

A huge and very powerful demon, wreathed in fire and shadows.
%%%%
basajaun

A hairy giant from the forest.
%%%%
basilisk

A crested lizard of middling size with a terrible petrifying gaze.
Expand Down
5 changes: 5 additions & 0 deletions crawl-ref/source/dat/descript/species.txt
@@ -1,4 +1,9 @@
%%%%
Basajaun

Basajaunak are a large, hairy race with great strength and intelligence. Their
bodies are robust, but they prefer use of magic over physical combat.
%%%%
Centaur

Swift, strong and bulky, Centaurs are particularly skilled with ranged
Expand Down
2 changes: 2 additions & 0 deletions crawl-ref/source/enum.h
Expand Up @@ -3552,6 +3552,7 @@ enum monster_type // menv[].type
MONS_HALAZID_WARLOCK,
MONS_DREAM_SHEEP,
MONS_FROG,
MONS_BASAJAUN,
#endif

NUM_MONSTERS, // used for polymorph
Expand Down Expand Up @@ -4260,6 +4261,7 @@ enum species_type
SP_GARGOYLE,
SP_FORMICID,
SP_VINE_STALKER,
SP_BASAJAUN,
NUM_SPECIES,

SP_UNKNOWN = 100,
Expand Down
23 changes: 14 additions & 9 deletions crawl-ref/source/job-data.h
Expand Up @@ -36,7 +36,8 @@ static const map<job_type, job_def> job_data =
{ JOB_AIR_ELEMENTALIST, {
"AE", "Air Elementalist",
0, 7, 5,
{ SP_DEEP_ELF, SP_TENGU, SP_BASE_DRACONIAN, SP_NAGA, SP_VINE_STALKER, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_TENGU, SP_BASE_DRACONIAN, SP_NAGA,
SP_VINE_STALKER, },
{ "robe", "book of Air" },
WCHOICE_NONE,
{ { SK_CONJURATIONS, 1 }, { SK_AIR_MAGIC, 3 }, { SK_SPELLCASTING, 2 },
Expand Down Expand Up @@ -101,7 +102,8 @@ static const map<job_type, job_def> job_data =
{ JOB_CONJURER, {
"Cj", "Conjurer",
0, 7, 5,
{ SP_DEEP_ELF, SP_NAGA, SP_TENGU, SP_BASE_DRACONIAN, SP_DEMIGOD, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_NAGA, SP_TENGU, SP_BASE_DRACONIAN,
SP_DEMIGOD, },
{ "robe", "book of Conjurations" },
WCHOICE_NONE,
{ { SK_CONJURATIONS, 4 }, { SK_SPELLCASTING, 2 }, { SK_DODGING, 2 },
Expand All @@ -122,7 +124,8 @@ static const map<job_type, job_def> job_data =
{ JOB_ENCHANTER, {
"En", "Enchanter",
0, 7, 5,
{ SP_DEEP_ELF, SP_FELID, SP_KOBOLD, SP_SPRIGGAN, SP_NAGA, SP_VAMPIRE, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_FELID, SP_KOBOLD, SP_SPRIGGAN,
SP_NAGA, SP_VAMPIRE, },
{ "dagger plus:1", "robe plus:1", "book of Maledictions" },
WCHOICE_NONE,
{ { SK_WEAPON, 1 }, { SK_HEXES, 3 }, { SK_SPELLCASTING, 2 },
Expand All @@ -143,7 +146,8 @@ static const map<job_type, job_def> job_data =
{ JOB_FIRE_ELEMENTALIST, {
"FE", "Fire Elementalist",
0, 7, 5,
{ SP_DEEP_ELF, SP_HILL_ORC, SP_NAGA, SP_TENGU, SP_DEMIGOD, SP_GARGOYLE, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_HILL_ORC, SP_NAGA, SP_TENGU, SP_DEMIGOD,
SP_GARGOYLE, },
{ "robe", "book of Flames" },
WCHOICE_NONE,
{ { SK_CONJURATIONS, 1 }, { SK_FIRE_MAGIC, 3 }, { SK_SPELLCASTING, 2 },
Expand Down Expand Up @@ -174,8 +178,8 @@ static const map<job_type, job_def> job_data =
{ JOB_ICE_ELEMENTALIST, {
"IE", "Ice Elementalist",
0, 7, 5,
{ SP_DEEP_ELF, SP_MERFOLK, SP_NAGA, SP_BASE_DRACONIAN, SP_DEMIGOD,
SP_GARGOYLE, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_MERFOLK, SP_NAGA, SP_BASE_DRACONIAN,
SP_DEMIGOD, SP_GARGOYLE, },
{ "robe", "book of Frost" },
WCHOICE_NONE,
{ { SK_CONJURATIONS, 1 }, { SK_ICE_MAGIC, 3 }, { SK_SPELLCASTING, 2 },
Expand Down Expand Up @@ -207,7 +211,8 @@ static const map<job_type, job_def> job_data =
{ JOB_SKALD, {
"Sk", "Skald",
4, 4, 4,
{ SP_HALFLING, SP_CENTAUR, SP_MERFOLK, SP_BASE_DRACONIAN, SP_VAMPIRE, },
{ SP_BASAJAUN, SP_HALFLING, SP_CENTAUR, SP_MERFOLK, SP_BASE_DRACONIAN,
SP_VAMPIRE, },
{ "leather armour", "book of Battle" },
WCHOICE_PLAIN,
{ { SK_FIGHTING, 2 }, { SK_ARMOUR, 1 }, { SK_DODGING, 1 },
Expand Down Expand Up @@ -273,8 +278,8 @@ static const map<job_type, job_def> job_data =
{ JOB_WIZARD, {
"Wz", "Wizard",
-1, 10, 3,
{ SP_DEEP_ELF, SP_NAGA, SP_BASE_DRACONIAN, SP_OCTOPODE, SP_HUMAN,
SP_MUMMY, },
{ SP_BASAJAUN, SP_DEEP_ELF, SP_NAGA, SP_BASE_DRACONIAN, SP_OCTOPODE,
SP_HUMAN, SP_MUMMY, },
{ "robe", "hat", "book of Minor Magic" },
WCHOICE_NONE,
{ { SK_DODGING, 2 }, { SK_STEALTH, 2 }, { SK_SPELLCASTING, 3 },
Expand Down
13 changes: 13 additions & 0 deletions crawl-ref/source/mon-data.h
Expand Up @@ -4144,6 +4144,19 @@ DUMMY(MONS_MERGED_SLIME_CREATURE, 'J', LIGHTGREEN, "merged slime creature",
{TILEP_MONS_DRYAD}, TILE_CORPSE_DRYAD
},

{
MONS_BASAJAUN, 'R', GREEN, "basajaun",
M_WARM_BLOOD | M_SPEAKS,
MR_NO_FLAGS,
10, MONS_BASAJAUN, MONS_BASAJAUN, MH_NATURAL, 20,
{ {AT_HIT, AF_PLAIN, 17}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
5, 275,
1, 6, MST_NO_SPELLS, CE_CLEAN, S_SHOUT,
I_HUMAN, HT_LAND, 10, DEFAULT_ENERGY,
MONUSE_WEAPONS_ARMOUR, SIZE_LARGE, MON_SHAPE_HUMANOID,
{TILEP_MONS_BASAJAUN}, TILE_CORPSE_BASAJAUN
},

{
MONS_SNAPLASHER_VINE, 'w', LIGHTGREEN, "snaplasher vine",
M_NO_EXP_GAIN | M_STATIONARY | M_NO_POLY_TO,
Expand Down
3 changes: 2 additions & 1 deletion crawl-ref/source/newgame.cc
Expand Up @@ -166,7 +166,8 @@ static const species_type species_order[] =
SP_HALFLING, SP_KOBOLD,
SP_SPRIGGAN,
// large species
SP_OGRE, SP_TROLL,
SP_BASAJAUN, SP_OGRE,
SP_TROLL,
// significantly different body type from human ("monstrous")
SP_NAGA, SP_CENTAUR,
SP_MERFOLK, SP_MINOTAUR,
Expand Down
5 changes: 3 additions & 2 deletions crawl-ref/source/output.cc
Expand Up @@ -2588,8 +2588,9 @@ static string _status_mut_abilities(int sw)
}

// a bit more stuff
if (you.species == SP_OGRE || you.species == SP_TROLL
|| species_is_draconian(you.species) || you.species == SP_SPRIGGAN)
if (you.species == SP_BASAJAUN || you.species == SP_OGRE
|| you.species == SP_TROLL || species_is_draconian(you.species)
|| you.species == SP_SPRIGGAN)
{
mutations.emplace_back("unfitting armour");
}
Expand Down
6 changes: 6 additions & 0 deletions crawl-ref/source/rltiles/dc-corpse.txt
Expand Up @@ -121,7 +121,13 @@ bullfrog CORPSE_BULLFROG
blink_frog CORPSE_BLINK_FROG
spiny_frog CORPSE_SPINY_FROG

## Spiritual and magical creatures ('R')
%sdir mon
basajaun CORPSE_BASAJAUN


## Snakes ('S')
%sdir mon/animals
ball_python CORPSE_BALL_PYTHON
adder CORPSE_ADDER
black_mamba CORPSE_BLACK_MAMBA
Expand Down
4 changes: 3 additions & 1 deletion crawl-ref/source/rltiles/dc-mon.txt
Expand Up @@ -361,7 +361,7 @@ black_sun MONS_BLACK_SUN
## From the Wucad Mu wizard laboratory
mon/vault/demonspawn_monk_ghost MONS_FAINT_DEMONSPAWN_MONK

## Spiritual beings ('R')
## Spiritual and magical beings ('R')
%sdir mon/unique
%rim 1
mara MONS_MARA
Expand All @@ -378,6 +378,8 @@ ancestor_knight MONS_ANCESTOR_KNIGHT
ancestor_battlemage MONS_ANCESTOR_BATTLEMAGE
ancestor_hexer MONS_ANCESTOR_HEXER
%rim 1
%sdir mon
basajaun MONS_BASAJAUN

## Abominations ('X')
%sdir mon/demons
Expand Down
2 changes: 2 additions & 0 deletions crawl-ref/source/rltiles/dc-player.txt
Expand Up @@ -77,6 +77,8 @@ djinni_m
formicid FORMICID
vine_stalker_f VINE_STALKER
vine_stalker_m
basajaun_f BASAJAUN
basajaun_m

# draconians
draconian_f DRACONIAN DRACONIAN_FIRST
Expand Down
Binary file added crawl-ref/source/rltiles/mon/basajaun.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added crawl-ref/source/rltiles/player/base/basajaun_f.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added crawl-ref/source/rltiles/player/base/basajaun_m.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions crawl-ref/source/species-data.h
Expand Up @@ -701,6 +701,26 @@ static const map<species_type, species_def> species_data =
{ SK_MACES_FLAILS, SK_AXES, SK_POLEARMS, SK_LONG_BLADES, SK_STAVES,
SK_BOWS, SK_CROSSBOWS, SK_SLINGS },
} },

{ SP_BASAJAUN, {
"Ba",
"Basajaun", nullptr, nullptr,
SPF_NONE,
-1, 2, 1,
9, 4,
MONS_BASAJAUN,
HT_LAND, US_ALIVE, SIZE_LARGE,
10, 9, 5, // 24
{ STAT_STR, STAT_INT }, 3,
{},
{},
{},
{ JOB_SKALD, JOB_ENCHANTER, JOB_WIZARD, JOB_AIR_ELEMENTALIST,
JOB_EARTH_ELEMENTALIST, JOB_SUMMONER, JOB_NECROMANCER },
{ SK_MACES_FLAILS, SK_AXES, SK_POLEARMS, SK_LONG_BLADES, SK_STAVES,
SK_BOWS, SK_CROSSBOWS, SK_SLINGS },
} },

#if TAG_MAJOR_VERSION == 34
{ SP_SLUDGE_ELF, {
"SE",
Expand Down
2 changes: 2 additions & 0 deletions crawl-ref/source/tilepick-p.cc
Expand Up @@ -576,6 +576,8 @@ tileidx_t tilep_species_to_base_tile(int sp, int level)
case SP_HIGH_ELF:
case SP_SLUDGE_ELF:
#endif
case SP_BASAJAUN:
return TILEP_BASE_BASAJAUN;
case SP_DEEP_ELF:
return TILEP_BASE_DEEP_ELF;
case SP_HALFLING:
Expand Down

0 comments on commit 522dbc7

Please sign in to comment.