<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UO Chile &#187; youngs</title>
	<atom:link href="http://uochile.pickman.cl/tag/youngs/feed/" rel="self" type="application/rss+xml" />
	<link>http://uochile.pickman.cl</link>
	<description>Classic Ultima Online - uochile.homeip.net</description>
	<lastBuildDate>Mon, 15 Feb 2010 13:00:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Implementación de las reglas de los Young en Felucca</title>
		<link>http://uochile.pickman.cl/2009/10/29/implementacion-de-las-reglas-de-los-young-en-felucca/</link>
		<comments>http://uochile.pickman.cl/2009/10/29/implementacion-de-las-reglas-de-los-young-en-felucca/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 06:51:25 +0000</pubDate>
		<dc:creator>Kamon</dc:creator>
				<category><![CDATA[Cambios al servidor]]></category>
		<category><![CDATA[youngs]]></category>

		<guid isPermaLink="false">http://uochile.wordpress.com/?p=34</guid>
		<description><![CDATA[Después de un poco de craneo, algo de codigo y un resto de testeo, implementé las reglas de los Youngs en Felucca:

Los youngs no pueden ser atacados por jugadores viejos y vice versa.
Los youngs no pueden ser atacados por monstruos a menos que ellos inicien el combate.
Los youngs no pueden realizar actos beneficos sobre jugadores [...]]]></description>
			<content:encoded><![CDATA[<p>Después de un poco de craneo, algo de codigo y un resto de testeo, implementé las reglas de los Youngs en Felucca:</p>
<ul>
<li>Los youngs no pueden ser atacados por jugadores viejos y vice versa.</li>
<li>Los youngs no pueden ser atacados por monstruos a menos que ellos inicien el combate.</li>
<li>Los youngs no pueden realizar actos beneficos sobre jugadores viejos.</li>
<li>Los jugadores viejos si pueden realizar actos beneficos sobre los youngs.</li>
<li>Los youngs si pueden realizar actos beneficos entre si, pero no atacarse.</li>
</ul>
<p>Mas algunas reglas especiales del server:</p>
<ul>
<li>Los youngs y pks pueden viajar usando Recall, Sacred Journey y Moongates hacia cualquier destino (viajar a Felucca no impone ninguna limitación).</li>
</ul>
<p>Por si a alguien le interesa implementar este sistema, el codigo es el siguiente: Reemplazar los dos metodos (beneficial y harmful) en Notoriety.cs, el codigo relevante esta en rojo (para modificar Recall, Sacred Journey y Moongates solo basta comentar las lineas correspondientes -las que tienen el texto &#8216;you cannot travel, etc&#8217; en los codigos de cada hechizo). El codigo siguiente es válido para cualquier mapa con reglas de Felucca:</p>
<pre>public static bool Mobile_AllowBeneficial( Mobile from, Mobile target )
 {
 if( from == null || target == null || from.AccessLevel &gt; AccessLevel.Player || target.AccessLevel &gt; AccessLevel.Player )
 return true;

 Map map = from.Map;

 #region Factions
 Faction targetFaction = Faction.Find( target, true );

 if( (!Core.ML || map == Faction.Facet) &amp;&amp; targetFaction != null )
 {
 if( Faction.Find( from, true ) != targetFaction )
 return false;
 }
 #endregion

 <span style="color:#ff0000;">#region Youngs en Felucca
 // Young protegidos en Felucca

 if (from.Player &amp;&amp; target.Player &amp;&amp; ((PlayerMobile)from).Young &amp;&amp; !((PlayerMobile)target).Young)
 return false;   // Youngs no pueden ayudar a jugadores viejos (comprobarlo)
 //--------------------------------
 #endregion</span>

 if ( map != null &amp;&amp; (map.Rules &amp; MapRules.BeneficialRestrictions) == 0 )
 return true; // In felucca, anything goes

 if( !from.Player )
 return true; // NPCs have no restrictions

 if( target is BaseCreature &amp;&amp; !((BaseCreature)target).Controlled )
 return false; // Players cannot heal uncontrolled mobiles

 if( from is PlayerMobile &amp;&amp; ((PlayerMobile)from).Young &amp;&amp; (!(target is PlayerMobile) || !((PlayerMobile)target).Young) )
 return false; // Young players cannot perform beneficial actions towards older players

 Guild fromGuild = from.Guild as Guild;
 Guild targetGuild = target.Guild as Guild;

 if( fromGuild != null &amp;&amp; targetGuild != null &amp;&amp; (targetGuild == fromGuild || fromGuild.IsAlly( targetGuild )) )
 return true; // Guild members can be beneficial

 return CheckBeneficialStatus( GetGuildStatus( from ), GetGuildStatus( target ) );
 }

 public static bool Mobile_AllowHarmful( Mobile from, Mobile target )
 {
 if( from == null || target == null || from.AccessLevel &gt; AccessLevel.Player || target.AccessLevel &gt; AccessLevel.Player )
 return true;

 <span style="color:#ff0000;">#region Youngs en Felucca

 BaseCreature bcreature = from as BaseCreature;
 if (!from.Player &amp;&amp; !(bcreature != null &amp;&amp; bcreature.GetMaster() != null &amp;&amp; bcreature.GetMaster().AccessLevel == AccessLevel.Player))
 {
 if (!CheckAggressor(from.Aggressors, target) &amp;&amp; !CheckAggressed(from.Aggressed, target) &amp;&amp; target is PlayerMobile &amp;&amp; ((PlayerMobile)target).CheckYoungProtection(from))
 return false;   // Uncontrolled NPCs are only restricted by the young system

 }

 if (from.Player &amp;&amp; target.Player &amp;&amp; (((PlayerMobile)target).Young || ((PlayerMobile)from).Young))
 return false;   // Jugadores viejos no pueden atacar a Youngs y vice versa

 //--------------------
 #endregion</span>

 Map map = from.Map;

 if( map != null &amp;&amp; (map.Rules &amp; MapRules.HarmfulRestrictions) == 0 )
 return true; // In felucca, anything goes

 BaseCreature bc = from as BaseCreature;

 if( !from.Player &amp;&amp; !(bc != null &amp;&amp; bc.GetMaster() != null &amp;&amp; bc.GetMaster().AccessLevel == AccessLevel.Player ) )
 {
 if( !CheckAggressor( from.Aggressors, target ) &amp;&amp; !CheckAggressed( from.Aggressed, target ) &amp;&amp; target is PlayerMobile &amp;&amp; ((PlayerMobile)target).CheckYoungProtection( from ) )
 return false;

 return true; // Uncontrolled NPCs are only restricted by the young system
 }

 Guild fromGuild = GetGuildFor( from.Guild as Guild, from );
 Guild targetGuild = GetGuildFor( target.Guild as Guild, target );

 if( fromGuild != null &amp;&amp; targetGuild != null &amp;&amp; (fromGuild == targetGuild || fromGuild.IsAlly( targetGuild ) || fromGuild.IsEnemy( targetGuild )) )
 return true; // Guild allies or enemies can be harmful

 if( target is BaseCreature &amp;&amp; (((BaseCreature)target).Controlled || (((BaseCreature)target).Summoned &amp;&amp; from != ((BaseCreature)target).SummonMaster)) )
 return false; // Cannot harm other controlled mobiles

 if( target.Player )
 return false; // Cannot harm other players

 if( !(target is BaseCreature &amp;&amp; ((BaseCreature)target).InitialInnocent) )
 {
 if( Notoriety.Compute( from, target ) == Notoriety.Innocent )
 return false; // Cannot harm innocent mobiles
 }

 return true;
 }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://uochile.pickman.cl/2009/10/29/implementacion-de-las-reglas-de-los-young-en-felucca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
