Browse Source

Corrected B.S. Sacramenti behavior (#3149)

* Fixes #611.
* Status is now removed on player log out.
* Status is not given to targets who have the Undead/Demon element.
Thanks to @Atemo!
Aleos 7 years ago
parent
commit
9d176c9f1d
2 changed files with 6 additions and 2 deletions
  1. 1 0
      src/map/map.cpp
  2. 5 2
      src/map/skill.cpp

+ 1 - 0
src/map/map.cpp

@@ -2052,6 +2052,7 @@ int map_quit(struct map_session_data *sd) {
 			status_change_end(&sd->bl, SC_P_ALTER, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_E_CHAIN, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_SIGHTBLASTER, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER);
 		}
 	}
 

+ 5 - 2
src/map/skill.cpp

@@ -5248,7 +5248,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 		//Should attack undead and demons. [Skotlex]
 		if (battle_check_undead(tstatus->race, tstatus->def_ele) || tstatus->race == RC_DEMON)
 			skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag);
-	break;
+		break;
 
 	case SL_SMA:
 		status_change_end(src, SC_SMA, INVALID_TIMER);
@@ -6592,6 +6592,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 			clif_skill_fail(sd,skill_id,USESKILL_FAIL,0);
 		break;
 
+	case PR_BENEDICTIO:
+		if (!battle_check_undead(tstatus->race, tstatus->def_ele) && tstatus->race != RC_DEMON)
+			clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)));
+		break;
 	case AL_INCAGI:
 	case AL_BLESSING:
 	case MER_INCAGI:
@@ -6604,7 +6608,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case PR_IMPOSITIO:
 	case PR_LEXAETERNA:
 	case PR_SUFFRAGIUM:
-	case PR_BENEDICTIO:
 	case LK_BERSERK:
 	case MS_BERSERK:
 	case KN_TWOHANDQUICKEN: