#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
5df497787a
7510 changed files with 416048 additions and 0 deletions
109
Scripts/Skills/Hiding.cs
Normal file
109
Scripts/Skills/Hiding.cs
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
using System;
|
||||
using Server.Targeting;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.SkillHandlers
|
||||
{
|
||||
public class Hiding
|
||||
{
|
||||
private static bool m_CombatOverride;
|
||||
|
||||
public static bool CombatOverride
|
||||
{
|
||||
get{ return m_CombatOverride; }
|
||||
set{ m_CombatOverride = value; }
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
SkillInfo.Table[11].Callback = new SkillUseCallback( OnUse );
|
||||
}
|
||||
|
||||
public static TimeSpan OnUse( Mobile m )
|
||||
{
|
||||
if ( m.Spell != null )
|
||||
{
|
||||
m.SendLocalizedMessage( 501238 ); // You are busy doing something else and cannot hide.
|
||||
return TimeSpan.FromSeconds( 1.0 );
|
||||
}
|
||||
|
||||
double bonus = 0.0;
|
||||
|
||||
BaseHouse house = BaseHouse.FindHouseAt( m );
|
||||
|
||||
if ( house != null && house.IsFriend( m ) )
|
||||
{
|
||||
bonus = 100.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( house == null )
|
||||
house = BaseHouse.FindHouseAt( new Point3D( m.X - 1, m.Y, 127 ), m.Map, 16 );
|
||||
|
||||
if ( house == null )
|
||||
house = BaseHouse.FindHouseAt( new Point3D( m.X + 1, m.Y, 127 ), m.Map, 16 );
|
||||
|
||||
if ( house == null )
|
||||
house = BaseHouse.FindHouseAt( new Point3D( m.X, m.Y - 1, 127 ), m.Map, 16 );
|
||||
|
||||
if ( house == null )
|
||||
house = BaseHouse.FindHouseAt( new Point3D( m.X, m.Y + 1, 127 ), m.Map, 16 );
|
||||
|
||||
if ( house != null )
|
||||
bonus = 50.0;
|
||||
}
|
||||
|
||||
//int range = 18 - (int)(m.Skills[SkillName.Hiding].Value / 10);
|
||||
int range = Math.Min( (int)((100 - m.Skills[SkillName.Hiding].Value)/2) + 8, 18 ); //Cap of 18 not OSI-exact, intentional difference
|
||||
|
||||
bool badCombat = ( !m_CombatOverride && m.Combatant != null && m.InRange( m.Combatant.Location, range ) && m.Combatant.InLOS( m ) );
|
||||
bool ok = ( !badCombat /*&& m.CheckSkill( SkillName.Hiding, 0.0 - bonus, 100.0 - bonus )*/ );
|
||||
|
||||
if ( ok )
|
||||
{
|
||||
if ( !m_CombatOverride )
|
||||
{
|
||||
foreach ( Mobile check in m.GetMobilesInRange( range ) )
|
||||
{
|
||||
if ( check.InLOS( m ) && check.Combatant == m )
|
||||
{
|
||||
badCombat = true;
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ok = ( !badCombat && m.CheckSkill( SkillName.Hiding, 0.0 - bonus, 100.0 - bonus ) );
|
||||
}
|
||||
|
||||
if ( badCombat )
|
||||
{
|
||||
m.RevealingAction();
|
||||
|
||||
m.LocalOverheadMessage( MessageType.Regular, 0x22, 501237 ); // You can't seem to hide right now.
|
||||
|
||||
return TimeSpan.FromSeconds( 1.0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( ok )
|
||||
{
|
||||
m.Hidden = true;
|
||||
m.Warmode = false;
|
||||
m.LocalOverheadMessage( MessageType.Regular, 0x1F4, 501240 ); // You have hidden yourself well.
|
||||
}
|
||||
else
|
||||
{
|
||||
m.RevealingAction();
|
||||
|
||||
m.LocalOverheadMessage( MessageType.Regular, 0x22, 501241 ); // You can't seem to hide here.
|
||||
}
|
||||
|
||||
return TimeSpan.FromSeconds( 10.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue