diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/pc.c | 5 | ||||
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 2 |
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) |