diff --git a/conf/battle/skill.conf b/conf/battle/skill.conf index a142722495..d5b9e3b0fd 100644 --- a/conf/battle/skill.conf +++ b/conf/battle/skill.conf @@ -370,6 +370,13 @@ can_damage_skill: 1 // Legacy Athena: 1 land_protector_behavior: 0 +// NPC EMOTION behavior (Note 1) +// On official servers, certain mobs cast NPC EMOTION skill which displays an emoticon and change their mode from +// Aggressive to Passive for a certain time. The Athena behavior does not change their mode to Passive. +// Official: 0 +// Legacy Athena: 1 +npc_emotion_behavior: 0 + // Should Tarot Card of Fate have the same chance for each card to occur? (Note 1) // Official chances: 15%: LOVERS | 10%: FOOL, MAGICIAN, HIGH PRIESTESS, STRENGTH, SUN | 8%: TEMPERANCE // 7%: CHARIOT | 6%: THE HANGED MAN | 5%: DEATH, STAR | 2%: TOWER | 1%: WHEEL OF FORTUNE, DEVIL diff --git a/src/map/battle.cpp b/src/map/battle.cpp index bdf00579fc..14c5df30b0 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -8717,6 +8717,7 @@ static const struct _battle_data { { "mail_show_status", &battle_config.mail_show_status, 0, 0, 2, }, { "client_limit_unit_lv", &battle_config.client_limit_unit_lv, 0, 0, BL_ALL, }, { "land_protector_behavior", &battle_config.land_protector_behavior, 0, 0, 1, }, + { "npc_emotion_behavior", &battle_config.npc_emotion_behavior, 0, 0, 1, }, // BattleGround Settings { "bg_update_interval", &battle_config.bg_update_interval, 1000, 100, INT_MAX, }, { "bg_short_attack_damage_rate", &battle_config.bg_short_damage_rate, 80, 0, INT_MAX, }, diff --git a/src/map/battle.hpp b/src/map/battle.hpp index 48adb7317f..1ebd060839 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -349,6 +349,7 @@ struct Battle_Config int prevent_logout; // Added by RoVeRT int prevent_logout_trigger; int land_protector_behavior; + int npc_emotion_behavior; int alchemist_summon_reward; // [Valaris] int drops_by_luk; diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 8e7736bbd2..2c2546f64a 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -8798,7 +8798,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, type, INVALID_TIMER); //If mode gets set by NPC_EMOTION then the target should be reset [Playtester] - if(skill_id == NPC_EMOTION && md->db->skill[md->skill_idx].val[1]) + if(!battle_config.npc_emotion_behavior && skill_id == NPC_EMOTION && md->db->skill[md->skill_idx].val[1]) mob_unlocktarget(md,tick); if(md->db->skill[md->skill_idx].val[1] || md->db->skill[md->skill_idx].val[2]) @@ -8809,7 +8809,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_get_time(skill_id, skill_lv)); //Reset aggressive state depending on resulting mode - md->state.aggressive = status_has_mode(&md->status,MD_ANGRY)?1:0; + if (!battle_config.npc_emotion_behavior) + md->state.aggressive = status_has_mode(&md->status,MD_ANGRY)?1:0; } break;