#W# Remove trap now provides a chance to not trigger a floor trap. Also allows skill gain for floor traps.

This commit is contained in:
WarrentyExpired 2026-08-13 19:18:13 -04:00
parent 86effd1089
commit 1947e3c9e3

View file

@ -15,7 +15,7 @@ namespace Server.Items
{
}
public override bool HandlesOnMovement{ get{ return true; } } // Tell the core that we implement OnMovement
public override bool HandlesOnMovement{ get{ return true; } }
public virtual int GetEffectHue()
{
@ -38,24 +38,39 @@ namespace Server.Items
&& Utility.InRange( GetWorldLocation(), loc, range );
}
public override void OnMovement( Mobile m, Point3D oldLocation )
public override void OnMovement( Mobile m, Point3D oldLocation )
{
base.OnMovement( m, oldLocation );
if ( m.Location == oldLocation )
return;
if ( CheckRange( m.Location, oldLocation, 0 ) && DateTime.UtcNow >= m_NextActiveTrigger )
{
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.UtcNow + ResetDelay;
bool activeTrigger = CheckRange( m.Location, oldLocation, 0 ) && DateTime.UtcNow >= m_NextActiveTrigger;
bool passiveTrigger = !activeTrigger && PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.UtcNow >= m_NextPassiveTrigger;
OnTrigger( m );
}
else if ( PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.UtcNow >= m_NextPassiveTrigger )
if ( activeTrigger || passiveTrigger )
{
m_NextPassiveTrigger = DateTime.UtcNow + PassiveTriggerDelay;
if ( m.Alive && m.AccessLevel == AccessLevel.Player )
{
// m.CheckSkill parameters: (SkillName, Minimum Skill to attempt, Maximum Skill to gain)
// This single line calculates their dodge chance AND tells the server to roll for a skill gain!
if ( m.CheckSkill( SkillName.RemoveTrap, 0.0, 120.0 ) )
{
m.SendMessage( 63, "You notice a hidden trap and carefully step around it." );
return;
}
}
OnTrigger( m );
if ( activeTrigger )
{
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.UtcNow + ResetDelay;
OnTrigger( m );
}
else if ( passiveTrigger )
{
m_NextPassiveTrigger = DateTime.UtcNow + PassiveTriggerDelay;
OnTrigger( m );
}
}
}
@ -82,4 +97,4 @@ namespace Server.Items
int version = reader.ReadInt();
}
}
}
}