From 631137fae16d2ef187e461fe8ac5e53e1088967b Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 2 May 2006 16:32:37 +0000 Subject: - Kaite now works against all types of spells. - Kaupe now works against all skills. - Sanctuary now won't damage non-enemies. - Blessing now will always give you bonus stats even if you are wearing undead armor. - Linking skills now have their cast-time reduced by dex. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6447 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/status.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src/map/status.c') diff --git a/src/map/status.c b/src/map/status.c index e5b16aec3..53b9891f9 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1675,10 +1675,10 @@ int status_calc_str(struct block_list *bl, int str) if(sc->data[SC_SPURT].timer!=-1) str += 10; //Bonus is +!0 regardless of skill level if(sc->data[SC_BLESSING].timer != -1){ - int race = status_get_race(bl); - if(battle_check_undead(race,status_get_elem_type(bl)) || race == RC_DEMON) + if(sc->data[SC_BLESSING].val2) + str += sc->data[SC_BLESSING].val2; + else str >>= 1; - else str += sc->data[SC_BLESSING].val1; } if(sc->data[SC_NEN].timer!=-1) str += sc->data[SC_NEN].val1; @@ -1755,10 +1755,10 @@ int status_calc_int(struct block_list *bl, int int_) if(sc->data[SC_TRUESIGHT].timer!=-1) int_ += 5; if(sc->data[SC_BLESSING].timer != -1){ - int race = status_get_race(bl); - if(battle_check_undead(race,status_get_elem_type(bl)) || race == RC_DEMON) + if (sc->data[SC_BLESSING].val2) + int_ += sc->data[SC_BLESSING].val2; + else int_ >>= 1; - else int_ += sc->data[SC_BLESSING].val1; } if(sc->data[SC_STRIPHELM].timer!=-1 && bl->type != BL_PC) int_ -= int_ * 8*sc->data[SC_STRIPHELM].val1/100; @@ -1787,10 +1787,10 @@ int status_calc_dex(struct block_list *bl, int dex) if(sc->data[SC_QUAGMIRE].timer!=-1) dex -= sc->data[SC_QUAGMIRE].val1*(bl->type==BL_PC?5:10); if(sc->data[SC_BLESSING].timer != -1){ - int race = status_get_race(bl); - if(battle_check_undead(race,status_get_elem_type(bl)) || race == RC_DEMON) + if (sc->data[SC_BLESSING].val2) + dex += sc->data[SC_BLESSING].val2; + else dex >>= 1; - else dex += sc->data[SC_BLESSING].val1; } if(sc->data[SC_INCREASING].timer!=-1) dex += 4; // added based on skill updates [Reddozen] @@ -3753,7 +3753,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val return 0; switch (type) { case SC_BLESSING: - if (!undead_flag || race != RC_DEMON) + if (!undead_flag && race != RC_DEMON) break; case SC_QUAGMIRE: case SC_DECREASEAGI: @@ -3768,7 +3768,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val //Before overlapping fail, one must check for status cured. switch (type) { case SC_BLESSING: - if (!undead_flag && race!=RC_DEMON) { + if ((!undead_flag && race!=RC_DEMON) || bl->type == BL_PC) { if (sc->data[SC_CURSE].timer!=-1) status_change_end(bl,SC_CURSE,-1); if (sc->data[SC_STONE].timer!=-1 && sc->data[SC_STONE].val2==0) @@ -4441,13 +4441,19 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val val2 = 200*val1; //HP heal val3 = 5*val1; //SP cost break; + case SC_BLESSING: + if ((!undead_flag && race!=RC_DEMON) || bl->type == BL_PC) + val2 = val1; + else + val2 = 0; //0 -> Half stat. + calc_flag = 1; + break; case SC_TRICKDEAD: /* 死んだふり */ { struct view_data *vd = status_get_viewdata(bl); if (vd) vd->dead_sit = 1; break; } - case SC_BLESSING: case SC_CONCENTRATION: /* コンセントレ?ション */case SC_ETERNALCHAOS: /* エタ?ナルカオス */ case SC_DRUMBATTLE: /* ?太鼓の響き */ case SC_NIBELUNGEN: /* ニ?ベルングの指輪 */ -- cgit v1.2.3-70-g09d2