diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/docs/crawl_manual.txt | 6 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/jobs.cc | 12 | ||||
-rw-r--r-- | crawl-ref/source/newgame.cc | 30 | ||||
-rw-r--r-- | crawl-ref/source/ng-restr.cc | 26 | ||||
-rw-r--r-- | crawl-ref/source/spl-data.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/tilepick.cc | 10 |
7 files changed, 79 insertions, 10 deletions
diff --git a/crawl-ref/docs/crawl_manual.txt b/crawl-ref/docs/crawl_manual.txt index 3fd7ac0353..20046575b3 100644 --- a/crawl-ref/docs/crawl_manual.txt +++ b/crawl-ref/docs/crawl_manual.txt @@ -1962,6 +1962,12 @@ Reavers: Reavers are warriors who learn the magics of destruction in order to complement their deadliness in hand combat. +Warpers: + -------- +Warpers specialise in translocation magic, and are experts in travelling +long distances and positioning themselves precisely and use this to +their advantage in melee or missile combat. + Arcane Marksmen: -------- Arcane Marksmen specialize in dealing ranged damage via enchanted diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 0a9f8193aa..08a30334c6 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -1456,9 +1456,10 @@ enum job_type JOB_REAVER, JOB_STALKER, JOB_MONK, // 25 - JOB_ARCANE_MARKSMAN, + JOB_WARPER, JOB_WANDERER, // 27 JOB_ARTIFICER, // 28 -Greenberg/Bane + JOB_ARCANE_MARKSMAN, NUM_JOBS, // always after the last job JOB_UNKNOWN = 100 diff --git a/crawl-ref/source/jobs.cc b/crawl-ref/source/jobs.cc index 3968356636..8e240703a0 100644 --- a/crawl-ref/source/jobs.cc +++ b/crawl-ref/source/jobs.cc @@ -21,8 +21,8 @@ static job_type old_jobs_order[] = { JOB_CHAOS_KNIGHT, JOB_TRANSMUTER, JOB_HEALER, JOB_REAVER, JOB_STALKER, JOB_MONK, - JOB_ARCANE_MARKSMAN, JOB_WANDERER, - JOB_ARTIFICER + JOB_WARPER, JOB_WANDERER, + JOB_ARTIFICER, JOB_ARCANE_MARKSMAN }; // First plain fighters, then religious fighters, then spell-casting @@ -36,7 +36,7 @@ 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_ARCANE_MARKSMAN, + JOB_REAVER, JOB_WARPER, JOB_WIZARD, JOB_CONJURER, JOB_ENCHANTER, JOB_SUMMONER, JOB_NECROMANCER, JOB_TRANSMUTER, @@ -46,7 +46,7 @@ static job_type new_jobs_order[] = { JOB_VENOM_MAGE, JOB_STALKER, JOB_THIEF, JOB_ASSASSIN, JOB_HUNTER, JOB_ARTIFICER, - JOB_WANDERER + JOB_ARCANE_MARKSMAN, JOB_WANDERER }; job_type get_class(const int index) @@ -61,7 +61,7 @@ job_type get_class(const int index) static const char * Class_Abbrev_List[ NUM_JOBS ] = { "Fi", "Wz", "Pr", "Th", "Gl", "Ne", "Pa", "As", "Be", "Hu", "Cj", "En", "FE", "IE", "Su", "AE", "EE", "Cr", "DK", "VM", - "CK", "Tm", "He", "Re", "St", "Mo", "Wr", "Wn", "Ar" }; + "CK", "Tm", "He", "Re", "St", "Mo", "Wr", "Wn", "Ar", "Am" }; static const char * Class_Name_List[ NUM_JOBS ] = { "Fighter", "Wizard", "Priest", "Thief", "Gladiator", "Necromancer", @@ -69,7 +69,7 @@ static const char * Class_Name_List[ NUM_JOBS ] = "Fire Elementalist", "Ice Elementalist", "Summoner", "Air Elementalist", "Earth Elementalist", "Crusader", "Death Knight", "Venom Mage", "Chaos Knight", "Transmuter", "Healer", "Reaver", "Stalker", - "Monk", "Arcane Marksman", "Wanderer", "Artificer" }; + "Monk", "Warper", "Wanderer", "Artificer", "Arcane Marksman" }; int get_class_index_by_abbrev(const char *abbrev) { diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index d6e6d578db..1057bccb07 100644 --- a/crawl-ref/source/newgame.cc +++ b/crawl-ref/source/newgame.cc @@ -1350,6 +1350,7 @@ static void _give_last_paycheck(job_type which_job) break; case JOB_WANDERER: + case JOB_WARPER: case JOB_ARCANE_MARKSMAN: case JOB_ASSASSIN: you.gold = 50; @@ -1456,6 +1457,7 @@ static void _jobs_stat_init(job_type which_job) case JOB_STALKER: s = 2; i = 4; d = 6; hp = 12; mp = 1; break; case JOB_HUNTER: s = 4; i = 3; d = 5; hp = 13; mp = 0; break; + case JOB_WARPER: s = 3; i = 5; d = 4; hp = 12; mp = 1; break; case JOB_ARCANE_MARKSMAN: s = 3; i = 5; d = 4; hp = 12; mp = 1; break; case JOB_MONK: s = 3; i = 2; d = 7; hp = 13; mp = 0; break; @@ -4251,6 +4253,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, 20); + + 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_ARCANE_MARKSMAN: _newgame_make_item(0, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE); @@ -4308,8 +4336,6 @@ bool _give_items_skills() if (!_choose_book(3, BOOK_ELEMENTAL_MISSILES, 2)) return (false); - _newgame_make_item(4, EQ_NONE, OBJ_SCROLLS, SCR_BLINKING); - you.skills[SK_DODGING] = 2; you.skills[SK_SPELLCASTING] = 2; diff --git a/crawl-ref/source/ng-restr.cc b/crawl-ref/source/ng-restr.cc index cf4d7bd5b2..75d676b90f 100644 --- a/crawl-ref/source/ng-restr.cc +++ b/crawl-ref/source/ng-restr.cc @@ -340,6 +340,32 @@ char_choice_restriction class_allowed(species_type speci, return (CC_UNRESTRICTED); } + case JOB_WARPER: + switch (speci) + { + case SP_HUMAN: + case SP_DEEP_ELF: + case SP_SLUDGE_ELF: + case SP_MOUNTAIN_DWARF: + case SP_DEEP_DWARF: + case SP_HILL_ORC: + case SP_MERFOLK: + case SP_HALFLING: + case SP_KOBOLD: + case SP_CENTAUR: + case SP_OGRE: + case SP_TROLL: + case SP_MINOTAUR: + case SP_KENKU: + case SP_RED_DRACONIAN: + case SP_DEMONSPAWN: + case SP_MUMMY: + case SP_GHOUL: + case SP_VAMPIRE: + return (CC_RESTRICTED); + default: + return (CC_UNRESTRICTED); + } case JOB_ARCANE_MARKSMAN: switch (speci) { diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index 24f171e2e6..c4e73a50c5 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -2541,7 +2541,7 @@ SPELL_EXPLODING_AMMUNITION, "Exploding Ammunition", SPTYP_ENCHANTMENT | SPTYP_FIRE | SPTYP_AIR, SPFLAG_HELPFUL | SPFLAG_BATTLE, - 7, + 5, 0, -1,-1, 0, diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index 6d051badc4..e7b8389051 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -3471,6 +3471,16 @@ void tilep_job_default(int job, int gender, int *parts) parts[TILEP_PART_BOOTS] = TILEP_BOOTS_SHORT_BROWN; break; + case JOB_WARPER: + parts[TILEP_PART_BODY] = TILEP_BODY_ROBE_BROWN; + parts[TILEP_PART_HELM] = TILEP_HELM_GANDALF; + parts[TILEP_PART_HAND1] = TILEP_HAND1_SARUMAN; + parts[TILEP_PART_HAND2] = TILEP_HAND2_BOOK_WHITE; + parts[TILEP_PART_BOOTS] = TILEP_BOOTS_SHORT_BROWN; + parts[TILEP_PART_CLOAK] = TILEP_CLOAK_RED; + break; + + case JOB_ARCANE_MARKSMAN: parts[TILEP_PART_BODY] = TILEP_BODY_ROBE_BROWN; parts[TILEP_PART_HELM] = TILEP_HELM_GANDALF; |