Attached Files |
0001-Added-weapon-choice-for-hunters.patch [^] (12,922 bytes) 2011-08-18 13:23 [Show Content] [Hide Content]From 9ab511c982786aee0bd8c8ef45961e36d05d6d9f Mon Sep 17 00:00:00 2001
From: Voker57 <voker57@gmail.com>
Date: Thu, 18 Aug 2011 14:19:32 +0400
Subject: [PATCH] Added weapon choice for hunters
Every hunter gets to choose from 3 weapons: throwing (large rocks for large
species, javelins for medium ones, darts for spriggans).
All missiles are +1, weapons are +0.
---
crawl-ref/source/itemprop-enum.h | 4 ++
crawl-ref/source/newgame.cc | 111 ++++++++++++++++++++++++++++----------
crawl-ref/source/ng-restr.cc | 87 +++++++++++++++++++++++++++++-
crawl-ref/source/ng-setup.cc | 89 ++++++++++++++----------------
4 files changed, 214 insertions(+), 77 deletions(-)
diff --git a/crawl-ref/source/itemprop-enum.h b/crawl-ref/source/itemprop-enum.h
index 467f143..74a03c2 100644
--- a/crawl-ref/source/itemprop-enum.h
+++ b/crawl-ref/source/itemprop-enum.h
@@ -505,6 +505,10 @@ enum weapon_type
WPN_UNKNOWN = 1000, // 1000
WPN_RANDOM,
WPN_VIABLE,
+ WPN_THROWN,
+ WPN_ROCKS,
+ WPN_JAVELINS,
+ WPN_DARTS,
};
enum weapon_property_type
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index ccb7958..e64709e 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -1392,8 +1392,24 @@ static void _construct_weapon_menu(const weapon_type& defweapon,
text += letter;
text += " - ";
- text += weapons[i].first == WPN_UNARMED
- ? "claws" : weapon_base_name(weapons[i].first);
+ switch(weapons[i].first)
+ {
+ case WPN_UNARMED:
+ text += "claws";
+ break;
+ case WPN_JAVELINS:
+ text += "javelins";
+ break;
+ case WPN_ROCKS:
+ text += "large rocks";
+ break;
+ case WPN_DARTS:
+ text += "darts";
+ break;
+ default:
+ text += weapon_base_name(weapons[i].first);
+ break;
+ }
// Fill to column width to give extra padding for the highlight
text.append(COLUMN_WIDTH - text.size() - 1 , ' ');
tmp->set_text(text);
@@ -1634,38 +1650,76 @@ static bool _prompt_weapon(const newgame_def* ng, newgame_def* ng_choice,
static std::vector<weapon_choice> _get_weapons(const newgame_def* ng)
{
std::vector<weapon_choice> weapons;
-
- weapon_type startwep[6] = { WPN_UNARMED, WPN_SHORT_SWORD, WPN_MACE,
- WPN_HAND_AXE, WPN_SPEAR, WPN_FALCHION };
- for (int i = 0; i < 6; ++i)
+ if(ng->job == JOB_HUNTER)
{
- weapon_choice wp;
- wp.first = startwep[i];
+ weapon_type startwep[4] = { WPN_THROWN, WPN_SLING, WPN_BOW, WPN_CROSSBOW };
+
+ for (int i = 0; i < 4; i++)
+ {
+ weapon_choice wp;
+ wp.first = startwep[i];
- switch (wp.first)
+ switch (wp.first)
+ {
+ case WPN_THROWN:
+ if (species_size(ng->species, PSIZE_TORSO) == SIZE_LARGE)
+ {
+ wp.first = WPN_ROCKS;
+ } else if (species_size(ng->species, PSIZE_TORSO) <= SIZE_SMALL)
+ {
+ wp.first = WPN_DARTS;
+ } else
+ {
+ wp.first = WPN_JAVELINS;
+ }
+ break;
+ default:
+ break;
+ }
+ wp.second = weapon_restriction(wp.first, *ng);
+ ASSERT(wp.first != WPN_CROSSBOW || wp.second != CC_BANNED);
+ if (wp.second != CC_BANNED)
+ {
+ weapons.push_back(wp);
+ }
+ }
+ } else
+ {
+ weapon_type startwep[6] = { WPN_UNARMED, WPN_SHORT_SWORD, WPN_MACE,
+ WPN_HAND_AXE, WPN_SPEAR, WPN_FALCHION };
+ for (int i = 0; i < 6; ++i)
{
- case WPN_UNARMED:
- if (!species_has_claws(ng->species))
- continue;
- break;
- case WPN_SPEAR:
- // Non-small fighters and gladiators get tridents.
- if ((ng->job == JOB_FIGHTER || ng->job == JOB_GLADIATOR)
- && species_size(ng->species, PSIZE_BODY) >= SIZE_MEDIUM)
+ weapon_choice wp;
+ wp.first = startwep[i];
+
+ switch (wp.first)
{
- wp.first = WPN_TRIDENT;
+ case WPN_UNARMED:
+ if (!species_has_claws(ng->species))
+ continue;
+ break;
+ case WPN_SPEAR:
+ // Non-small fighters and gladiators get tridents.
+ if ((ng->job == JOB_FIGHTER || ng->job == JOB_GLADIATOR)
+ && species_size(ng->species, PSIZE_BODY) >= SIZE_MEDIUM)
+ {
+ wp.first = WPN_TRIDENT;
+ }
+ break;
+ case WPN_MACE:
+ if (ng->species == SP_OGRE)
+ wp.first = WPN_ANKUS;
+ break;
+ default:
+ break;
+ }
+
+ wp.second = weapon_restriction(wp.first, *ng);
+ if (wp.second != CC_BANNED)
+ {
+ weapons.push_back(wp);
}
- break;
- case WPN_MACE:
- if (ng->species == SP_OGRE)
- wp.first = WPN_ANKUS;
- break;
- default:
- break;
}
- wp.second = weapon_restriction(wp.first, *ng);
- if (wp.second != CC_BANNED)
- weapons.push_back(wp);
}
return weapons;
}
@@ -1732,6 +1786,7 @@ static bool _choose_weapon(newgame_def* ng, newgame_def* ng_choice,
case JOB_ABYSSAL_KNIGHT:
case JOB_SKALD:
case JOB_WARPER:
+ case JOB_HUNTER:
break;
default:
return (true);
diff --git a/crawl-ref/source/ng-restr.cc b/crawl-ref/source/ng-restr.cc
index 6099e06..a17e102 100644
--- a/crawl-ref/source/ng-restr.cc
+++ b/crawl-ref/source/ng-restr.cc
@@ -753,7 +753,92 @@ char_choice_restriction weapon_restriction(weapon_type wpn,
case WPN_ANKUS:
if (species_genus(ng.species) == GENPC_OGREISH)
return (CC_UNRESTRICTED);
- // intentional fall-through
+ case WPN_CROSSBOW:
+ switch(ng.species)
+ {
+ case SP_DEEP_ELF:
+ case SP_HIGH_ELF:
+ case SP_HALFLING:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_HILL_ORC:
+ case SP_SPRIGGAN:
+ case SP_TROLL:
+ case SP_SLUDGE_ELF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_BOW:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ case SP_KOBOLD:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_TROLL:
+ case SP_HILL_ORC:
+ case SP_SLUDGE_ELF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_SLING:
+ switch(ng.species)
+ {
+ case SP_MOUNTAIN_DWARF:
+ case SP_DEEP_ELF:
+ case SP_HIGH_ELF:
+ case SP_SLUDGE_ELF:
+ case SP_KENKU:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_HILL_ORC:
+ case SP_TROLL:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_ROCKS:
+ switch(ng.species)
+ {
+ case SP_OGRE:
+ case SP_TROLL:
+ return CC_UNRESTRICTED;
+ default:
+ return CC_BANNED;
+ }
+ case WPN_JAVELINS:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ return CC_RESTRICTED;
+ case SP_SPRIGGAN:
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_DARTS:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ // intentional fall-through
default:
return (CC_BANNED);
}
diff --git a/crawl-ref/source/ng-setup.cc b/crawl-ref/source/ng-setup.cc
index 9b17014..aec8ba8 100644
--- a/crawl-ref/source/ng-setup.cc
+++ b/crawl-ref/source/ng-setup.cc
@@ -449,7 +449,46 @@ static void _update_weapon(const newgame_def& ng)
if (ng.weapon == WPN_UNARMED)
_newgame_clear_item(0);
else if (ng.weapon != WPN_UNKNOWN)
- you.inv[0].sub_type = ng.weapon;
+ {
+ switch(ng.weapon)
+ {
+ case WPN_ROCKS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1,
+ 5, 1);
+ break;
+ case WPN_JAVELINS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1,
+ 5, 1);
+ break;
+ case WPN_DARTS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_DART, -1,
+ 10, 1);
+ break;
+ case WPN_BOW:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BOW);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_ARROW, -1, 25, 1);
+
+ // Wield the bow instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ case WPN_CROSSBOW:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1, 25, 1);
+
+ // Wield the crossbow instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ case WPN_SLING:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1, 25, 1);
+
+ // Wield the sling instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ default:
+ you.inv[0].sub_type = ng.weapon;
+ }
+ }
}
static void _give_items_skills(const newgame_def& ng)
@@ -935,53 +974,7 @@ static void _give_items_skills(const newgame_def& ng)
if (you.has_claws())
_newgame_clear_item(0);
-
- switch (you.species)
- {
- case SP_SLUDGE_ELF:
- case SP_HILL_ORC:
- case SP_MERFOLK:
- newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1, 6, 1);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 2);
- break;
-
- case SP_OGRE:
- case SP_TROLL:
- newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1, 5,
- 1);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 3);
- break;
-
- case SP_HALFLING:
- case SP_SPRIGGAN:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1,
- 30, 1);
-
- // Wield the sling instead.
- you.equip[EQ_WEAPON] = 1;
- break;
-
- case SP_MOUNTAIN_DWARF:
- case SP_DEEP_DWARF:
- case SP_KOBOLD:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1, 25, 1);
-
- // Wield the crossbow instead.
- you.equip[EQ_WEAPON] = 1;
- break;
-
- default:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BOW);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_ARROW, -1, 25, 1);
-
- // Wield the bow instead.
- you.equip[EQ_WEAPON] = 1;
- break;
- }
+ _update_weapon(ng);
newgame_make_item(3, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
ARM_ANIMAL_SKIN);
--
1.7.0.4
0002-Added-weapon-choice-for-hunters.patch [^] (12,849 bytes) 2011-08-18 14:30 [Show Content] [Hide Content]From f966c891001696d7f70d9251de0c0e36e4264653 Mon Sep 17 00:00:00 2001
From: Voker57 <voker57@gmail.com>
Date: Thu, 18 Aug 2011 14:19:32 +0400
Subject: [PATCH] Added weapon choice for hunters
Every hunter gets to choose from 3 weapons: throwing (large rocks for large
species, javelins for medium ones, darts for spriggans).
All missiles are +1, weapons are +0.
---
crawl-ref/source/itemprop-enum.h | 4 ++
crawl-ref/source/newgame.cc | 110 ++++++++++++++++++++++++++++----------
crawl-ref/source/ng-restr.cc | 87 +++++++++++++++++++++++++++++-
crawl-ref/source/ng-setup.cc | 89 ++++++++++++++----------------
4 files changed, 213 insertions(+), 77 deletions(-)
diff --git a/crawl-ref/source/itemprop-enum.h b/crawl-ref/source/itemprop-enum.h
index 467f143..74a03c2 100644
--- a/crawl-ref/source/itemprop-enum.h
+++ b/crawl-ref/source/itemprop-enum.h
@@ -505,6 +505,10 @@ enum weapon_type
WPN_UNKNOWN = 1000, // 1000
WPN_RANDOM,
WPN_VIABLE,
+ WPN_THROWN,
+ WPN_ROCKS,
+ WPN_JAVELINS,
+ WPN_DARTS,
};
enum weapon_property_type
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index ccb7958..f0638f8 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -1392,8 +1392,24 @@ static void _construct_weapon_menu(const weapon_type& defweapon,
text += letter;
text += " - ";
- text += weapons[i].first == WPN_UNARMED
- ? "claws" : weapon_base_name(weapons[i].first);
+ switch(weapons[i].first)
+ {
+ case WPN_UNARMED:
+ text += "claws";
+ break;
+ case WPN_JAVELINS:
+ text += "javelins";
+ break;
+ case WPN_ROCKS:
+ text += "large rocks";
+ break;
+ case WPN_DARTS:
+ text += "darts";
+ break;
+ default:
+ text += weapon_base_name(weapons[i].first);
+ break;
+ }
// Fill to column width to give extra padding for the highlight
text.append(COLUMN_WIDTH - text.size() - 1 , ' ');
tmp->set_text(text);
@@ -1634,38 +1650,75 @@ static bool _prompt_weapon(const newgame_def* ng, newgame_def* ng_choice,
static std::vector<weapon_choice> _get_weapons(const newgame_def* ng)
{
std::vector<weapon_choice> weapons;
-
- weapon_type startwep[6] = { WPN_UNARMED, WPN_SHORT_SWORD, WPN_MACE,
- WPN_HAND_AXE, WPN_SPEAR, WPN_FALCHION };
- for (int i = 0; i < 6; ++i)
+ if(ng->job == JOB_HUNTER)
{
- weapon_choice wp;
- wp.first = startwep[i];
+ weapon_type startwep[4] = { WPN_THROWN, WPN_SLING, WPN_BOW, WPN_CROSSBOW };
+
+ for (int i = 0; i < 4; i++)
+ {
+ weapon_choice wp;
+ wp.first = startwep[i];
- switch (wp.first)
+ switch (wp.first)
+ {
+ case WPN_THROWN:
+ if (species_size(ng->species, PSIZE_TORSO) == SIZE_LARGE)
+ {
+ wp.first = WPN_ROCKS;
+ } else if (species_size(ng->species, PSIZE_TORSO) <= SIZE_SMALL)
+ {
+ wp.first = WPN_DARTS;
+ } else
+ {
+ wp.first = WPN_JAVELINS;
+ }
+ break;
+ default:
+ break;
+ }
+ wp.second = weapon_restriction(wp.first, *ng);
+ if (wp.second != CC_BANNED)
+ {
+ weapons.push_back(wp);
+ }
+ }
+ } else
+ {
+ weapon_type startwep[6] = { WPN_UNARMED, WPN_SHORT_SWORD, WPN_MACE,
+ WPN_HAND_AXE, WPN_SPEAR, WPN_FALCHION };
+ for (int i = 0; i < 6; ++i)
{
- case WPN_UNARMED:
- if (!species_has_claws(ng->species))
- continue;
- break;
- case WPN_SPEAR:
- // Non-small fighters and gladiators get tridents.
- if ((ng->job == JOB_FIGHTER || ng->job == JOB_GLADIATOR)
- && species_size(ng->species, PSIZE_BODY) >= SIZE_MEDIUM)
+ weapon_choice wp;
+ wp.first = startwep[i];
+
+ switch (wp.first)
{
- wp.first = WPN_TRIDENT;
+ case WPN_UNARMED:
+ if (!species_has_claws(ng->species))
+ continue;
+ break;
+ case WPN_SPEAR:
+ // Non-small fighters and gladiators get tridents.
+ if ((ng->job == JOB_FIGHTER || ng->job == JOB_GLADIATOR)
+ && species_size(ng->species, PSIZE_BODY) >= SIZE_MEDIUM)
+ {
+ wp.first = WPN_TRIDENT;
+ }
+ break;
+ case WPN_MACE:
+ if (ng->species == SP_OGRE)
+ wp.first = WPN_ANKUS;
+ break;
+ default:
+ break;
+ }
+
+ wp.second = weapon_restriction(wp.first, *ng);
+ if (wp.second != CC_BANNED)
+ {
+ weapons.push_back(wp);
}
- break;
- case WPN_MACE:
- if (ng->species == SP_OGRE)
- wp.first = WPN_ANKUS;
- break;
- default:
- break;
}
- wp.second = weapon_restriction(wp.first, *ng);
- if (wp.second != CC_BANNED)
- weapons.push_back(wp);
}
return weapons;
}
@@ -1732,6 +1785,7 @@ static bool _choose_weapon(newgame_def* ng, newgame_def* ng_choice,
case JOB_ABYSSAL_KNIGHT:
case JOB_SKALD:
case JOB_WARPER:
+ case JOB_HUNTER:
break;
default:
return (true);
diff --git a/crawl-ref/source/ng-restr.cc b/crawl-ref/source/ng-restr.cc
index 6099e06..a17e102 100644
--- a/crawl-ref/source/ng-restr.cc
+++ b/crawl-ref/source/ng-restr.cc
@@ -753,7 +753,92 @@ char_choice_restriction weapon_restriction(weapon_type wpn,
case WPN_ANKUS:
if (species_genus(ng.species) == GENPC_OGREISH)
return (CC_UNRESTRICTED);
- // intentional fall-through
+ case WPN_CROSSBOW:
+ switch(ng.species)
+ {
+ case SP_DEEP_ELF:
+ case SP_HIGH_ELF:
+ case SP_HALFLING:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_HILL_ORC:
+ case SP_SPRIGGAN:
+ case SP_TROLL:
+ case SP_SLUDGE_ELF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_BOW:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ case SP_KOBOLD:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_TROLL:
+ case SP_HILL_ORC:
+ case SP_SLUDGE_ELF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_SLING:
+ switch(ng.species)
+ {
+ case SP_MOUNTAIN_DWARF:
+ case SP_DEEP_ELF:
+ case SP_HIGH_ELF:
+ case SP_SLUDGE_ELF:
+ case SP_KENKU:
+ case SP_MERFOLK:
+ case SP_OGRE:
+ case SP_HILL_ORC:
+ case SP_TROLL:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_ROCKS:
+ switch(ng.species)
+ {
+ case SP_OGRE:
+ case SP_TROLL:
+ return CC_UNRESTRICTED;
+ default:
+ return CC_BANNED;
+ }
+ case WPN_JAVELINS:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ return CC_RESTRICTED;
+ case SP_SPRIGGAN:
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ case WPN_DARTS:
+ switch(ng.species)
+ {
+ case SP_DEEP_DWARF:
+ case SP_MOUNTAIN_DWARF:
+ return CC_RESTRICTED;
+ case SP_FELID:
+ return CC_BANNED;
+ default:
+ return CC_UNRESTRICTED;
+ }
+ // intentional fall-through
default:
return (CC_BANNED);
}
diff --git a/crawl-ref/source/ng-setup.cc b/crawl-ref/source/ng-setup.cc
index 9b17014..aec8ba8 100644
--- a/crawl-ref/source/ng-setup.cc
+++ b/crawl-ref/source/ng-setup.cc
@@ -449,7 +449,46 @@ static void _update_weapon(const newgame_def& ng)
if (ng.weapon == WPN_UNARMED)
_newgame_clear_item(0);
else if (ng.weapon != WPN_UNKNOWN)
- you.inv[0].sub_type = ng.weapon;
+ {
+ switch(ng.weapon)
+ {
+ case WPN_ROCKS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1,
+ 5, 1);
+ break;
+ case WPN_JAVELINS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1,
+ 5, 1);
+ break;
+ case WPN_DARTS:
+ newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_DART, -1,
+ 10, 1);
+ break;
+ case WPN_BOW:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BOW);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_ARROW, -1, 25, 1);
+
+ // Wield the bow instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ case WPN_CROSSBOW:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1, 25, 1);
+
+ // Wield the crossbow instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ case WPN_SLING:
+ newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);
+ newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1, 25, 1);
+
+ // Wield the sling instead.
+ you.equip[EQ_WEAPON] = 1;
+ break;
+ default:
+ you.inv[0].sub_type = ng.weapon;
+ }
+ }
}
static void _give_items_skills(const newgame_def& ng)
@@ -935,53 +974,7 @@ static void _give_items_skills(const newgame_def& ng)
if (you.has_claws())
_newgame_clear_item(0);
-
- switch (you.species)
- {
- case SP_SLUDGE_ELF:
- case SP_HILL_ORC:
- case SP_MERFOLK:
- newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1, 6, 1);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 2);
- break;
-
- case SP_OGRE:
- case SP_TROLL:
- newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1, 5,
- 1);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 3);
- break;
-
- case SP_HALFLING:
- case SP_SPRIGGAN:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1,
- 30, 1);
-
- // Wield the sling instead.
- you.equip[EQ_WEAPON] = 1;
- break;
-
- case SP_MOUNTAIN_DWARF:
- case SP_DEEP_DWARF:
- case SP_KOBOLD:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1, 25, 1);
-
- // Wield the crossbow instead.
- you.equip[EQ_WEAPON] = 1;
- break;
-
- default:
- newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BOW);
- newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_ARROW, -1, 25, 1);
-
- // Wield the bow instead.
- you.equip[EQ_WEAPON] = 1;
- break;
- }
+ _update_weapon(ng);
newgame_make_item(3, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,
ARM_ANIMAL_SKIN);
--
1.7.0.4
|