From 42a287ebc7f5cd9b483966c1419c3020036c342d Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Fri, 11 Jul 2008 15:32:32 +0000 Subject: 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 --- crawl-ref/source/describe.cc | 4 +- crawl-ref/source/newgame.cc | 103 +++++++++++++++++++++++++------------------ 2 files changed, 62 insertions(+), 45 deletions(-) (limited to 'crawl-ref/source') 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 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; -- cgit v1.2.3-54-g00ecf