summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorL0ne_W0lf <L0ne_W0lf@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-06-28 01:10:58 +0000
committerL0ne_W0lf <L0ne_W0lf@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-06-28 01:10:58 +0000
commit9e94e8ad83d23ce2082b30217ed2f14f0b38a4bd (patch)
treede43cff93093e3324101023ce71d5a7e5f2e6fb7 /src
parent79ef7d48a5db30fbd55078691d6a5ea127c4a4ee (diff)
downloadhercules-9e94e8ad83d23ce2082b30217ed2f14f0b38a4bd.tar.gz
hercules-9e94e8ad83d23ce2082b30217ed2f14f0b38a4bd.tar.bz2
hercules-9e94e8ad83d23ce2082b30217ed2f14f0b38a4bd.tar.xz
hercules-9e94e8ad83d23ce2082b30217ed2f14f0b38a4bd.zip
* Follow up to r13895, added a battle.conf setting to control if ranges should be checked with autocasts.
'autospell_check_range', by default is set to no, as this is official behavior. This does not affect autospellwhenhit. * Sonic Blow autocast now stops players attacking when it triggers. It's possible there is more depth to this on official servers, and should 'stop' attacking on regular casts as well. It appears so far that this is the only skill that behaves this way. * Modified the default value for homunculus_auto_vapor in source to 1. * pvp_points are no longer calculated in the gvg_dungeon flagged maps. * Corrected a view ID and an equip location in the item database. (bugreport:4330) * Corrected a typo in the DTS_Warper script. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14356 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/battle.c3
-rw-r--r--src/map/battle.h1
-rw-r--r--src/map/clif.c8
-rw-r--r--src/map/pc.c4
-rw-r--r--src/map/skill.c11
5 files changed, 12 insertions, 15 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index b2c74afaf..de0bfe07f 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3871,12 +3871,13 @@ static const struct _battle_data {
{ "auction_feeperhour", &battle_config.auction_feeperhour, 12000, 0, INT_MAX, },
{ "auction_maximumprice", &battle_config.auction_maximumprice, 500000000, 0, MAX_ZENY, },
{ "gm_viewequip_min_lv", &battle_config.gm_viewequip_min_lv, 0, 0, 99, },
- { "homunculus_auto_vapor", &battle_config.homunculus_auto_vapor, 0, 0, 1, },
+ { "homunculus_auto_vapor", &battle_config.homunculus_auto_vapor, 1, 0, 1, },
{ "display_status_timers", &battle_config.display_status_timers, 1, 0, 1, },
{ "skill_add_heal_rate", &battle_config.skill_add_heal_rate, 7, 0, INT_MAX, },
{ "eq_single_target_reflectable", &battle_config.eq_single_target_reflectable, 1, 0, 1, },
{ "invincible.nodamage", &battle_config.invincible_nodamage, 0, 0, 1, },
{ "mob_slave_keep_target", &battle_config.mob_slave_keep_target, 0, 0, 1, },
+ { "autospell_check_range", &battle_config.autospell_check_range, 0, 0, 1, },
// BattleGround Settings
{ "bg_update_interval", &battle_config.bg_update_interval, 1000, 100, INT_MAX, },
{ "bg_short_attack_damage_rate", &battle_config.bg_short_damage_rate, 80, 0, INT_MAX, },
diff --git a/src/map/battle.h b/src/map/battle.h
index 17e80c408..361867a9f 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -469,6 +469,7 @@ extern struct Battle_Config
int eq_single_target_reflectable;
int invincible_nodamage;
int mob_slave_keep_target;
+ int autospell_check_range; //Enable range check for autospell bonus. [L0ne_W0lf]
// [BattleGround Settings]
int bg_update_interval;
diff --git a/src/map/clif.c b/src/map/clif.c
index bd7af7eb3..0e1082d4c 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -8310,15 +8310,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
clif_set0199(sd,1);
if (map[sd->bl.m].flag.gvg_dungeon)
- {
clif_set0199(sd,1); //TODO: Figure out the real packet to send here.
- if (!sd->pvp_point)
- {
- sd->pvp_point = 5; //Need to die twice to be warped out.
- sd->pvp_won = 0;
- sd->pvp_lost = 0;
- }
- }
if( map_flag_gvg(sd->bl.m) )
clif_set0199(sd,3);
diff --git a/src/map/pc.c b/src/map/pc.c
index 91017cf22..04027c42d 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -5721,8 +5721,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
}
// pvp
// disable certain pvp functions on pk_mode [Valaris]
- if( map[sd->bl.m].flag.gvg_dungeon || (map[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map[sd->bl.m].flag.pvp_nocalcrank) )
- { // Pvp points always take effect on gvg_dungeon maps.
+ if( map[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map[sd->bl.m].flag.pvp_nocalcrank )
+ {
sd->pvp_point -= 5;
sd->pvp_lost++;
if( src && src->type == BL_PC )
diff --git a/src/map/skill.c b/src/map/skill.c
index 2f2a7e6b0..3e63a9211 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1010,8 +1010,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
tbl = (sd->autospell[i].id < 0) ? src : bl;
- if( !battle_check_range(src, tbl, skill_get_range2(src, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) )
- continue; //Autocasts should always fail if the target is outside the skill range or an obstacle is in between.[Inkfish]
+ if( !battle_check_range(src, tbl, skill_get_range2(src, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
+ continue; // If autospell_check_range is yes, fail the autocast.
+
+ if (skill == AS_SONICBLOW)
+ pc_stop_attack(sd); //Special case, Sonic Blow autospell should stop the player attacking.
sd->state.autocast = 1;
skill_consume_requirement(sd,skill,skilllv,1);
@@ -1109,7 +1112,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
continue;
tbl = (sd->autospell3[i].id < 0) ? &sd->bl : bl;
- if( !battle_check_range(&sd->bl, tbl, skill_get_range2(&sd->bl, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) )
+ if( !battle_check_range(&sd->bl, tbl, skill_get_range2(&sd->bl, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
continue;
sd->state.autocast = 1;
@@ -1281,7 +1284,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
tbl = (dstsd->autospell2[i].id < 0) ? bl : src;
- if( !battle_check_range(src, tbl, skill_get_range2(src, skillid,skilllv) + (skillid == RG_CLOSECONFINE?0:1)) )
+ if( !battle_check_range(src, tbl, skill_get_range2(src, skillid,skilllv) + (skillid == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
continue;
dstsd->state.autocast = 1;