From ade714d129fe396f32009bcb7845b6c06e4e5398 Mon Sep 17 00:00:00 2001 From: Komurka Date: Mon, 30 Jan 2006 08:16:31 +0000 Subject: Implemented bonus2 bSPVanishRate for Dark Priest Card - it isn't finished - I get '[Warning]: pc_bonus2: unknown type 0 50 10!' ~.~ git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5109 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 8 ++++++++ src/map/map.h | 5 ++++- src/map/pc.c | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 91563d939..1e1c16c7f 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3133,6 +3133,14 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, if (tsd && sd->sp_drain_type) pc_heal(tsd, 0, -sp); + + if (target && target->type == BL_PC && rand()%1000 < sd->sp_vanish_rate) + { + sp = tsd->status.hp * sd->sp_vanish_per/100; + if (sp > 0) + pc_heal(tsd, 0, -sp); + + } } } if (rdamage > 0) //By sending attack type "none" skill_additional_effect won't be invoked. [Skotlex] diff --git a/src/map/map.h b/src/map/map.h index c56e4c886..26e5875f4 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -341,6 +341,7 @@ struct weapon_data { short sp_drain_rate; short sp_drain_per; short sp_drain_value; + short add_damage_classid[MAX_PC_BONUS]; int add_damage_classrate[MAX_PC_BONUS]; int add_damage_class_count; @@ -623,6 +624,8 @@ struct map_session_data { short hp_loss_type; short sp_drain_type; short sp_gain_value, hp_gain_value; + short sp_vanish_rate; + short sp_vanish_per; short add_drop_count; unsigned short unbreakable; // chance to prevent ANY equipment breaking [celest] unsigned short unbreakable_equip; //100% break resistance on certain equipment @@ -1100,7 +1103,7 @@ enum { SP_SP_GAIN_RACE, SP_SUBRACE2, SP_ADDEFF_WHENHIT_SHORT, // 2031-2033 SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD, // 2034-2037 SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040 - SP_ADD_SKILL_BLOW //2041 + SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE //2041 }; enum { diff --git a/src/map/pc.c b/src/map/pc.c index 31269c150..a46f34611 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1843,6 +1843,12 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val) } sd->sp_drain_type = val; break; + case SP_SP_VANISH_RATE: + if(sd->state.lr_flag != 2) { + sd->sp_vanish_rate += type2; + sd->sp_vanish_per += val; + } + break; case SP_GET_ZENY_NUM: if(sd->state.lr_flag != 2 && sd->get_zeny_rate < val) { -- cgit v1.2.3-70-g09d2