#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()
|
public virtual int GetEffectHue()
|
||||||
{
|
{
|
||||||
|
|
@ -38,24 +38,39 @@ namespace Server.Items
|
||||||
&& Utility.InRange( GetWorldLocation(), loc, range );
|
&& 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 );
|
base.OnMovement( m, oldLocation );
|
||||||
|
|
||||||
if ( m.Location == oldLocation )
|
if ( m.Location == oldLocation )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( CheckRange( m.Location, oldLocation, 0 ) && DateTime.UtcNow >= m_NextActiveTrigger )
|
bool activeTrigger = CheckRange( m.Location, oldLocation, 0 ) && DateTime.UtcNow >= m_NextActiveTrigger;
|
||||||
{
|
bool passiveTrigger = !activeTrigger && PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.UtcNow >= m_NextPassiveTrigger;
|
||||||
m_NextActiveTrigger = m_NextPassiveTrigger = DateTime.UtcNow + ResetDelay;
|
|
||||||
|
|
||||||
OnTrigger( m );
|
if ( activeTrigger || passiveTrigger )
|
||||||
}
|
|
||||||
else if ( PassivelyTriggered && CheckRange( m.Location, oldLocation, PassiveTriggerRange ) && DateTime.UtcNow >= m_NextPassiveTrigger )
|
|
||||||
{
|
{
|
||||||
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();
|
int version = reader.ReadInt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue