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.)");
|
add_string_to_buf(" (Hit 'm' to cancel.)");
|
||||||
else add_string_to_buf(" (Hit 'p' to cancel.)");
|
else add_string_to_buf(" (Hit 'p' to cancel.)");
|
||||||
current_spell_range = num == eSpell::NONE ? spell_range : (*num).range;
|
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
|
switch(num) { // Different spells have different messages and diff. target shapes
|
||||||
case eSpell::CLOUD_SLEEP:
|
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.)");
|
else add_string_to_buf(" (Hit 'p' to cancel.)");
|
||||||
add_string_to_buf(" (Hit space to cast.)");
|
add_string_to_buf(" (Hit space to cast.)");
|
||||||
current_spell_range = num == eSpell::NONE ? spell_range : (*num).range;
|
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 bonus = univ.current_pc().stat_adj(eSkill::INTELLIGENCE);
|
||||||
short level = freebie ? store_item_spell_level : univ.current_pc().level;
|
short level = freebie ? store_item_spell_level : univ.current_pc().level;
|
||||||
|
|
||||||
|
|||||||
@@ -1041,10 +1041,16 @@ short scan_for_response(const char *str) {
|
|||||||
return -1;
|
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;
|
overall_mode = target_mode;
|
||||||
// Lock on to enemies in range:
|
// Lock on to enemies in range:
|
||||||
if(has_feature_flag("target-lock", "V1") && get_bool_pref("TargetLock", true)){
|
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;
|
location loc = univ.current_pc().combat_pos;
|
||||||
|
|
||||||
std::vector<location> enemy_locs_in_range;
|
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 refresh_shopping();
|
||||||
void click_talk_rect(word_rect_t word);
|
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 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);
|
short scan_for_response(const char *str);
|
||||||
void refresh_talking();
|
void refresh_talking();
|
||||||
graf_pos calc_item_rect(int num,rectangle& to_rect);
|
graf_pos calc_item_rect(int num,rectangle& to_rect);
|
||||||
|
|||||||
Reference in New Issue
Block a user