public static void FightingBackToBack( PlayerMobile pm, bool movingaway ) { ArrayList list = new ArrayList(); ArrayList allies = new ArrayList(); ArrayList leavelist = new ArrayList(); if( pm.Feats.GetFeatLevel(FeatList.BackToBack) > 0 ) { if( pm.Warmode && !pm.Mounted ) { foreach( Mobile m in pm.GetMobilesInRange( 2 ) ) list.Add( m ); for( int i = 0; i < list.Count; ++i ) { PlayerMobile m = (Mobile)list[i] as PlayerMobile; Mobile x = m as Mobile; Mobile y = pm as Mobile; if( m is PlayerMobile && m != pm && m.Warmode && !m.Mounted ) { if( m == null || m.Deleted || m.Map != pm.Map || !m.Alive || !pm.CanSee( m ) || m.Feats.GetFeatLevel(FeatList.BackToBack) < 1 || !pm.AllyList.Contains( x ) || !m.AllyList.Contains( y ) ) continue; if( pm.InLOS( m ) ) allies.Add( m ); } } if( allies.Count > 0 ) { for( int i = 0; i < allies.Count; ++i ) { PlayerMobile m = (Mobile)allies[i] as PlayerMobile; if( !m.BackToBack ) { BackToBackBonus( m, true ); } if( !pm.BackToBack ) { BackToBackBonus( pm, true ); } } } else { if( pm.BackToBack ) { BackToBackBonus( pm, false ); } if( !movingaway ) { foreach( Mobile mob in pm.GetMobilesInRange( 3 ) ) leavelist.Add( mob ); for( int i = 0; i < leavelist.Count; ++i ) { PlayerMobile m = (Mobile)leavelist[i] as PlayerMobile; if( m != pm && m is PlayerMobile ) { FightingBackToBack( m, true ); } } } } } else { if( pm.BackToBack ) { BackToBackBonus( pm, false ); } } } }