some targeted spells shouldn't shift screen onto enemies
This commit is contained in:
@@ -4901,7 +4901,7 @@ void start_spell_targeting(eSpell num, bool freebie, int spell_range, eSpellPat
|
||||
add_string_to_buf(" (Hit 'm' to cancel.)");
|
||||
else add_string_to_buf(" (Hit 'p' to cancel.)");
|
||||
current_spell_range = num == eSpell::NONE ? spell_range : (*num).range;
|
||||
handle_target_mode(MODE_SPELL_TARGET, current_spell_range);
|
||||
handle_target_mode(MODE_SPELL_TARGET, current_spell_range, num);
|
||||
|
||||
switch(num) { // Different spells have different messages and diff. target shapes
|
||||
case eSpell::CLOUD_SLEEP:
|
||||
@@ -4956,7 +4956,7 @@ void start_fancy_spell_targeting(eSpell num, bool freebie, int spell_range, eSpe
|
||||
else add_string_to_buf(" (Hit 'p' to cancel.)");
|
||||
add_string_to_buf(" (Hit space to cast.)");
|
||||
current_spell_range = num == eSpell::NONE ? spell_range : (*num).range;
|
||||
handle_target_mode(MODE_FANCY_TARGET, current_spell_range);
|
||||
handle_target_mode(MODE_FANCY_TARGET, current_spell_range, num);
|
||||
short bonus = univ.current_pc().stat_adj(eSkill::INTELLIGENCE);
|
||||
short level = freebie ? store_item_spell_level : univ.current_pc().level;
|
||||
|
||||
|
@@ -1041,10 +1041,16 @@ short scan_for_response(const char *str) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
void handle_target_mode(eGameMode target_mode, int range) {
|
||||
void handle_target_mode(eGameMode target_mode, int range, eSpell spell) {
|
||||
overall_mode = target_mode;
|
||||
// Lock on to enemies in range:
|
||||
if(has_feature_flag("target-lock", "V1") && get_bool_pref("TargetLock", true)){
|
||||
// Skip this for spells that don't target enemies
|
||||
switch(spell){
|
||||
case eSpell::DISPEL_SQUARE: case eSpell::DISPEL_BARRIER: case eSpell::DISPEL_SPHERE:
|
||||
return;
|
||||
}
|
||||
|
||||
location loc = univ.current_pc().combat_pos;
|
||||
|
||||
std::vector<location> enemy_locs_in_range;
|
||||
|
@@ -71,7 +71,7 @@ void draw_shop_graphics(bool item_pressed, bool item_help_pressed, rectangle cli
|
||||
void refresh_shopping();
|
||||
void click_talk_rect(word_rect_t word);
|
||||
void place_talk_str(std::string str_to_place,std::string str_to_place2,short color,rectangle c_rect);
|
||||
void handle_target_mode(eGameMode target_mode, int range);
|
||||
void handle_target_mode(eGameMode target_mode, int range, eSpell spell = eSpell::NONE);
|
||||
short scan_for_response(const char *str);
|
||||
void refresh_talking();
|
||||
graf_pos calc_item_rect(int num,rectangle& to_rect);
|
||||
|
Reference in New Issue
Block a user