summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-08-11 06:26:27 +0000
committerInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-08-11 06:26:27 +0000
commitd3aeb86c334a72a762e5b0a763ef858a9756d473 (patch)
treeffe8017bfc579395c108b57288cf7c03bcc219b7 /src
parent421e1cc98979edbd220c12d8911a96282b045b60 (diff)
downloadhercules-d3aeb86c334a72a762e5b0a763ef858a9756d473.tar.gz
hercules-d3aeb86c334a72a762e5b0a763ef858a9756d473.tar.bz2
hercules-d3aeb86c334a72a762e5b0a763ef858a9756d473.tar.xz
hercules-d3aeb86c334a72a762e5b0a763ef858a9756d473.zip
* Fixed autospell and autobonus will still trigger even if the chance is 0.
* Disabled "show_party_share_picker" functioning on client older than 20071002 to prevent from disconnection. (bugreport:3457) * Fixed units other than players and mercenaries using Devotion will cause crashes. (bugreport:3475) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13999 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/clif.c2
-rw-r--r--src/map/skill.c14
2 files changed, 9 insertions, 7 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index f3e2757d5..3182ca6b7 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -13141,6 +13141,7 @@ void clif_instance_leave(int fd)
void clif_party_show_picker(struct map_session_data * sd, struct item * item_data)
{
+#if PACKETVER >= 20071002
unsigned char buf[22];
WBUFW(buf,0)=0x2b8;
@@ -13158,6 +13159,7 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
//WBUFB(buf,20) = 0;
//WBUFB(buf,21) = 0;
clif_send(buf, packet_len(0x2b8), &sd->bl, PARTY_SAMEMAP_WOS);
+#endif
}
/*==========================================
diff --git a/src/map/skill.c b/src/map/skill.c
index 6509eaddb..cdd00f6e5 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1007,7 +1007,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
rate = (!sd->state.arrow_atk) ? sd->autospell[i].rate : sd->autospell[i].rate / 2;
- if (rand()%1000 > rate)
+ if (rand()%1000 >= rate)
continue;
tbl = (sd->autospell[i].id < 0) ? src : bl;
@@ -1048,7 +1048,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
int i;
for( i = 0; i < ARRAYLENGTH(sd->autobonus); i++ )
{
- if( rand()%1000 > sd->autobonus[i].rate )
+ if( rand()%1000 >= sd->autobonus[i].rate )
continue;
if( sd->autobonus[i].active != INVALID_TIMER )
continue;
@@ -1107,7 +1107,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
if( sd->autospell3[i].id >= 0 && bl == NULL )
continue; // No target
- if( rand()%1000 > sd->autospell3[i].rate )
+ if( rand()%1000 >= sd->autospell3[i].rate )
continue;
tbl = (sd->autospell3[i].id < 0) ? &sd->bl : bl;
@@ -1129,7 +1129,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
{
for( i = 0; i < ARRAYLENGTH(sd->autobonus3); i++ )
{
- if( rand()%1000 > sd->autobonus3[i].rate )
+ if( rand()%1000 >= sd->autobonus3[i].rate )
continue;
if( sd->autobonus3[i].active != INVALID_TIMER )
continue;
@@ -1270,7 +1270,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
if (skillnotok(skillid, dstsd))
continue;
- if (rand()%1000 > rate)
+ if (rand()%1000 >= rate)
continue;
tbl = (dstsd->autospell2[i].id < 0) ? bl : src;
@@ -1311,7 +1311,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
int i;
for( i = 0; i < ARRAYLENGTH(dstsd->autobonus2); i++ )
{
- if( rand()%1000 > dstsd->autobonus2[i].rate )
+ if( rand()%1000 >= dstsd->autobonus2[i].rate )
continue;
if( dstsd->autobonus2[i].active != INVALID_TIMER )
continue;
@@ -3815,7 +3815,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case CR_DEVOTION:
{
int count, lv;
- if( !dstsd )
+ if( !dstsd || (!sd && !mer) )
{ // Only players can be devoted
if( sd )
clif_skill_fail(sd, skillid, 0, 0);