summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/item_bonus.txt6
-rw-r--r--src/map/pc.c13
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;
}
}