diff --git a/scripts/globals/mobskills/Tortoise_Song.lua b/scripts/globals/mobskills/Tortoise_Song.lua index 24ca77e2c1a..917265c5944 100644 --- a/scripts/globals/mobskills/Tortoise_Song.lua +++ b/scripts/globals/mobskills/Tortoise_Song.lua @@ -19,7 +19,7 @@ end; function OnMobWeaponSkill(target, mob, skill) - local count = target:dispelAllStatusEffect(); + local count = target:dispelAllStatusEffect(bit.bor(EFFECTFLAG_SONG, EFFECTFLAG_ROLL)); if(count == 0) then skill:setMsg(MSG_NO_EFFECT); diff --git a/scripts/globals/status.lua b/scripts/globals/status.lua index 0ced7c08d07..08bc4597d0c 100644 --- a/scripts/globals/status.lua +++ b/scripts/globals/status.lua @@ -616,6 +616,8 @@ EFFECTFLAG_NO_REST = 0x1000 EFFECTFLAG_PREVENT_ACTION = 0x2000 EFFECTFLAG_WALTZABLE = 0x4000 EFFECTFLAG_FOOD = 0x8000 +EFFECTFLAG_SONG = 0x10000 +EFFECTFLAG_ROLL = 0x20000 function removeSleepEffects(target) target:delStatusEffect(EFFECT_SLEEP_I); diff --git a/sql/status_effects.sql b/sql/status_effects.sql index 914b1a9710f..e30a733aaef 100644 --- a/sql/status_effects.sql +++ b/sql/status_effects.sql @@ -285,7 +285,7 @@ INSERT INTO `status_effects` VALUES (247,'(imagery)',32,244,0,0,0,0,0); INSERT INTO `status_effects` VALUES (248,'(imagery)',32,244,0,0,0,0,0); INSERT INTO `status_effects` VALUES (249,'dedication',0,0,0,0,0,0,0); INSERT INTO `status_effects` VALUES (250,'ef_badge',32,0,0,0,0,0,0); -INSERT INTO `status_effects` VALUES (251,'food',32800,0,0,2,0,0,0); +INSERT INTO `status_effects` VALUES (251,'food',32768,0,0,2,0,0,0); INSERT INTO `status_effects` VALUES (252,'chocobo',164,0,0,0,0,0,0); INSERT INTO `status_effects` VALUES (253,'signet',0,0,0,0,0,0,0); INSERT INTO `status_effects` VALUES (254,'battlefield',0,0,0,0,0,0,0); diff --git a/src/map/ai/ai_char_normal.cpp b/src/map/ai/ai_char_normal.cpp index cc963411c55..7f2f732d167 100644 --- a/src/map/ai/ai_char_normal.cpp +++ b/src/map/ai/ai_char_normal.cpp @@ -415,7 +415,7 @@ void CAICharNormal::ActionDeath() // без задержки удаление эффектов не всегда правильно обрабатывается клиентом if (m_Tick >= m_LastActionTime + 1000) { - m_PChar->StatusEffectContainer->DelStatusEffectsByFlag(EFFECTFLAG_DEATH, true); + m_PChar->StatusEffectContainer->DelStatusEffectsByFlag(EFFECTFLAG_DEATH | EFFECTFLAG_FOOD, true); if(m_PChar->m_PVPFlag) { diff --git a/src/map/status_effect.h b/src/map/status_effect.h index b088b269724..8c030a69d38 100644 --- a/src/map/status_effect.h +++ b/src/map/status_effect.h @@ -58,7 +58,9 @@ enum EFFECTFLAG EFFECTFLAG_NO_REST = 0x1000, // prevents resting, curse II, plague, disease EFFECTFLAG_PREVENT_ACTION = 0x2000, // sleep, lullaby, stun, petro. Not implemented EFFECTFLAG_WALTZABLE = 0x4000, //for healing waltzable spells - EFFECTFLAG_FOOD = 0x8000 + EFFECTFLAG_FOOD = 0x8000, + EFFECTFLAG_SONG = 0x10000, //bard songs + EFFECTFLAG_ROLL = 0x20000 //corsair rolls }; enum EFFECT