UO Chile

Classic Ultima Online – uochile.homeip.net

Implementación de las reglas de los Young en Felucca

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 viejos.
  • Los jugadores viejos si pueden realizar actos beneficos sobre los youngs.
  • Los youngs si pueden realizar actos beneficos entre si, pero no atacarse.

Mas algunas reglas especiales del server:

  • Los youngs y pks pueden viajar usando Recall, Sacred Journey y Moongates hacia cualquier destino (viajar a Felucca no impone ninguna limitación).

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 ‘you cannot travel, etc’ en los codigos de cada hechizo). El codigo siguiente es válido para cualquier mapa con reglas de Felucca:

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

 Map map = from.Map;

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

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

 #region Youngs en Felucca
 // Young protegidos en Felucca

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

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

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

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

 if( from is PlayerMobile && ((PlayerMobile)from).Young && (!(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 && targetGuild != null && (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 > AccessLevel.Player || target.AccessLevel > AccessLevel.Player )
 return true;

 #region Youngs en Felucca

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

 }

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

 //--------------------
 #endregion

 Map map = from.Map;

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

 BaseCreature bc = from as BaseCreature;

 if( !from.Player && !(bc != null && bc.GetMaster() != null && bc.GetMaster().AccessLevel == AccessLevel.Player ) )
 {
 if( !CheckAggressor( from.Aggressors, target ) && !CheckAggressed( from.Aggressed, target ) && target is PlayerMobile && ((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 && targetGuild != null && (fromGuild == targetGuild || fromGuild.IsAlly( targetGuild ) || fromGuild.IsEnemy( targetGuild )) )
 return true; // Guild allies or enemies can be harmful

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

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

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

 return true;
 }
posted by Kamon in Cambios al servidor and have No Comments
Tags:

Eliminación de los guardias de Yew

Yew ya no tiene guardias. Eso :)

posted by Kamon in Cambios al servidor and have No Comments
Tags: ,

Actualizacion al cliente 6.0.10.0

Actualice el server al cliente 6.0.10.0 ya que con el cliente viejo (6.0.5.0) se se caia al agregar un Crimson Dragon. Así que ahora hay que actualizar al cliente 6.0.10.0 para conectarse.

posted by Kamon in Cambios al servidor and have No Comments
Tags:

Modificacion a las armaduras de BS

Al igual que Tailor, se eliminaron las armaduras de ninja y samurai. Solo quedaron algunos cascos. Las armas se mantuvieron todas porque requiere mucho tiempo ver los pros y contras de eliminar cierta arma tan solo por la estetica.

posted by Kamon in Cambios al servidor and have No Comments

Modificacion a las armaduras de tailor

De la lista de armors de tailor, se eliminaron las armaduras de ninja y samurai (esto es fantasia medieval, no anime con espadas) y la studded de elfo (por fea :P ). El resto quedo normal, a excepcion de la leather de elfo (leaf armor) que ya no es  “elven only” :D

Armadura de samurai

Armadura Samurai

posted by Kamon in Cambios al servidor and have No Comments

Modificacion a las donaciones de Brit y Moonglow

Las donaciones al Zoo de Moonglow ahora solo dan estatuas y las de la biblioteca de Brit ya no dan armaduras ni lentes (Reading Glasses) ni algunos talismanes (el de damage increase y el de bonus a inscription). Lentes pa leer po weon, lentes en un juego de fantasia medieval!!! mal mal mal…

Moonglow Zoo

Moonglow Zoo

posted by Kamon in Cambios al servidor and have No Comments

Modificación a los vendors

  • Modifiqué la cantidad de regs que venden los magos, alquimistas, herbalistas, etc. a 999.
  • Los animal trainers ahora venden caballos a un valor de $2499 cada uno y los caballos y llamas de carga $3499 con el fin de promover el negocio del “tameo y venta de monturas” :D .
  • Estuve testeando el skillgain y en una hora de macreo se puede subir swordmanship desde 50 a 100, asi que modifique el factor de ganancia general para que sea un poquito más lento.
posted by Kamon in Cambios al servidor and have No Comments

Blog provisorio

ultima_online_logo

Ultima Online

Este blog es tan solo para ir posteando los avances. No es el sitio oficial del server. Una vez que se abra al público, habra foro y pagina oficial.

posted by Kamon in Cambios al servidor and have No Comments

Lo que llevo hecho

Lista de cosas que ya están funcionando en el server (entre otras cosas menores):

  • Reduje el skillgain un poco. Ejemplo: con 55 puntos de skill (sin power scroll), existe un 30% de probabilidades de subir un punto de skill (antes era 40%) en todos los skills a excepcion de:
    • AnimalTaming, que quedo en 21%. Debo testearlo porque puede que haya quedado muy lento.
    • Magery, que quedo en 24%.
    • Blacksmith y Tailoring, que quedaron en 21%.
    • Healing y Veterinary, que quedaron en 36% (más rápido).

Luego postearé más detalles sobre esto.

  • Eliminé casi todos los artefactos de loot (Doom, Paragons, Crafteables, Donaciones, Peerless, etc.) dejando solo los artefactos decorativos y un par de items pvm.
  • Las recompensas por las donaciones al museo de Vesper han sido modificadas, eliminando los items que influyan en el pvp y modificando algunos items pvm (luck, slayers y cosas asi) para que den valores aleatorios de luck y de resistencias.
  • Todos los peerless bosses de Mondain’s Legacy estan funcionando correctamente a excepcion de ciertos detalles que debo resolver (teleporters que llevan a Trammel o Malas hay que redireccionarlos a Felucca).
  • Se aumento la cantidad de monstruos de los cementerios y se agregaron healers afuera de cada uno.
  • Se saco de los moongates publicos los accesos a Ilshenar. Ahora, para llegar a ese mapa se debe entrar a los portales que hay en cada shrine de Felucca. Ejemplo, el shrine de Valor de Felucca te lleva al shrine Valor de Ilshenar y vice versa.
  • Se modifico el tiempo de delay de Barracon (tiempo que demora en reiniciarse el champion una vez terminado) a aproximadamente tres horas (ya no más dos Barracones al hilo). La razón de esto es evitar que se aprovechen y se llenen de power scrolls ahora que no hay nadie jugando, cuando hayan mas jugadores, el delay ira disminuyendo (tuve que aclarar este punto).
  • Se modificó el tiempo de respawn del Cu-Sidhe a un valor al azar entre tres y veinticuatro horas.
  • Máximo dos cuentas por IP.
posted by Kamon in Cambios al servidor and have No Comments