Buenas.
Hace un par de dias le quite el polvo al antiguo Sphere que tenia del servidor SIOP (antiguo servidor de Valencia que algunos de UA recordaran), me puse a trastear un poco y refrescarme un poco en esto de script de Sphere. Despues de retocar el Resisting Spell que tenia, configurarlo, etc (aún queda por retocarlo) pense en intentar "copiar" algunos script de UA.
Dije como haran lo de las canciones de Música... y la reputación orca... pense en hacer una mezcla de reputación de orcos con musica y aqui os pongo como llevo la cosa.
Por ahora tengo el area de la canción, con un problema no se hacer para que si estas cerca de una casa no lo haga (tengo que no pueda hacerlo dentro de la casa), 4 tipos diferentes de canción y el sistema de canción diferente al habitual de UA.
Esta vez se invocara un NPC con un tambor en la localización del personaje, este NPC sera el que este tocando la canción si es herido o muere la canción desaparecera.
A los que esteis más frescos en este tema, que cosas cambiariais, como solucionariais algunos problemas como el de que no pueda hacerlo cerca de una casa, alguna idea/reto para darle más caña.
Añado el codigo, también tengo otros con Objetos de reputación orca y sus npcs, nada del otro mundo.
Código:
////////////////////////////////////////
//Tipos Canciones
////////////////////////////////////////
/////////////
//// Canción Fuerza Orca.
//// Agilidad Orca. Otorga Fuerza.
/////////////
[regiontype r_cancion_orca_1]
Defname = r_cancion_orca_1
[email protected]
SRC.STR = <SRC.STR> + 25
Src.SYSMESSAGE El sonido del tambor orco te hace mas fuerte...
[email protected]
SRC.STR= <SRC.STR> - 25
SRC.SYSMESSAGE Pierdes fuerza...
/////////////
//// Canción Agilidad Orca.
//// Agilidad Orca. Otorga Agilidad
/////////////
[regiontype r_cancion_orca_2]
Defname = r_cancion_orca_2
[email protected]
SRC.DEX = <SRC.DEX> + 20
Src.SYSMESSAGE El sonido del tambor orco te hace mas agil...
[email protected]
SRC.DEX= <SRC.DEX> - 20
SRC.SYSMESSAGE Pierdes agilidad...
/////////////
//// Canción preparación mágica.
//// Cada 30 segundos tira Proteccion, Ar.Reactiva y Escudo en la zona de la canción
/////////////
[regiontype r_cancion_orca_3]
Defname = r_cancion_orca_3
[email protected]
SRC.SPELLEFFECT s_reactive_armor 1000
SRC.SPELLEFFECT s_protection 1000
SRC.SPELLEFFECT s_magic_reflection 1000
SRC.Emote envuelto por el poder mágico de la cancion.
/////////////
//// Canción stuneadora.
//// 20% de Aturdir al Entrar en el Area
//// 60% de Permaneciendo en el area (cada 30 Segundos)
/////////////
[regiontype r_cancion_orca_4]
Defname = r_cancion_orca_4
// Arreglar, Variar según reputación orca. Mayor Reputación, Menos %.
[email protected]
IF (RAND(10)<2)
SRC.f_aturdir_cancion
ENDIF
[email protected]
IF (RAND(10)<6)
SRC.f_aturdir_cancion
ENDIF
////////////////////////////////////////
//Funcion Aturdir
////////////////////////////////////////
[function f_aturdir_cancion]
src.newitem = i_timer_aturdir_cancion
src.equip = <src.act.uid>
src.act.timer = 2 //// 2 Segundos
[itemdef i_timer_aturdir_cancion]
ID=i_memory
TYPE=t_eq_script
LAYER=layer_special
NAME=Timer Aturdir Cancion
[email protected]
SRC.Emote aturdido por el sonido
SRC.ANIM 20
SRC.Flags = <SRC.Flags> | statf_freeze
[email protected]
SRC.Flags = <src.flags> & ~statf_freeze
[email protected]
Remove
Return 1
////////////////////////////////////////
// Area canción (Multi)
////////////////////////////////////////
[itemdef i_area_cancion_orca]
Name=Cancion Orca
ID=i_drum
TYPE=T_MULTI
CATEGORY=Reputacion Orca
SUBSECTION=Canción
DESCRIPTION=Area Canción
MULTIREGION=0,0,0,0
COMPONENT=0,-4, -4, 0
COMPONENT=0, 4, 4, 0
COMPONENT=0,-4, 4, 0
COMPONENT=0, 4, -4, 0
REGIONFLAGS=00
////////////////////////////////////////
//Funciones de Cancion
////////////////////////////////////////
[function f_cancion]
SRC.newitem = i_area_cancion_orca
var.uid = <src.act.uid>
src.act.p = <p>
src.act.z = <z>+5 // Altura de cintura
src.act.color = colors_green
src.act.name = Tambores de guerra
src.act.region.events = +r_cancion_orca_<ARGN1>
SRC.newitem = i_timer_stand
src.act.timer = <EVAL(((<SRC.Musicianship>*60)/1000) + ((<SRC.Enticement>)*60)/1000)>
var.UIDTimer = <src.act.uid>
src.act.link = <var.uid>
SRC.newnpc = c_orco_tambor
src.act.go = <p>
src.act.equip <SRC.var.UIDTimer>
src.p=<p>
sfx 57
////////////////////////////////////////
// Funcion canción. Retocar para no tocar cerca de casas.
////////////////////////////////////////
[function cancion_orca]
IF (<EVAL((<SRC.Musicianship>/20) + (<SRC.Enticement>/20))> < 95)
SRC.Sysmessage Tus conocimientos de musica no son suficientes.
ELIF (<SRC.isevent.e_cancion_inter>)
SRC.Sysmessage No puedes realizar otro.
ELIF (<REGION.FLAGS>==017980)
SRC.Sysmessage Ya hay otra cancion en este area.
ELIF (<REGION.FLAGS>==0180) || (<REGION.FLAGS>==04180) || (<REGION.FLAGS>>02000)
SRC.Sysmessage No puedes hacerlo en esta zona.
ELIF (<REGION.FLAGS>==01092)
SRC.Sysmessage No puedes hacerlo dentro de una casa.
ELSE
src.newitem = i_timer_pre_cancion
src.equip = <src.act.uid>
src.act.timer = 3 // Tiempo de Precast 3 Segundos
src.act.MORE1 = <ARGN1>
ENDIF
////////////////////////////////////////
// Precast Canción
////////////////////////////////////////
[itemdef i_timer_pre_cancion]
ID=i_memory
TYPE=t_eq_script
LAYER=layer_special
NAME=Timer Pre Canción
[email protected]
MORE1=0
[email protected]
SRC.FLAGS = <src.flags> | statf_freeze
If (<SRC.isevent.e_cancion_inter>)
src.sysmessage Ya estas tocando una cancion.
endif
SRC.EVENTS +e_cancion_inter
[email protected]
SRC.FLAGS = <src.flags> & ~ statf_freeze
IF (<SRC.isevent.e_cancion_inter>)
SRC.EVENTS -e_cancion_inter
SRC.f_cancion <MORE1>
ENDIF
[email protected]
Remove
return 1
////////////////////////////////////////
// Si es golpado no termina de realizarlo
////////////////////////////////////////
[events e_cancion_inter]
[email protected]
IF (<FLAGS>&04) && (<FINDID.i_timer_pre_cancion>)
FLAGS=<FLAGS>&~04
EVENTS -e_cancion_inter
FINDID(i_timer_pre_cancion).remove
SYSMESSAGE No consigues lograrlo...
ENDIF
////////////////////////////////////////
// Timer canción (Item)
////////////////////////////////////////
[itemdef i_timer_stand]
ID=i_memory
TYPE=t_eq_script
LAYER=layer_special
NAME=Timer Cancion
[email protected]
More1=<TIMER>
Timer=1
[email protected]
SRC.Emote Toca con fuerza el tambor
SRC.ANIM 5
More1=<TIMER>
TIMER=1
[email protected]
link.remove
src.remove
[email protected]
IF (<MORE1>)
IF (rand(100) < 5)
CONT.Emote Toca con fuerza el tambor
CONT.ANIM 5
sfx 57
ENDIF
MORE1=<MORE1> - 1
TIMER=1
ELSE
link.remove
remove
ENDIF
RETURN 1
////////////////////////////////////////
// Orco que toca el tambor. (En la canción)
////////////////////////////////////////
[CHARDEF c_orco_tambor]
DEFNAME=c_orco_tambor
NAME=#NAMES_ORC
ID=c_ORC
ARMOR=15
CAN=MT_NONMOVER
CATEGORY=Reputacion Orca
SUBSECTION=NPC
DESCRIPTION=Orco Canción
[email protected]
BRAIN=brain_none
NAME=<NAME>, Sangrefria
COLOR=colors_green
STR={35 50}
DEX={25 35}
INT={10 15}
PARRYING={60.0 85.0}
MAGERY={70.0 95.0}
MAGICRESISTANCE={70.0 85.0}
[email protected]
IF (<HITS> < <ARGN1>)
Say Maldito...
ELIF (<ARGN1> > 30) // Si el golpe es muy fuerte, huye
Emote huyendo...
GO 1,1 // Para crear el efecto humo
remove
return 1
ELSE
IF (rand(4)==1)
SRC.SAY Mi abuela pega más fuerte...
ENDIF
ENDIF
[email protected]
return 1
[EOF]
Un Saludo
Envy