summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/pc.c5
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c2
3 files changed, 6 insertions, 5 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 4604ef41c..3fcb2ee41 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1173,12 +1173,11 @@ static int pc_bonus_autospell(struct s_autospell *spell, int max, short id, shor
static int pc_bonus_addeff(struct s_addeffect *effect, int max, short id, short rate, short arrow_rate, unsigned char flag) {
int i;
-
- for (i = 0; i < max && effect[i].id; i++) {
+ for (i = 0; i < max && effect[i].flag; i++) {
if (effect[i].id == id && effect[i].flag == flag)
{
effect[i].rate += rate;
- effect[i].arrow_rate += rate;
+ effect[i].arrow_rate += arrow_rate;
return 1;
}
}
diff --git a/src/map/skill.c b/src/map/skill.c
index 85c67f574..16094e289 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1339,7 +1339,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
skillid != CR_REFLECTSHIELD
){ //Trigger status effects
int i, type;
- for(i=0; i < MAX_PC_BONUS && sd->addeff[i].id; i++)
+ for(i=0; i < MAX_PC_BONUS && sd->addeff[i].flag; i++)
{
rate = sd->addeff[i].rate;
type = sd->state.arrow_atk; //Ranged?
@@ -1478,7 +1478,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
if(dstsd && attack_type&BF_WEAPON)
{ //Counter effects.
int i, type, time;
- for(i=0; i < MAX_PC_BONUS && dstsd->addeff2[i].id; i++)
+ for(i=0; i < MAX_PC_BONUS && dstsd->addeff2[i].flag; i++)
{
rate = dstsd->addeff2[i].rate;
type = (sd && sd->state.arrow_atk) || (status_get_range(src)>2);
diff --git a/src/map/status.c b/src/map/status.c
index 1cc6f5f49..daa6a17d4 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2011,6 +2011,8 @@ int status_calc_pc(struct map_session_data* sd,int first)
// ----- WALKING SPEED CALCULATION -----
// Relative modifiers from passive skills
+ if((sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN && (skill=pc_checkskill(sd,TF_MISS))>0)
+ status->speed -= status->speed * skill/100;
if(pc_isriding(sd) && pc_checkskill(sd,KN_RIDING)>0)
status->speed -= status->speed * 25/100;
if(pc_iscarton(sd) && (skill=pc_checkskill(sd,MC_PUSHCART))>0)