summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/newgame.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-11 15:32:32 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-11 15:32:32 +0000
commit42a287ebc7f5cd9b483966c1419c3020036c342d (patch)
tree7593f84614af877a2fb60dddcee3989cbb406d07 /crawl-ref/source/newgame.cc
parentf35e944cc23bebb7bb0dffb7697f24804b572d87 (diff)
downloadcrawl-ref-42a287ebc7f5cd9b483966c1419c3020036c342d.tar.gz
crawl-ref-42a287ebc7f5cd9b483966c1419c3020036c342d.zip
Some more tweaks to starting equipment and skills.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6498 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/newgame.cc')
-rw-r--r--crawl-ref/source/newgame.cc103
1 files changed, 60 insertions, 43 deletions
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index f4710e9d69..56ca66ae1f 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -242,10 +242,10 @@ static job_type new_jobs_order[] = {
JOB_HEALER, JOB_CHAOS_KNIGHT,
JOB_DEATH_KNIGHT, JOB_CRUSADER,
// general and niche spellcasters (incl. Crusader above)
- JOB_REAVER, JOB_WIZARD,
- JOB_CONJURER, JOB_ENCHANTER,
- JOB_SUMMONER, JOB_NECROMANCER,
- JOB_WARPER, JOB_TRANSMUTER,
+ JOB_REAVER, JOB_WARPER,
+ JOB_WIZARD, JOB_CONJURER,
+ JOB_ENCHANTER, JOB_SUMMONER,
+ JOB_NECROMANCER, JOB_TRANSMUTER,
JOB_FIRE_ELEMENTALIST, JOB_ICE_ELEMENTALIST,
JOB_AIR_ELEMENTALIST, JOB_EARTH_ELEMENTALIST,
// poison specialists and stabbers
@@ -715,7 +715,7 @@ static unsigned char _random_potion_description()
// in itemname.cc; this check ensures clear potions don't
// get odd qualifiers.
}
- while ((colour == PDC_CLEAR && nature > PDQ_VISCOUS)
+ while (colour == PDC_CLEAR && nature > PDQ_VISCOUS
|| desc == PDESCS(PDC_CLEAR)
|| desc == PDESCQ(PDQ_GLUGGY, PDC_WHITE));
@@ -1269,6 +1269,9 @@ game_start:
_mark_starting_books();
_racialise_starting_equipment();
+ _give_basic_spells(you.char_class);
+ _give_basic_knowledge(you.char_class);
+
_initialise_item_descriptions();
_reassess_starting_skills();
@@ -1306,9 +1309,6 @@ game_start:
set_hp( you.hp_max, false );
set_mp( you.max_magic_points, false );
- _give_basic_spells(you.char_class);
- _give_basic_knowledge(you.char_class);
-
// tmpfile purging removed in favour of marking
tmp_file_pairs.init(false);
@@ -2242,8 +2242,13 @@ static bool _choose_weapon()
weapon_type startwep[5] = { WPN_SHORT_SWORD, WPN_MACE,
WPN_HAND_AXE, WPN_SPEAR, WPN_UNKNOWN };
- if (you.char_class == JOB_GLADIATOR)
+ // Gladiators that are at least medium sized get to choose a trident
+ // rather than a spear
+ if (you.char_class == JOB_GLADIATOR
+ && player_size(PSIZE_BODY) >= SIZE_MEDIUM)
+ {
startwep[3] = WPN_TRIDENT;
+ }
const bool claws_allowed =
(you.char_class != JOB_GLADIATOR && you.has_claws());
@@ -2865,9 +2870,17 @@ static void _give_basic_spells(job_type which_job)
switch (which_job)
{
+ case JOB_WIZARD:
+ if (!you.skills[SK_CONJURATIONS])
+ {
+ // Wizards who start with Minor Magic III (summoning) have no
+ // Conjurations skill, and thus get another starting spell.
+ which_spell = SPELL_SUMMON_SMALL_MAMMALS;
+ break;
+ }
+ // intentional fall-through
case JOB_CONJURER:
case JOB_REAVER:
- case JOB_WIZARD:
which_spell = SPELL_MAGIC_DART;
break;
case JOB_STALKER:
@@ -4638,8 +4651,9 @@ bool _give_items_skills()
else
you.inv[0].plus2 = 4 - you.inv[0].plus;
- _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE, -1,
- 1, you.religion == GOD_XOM ? 1 + random2(3) : 0);
+ _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
+ ARM_ROBE, 1, you.religion == GOD_XOM ? 1 + random2(3)
+ : 0);
you.skills[SK_FIGHTING] = 3;
you.skills[SK_ARMOUR] = 1;
@@ -4816,7 +4830,8 @@ bool _give_items_skills()
ng_dk = (keyn == '*'? DK_RANDOM : choice);
}
- _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);
+ _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
+ ARM_ROBE);
switch (choice)
{
@@ -4830,8 +4845,8 @@ bool _give_items_skills()
case DK_YREDELEMNUL:
you.religion = GOD_YREDELEMNUL;
you.piety = 28;
- you.inv[0].plus = 1;
- you.inv[0].plus2 = 1;
+ you.inv[0].plus = 1 + random2(2);
+ you.inv[0].plus2 = 3 - you.inv[0].plus;
you.inv[2].quantity = 0;
you.skills[SK_INVOCATIONS] = 3;
break;
@@ -4870,13 +4885,13 @@ bool _give_items_skills()
if (you.inv[0].quantity < 1)
_newgame_clear_item(0);
- _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);
+ _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
+ ARM_ROBE);
_newgame_make_item(2, EQ_NONE, OBJ_BOOKS, BOOK_WAR_CHANTS);
you.skills[SK_FIGHTING] = 3;
you.skills[SK_ARMOUR] = 1;
you.skills[SK_DODGING] = 1;
- you.skills[SK_STEALTH] = 1;
you.skills[SK_SPELLCASTING] = 2;
you.skills[SK_ENCHANTMENTS] = 2;
weap_skill = 2;
@@ -4890,7 +4905,8 @@ bool _give_items_skills()
if (you.inv[0].quantity < 1)
_newgame_clear_item(0);
- _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);
+ _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
+ ARM_ROBE);
if (!_choose_book( you.inv[2], BOOK_CONJURATIONS_I, 2 ))
return (false);
@@ -4903,6 +4919,32 @@ bool _give_items_skills()
weap_skill = 3;
break;
+ case JOB_WARPER:
+ _newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);
+ if (!_choose_weapon())
+ return (false);
+
+ if (you.inv[0].quantity < 1)
+ _newgame_clear_item(0);
+
+ _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
+ ARM_ROBE);
+ _newgame_make_item(2, EQ_NONE, OBJ_BOOKS, BOOK_SPATIAL_TRANSLOCATIONS);
+
+ // One free escape.
+ _newgame_make_item(3, EQ_NONE, OBJ_SCROLLS, SCR_BLINKING);
+ _newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_DART, -1,
+ 10 + roll_dice( 2, 10 ));
+
+ you.skills[SK_FIGHTING] = 1;
+ you.skills[SK_ARMOUR] = 1;
+ you.skills[SK_DODGING] = 2;
+ you.skills[SK_SPELLCASTING] = 2;
+ you.skills[SK_TRANSLOCATIONS] = 3;
+ you.skills[SK_DARTS] = 1;
+ weap_skill = 3;
+ break;
+
case JOB_WIZARD:
// The knife is a tool, not a weapon, so don't start wielding it.
if (_needs_butchering_tool())
@@ -5010,31 +5052,6 @@ bool _give_items_skills()
you.skills[SK_STEALTH] = 2;
break;
- case JOB_WARPER:
- _newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);
- if (!_choose_weapon())
- return (false);
-
- if (you.inv[0].quantity < 1)
- _newgame_clear_item(0);
-
- _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
- ARM_ROBE);
- _newgame_make_item(2, EQ_NONE, OBJ_BOOKS, BOOK_SPATIAL_TRANSLOCATIONS);
-
- // One free escape.
- _newgame_make_item(3, EQ_NONE, OBJ_SCROLLS, SCR_BLINKING);
- _newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_DART, -1,
- 10 + roll_dice( 2, 10 ));
-
- you.skills[SK_FIGHTING] = 1;
- you.skills[SK_DODGING] = 2;
- you.skills[SK_SPELLCASTING] = 2;
- you.skills[SK_TRANSLOCATIONS] = 3;
- you.skills[SK_DARTS] = 1;
- weap_skill = 3;
- break;
-
case JOB_TRANSMUTER:
you.equip[EQ_WEAPON] = -1;