From f1bc5d61fbef270019575c9ffa607363b2f457c1 Mon Sep 17 00:00:00 2001 From: Raylde <50953519+Raylde@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:22:41 +0100 Subject: [PATCH] Fix issue #1168 Herding Dupe Char --- src/game/chars/CCharSkill.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/game/chars/CCharSkill.cpp b/src/game/chars/CCharSkill.cpp index 6a9c23849..3877f46e3 100644 --- a/src/game/chars/CCharSkill.cpp +++ b/src/game/chars/CCharSkill.cpp @@ -2459,6 +2459,27 @@ int CChar::Skill_Herding( SKTRIG_TYPE stage ) { case SKTRIG_START: { + // CanSeeLos if pChar or m_Act_P + if ( !CanSeeLOS(pChar) || !CanSeeLOS(m_Act_p) ) + { + SysMessageDefault(DEFMSG_MSG_MOUNT_DIST); + return -SKTRIG_ABORT; + } + + // tamed pets cannot be herded + if ( !pChar->IsStatFlag(STATF_PET) ) + { + SysMessage("That animal looks tame already."); + return -SKTRIG_ABORT; + } + + // is a valid point? + if ( !m_Act_p.IsValidPoint()) + { + SysMessage("That location is not valid."); + return -SKTRIG_ABORT; + } + if ( !g_Cfg.IsSkillFlag( Skill_GetActive(), SKF_NOANIM ) ) UpdateAnimate(ANIM_ATTACK_WEAPON); @@ -2471,6 +2492,12 @@ int CChar::Skill_Herding( SKTRIG_TYPE stage ) case SKTRIG_SUCCESS: { + // check if is disconnected or ridden + if ( pChar->IsDisconnected() || pChar->IsStatFlag(STATF_RIDDEN) ) + { + return -SKTRIG_ABORT; + } + if ( IsPriv(PRIV_GM) ) { if ( pChar->GetPrivLevel() > GetPrivLevel() )