From 6ac25ffd6efaa21bc9ac1d9a5828e7ae6412d292 Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Fri, 11 Jul 2008 15:45:23 +0000 Subject: Apply r6498 to 0.4. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup-0.4@6499 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/docs/crawl_manual.txt | 11 +++-- crawl-ref/source/describe.cc | 4 +- crawl-ref/source/newgame.cc | 103 +++++++++++++++++++++++----------------- 3 files changed, 68 insertions(+), 50 deletions(-) diff --git a/crawl-ref/docs/crawl_manual.txt b/crawl-ref/docs/crawl_manual.txt index 49b85a87f3..7013763ed4 100644 --- a/crawl-ref/docs/crawl_manual.txt +++ b/crawl-ref/docs/crawl_manual.txt @@ -1921,14 +1921,15 @@ of spells which should see them through the first several levels. Wizards: -------- A Wizard is a magician who does not specialise in any area of magic. -Wizards start with a variety of magical skills and the magic dart spell -in memory. +Wizards start with a variety of magical skills and with either +Magic Dart or Summon Small Mammals in memory, depending on their +starting book. Conjurers: ---------- The Conjurer specialises in the violent and destructive magic of -conjuration spells. Like the Wizard, the Conjurer starts with the -magic dart spell. +conjuration spells. Like most Wizards, the Conjurer starts with the +Magic Dart spell. Enchanters: ----------- @@ -1937,7 +1938,7 @@ Although not as directly powerful as conjurations, high-level enchantments offer a wide range of very handy effects. The Enchanter begins with lightly enchanted weapons and armour, but no direct damage spell (since enchantments do not deal with direct attacks). Instead, -they begin with the "Corona" spell and some enchanted darts, which +they begin with the Corona spell and some enchanted darts, which should help them out until they can use the higher level enchantment spells. diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 11ff6eca6e..1659657f03 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -2888,7 +2888,7 @@ static void _detailed_god_description(god_type which_god) const int bottom_line = std::min(30, get_number_of_lines()); - cgotoxy(1, bottom_line-1); + cgotoxy(1, bottom_line); formatted_string::parse_string( "Press '!' to toggle between the overview and the more detailed " "description.").display(); @@ -3105,7 +3105,7 @@ void describe_god( god_type which_god, bool give_title ) numcols).c_str()); } - cgotoxy(1, bottom_line - 1); + cgotoxy(1, bottom_line); textcolor(LIGHTGREY); formatted_string::parse_string( "Press '!' to toggle between the overview and the more detailed " diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index 9a9f89d7d0..d74301e19f 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)); @@ -1270,6 +1270,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(); @@ -1307,9 +1310,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); @@ -2243,8 +2243,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()); @@ -2866,9 +2871,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: @@ -4639,8 +4652,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; @@ -4817,7 +4831,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) { @@ -4831,8 +4846,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; @@ -4871,13 +4886,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; @@ -4891,7 +4906,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); @@ -4904,6 +4920,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()) @@ -5011,31 +5053,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; -- cgit v1.2.3-54-g00ecf