diff options
-rw-r--r-- | doc/item_bonus.txt | 6 | ||||
-rw-r--r-- | src/map/pc.c | 13 |
2 files changed, 16 insertions, 3 deletions
diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index 476c8ff6d..fedf6b37e 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -158,5 +158,11 @@ bonus2 bSkillAtk,n,x; Increase damage of skill n by x% bonus2 bAddDamageByClass,n,x; When being hit by monster of class n increase damage taken by x% +bonus3 bHPLossRate,n,x,y; Lose n amount of hp every x amount of time + y:0=Don't show damage 1=Show damage bonus3 bAutoSpellWhenHit,x,y,n; n% chance to cast skill x of level y when being hit by physical close range damage + +bonus4 bAutoSpellWhenHit,x,y,n,i; n% chance to cast skill x of level y when + being hit by physical close range damage + i:0=cast on self 1=cast on enemy
\ No newline at end of file diff --git a/src/map/pc.c b/src/map/pc.c index 78d7102b8..3d40da95a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1885,6 +1885,13 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val) sd->autospell2_type = 1; // enemy } break; + case SP_HP_LOSS_RATE: + if(sd->state.lr_flag != 2) { + sd->hp_loss_value = type2; + sd->hp_loss_rate = type3; + sd->hp_loss_type = val; + } + break; default: if(battle_config.error_log) printf("pc_bonus3: unknown type %d %d %d %d!\n",type,type2,type3,val); @@ -6646,10 +6653,10 @@ static int pc_bleeding (struct map_session_data *sd) sd->hp_loss_tick -= interval; if (sd->status.hp < hp) hp = sd->status.hp; - if (sd->hp_loss_type == 0) { - pc_heal(sd,-hp,0); - } else if (sd->hp_loss_type == 1) { + if (sd->hp_loss_type == 1) { + clif_damage(&sd->bl,&sd->bl,gettick(),0,0,hp,0,0,0); } + pc_heal(sd,-hp,0); sd->hp_loss_tick = 0; } } |