#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:
parent
86effd1089
commit
1947e3c9e3
1 changed files with 26 additions and 11 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue