Attached Files |
0001-Allow-potions-cards-of-exp-train-restricted-skills.patch [^] (2,159 bytes) 2013-06-07 02:40 [Show Content] [Hide Content]From d3db34380a2be9758fa5eeb85c50cd3c67105e91 Mon Sep 17 00:00:00 2001
From: Pekka Lampila <pekka.lampila@iki.fi>
Date: Fri, 7 Jun 2013 03:35:20 +0300
Subject: [PATCH] Allow potions/cards of exp train restricted skills
---
crawl-ref/source/skill_menu.cc | 7 +++++++
crawl-ref/source/skills2.cc | 2 ++
crawl-ref/source/skills2.h | 1 +
3 files changed, 10 insertions(+)
diff --git a/crawl-ref/source/skill_menu.cc b/crawl-ref/source/skill_menu.cc
index e795576..b51bedd 100644
--- a/crawl-ref/source/skill_menu.cc
+++ b/crawl-ref/source/skill_menu.cc
@@ -688,6 +688,13 @@ void SkillMenu::init(int flag)
m_skill_backup.save();
you.auto_training = false;
reset_training();
+
+ for (int i = 0; i < NUM_SKILLS; ++i)
+ {
+ const skill_type sk = skill_type(i);
+ if (!is_useless_skill(sk))
+ you.can_train.set(sk);
+ }
}
#ifdef USE_TILE_LOCAL
diff --git a/crawl-ref/source/skills2.cc b/crawl-ref/source/skills2.cc
index c881f95..0359695 100644
--- a/crawl-ref/source/skills2.cc
+++ b/crawl-ref/source/skills2.cc
@@ -866,6 +866,7 @@ int transfer_skill_points(skill_type fsk, skill_type tsk, int skp_max,
void skill_state::save()
{
+ can_train = you.can_train;
skills = you.skills;
train = you.train;
training = you.training;
@@ -904,6 +905,7 @@ void skill_state::restore_training()
if (you.skills[i] < 27)
you.train[i] = train[i];
+ you.can_train = can_train;
you.auto_training = auto_training;
reset_training();
}
diff --git a/crawl-ref/source/skills2.h b/crawl-ref/source/skills2.h
index c8ddb2a..46592d6 100644
--- a/crawl-ref/source/skills2.h
+++ b/crawl-ref/source/skills2.h
@@ -14,6 +14,7 @@ const int MAX_SKILL_ORDER = 100;
struct skill_state
{
+ FixedBitVector<NUM_SKILLS> can_train;
FixedVector<uint8_t, NUM_SKILLS> skills;
FixedVector<int, NUM_SKILLS> real_skills; // Those two are
FixedVector<int, NUM_SKILLS> changed_skills; // scaled by 10.
--
1.8.1.2
exp-hide-untrainable.diff [^] (2,043 bytes) 2013-09-12 22:00 [Show Content] [Hide Content]diff --git a/crawl-ref/source/skill_menu.cc b/crawl-ref/source/skill_menu.cc
index 801eee3..3d4ccac 100644
--- a/crawl-ref/source/skill_menu.cc
+++ b/crawl-ref/source/skill_menu.cc
@@ -139,7 +139,8 @@ bool SkillMenuEntry::is_selectable(bool keep_hotkey)
}
if (!you.can_train[m_sk] && !is_set(SKMF_RESKILL_TO)
- && !is_set(SKMF_RESKILL_FROM))
+ && !is_set(SKMF_RESKILL_FROM)
+ && !is_set(SKMF_EXPERIENCE))
{
return false;
}
@@ -695,16 +696,6 @@ void SkillMenu::init(int flag)
m_skill_backup.save();
you.auto_training = false;
reset_training();
-
- for (int i = 0; i < NUM_SKILLS; ++i)
- {
- const skill_type sk = skill_type(i);
- if (!is_useless_skill(sk) && !you.can_train[sk])
- {
- you.can_train.set(sk);
- you.train[sk] = false;
- }
- }
}
#ifdef USE_TILE_LOCAL
@@ -903,7 +894,7 @@ skill_menu_state SkillMenu::get_state(skill_menu_switch sw)
{
case SKM_MODE: return SKM_MODE_MANUAL;
case SKM_DO: return SKM_DO_FOCUS;
- case SKM_SHOW: return SKM_SHOW_DEFAULT;
+ case SKM_SHOW: return m_switches[sw] ? m_switches[sw]->get_state() : SKM_SHOW_DEFAULT;
case SKM_LEVEL: return SKM_LEVEL_NORMAL;
case SKM_VIEW: return SKM_VIEW_NEW_LEVEL;
default: return SKM_NONE;
@@ -1099,7 +1090,7 @@ void SkillMenu::init_switches()
m_switches[SKM_SHOW] = sw;
//sw->add(SKM_SHOW_KNOWN);
sw->add(SKM_SHOW_DEFAULT);
- if (!is_set(SKMF_SIMPLE) && !is_set(SKMF_EXPERIENCE))
+ if (!is_set(SKMF_SIMPLE))
sw->add(SKM_SHOW_ALL);
sw->update();
sw->set_id(SKM_SHOW);
@@ -1320,6 +1311,8 @@ void SkillMenu::set_skills()
void SkillMenu::toggle_practise(skill_type sk, int keyn)
{
+ if (is_set(SKMF_EXPERIENCE) && !is_useless_skill(sk))
+ you.can_train.set(sk);
ASSERT(you.can_train[sk]);
if (keyn >= 'A' && keyn <= 'Z')
you.train.init(0);
|