Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
*Se crearon los tiddlers para poner en línea la info de qué cartas tiene cada personaje en mano. El tiddler para acceder al listado de las "manos" es [[Manos del Destino]].
*Se creó el tiddler de [[jorunal]] para registrar los cambios hechos a la JuRoCEpedia
Elfa Silvanesti, con ciertas habilidades para crear portales dimensionales.
Carga un arco y flechas, así como una espada larga.
Tiene un aire de nobleza.
Mercenario Humano, sumamente hábil con su espada a dos manos.
[img[http://xa.yimg.com/kq/groups/10154695/sn/671807155/name/n_a]]
Humano Leñador, nativo de [[Solace]].
Altamente conocedor de los bosques cerca de Solace.
Boleadora encantada, dada a [[Gwydeon Ragnarok]]. Sus propiedades aún no están claras.
[PAST]
"¡Uth Ewgan¡ !Trevor! Continuad vuestro trabajo"- exclamó molesto el
jefe de la garra de Caballeros de Takhisis al ver que sus caballeros
titubearon ante las palabras de Greg Hilltop.
"Disculpadme que no me fíe de vuestras inteligentes palabras, maese
marino"- respondió con gravedad al intrépido humano echando un último
vistazo a sus alrededores. "Si fuese cierto que estamos en las
proximidades de Solace, y esto no es una simple ilusión de uno de sus
elfos fugitivos, entonces comprenderéis no habría problema (para
ustedes) en que verifiquemos la identidad de los que os acompañan. El
riesgo lo asumimos nosotros, no ustedes. Os doy mi palabra de honor
de que no se os hará daño si cooperáis. ¡Que la Reina de la Oscuridad
me abandone en el abismo si llegare a incumplir mi promesa!. Ahora
que... sería lógico que la seguridad que tenéis de la llegada de una
patrulla de Legionarios en cualquier momento debería inclinarles a
acceder pacíficamente a la revisión"
"Si por el contrario, mostráis resistencia a nuestras intenciones,
supondré simplemente que desconfiáis de la duración o efectividad de
vuestro sortilegio, y lamentareis altamente vuestra existencia." -
Dijo con ojos centelleantes, deteniéndose en el gesto que había
iniciado para envainar su espada, momentos atrás, y luego
culminándolo con brusquedad.
"Con esa hábil mente, mi amigo, comprenderá que llegar con las manos
vacías a mis superiores, habiendo sido burlados por una tonta
ilusión, no me permitirá sino cualquier otra cosa, entre la
humillación en la Orden, hasta pasar a convertirme en la cena de los
secuaces de La Muerte Verde, como bien has optado por llamarla. Así
pues, prefiero que encontremos la cena tan fría como el muro de
hielo, a permitirnos un fracaso por omisión"- concluyó con amargura
el Caballero del Lirio.
"Os hago una última concesión, hipotéticos inocentes viajeros de las
planicies Abinisinia:"- dijo antes de permitir que se le diese
respuesta a sus palabras- "si acabáis con la ilusión en este momento
y os rendís, les perdonaremos la vida y seréis hechos prisioneros..."
"Si acabaís con la ilusión..." - dijo entre dientes Aelensar, apenas
para sí, - "Es que acaso no ha visto que estamos tan perdidos como
él?". "Prisioneros?" - pensó - "Olvídalo, viejo... Mi madre no me
trajo al mundo para que muriera encadenado a un sucio muro".
Aelensar sopesó la situación. Los elfos eran los que más les
preocupaban. De haber sabido que contaba con apoyo - los demás
viajeros... Maldición, los demás mercenarios... - podría haber
calculado mejor sus opciones. Pero estaba sólo, al menos de momento.
"Cuando pelees con un nido de abejas, mata a la reina. Las demás se
irán... " - pensó - "O al menos las picadas no te dolerán tanto al
pensar en la venganza que tomaste!" - continuó, riendo para sí.
Así, pues, su oportunidad estaba en dominar al jefe de la garra.
"Se os tratará con el debido respeto que tiene aquel que acepta su
culpabilidad con gallardía."- continuó el Caballero Oscuro, -"En
cualquiera de los casos, os ordeno colocaros todos ordenadamente al
costado izquierdo de cada una de las carretas, incluso si no viajáis
en una, descubrid vuestros rostros y poned vuestras armas en el suelo
dos pasos frente a ustedes"- exigió el Caballero Guerrero,
autoritario.
"Hasta lo de las filas estamos casi bien" - siguió pensando Aelensar -
"pero en lo de las armas está errado completamente. ¿Cómo se le
ocurre que vamos a quedar desprotegidos?".
Ael, que nunca había dejado de acercarse a la caravana junto a la
comitiva, se detuvo y volteó su caballo hacia el jefe de la garra.
"Será posible que este jefe de caravanas sea el único en todo Krynn
sin alguna carreta para esconder contrabando? Qué pasó con los buenos
tiempos de fondos falsos?" - pensó cínicamente.
"Caballeros"- prosiguió el líder del oscuro grupo, refiriéndose a los
restantes caballeros de Takhisis que quedaban tras él- "Aseguraos que
nadie escape o se esconda".- tras lo cual se empezaron a desplegar a
lo largo de la caravana, por el flanco izquierdo, acompañados por la
Patrulla de Guardias de Qualinesti.
"Ustedes también. Deponed vuestras armas."- demandó por último,
señalando a Hilltop, al líder de la caravana (claramente palidecido),
y a Aelensar.
Mientras los guerreros continuaban su camino la expresión de simpatía
de Hilltop desapareció de su cara. Cuando habló, su tono, pese a
relajado, era a la vez sarcástico y serio. Greg necesitó menos de un
segundo para responder.
"Tenéis todas las de ganar, oh, noble guerrero, seguro. Pero si
ilusiones buscas, conseguirás las tuyas propias de ser necesario, aún
siendo nosotros inocentes. Me pides que deje mi arma para que puedas
luego tomar injustificada revancha, no contra viajeros mal armados,
sino indefensos. ¡Cuánto honor! Y, claro, vosotros si podéis quejaros
de vuestras pérdidas, más
a nosotros que nos trague el abismo. Estamos haciendo comercio para
que tu buen Amo pueda cobrar su parte ¿Quién se preocupa por nuestro
tiempo y el estado de nuestras mercancías? ¿Quién me responde por el
comportamiento de tus caballeros de regios nombres y afiladas
espadas? En fin, ¿cómo sabremos que tu búsqueda será honorable cuando
no se nos permite defender nuestra propia palabra y nuestras
pertenencias?"
Su espada seguía en la funda.
Aelensar se colocó entre el jefe de la garra y la caravana, y habló
con voz firme: "Señor, espero que entienda que nos es imposible
cumplir con lo que nos pide".
"Es por todos conocido que los caballeros oscuros son respetados en
el campo de batalla por su valentía y su habilidad con las armas, así
como fuera del mismo por su honor (y su crueldad). Por ese mismo
sentido del honor, comprenderá que hemos sido contratados para
defender esta caravana de cualquier ataque, y por ello se nos hace
impensable quedar desarmados y desprotegidos. Nuestras espadas nos
defienden a nosotros y a los débiles, y nos hacen merecedores de la
paga que nos ganamos."
"Nada ha de temer de nuestras armas, a menos que desee mal a la
caravana, así que no hay necesidad de desarmarnos. Sin embargo, si
aún no le he convencido, que por opciones no quede: Hay un acuerdo al
que podemos llegar y solventar esta discusión..."
"Hasta la fecha de hoy, no he tenido el placer de medirme en el campo
de batalla con un señor oscuro. Y sólo puedo respetar a aquellos que
prueban ser dignos en combate."
"Evitemos una masacre innecesaria. Si así lo desea, tengamos un duelo
nosotros, aquí y ahora. Si usted gana, demostrará (ante mis ojos al
menos, que soy el problemático) que es digno guerrero y caballero, y
por tanto, honorable. Depondré mis armas y les dejaré revisar la
caravana."
"En cambio, si yo gano, gano el derecho de que conservemos nuestras
armas. Aún podrá revisar la caravana (obviamente, sin despeinarle un
pelo a nadie), e igual cumplirá su misión (pues, en verdad, no hay
rebeldes entre nosotros)."
Ael esperaba, para sus adentros, que su victoria (segura, claro)
bajaría la moral de los caballeros, además de que en la emoción del
combate las elfas pudieran escabullirse. Lo que aún no había
decidido era si matar al guerrero, usarlo para alejar a los demás, o
cumplir con lo que acababa de decir... Bueno, no hay que dejar que la
moralidad arruine un buen plan. Seguramente al ganar usaría al
capitán para alejar a la guardia.
"Sin embargo, debe prometerme algo: Si por un milagro (que la dama
oscura no quiera) debiera su alma ir al encuentro de la dama
Takhisis, que el resto de su comitiva respete este convenio. Tenemos
un trato?"
El Caballero que liderizaba la desubicada garra no pudo sino voltear
y mirar con asombro al valiente mercenario. Su mirada volvió a
endurecerse, aunque con un brillo en los ojos, como el de todo aquel
que admira genuinamente a su contrincante, y ve con esperanza el
mundo. Luego de un instante que en su mente duró una eternidad, el
Caballero Guerrero se dirigio a Aelensar, diciendo: "Permitan
vuestros Dioses ausentes recibir tu alma a buen resguardo, pues tu
coraje y aparente apego al combate honroso no debieran quedar
olvidados. Aunque quizá esta sea tu última batalla en pie, es un
honor aceptar tu desafío" -luego de una pausa agregó- "Mi comitiva
respetará este convenio" -y lanzó una intensa mirada a sus secuaces -
"o regresaré yo mismo de entre los muertos para asegurarme de que su
desgracia sea pronta y eterna" dijo colocando su mano enguantada
sobre la región del peto que cubría su corazón.
Greg Hilltop miró con admiración al mercenario. Por lo bajo
dijo "¡Bravo, hombre!". El sol era más ligero, y el momento esperado
había llegado.
Con voz suficiente para que el mercenario escuchara. "Adelante señor:
la mesa está servida". Volviéndose a la caravana, Greg empezó a
aplaudir. Su cara adquirió una expresión burlona, la de un niño en la
feria, esperando ver al bufón caer. "¡Vamos gente! ¡Animaos! ¡Nuestro
Campeón ha dado un paso al frente, y el espectáculo está pronto a
comenzar! ¡Dos hombres se enfrentarán valientemente y aquel que
sobreviva obtendrá lo que desea! ¡Quién dijo que la Noble Caballería
había desaparecido!". Volviéndose a los caballeros oscuros. "¡Vamos,
Campeón de la Reina Oscura! ¡Tengamos un duelo justo! ¡Sólo el que
gane mostrará su valía! ¡Quién dijo la palabra miedo! ¡Si vos ganáis
será como queréis, pero si nuestro cortés Campeón os supera
seguiremos nuestro camino después de dejar unas flores sobre vuestros
despojos! Sólo decidnos a quién deberemos ver a la cara para cumplir
con vuestra palabra, y empezaremos la lid" Gregarious Hilltop no
paraba de reír, pero sus ojos buscaban la ballesta disponible más
cercana. Definitivamente, no paraba de reír.
Lamentablemente la ballesta más cercana reposaba pendiendo del cinto
de Aelensar.
Ante la eufórica alegría de Gregarious Hilltop, no fueron pocos los
viajeros que sonrieron (no sin cierto nerviosismo) contagiados por su
festivas palabras. Hubo murmullos entre las gentes, que iban
desde "¡Está demente!", hasta "¡La gracia de Paladín ayude al
escolta!", ... pasando por "¡esto sí que va a estar bueno!".
Kieran no pudo evitar exhalar un gran suspiro de alivio. Sin embargo,
también le invadió un inmenso sentimiento de vergüenza. "Yo debería
ser el que tuviera que pelear"- se dijo. Aplaudió también ante las
palabras de Gregory, y lo único que pudo musitar para el que lo oyera
fue: "¡Que Paladine me permita algún día hacer el sacrificio que ese
muchacho está realizando por nosotros!". Meditó sus chances de nuevo
y murmuró de forma inaudible -"Un momento... ¿y si...?".
El anciano tomó de su bolso un libro con la mitad de sus hojas en
blanco, y comenzó a escribir mientras mascullaba entre los
incompletos dientes una versión muy semejante de los diálogos que
había presenciado.
Las elfas se miraron entre si, sin poder reprimir un gesto
aprovatorio (y no sin cierto aire de pésame). La de áureos cabellos
se deshizo de sus guantes de cuero, y entre cruzó los dedos
apoyándose sobre sus codos en el cuello del corcel.
La Guardia Qualinesti relajó un poco su tensión, y observó ceñuda e
inquisitvamente a sus "compañeros" humanos.
Tarasal Almondeyes se acercó en un emocionado trote, mientras le
hablaba a Peni (la ardilla), y arrastraba por el brazo a su taciturno
compañero. "¡Peni, Peni! ¡Sal para que veas una justa de verdad! La
verdad es que la conversación con ese espíritu elfo está un poquito
aburrida... ¡Camina rápido tú también!" -dijo dando un tirón a la
manga de la camisa del otro pequeño, quien abrió sus ojos como
despertando de las tinieblas y apuró el paso.
Por su parte, los viajeros empezaron a moverse tímidamente hacia el
lado izquierdo de la caravana, para observar el inusual intercambio.
Entre los que manifestaban este comportamiento se encontraban también
el resto de los escoltas.
Ante la actitud un poco bufona y alegre del apuesto marino la mujer
en harapos no sabía si debía tomarlo en serio o si era una actuación
por su parte. Tener un espíritu así ante tanta adversidad era de
locos o de aquellos de gran fortaleza. "¡Espero que sea lo último y
no lo primero!" pensó ella.
El mercenario la había sorprendido, es un gesto noble y de gran honor
(Aunque, en los cuentos de hadas, no debió haber sido el apuesto
marino que debía haber hecho el reto?). Todavía no se había
recuperado de esa sensación maligna en sus entrañas, causado al ver
las calaveras de los caballeros oscuros, ni las nebulosas visiones
que los acompañaban. No era mucho lo que ella podía hacer, excepto
mostrar su apoyo. Con voz alta y firme le gritó al
mercenario: "¡Acaba con el caballero oscuro!"
Este momento de expectativa fue interrumpido de improviso por las
exclamaciones de sorpresa ante la desaparición del misterioso bosque.
En su lugar, continuaba la pradera, alejándose un poco más hasta
encontrar la falda de la colina de arbustos que hubiera anteriormente.
"¡Qué magia tan poderosa...!" exclamó Kieran con sorpresa. No pudo
evitar mirar alrededor, tratando de percibir algo más que hubiera
quedado como remanente de la ilusión. Casi no podía creer en sus
ojos, que ya muchas cosas habían visto por los caminos de Krynn. Como
aparentemente nada más iba a suceder, centró su mirada en lo que
consideró prioridad: el próximo duelo. Volvió a meditar si tomaría
parte alguna en la liza...
Al voltear para enfrentar al líder de la garra, que terminaba de
hablar, Greg tardó un momento en reconocer la retirada de los
árboles. Posteriormente, y dando pasos hacia atrás, se dirigió al
lider de la garra.
"¡Maravilloso! Ahora hay mas espacio para la justa; o sera también
una de nuestras ilusiones. Pero no importa, vuestra palabra ya ha
sido expuesta, y ningún razonamiento, por lógico que sea os hará
corregir, ¿verdad? Entonces decid quien os sustituirá si caéis, de
manera que podamos reclamar ante él nuestros derechos, como lo hemos
hecho con vos".
El kender abrió tanto su boca al desaparecer el bosque, que algo de
saliva resbaló sobre su pequeña barbilla. Con mucha premura sacó su
libro, una pluma cualquiera de su topknot, destapó uno frasco de
tinta que llevaba al cinto, mojando la pluma, y garrapateó en él unas
líneas, seguidas de una especie de mapa.
[PRESENT]
El Caballero Oscuro miró ceñudo el raro espectáculo de
la "desaparición" de lo único que a él le parecía más o menos creíble
de la escena, los árboles, y pareció meditar por unos segundos su
situación.
"Tal parece que lo que parecía ilusión se muestra como real, y lo
antes real se desvanece de la vista de forma burlona. Aunque nos
encontremos en las cercanías de Solace como ustedes aseguran, este
duelo se ha de llevar a cabo. Aún los legionarios deberían tener la
sensatez de esperar la finalización de este duelo antes de intentar
obrar en nuestra contra" - hizo una pausa dramática, como para dar
intensidad a su afirmación, y continuó- "No será necesario que
reclaméis vuestros derechos, pues serán respetados por mis
caballeros" - dijo mirando con severidad a sus seguidores, en
especial a los elfos.
"El código indica que el más apto de los integrantes de la garra será
el encargado"- dijo señalando a un fornido caballero cuya montura
llevaba a cuestas una gran espada. El señalado hizo una reverencia y
avanzó dos pasos su caballo, sondeando las expresiones de sus
compañeros. "En caso de que los restantes lo consideren poco
apropiado," -prosiguió el Jefe de Garra -"deberán retarlo luego para
tomar su lugar... pero estas menudencias no son de vuestra
incumbencia."- advirtió el Caballero Guerrero, cerrando el tema
rápidamente para atender a cuestiones más relevantes.
"¡Qué no escape nadie, mientras se resuelve este duelo, caballeros, y
no intervengáis!"- y dicho esto descendió de su caballo y desenvainó
su elegante espada larga.- "Si no deseáis que el combate finalice con
vuestra muerte, honorable guerrero, pedid clemencia, y os será
concedida. De lo contrario, iréis a donde quiera que van las almas en
este mundo olvidado por sus dioses".
Sus hombres y Guardias Qualinesti se empezaron a distribuir a lo
largo de la caravana en actitud vigilante, mientras el Líder Oscuro,
arrojaba su capa sobre su montura, se alejó lateralmente de su
caballo unos 5 metros, e hizo un gesto levantando la espada hacia su
frente, y haciéndola descender con el filo vertical, muy lentamente,
hasta que la punta rozó el suelo, en dirección hacia Aelensar. No se
molestó en descolgar el escudo de su caballo.
No bien culminó su invitación a la batalla la negra y metálica
figura, se oyó la impertinente voz del anciano: "¡Enciéndan una luz,
por Gilean! ¿Qué no ven que ya se ocultó el sol?". Ante esto, en 5 de
las caravanas se encendieron antorchas, y sus ocupantes se acercaban
caminando lentamente a observar el combate.
"¿¡Giiileaaan!?"- Exclamó con sorpresa el kender, que se había
sentado cruzando sus pies sobre el pasto, viendo con curiosidad hacia
el anciano.
[img[http://xa.yimg.com/kq/groups/10154695/sn/1272329338/name/n_a]]
-12 de Septiembre, año 32 Saer Cataclius.
[PAST]
De entre la espesura que les aguardaba en el trayecto, Argento y
Gwydeon fueron sorprendidos por dos figuras encapuchadas. Una de
ellas pudo ser reconocida por el medio-elfo como la que los espió
desde Solace. La otra, a la derecha de los héroes, ya había arrojado
unas boleadoras (arma lanzable utilizada por algunas tribus bárbaras)
a los pies de Argento, quien apenas tuvo tiempo para intentar
esquivarlas. Las boleadoras enredaron sus toscas extremidades
inferiores, finalizando la maniobra con los respectivos 3 golpes
secos de las pesadas boleadoras envueltas en cuero. Argento se
tambaleaba aún cuando notó que sus orejas se cerraban sobre si
mismas, impidiéndole escuchar, y sus párpados se juntaban.
La otra figura no hizo ningún ademán de ataque a Gwydeon, sino que
levantó su mano haciendo una señal que el medio-elfo pudo reconocer
como una seña secreta de la Legión de Steel. La oscuridad de la noche
le impidió detallar las caras de sus atacantes, quienes al parecer
esperaban por la reacción del Hechicero Legionario.
Reconociendo la señal, Gwydeon respondió con el mismo gesto, y,
mirando de reojo al lugar a donde había caído su amigo, pronunció en
voz baja, como para no quebrantar aun más el silencio de la noche: -
"Salud hermanos, ¿quién vive bajo esta luna?, tan sólo somos dos
viajeros que intentan cruzar el bosque..."- y luego cambiando de tono
de voz- "existen maneras más secretas y menos torpes de contactar a
un hermano, al menos no deberían hacerle pasar ese mal rato a mi
companero"-. Y mirándolos con reprobación, (quizás desconfiando
todavía de su condición de Legionarios) alzó la mano con otra seña
que estaba seguro que sólo un Legionario respondería, y espero que
los encapuchados la respondieran.
"¡Pero qué...!" fue todo lo que alcanzó a musitar Argento antes de
caer de costado sobre el suelo lleno de raíces, tratando de mantener
su hacha en las manos pues había sido atacado y tenían que
defenderse... no sabía en qué condiciones estaba Gwydeon. De hecho no
sabía nada.
Por sorpresa, había sido atacado en su territorio, y con algo que
toda su fuerza no podría vencer: Magia. Siempre había temido el
momento en que debía enfrentarse a ella; y aquí, bajo el amparo de
los árboles, él se sentía con ventaja... pero no podría dejar de
sentir cierto temor.
Aún tumbado en el suelo, con una mano trataba de abrir sus ojos u
orejas desesperadamente mientras con la otra levantaba el hacha en el
aire en ademán defensivo no fuese a herir él mismo a su joven
compañero. "¿Qué le habrá sucedido? ¿Habrá podido contra esta magia?"
se preguntaba el leñador mientras profería como un gemido
desesperado: "¡Gwydeon! ¿dónde estás?!".
Trataría de levantarse, a él no lo vencerían tan fácilmente. Con
mucha voluntad de salir de ésta se enderezó para intentar cortar las
cuerdas que le ataban las piernas con el filo su hacha. Si éste era
el momento de su muerte, al menos estaría de pie.
Gwydeon lanzó a las misteriosas figuras una mirada inquisitiva, aun
así dijo con calma, tratando de no expresar su indignación -"Os ruego
terminéis lo que empezaron, si vinisteis a decir algo, háganlo ahora,
y no entorpezcáis más mi camino, ni hagáis pasar un mal rato a mi
compañero, o seré yo el que les haga pasar un mal rato a ustedes"-.
Sus ojos lanzaban chispas, no podía creer que, de ser Legionarios los
sujetos que tenía enfrente, se atrevieran a tratar así a un ser
mágicamente indefenso. No estaba seguro de si Argento estaba herido,
pero sí podía jurar que se haria daño si seguía en esa situación.
Ya Argento intentaba cortar las cuerdas, y claro que podía, nunca
había visto un hacha en manos tan hábiles. No sabía cómo decirle que,
por ahora, las cosas parecían estar bien.
Por otro lado, Gwydeon tenía que entender la rigurosidad del secreto,
la Legión debe manejarse así, y debía controlar su ira. Pero de no
ser legionarios estos dos, no los dejaría salir del bosque en una
pieza, consciente de que sabían una de las señas secretas, o quizás
tan sólo por el orgullo de saber que lo habían engañado...
De todas formas, aun esperaba la respuesta...
La figura dio un paso adelante, bajando su mano mientras hacía una
señal más de la Legión de Steel, y dijo: "Entorpecer tu camino iría
en contra de nuestras órdenes, así como llamar demasiado la atención.
Sin embargo estas órdenes son más complejas de lo que hubiésemos
deseado.".
Luego de una pausa breve en la que hizo un ademán a su compañero para
que se ocupara del leñador, quien intentaba cortar las cuerdas de las
boleadoras con el hacha, continuó hablando de manera fluída- "Tú eres
Gwydeon Ragnarok. No lo pregunto. Lo afirmo. Y te informo que mi
compañero y yo pertenecemos a una célula encubierta en los
territorios de la Tormenta Sobre Krynn. Recibimos una orden secreta y
urgente de entregarte en el más estricto secreto un objeto muy
especial, que se considera será extremadamente útil en la ejecución
de tu importante misión, la cual desconozco, y así debe ser. La misma
te será solicitada luego de la culminación de tu misión. Ni siquiera
tu maestro o las células locales deben enterarse de la posesión o
existencia del ítem."
Ante el gemido de Argento, agregó: "Tu amigo no debe saber quiénes
somos, ni de dónde venimos, ni qué te estamos entregando. Por esa
razón hemos hecho lo que hicimos. Al finalizar ese conjuro, todo
volverá a la normalidad, como debes suponer. Entiende que borrar esto
de su memoria hubiese sido mucho más perjudicial para él."
Ante la indecisión de la otra figura encapuchada, que no entendía muy
bien como hacer para evitar que el leñador rompiera las boleadoras,
indico con premura: "Nosotros debemos irnos" - colocó en el suelo un
paquete pequeño, del largo de un antebrazo, y del ancho de una rama
pequeña, y dijo -"te sugiero evites que tu compañero rompa las
boleadoras, pueden ser de utilidad" - y con esto hizo una señal a su
acompañante, y corrieron internándose en el bosque, en dirección al
Norte, moviéndose en bastante silencio. De no haber estado cubierta
su cara por una capucha, se hubiese apreciado la melancólica
expresión del aprendiz de Místico Legionario que acompañaba al
Explorador, al dejar sus boleadoras enredadas en los pies del fornido
leñador.
[PRESENT]
El medio-elfo les dirigió una mirada de aprobación, ya la ira se
había ido de sus ojos, después de todo, eran sus hermanos. Alcanzó
tan sólo a decir gracias, mientras recogía del suelo el extraño
paquete, el cual se guardo en su alforja, atada a la cintura.
Rápidamente se giró hacia Argento, que hacía ya el intento de cortar
las cuerdas. Había aprendido que era una buena idea escuchar los
consejos de un Legionario...
Argento ya tanteaba las cuerdas de las boleadoras con una mano,
mientras acercaba con premura pero firmeza su enorme hacha para rozar
con el filo las fibras que lo inmobilizaban. No quería detenerse a
buscar su cuchillo, pero tampoco se arriesgaría a blandir
violentamente su hacha para librarse. Siendo que su hacha siempre
estaba bien afilada, con seguridad no tardaría en lograr su objetivo.
Si tan sólo pudiese oír y ver lo que ocurría a su alrededor podría
evitar el empezar a ser ganado por el pánico.
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{
handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,
handler: function(event,src,title) {
this.handler_mptw_orig_closeUnsaved(event,src,title);
if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
story.closeTiddler(title,true);
return false;
}
});
//}}}
-12 de Septiembre, año 32 Saer Cataclius.
"Escuchad, gentes de bien, que en esta hora de retiro en la que nos entretiene el crepitar del fuego de la posada, vienen a mi mente hilos del tiempo. Hilos aún húmedos de ser creados por la oruga del tiempo. Hojas caen, y no sabemos donde caerán, ni qué fruto ayudarán a crecer. Es difícil entrever un milagro en sus comienzos, pero os relato lo que veo, pues mis memorias propias no volverán, para bien o para mal. Y las que tengo, las memorias de Krynn, no me pertenecen, y siento que es preciso que las comparta con ustedes.
Dos mañanas antes de la de hoy, en el Delta de Qualinost, donde las aguas de Abanisinia renuevan al ya no tan novicio Nuevo Mar, una caravana como cualquier otra partió de Newport. 12 carretas empezaron a dejar huella en la pradera abrazada por colinas, que se extiende entre Newport y el pueblo de Solace durante poco más de 100 millas. Cualquier habitante podría notar un conjunto de figuras peculiares en ese grupo, cuál preguntas encarnadas en gente, esperando por obtener respuesta.
Aelensar Lathe, un humano más en la eterna búsqueda de una definición de si mismo, sacudía una manta nueva y la colocaba sobre el lomo de su caballo, sin dejar de prestar atención a las interesantes figuras que se acercaban para integrarse a la caravana que había sido contratado para escoltar. Entre ellas no pudo dejar de reprimir una elevación de cejas, cuando su mirada encontró un destello dorado bajo una capa y capucha de color marrón claro. Unos ojos celestes, inquietos y almendrados, delataron la raza de la elfa. Pero no constituía esta la única presencia de la gente bella y antigua en la caravana, pues a su lado unos grandes ojos violeta y un intenso destello del fino metal de un arco élfico, marcaban la procedencia de su acompañante. Era ésta, o es, puesto que a mi memoria no ha venido el recuerdo de su muerte, una elfa de cabellos asfixiantemente oscuros, cubierta en una fina caperuza verde.
Parecía ser el mayor de los intereses de este par de elfas, el cuidar los pasos de un anciano de expresión inevitablemente excéntrica, vestido en una túnica gris, algo sucia, protegido del viento por una capa de cuero. Los ojos cansados de este estudioso escrutaban la textura de cada piedra, la velocidad del aire, y las trayectorias de las hojas que ya empiezan a caer, así como de las agitadas personas a su alrededor. Sin embargo la agitación de su entorno esa mañana no era competencia para el eterno divagar de las voces de su mente.
"¿Qué de bueno puede encontrar la mente cansada de ese anciano como
para que le permita andar, así, decrépito, cuasi-inútil, en búsqueda de no-se-que-cosa?", se preguntó el mercenario. "Bien, en realidad, hasta los draconianos tienen buenas cualidades: Sangran, mueren, saben pelear, y los puedes matar sin sentir absolutamente ningún remordimiento... Animales... Ahora, algo malo tienen también: No son comestibles." - reflexionó Aelensar, recordando su recién terminada misión en las afueras de Newport.
La recompensa fue suficiente como para que pudiese comer, beber, vestirse y bañarse al más puro estilo de un alcalde durante una semana... lo cuál no hizo, evidentemente. No bebía sino cuando estaba seguro de que no habría trabajo (o que sería incapaz de hacerlo), y aún así... Se vistió con ropa nueva, libre de las quemaduras de la ácida sangre draconiana, y cambió las piezas de armadura dañadas, en todo caso. "¿Bañarme?" -se autoinquirió- "en el próximo río que vea, muchas gracias." Bueno, aún así, como nadie dice que no a una buena cama y buena compañía, con ello había culminado su última noche en el fronterizo puerto.
Luego de cubiertas sus necesidades personales, aún quedó dinero, del cual guardó una buena cantidad. Dió el "sobrepeso" a dos mendigos. "¿Total?" -pensó al posar la mirada sobre el esperanzado y mugriento par de personajes la noche anterior- "siempre hay necesidad de una espada en alquiler, y trabajo no me va a faltar".
Aunque quizá haya cometido un error. Una de las mugrientas figuras se presentó a primera hora de la mañana (lo cual no necesariamente era coherente con su demacrado aspecto). Era una mujer. Bella, por
cierto, tuvo que reconocer ahora a la luz del día, luego de hacer un esfuerzo para quitar con su imaginación mucha de las ajadas ropas y sucio que la protegían del naciente Sol. Quizá no sea un error. Siempre es entretenida la compañía fenenina, aunque haya que enseñar una que otra lección de higiene. Y entonces la mirada vacilante de la mujer, aparentemente aceptada en la caravana, coincidió con la suya, y le pareció encontrar un poco de si mismo en su mirada confundida y espectante. Lo cuál trajo sus pensamientos a si mismo, nuevamente. "Siempre es lo mismo... El vacío..." -razonó por enésima vez el mercenario- "Siempre que termina un combate, me doy cuenta de que no tengo nada, y comienzo a buscar el siguiente. Mujeres, dinero, bebida... Nada de eso significa nada. Nada de eso borra el pasado y el dolor de mi mente tan efectivamente como el blandir una espada ansiosa de sangre, y calmar su sed...".
La silla de montar recién adquirida ya estaba asegurada sobre el
trozo de tela en el lomo del caballo.
"Matar es lo único que he conocido... Matar, o morir antes. Y soy muy bueno en ello. Matando es la única forma en la que me siento vivo...".
Y con esta conclusión temporal sobre su existencia, con un cotidiano movimiento se colocó sobre su montura. Había escuchado esa noche de una caravana que se dirigía a Solace, lo cuál implicaba posibilidad de ataques de secuaces de Beryl, el descomunal dragón verde que dominaba el reino élfico de Qualinesti. No fue difícil suponer que estarían contratando escoltas para esta caravana.
"Dos elfas, y una humana sucia aunque decentemente dotada... mmmh... si las elfas saben manejar esas espadas que llevan consigo, son mi tipo. ¡Y hasta son dos!".
Y hablando de parejas, el sentido de alerta que tiene todo buen
viajero del continente Ansaloniano le indicó con urgencia la
presencia de dos posibles amenazas: un kender ataviado con adornos de plumas, y un libro en mano (¿?), y un pequeño ser... ¿un niño? ¿un gnomo? ¿un gully?.. "espero no averiguarlo" -se dijo al unísono que ajustaba una última vez su saco de monedas y las correas que ceñían su cota de malla al cuerpo, y la recién adquirida ballesta ligera a su cinto.
* * *
"Tampoco parece conocerme" -se dijo la harapienta humana, luego de
cruzar su vista con el escolta de la caravana. Nada parecía serle
conocido. Como yo, la mujer carecía de memorias propias. Lo más antiguo que podía reordar yacía una semana atrás en el río del
tiempo, era el instante en que se descubrió siendo arrastrada hasta la orilla de Newport por un mendigo. El anciano, acostumbrado a vivir de la caridad, le dio de comer, y le consiguió las ropas que llevaba puestas ahora. No estaban en buen estado, ni limpias, por lo que en realidad no se sentía mejor vestida, pero definitivamente la protegían más del frío que la rota y mojada franelilla blanca y el escaso pantalón que dudosamente se mantenía sobre su cuerpo al llegar a tierra firme. Quizá lo hacía más por lo húmedo que estaba, adheriéndose a su piel, que por lo unidas que estaban sus costuras.
También le buscó unas zapatillas de cuero usadas, de tamaños
ligeramente distintos, y diseños no tan ligeramente distintos, para que protegieran las plantas de sus pies. Cosa que, por cierto, le
recordó que tenía que prestar atención a su entorno, pues se dirigía a Solace gracias a que el anciano había identificado unas cicatrices en la planta de su pie derecho, como un mapa del valle de Solace. "Ese es el lago Crystalmirk" -había comentado emocionado, el anciano- "¡tiene la misma forma, al menos!".
A los dos días llegó con el respectivo tazón de caldo de sobras de la posada "El Aliento de Zeboim", para compartirlo con ella. Se sentó a su lado cerca del establo y le informó que había escuchado de la caravana que partiría a Solace. Ante esta noticia, y ansiosa de conocer más sobre si misma, estuvo de acuerdo con él en que debería ir en busca de su historia.
Luego de prometer ayudar con los oficios, el manejo de los
desperdicios de la caravana, y no molestar a los viajeros, se
sorprendió recibiendo una aceptación del líder de la caravana.
Llamativa para todos resultó la llegada de una carreta vacía. Vacía no de conductores, pues tenía tres, sino de carga. Dos hombres
venidos del mar, según parecían evidenciar sus sables y estimentas, y un Guardia de la Ciudadela de la Luz, se transportaban en dicha
carreta. Evidentemente ninguno de los marinos era bárbaro, concluyó sorprendiéndose ligeramente de su razonamiento. Uno de ellos parecía un hombre experimentado, como quien ha llevado muchos golpes en la vida, pero nada más en él llamaba su atención.
Sin embargo, el otro marino le parecía extremadamente familiar. Y
atractivo. Vestía pantalones, botas y guantes de cuero negro, acompañados de una camisa ancha de manga larga y una capa azul oscuro.
* * *
"¡Qué tontería!" - exclamó para sus adentros Gregory Hilltop viendo de reojo al Guardia de la Ciudadela que esperaba a su lado mientras la caravana iniciaba su viaje - "¡enviar una carreta vacía a Solace!". Shen Korras, el medio-elfo que dirigía una flota que
suministraba provisiones a la Ciudadela de la Luz, le había encargado escoltar, junto a Kielan Carr, su compañero de tripulación, al Guardia de la Ciudadela. Tal parece que el soldaducho iría en busca de armas de calidad en Solace, siguiendo el consejo que su compañero había hecho hacía unas dos semanas, recomendando a un conocido herrero en dicho pueblo. "Mientras haya buena paga, no molesta mucho ir a ese pintoresco valle... además: debo ir allá. Más oportuna no pudo haber sido esta asignación".
Sin embargo su cháchara interna fue distraída por la familiar mirada de la mujer en harapos. Su revisión mental fue infructuosa. No podía recordar dónde había conocido a esta mujer. No sin cierta incomodidad por su falta de memoria, ajustó su capa azul oscuro sobre sus hombros, y desvió la mirada.
* * *
Pensamientos similares cruzaron la mente de Kielan Carr- "si hubiese sabido que me iban a mandar a hacer este trabajito quizá me hubiese tragado mi lengua. A quién le importaba, a final de cuentas, si yo conocía o no a algún maestro herrero que hiciese trabajos rápidos." - pero ya era tarde. - "Al menos el simpático herrero, ex-estudiante de la Academia de Hechicería de Palin Majere, hará un buen negocio si logra sacarle una buena cantidad de monedas de acero al Guardiecito de la Ciudadela". También amilanaba el aburrimiento del viaje la jovialidad y rápido humor de Gregory Hilltop, aunque en sus momentos de melancolía, a Kielan incluso los inteligentes comentarios del bien parecido marino le parecían tan insoportables como una charla de kenders.
Durante las primeras noches de viaje pasó sus guardias mirando
fijamente a las fogatas. Sentado. Pensando. Y en ocasiones
conversando, pues eran esos los momentos en los que era más accesible para entablar conversación, aunque en ningún caso podría decirse que fuese un gran conversador.
Su cara, inexpresiva la mayor parte del tiempo, junto a su corta camisa sin mangas, pantalón de tela, botas sencillas, bolso de ganancias y su inseparable sable (aunque no fuese suyo), constituían su primera barrera de defensa ante las intromisiones en su vida personal. No vaya a ser que intentasen averiguar algo de su incómodo pasado.
* * *
30 millas al nor-noroeste, frente a un par de jarras de cerveza,
Gwydeon Medio-elfo, y Argento D´Alessandro discutían en voz baja los últimos detalles de su pequeña excursión al risco rocoso ubicado al sur de Solace. Gwydeon Ragnarok, como hechicero legionario aún no acostumbrado a sus nuevas habilidades mágicas, afrontaba a los recuerdos que estas le traían de su antigua vida adolescente como mago túnica roja, antes de la Guerra de Caos.
Pero el tiempo había pasado. "Demasiado rápido, y lento al mismo
tiempo" -se decía a si mismo, al sorber lo que quedaba de la espuma ya caliente de la cerveza. Ya era el año 32 después del llamado
Segundo Cataclismo. Y ahora tenía nuevamente sentido su vida. Ya no era sólo un hombre más con una espada en la espalda. Era un hechicero formado por su Maestro, un Legionario de Steel, y su propósito próximo estaba ahí, frente a él. No era precisamente la jarra de cerveza, sino la veta de obsidiana que debía investigar. Una posible nueva forma de encantamiento estaba raramente relacionada con el uso de la obsidiana, según rumores de un grupo de elfos rebeldes de su patria natal le habían indicado. Se le había confirmado este rumor en la Legión de Steel, y su misión de prueba, que le permitiría convertirse en un Maestro Legionario, era develar este misterio. Una vidente Legionaria había presagiado su descubrimiento hacia el año 32 o 33 Saer Cataclius. Pero en su visión siempre lo visualizaba sólo, así que debía ocurrir durante su misión en solitario. No le debía acompañar su Maestro. Ni tampoco un inexperimentado aprendiz. Otras personas podrían estar, pero él sería el único Legionario.. que el supiese, al menos. Afortunadamente una conversación con el pequeño, robusto y bonachón leñador humano, Argento, le había revelado la ubicación de una veta de obsidiana en el risco que se encontraba a lo lejos. Hubiese podido entrever el risco si no fuera por el gracioso vitral que adornaba la ventana de la célebre posada "El Último Hogar" y las innumerables ramas de los demás vallenwoods sobre los cuales se
encontraba la mayor parte de las casas de los habitantes de Solace.
"Me llevo mi espada, mis dos dagas, mi arco largo y mis flechas" -
revisó mentalmente el medio-elfo oriundo de Qualinesti- "creo que 22 flechas bastarán. Llevo también la cuerda de 15 metros, con su
garfio, mis raciones de viaje, mi bota con agua, el pico de mineria que me prestó el enano amigo de Argento, y la alforja donde guardar un trozo de la obsidiana. El plan, entonces, es recogerla y luego ir a hablar con el enano que residía en la casa del célebre Flint Fireforge, para ver si él me puede decir más cosas acerca del material o si sabe quién es capaz de trabajar con esa piedra preciosa."
Gwydeon palmeó la espalda de su amigo, - "habrá que ver ese lugar" - le susurro al oido, consciente de que no deberia revelarle a toda la posada la razón de su expedicion. Obtener un poco de esa roca extraña le permitiría saber algo de sus propiedades. ¿Sería que el rumor de la daga mágica de obsidiana había sido una confusión, y la misma era un objeto magico de épocas anteriores a la Guerra de Caos?. Si ese era el caso, no dejaba de ser un gran peligro el que un objeto magico (porque estaba casi seguro de que eso era) cayera en manos equivocadas, o mucho peor, en manos de los Caballeros de Takhisis...
El Legionario tomó sus alforjas, y siguiendo a su bajo pero rudo
compañero, se dirigió a la puerta, mirando de reojo todos los
rincones de la posada, asegurándose de que nadie hubiese escuchado
esa conversacion, o al menos, nadie caminara sobre sus pasos.
Argento, por otro lado, no parecía precisamente un leñador más. Desde que tuvo que aprender a usar su hacha doble para separar algo más que corteza, en la defensa de algunos intentos de invasión a Solace, lleva una armadura de cuero y un protector de cuero para su cabeza.
Su hacha, un poco más larga que la mitad de su altura (tenía como
unos 80 cms de largo), descansaba sobre su espalda, meciéndose con su tosco caminar. El hacha siempre iba con él... y como todos en Solace sabían, no era para fastidiar a nadie sino sólo porque él "adora su hacha".
Al mirar a Gwydeon vigilar la retaguardia antes de tomar el sendero que los llevaría a la veta, no pudo sino suspirar. El medio-elfo
parecía más apresurado que nunca. En fin, transcurrían ya 4 meses de los 6 que se suponía debían pasar como máximo para cumplir la misión que le asignara la Legión de Steel. Siempre se había sentido inclinado a aconsejar al muchacho. Había llegado hacía ya año y medio a Solace, y se convirtió en aprendiz de Legionario y de las artes de la nueva hechicería. Sin embargo, siendo el medio-elfo un tipo básicamente solitario y al principio bastante taciturno (digamos que algo descentrado), en algún momento luego de su llegada no pudo sino acercarse a sacarle conversación. De ese momento había nacido una camaradería muy cierta.
Repasó mentalmente una vez más el camino al risco de la veta de
la "cosa" negra. El jóven le había preguntado acerca de lugares donde él supiese que habría obsidiana. El leñador le había contestado que no tenía la menor idea de lo que era esa tal "osciliana". Ahora si había aprendido a decir el nombre del mineral, del cuál supo que sabía gracias a la interesante descripción del Legionario. La misma coincidía con lo que recordaba haber visto en aquel risco, mientras buscaba un árbol bueno para talar.
"No todos los árboles eran buenos para talar"- pensaba Argento-.
Algunos eran saludables. Otros eran de dudoso futuro, y quizá estaban en su último esfuerzo de surgir, pero esa esperanza era menos beneficiosa para el bosque, que el posible crecimiento de los juveniles árboles a nivel del suelo. Una misteriosa mujer envuelta en capas le había aconsejado al respecto hacía ya muchos años. Mucha niebla había aparecido junto a la mujer, así que había decidido que mejor era no molestar a las mágicas gentes del bosque. Después de todo le agradaba caminar por el mismo. En él se sentía más a gusto que entre la gente bien vestida y pretenciosa de honores.
Gwydeon notó, mientras daban vuelta al último árbol Vallenwood
habitado de Solace, que alguien lo observaba desde adentro del pueblo. Una figura encapuchada en una capa gris oscuro los seguía con la mirada desde un lugar semi-oculto por las ramas bajas de un roble.
* * *
A esa hora en esa misma tarde, volviendo 30 millas al sur-sureste, la caravana avanzaba ya por entre las colinas limítrofes del Bosque Oscuro, por la izquierda, y el arrolluelo de Solace (que más atrás se unía con el río White-rage). Hacía ya mediodía que habían dejado el asentamiento Qué-Teh, poblado de una tribu de bárbaros de las
planicies. En esa hora, en la que el cielo empezaba a ruborizarse
hacia el occidente, aquellos de la caravana que no habían percibido la anomalía que surgió súbitamente en el borde de las colinas que
ocultaban al Bosque Oscuro, se enteraron del fenómeno al mirar alresto de los viajeros quienes observaban con extrañeza lo que ocurría a la izquierda del sendero. El bosque que terminaba con las colinas, no tan verdes por la cercanía del otoño, súbitamente había cambiado.
Parecía también haberse "acercado".
Lo extraño no es que ya no fuese un bosque. O que no fuese el tipo de vegetación. Sencillamente los árboles no eran los mismos, ahora eran altos y más cercanos. Un párpadeo antes, Gregory Hilltop habría jurado que observaba una baja colina que sostenía unos cerezos y sauces de tamaño mediano. Ahora observaba unos altos Vallenwoods, cedros, manzanos y robles. Su color apagado, en contraste con los bosquecillos que bordeaban al valle por donde corría el sendero a Solace, sólo era superado en incoherencia por la espesa niebla que parecía yacer inmóbil entre los troncos de los árboles.
Un grupo de 10 jinetes elfos y 9 caballeros cubiertos de armaduras
negras, emergieron de la incongruente niebla, cabalgando a toda prisa en dirección a la caravana. Al salir del bosque, uno de los caballeros, con una poblada barba negra y nariz aguileña alzó la mano derecha, que portaba una espada, en señal de pausa. El grupo de recién llegados se frenó a lo que un kender podría catalogar
como "distancia de tiro de piedra", del costado izquierdo de la
caravana.
El caballero oscuro giró su caballo toda una vuelta sobre si mismo, mirando sorprendido los alrededores, al parecer más impresionado por el pasto que por cualquier otra cosa. Tras un segundo de reflexión, acercó su caballo 5 pasos a la caravana y gritó: "En nombre de la Reina Oscura, les exijo indiquen en qué dirección huyeron los rebeldes. No tenemos intención de derramar vuestra sangre innecesariamente, así que olvidad vuestras armas y responded a mi pregunta. Si obráis así dejaremos que vuestro camino vuelva a sus pies."
Los caballeros de negro miraron a la caravana con expectación y expresión orgullosa, el Sol de la tarde reluciendo en los intrincados diseños de las placas de sus armaduras, que emulaban las formas de calaberas, y lirios. Los elfos miraron, por su lado, tanto a la gente como a sus alrededores, escrutando incrédulos la pradera con expresión pesada, grave y confundida. Cada uno de ellos llevaba un arco y una espada larga, prestos a cualquier indicio de orden de ataque."
[img[http://xa.yimg.com/kq/groups/10154695/sn/416660691/name/n_a]]
-12 de Septiembre, año 32 Saer Cataclius.
"Sepan, amigos míos, que al caer la tarde el día anterior al de la
partida de la caravana de la que les hablo, Tarasal Almondeyes
Pocketfinder escribía las últimas líneas del libro que relataba las
experiencias de la más reciente de sus grandiosas aventuras.
Comenzaba a sentir inquietud por emprender camino a otros rumbos,
cuando se enteró que a la mañana siguiente, partiría una caravana
hacia Solace. Lleno de emoción y de la natural curiosidad de un
kender, ante la posibilidad de irse en una nueva aventura y de tener
más historias que vivir, relatar y escribir, decidió que iría a dar
un vistazo.
Además.. aprovecharía en llevar a su amigo Skimpiut Bratlip, y al
huésped de su cuerpo, el alma de un kender fallecido durante el
exterminio de Kendermore, a ver el homenaje a los últimos héroes.
Posiblemente la visión del homenaje a "su tío Tass" podría subirle
los ánimos y permitirle descansar en paz (al fallecido, por
supuesto). Ya sabéis como son los kenders.
Después de asegurarse de llevar en su mochila todo lo necesario (y lo
no tan necesario) para irse de viaje - como unas buenas cuerdas, un
libro para anotaciones, una manta, algo de comida, ponche kender,
yesca y pedernal, un cuchillo y otros utensilios, parte de su
colección de plumas, etc. - y de percatarse de que en el bolso donde
llevaba a Peni (este era el nombre de su compañera ardilla voladora)
hubiesen suficientes semillas y frutas para ella, se acercó corriendo
(arrastrando prácticamente a su "poseído" amigo) y dando brincos
encontrose con las 12 carretas que componían la caravana.
¡Sí! ¡Por supuesto que era la misma caravana!
Tarasal al localizar el líder de la misma, se dirigió de inmediato
hacia él. Mientras se acercaba, pudo constatar una actitud de
incomodidad, en el simpático señor. Parecía que su saco y correas le
causaban alguna molestia - "si no, ¿porqué se las acomodaría tanto?" -
se preguntó el kender.
Al llegar, le dio un efusivo saludo y le dijo: "¡quiero ir en la
caravana! ¿necesitas ayuda?"... mientras acordaba estos
pequeños "detalles" con el líder, Tarasal decidió que si iba a viajar
en esa caravana, entonces debía ser un viajero de utilidad durante
todo el viaje, así que resolvió socorrer al líder, con aquello que
tanto le incomodaba... aunque él no pareció apreciarlo... (eh... en
realidad ni siquiera pareció notarlo... )
Por unos segundos, reflexionó si le prestaría alguna otra ayuda de
inmediato, llegando a la conclusión de que, como es el líder de la
caravana debía tener demasiadas responsabilidades, así que lo más
apropiado era aligerarlo de tantas ocupaciones y asignarse una
responsabilidad a sí mismo.
Luego, de hablar y "ayudar" al líder, Tarasal examinó al grupo y sacó
su libro de la mochila para hacer algunas anotaciones sobre su nueva
amistad con el líder, y el aspecto de sus acompañantes de viaje.
El líder, descargado imperceptiblemente de alguna pequeña porción de
sus pertenencias en el forcejeo... eh... saludo... con el kender,
decidió aprovechar el alejamiento del mismo para culminar negocios
con los dueños de la doceava carreta. A lo mejor el kender había
encontrado otra ocupación mejor.
Al ver a las dos elfas, la emoción que Tarasal había sentido el día
anterior se incrementó, pensó: "¡estas gentes suelen ser un poco
serias y aburridas, pero tienen objetos hermosísimos e increíbles!" y
al percatarse de la presencia del anciano ensimismado, una gran
curiosidad lo invadió, se dijo "¿qué es lo que tanto ve este
anciano?, ¿en qué estará pensando?... habrá que averiguarlo!".
Con sólo un poco de cautela, pues no deseaba interrumpir bruscamente
al anciano, se le acercó y le preguntó: "¿se siente bien?, ¿algo le
preocupa?"... A lo que el viejo respondió: "¿qué? ¿que si algo me
preocupa? ¡Ah! no. En realidad sí. Pero mientras algo me preocupe, no
me preocupo, porque significa que sigo siendo yo mismo, con mis
preocupaciones, y no uno de esos engendros... Pero es que no termino
de entender... oh.. ¡Claro!..." Pero de repente el anciano volvió a
enfocar sus ojos en la pecosa y puntiaguda nariz del kender y
dijo: "¡Pero lo que más me preocupa es que pase los últimos momentos
de mi vida dejando que mis últimas reflexiones en vida sean recibidas
y divulgadas de manera distorsionada, por una sanguijuela como tú!
¡Shu! ¡Shu! ¡Manténte lejos de mi bastón o lo lamentarás!".
Luego de una rutinaria maniobra evasiva, y prosiguiendo con su
indagación sobre las distintas personalidades que formaban esa
caravana, Tarasal se tropezó con una mujer mugrienta y vestida con
trapos rotos. Luego, de observarla con detenimiento, pudo advertir
que se trataba de una figura con una belleza escondida, se dijo en
voz alta "pero muy en el fondo " y no pudo evitar decirle "¡a ver si
te das un bañito! ¿eh?".
Por último, al descubrir una carreta vacía, dijo en un tono de voz
muy alto "¡Vacía!, ¡no puede ser!" y decidió que averiguaría más
sobre el asunto. Durante la primera noche de viaje, estuvo atento y
cerca de Gregory Hilltop y Kielan Carr. Percibió que Kielan Carr era
una persona muy reservada y un poco aburrida, así que decidió
entretenerlo con varias de sus mejores historias de aventuras, pues
estaba convencido de que a él le interesarían. Gregory Hilltop
definitivamente era un tipo simpático, aunque distante... al menos
con él.
* * *
Durante el viaje, el mercenario Aelensar se sorprendió viendo más y
más a "la chica de los harapos". Le asaltaba la curiosidad de saber
qué había visto en ella que le pareció conocido. Quizás un alma
gemela, quizás sólo un hermoso cuerpo... Pero no, tenía que ser más
que simple atracción sexual.
"No parece estar acostumbrada al trabajo duro, ni tiene cicatrices, o
heridas de haber vivido en la calle. ¿Qué puede haberle pasado para
haber caído en esta situación?" - pensó Aelensar.
"Y esos ojos..."
Para sus adentros, Ael (que así le llamaban los de confianza)
reflexionó - "Ella tiene su trabajo, y yo el mío. Pero si en algún
momento la veo pasándolo mal con algo que deba cargar, pues seamos
caballeros" - rió entre dientes - "y ayudémosla."
* * *
La harapienta y enigmática viajera había pillado al mercenario
mirarla de reojo varias veces cuando éste pensaba que ella no se daba
cuenta. Su lenguaje corporal era la típica reacción masculina ante
una mujer que le llamaba la atención. "Espero que este sujeto no vaya
a ser un problema, me echarán de la caravana si ocurre un
espectáculo." - se descubrió pensando la humana, no sin cierto
sentimiento de superioridad, que le venía quién sabe de dónde.
Pero sus ojos eran otra historia. Parecían tristes, pero con un ardor
de conflicto interno. "Hay que cuidarse del mercenario, es más de lo
que aparenta ser." Consideró prudente guardar distancia hasta saber
más de él.
Llamativa resultó la llegada de una carreta vacía. Vacía no de
conductores, pues tenía tres, sino de carga. Dos hombres venidos del
mar, según parecían evidenciar sus sables y vestimentas, y un Guardia
de la Ciudadela de la Luz (¿cómo lo sabía?), se transportaban en
dicha carreta. Evidentemente ninguno de los marinos era bárbaro,
concluyó la harapienta mujer sin memoria, sorprendiéndose ligeramente
de su razonamiento. Uno de ellos parecía un hombre experimentado,
como quien ha llevado muchos golpes en la vida, pero nada más en él
llamaba su atención.
Sin embargo, el otro marino le parecía extremadamente familiar. Y
atractivo. Vestía pantalones, botas y guantes de cuero negro,
acompañados de una camisa ancha de manga larga y una capa azul
oscuro.
* * *
Durante las primeras noches de viaje, Kieran Carr pasó sus guardias
mirando fijamente a las fogatas. Sentado. Pensando. Y en ocasiones
conversando, pues eran esos los momentos en los que era más accesible
para entablar conversación, aunque en ningún caso podría decirse que
fuese un gran conversador.
Su cara, inexpresiva la mayor parte del tiempo, junto a su corta
camisa sin mangas, pantalón de tela, botas sencillas, bolso de
ganancias y su inseparable sable (aunque no fuese suyo), constituían
su primera barrera de defensa ante las intromisiones en su vida
personal. No vaya a ser que intentasen averiguar algo de su incómodo
pasado.
* * *
Por su lado, Tarasal, cuando no estaba ocupado en investigar algún
asunto que le llamara la atención o de cuidar las cosas de los demás,
Tarasal se dedicaba a escribir algunas frases en su libro y a
compartir con Peni, enseñándole un par de nuevos trucos. Los demás
participantes de la caravana también podían advertir que Tarasal
pasaba buena parte del día "conversando" con su ardilla, llegando
algunos a considerar que esas pláticas eran un tanto extrañas.
El kender había logrado algo de aceptación, o..
digamos.. "tolerancia", al ofrecerse como ayudante de cocina, y
como "explorador de vanguardia", caminando siempre un poco más
adelantado que el más adelantado de los escoltas de la caravana. Su
compañero de viajes, siempre taciturno y silencioso, hacía su mejor
esfuerzo para seguirle los pasos al chicharachero y "emplumado"
kender que insistía en llevarlo a la tumba de su tío.
* * *
30 millas al nor-noroeste, frente a un par de jarras de cerveza,
Gwydeon Medio-elfo, y Argento D´Alessandro discutían en voz baja los
últimos detalles de su pequeña excursión al risco rocoso ubicado al
sur de Solace. Gwydeon Ragnarok, como hechicero legionario aún no
acostumbrado a sus nuevas habilidades mágicas, afrontaba a los
recuerdos que estas le traían de su antigua vida adolescente como
mago túnica roja, antes de la Guerra de Caos.
Pero el tiempo había pasado. "Demasiado rápido, y lento al mismo
tiempo" -se decía a sí mismo, al sorber lo que quedaba de la espuma
ya caliente de la cerveza. Ya era el año 32 después del llamado
Segundo Cataclismo. Y ahora tenía nuevamente sentido su vida. Ya no
era sólo un hombre más con una espada en la espalda. Era un hechicero
formado por su Maestro, un Legionario de Steel, y su propósito
próximo estaba ahí, frente a él. No era precisamente la jarra de
cerveza, sino la veta de obsidiana que debía investigar. Una posible
nueva forma de encantamiento estaba raramente relacionada con el uso
de la obsidiana, según rumores de un grupo de elfos rebeldes de su
patria natal le habían indicado. Se le había confirmado este rumor en
la Legión de Steel, y su misión de prueba, que le permitiría
convertirse en un Maestro Legionario, era develar este misterio. Una
vidente Legionaria había presagiado su descubrimiento hacia el año 32
o 33 Saer Cataclius. Pero en su visión siempre lo visualizaba sólo,
así que debía ocurrir durante su misión en solitario. No le debía
acompañar su Maestro. Ni tampoco un inexperimentado aprendiz. Otras
personas podrían estar, pero él sería el único Legionario.. que él
supiese, al menos. Afortunadamente una conversación con el pequeño,
robusto y bonachón leñador humano, Argento, le había revelado la
ubicación de una veta de obsidiana en el risco que se encontraba a lo
lejos. Hubiese podido entrever el risco si no fuera por el gracioso
vitral que adornaba la ventana de la célebre posada "El Último Hogar"
y las innumerables ramas de los demás vallenwoods sobre los cuales se
encontraba la mayor parte de las casas de los habitantes de Solace.
"Me llevo mi espada, mis dos dagas, mi arco largo y mis flechas" -
revisó mentalmente el medio-elfo oriundo de Qualinesti- "creo que 22
flechas bastarán. Llevo también mi cuerda de 15 metros, con su
garfio, mis raciones de viaje, mi bota con agua, el pico de minería
que me prestó el enano amigo de Argento, y la alforja donde guardar
un trozo de la obsidiana. El plan, entonces, es recogerla y luego ir
a hablar con el enano que residía en la casa del célebre Flint
Fireforge, para ver si él me puede decir más cosas acerca del
material o si sabe quién es capaz de trabajar con esa piedra
preciosa."
Gwydeon palmeó la espalda de su amigo, - "habrá que ver ese lugar" -
le susurro al oído, consciente de que no debería revelarle a toda la
posada la razón de su expedición. Obtener un poco de esa roca extraña
le permitiría saber algo de sus propiedades. ¿Sería que el rumor de
la daga mágica de obsidiana había sido una confusión, y la misma era
un objeto mágico de épocas anteriores a la Guerra de Caos?. Si ese
era el caso, no dejaba de ser un gran peligro el que un objeto mágico
(porque estaba casi seguro de que eso era) cayera en manos
equivocadas, o mucho peor, en manos de los Caballeros de Takhisis...
Luego de la amena charla y la fría cerveza como recompensa de un día
de duro trabajo, Argento accedió a llevar a su joven amigo a ver lo
que desde tanto tiempo le tenía inquieto: "una veta de obsidiana en
los riscos de las afueras de Solace". El Medio-elfo había dicho algo
que a Argento fue como si le hablase en idioma de dragón porque no
entendió mucho de lo que escuchaba. No es que alguna vez hubiese
hablado con un dragón... pero alguna vez encontraría a El Verde en el
bosque y... bueno, quién sabe qué podría ocurrir. Ante las
precauciones de Gwydeon, Argento sólo pudo sonreír. No entendía cuál
era su preocupación, pero seguramente es por ser
Legionario. "Extraños modos de pensar y de actuar, es un Legionario
después de todo" se dijo y tomó su hacha y se encasquetó su capucha
de cuero.
El Legionario tomó también sus alforjas, y siguiendo a su bajo pero
rudo compañero, se dirigió a la puerta, mirando de reojo todos los
rincones de la posada, asegurándose de que nadie hubiese escuchado
esa conversación, o al menos, nadie caminara sobre sus pasos.
Argento, por otro lado, no parecía precisamente un leñador más. Desde
que tuvo que aprender a usar su hacha doble para separar algo más que
corteza, en la defensa de algunos intentos de invasión a Solace,
lleva una armadura de cuero y un protector de cuero para su cabeza.
Su hacha, un poco más larga que la mitad de su altura (tenía como
unos 80 cms de largo), descansaba sobre su espalda, meciéndose con su
tosco caminar. El hacha siempre iba con él... y como todos en Solace
sabían, no era para fastidiar a nadie sino sólo porque él "adora su
hacha".
Al mirar a Gwydeon vigilar la retaguardia antes de tomar el sendero
que los llevaría a la veta, no pudo sino suspirar. El medio-elfo
parecía más apresurado que nunca. En fin, transcurrían ya 4 meses de
los 6 que se suponía debían pasar como máximo para cumplir la misión
que le asignara la Legión de Steel. Siempre se había sentido
inclinado a aconsejar al muchacho. Había llegado hacía ya año y medio
a Solace, y se convirtió en aprendiz de Legionario y de las artes de
la nueva hechicería. Sin embargo, siendo el medio-elfo un tipo
básicamente solitario y al principio bastante taciturno (digamos que
algo descentrado), en algún momento luego de su llegada no pudo sino
acercarse a sacarle conversación. De ese momento había nacido una
camaradería muy cierta.
Repasó mentalmente una vez más el camino al risco de la veta de
la "cosa" negra. El joven le había preguntado acerca de lugares donde
él supiese que habría obsidiana. El leñador le había contestado que
no tenía la menor idea de lo que era esa tal "osciliana". Ahora si
había aprendido a decir el nombre del mineral, del cuál supo que
sabía gracias a la interesante descripción del Legionario. La misma
coincidía con lo que recordaba haber visto en aquel risco, mientras
buscaba un árbol bueno para talar.
"No todos los árboles eran buenos para talar"- pensaba Argento-
. "Algunos eran saludables. Otros eran de dudoso futuro, y quizá
estaban en su último esfuerzo de surgir, pero esa esperanza era menos
beneficiosa para el bosque, que el posible crecimiento de los
juveniles árboles a nivel del suelo". Una misteriosa dama envuelta en
capas le había aconsejado al respecto hacía ya muchos años. Mucha
niebla había aparecido junto a la mujer, así que había decidido que
mejor era no molestar a las mágicas gentes del bosque. Después de
todo le agradaba caminar por el mismo. En él se sentía más a gusto
que entre la gente bien vestida y pretenciosa de honores.
Tomaron rumbo a los riscos y justo a la salida del pueblo sucedió
algo extraño...
Gwydeon notó, mientras daban vuelta al último árbol Vallenwood
habitado de Solace, que alguien lo observaba desde adentro del
pueblo. Una figura encapuchada en una capa gris oscuro les seguía con
la mirada desde un lugar semi-oculto por las ramas bajas de un roble.
Sin apurar el paso, Gwydeon dejo que los mismos arboles del camino se
interpusieran entre ellos y la figura encapuchada. Nunca olvidaba un
rostro, y tomo especial precaución en recordar lo poco que había
visto de ese extraño personaje -"Odio a la gente indiscreta"- se dijo
a sí mismo mientras que trataba rápidamente de crear un plan. Cuando
parecía que se habían separado bastante del pueblo, le dijo con voz
baja y clara (como para que su amigo no tuviera que preguntar de
nuevo sobre que le hablaba) - "Creo que nos siguen, pueden ser
ladrones comunes o algo peor, estate atento y trata de dar tantas
vueltas puedas antes de llegar a la veta, quizás con eso ganemos algo
de tiempo" - Y dicho esto, casi inconscientemente, dejó que su mano
tomara el arco, tal vez lo necesitaría mas tarde...
Argento no supo si los nervios traicionaban a Gwydeon por creer que
se acercaba a lo que había buscado desde que llegó a Solace, o si se
trataba de una preocupación justificada (o justificable). Argento
trató de ver por el rabillo del ojo pero sólo vio árboles, maleza y
un corto trecho de camino pero no vio a nadie más detrás de ellos. El
camino a la veta era casi directo, pero ante la sugerencia del joven
prefirió recorrer un poco los árboles más vistosos de la zona, esos
que alguna vez juró que nunca derribaría. Así que sugirió mediante
una seña que dejasen el camino abierto, cosa que no le molestaba ya
que el bosque era su lugar; aguzando los sentidos mientras descolgaba
su hacha y tomaba una piedra de amolar que llevaba siempre en el
bolsillo, con una mezcla de expectación y duda. Comenzó a afilar su
hacha, esperando la respuesta de Gwydeon.
Pero Gwydeon no parecía querer hablar, cada sonido superfluo podría
afectar su estado de alerta. Presto atención con todos sus sentidos a
cada rama que caía, pero intentando no dejar que sus nervios lo
traicionasen, y terminara enterrando una flecha al primer pájaro que
pasara demasiado cerca. Miro a su compañero, el cual no parecía
demasiado preocupado, algo expectante tal vez, afilando su hacha con
una aparente calma. Gwydeon tan solo esperaba que sus posibles
perseguidores cometieran el más mínimo error, el último de toda su
vida. Porque la verdad es que, en sus años como mercenario, cuando su
vida se reducía a blandir una espada por unas cuantas monedas de
acero, ya se había enfrentado a infinidad de emboscadas, y había
aprendido un par de trucos para escapar de ellas. Y ahora volvía a
tener su magia, una quizás algo diferente de la Alta Hechicería con
la que se había enfrentado a las huestes de Caos, pero era ahora su
gran orgullo, su más preciada arma. Ya la había usado en las
aventuras con su maestro, pero esta seria su primera vez sólo... Sólo
sabia que los arboles que a lado y lado se levantaban podían ser su
peor amenaza, pero a la vez, su mayor ventaja ante cualquier ataque,
intentaba a su vez escuchar el murmullo de algún río, allí una
batalla contra varios enemigos, usando sus habilidades, podría
resultar mas interesante.
Respiró profundo, y siguió a su amigo.
Argento pensó, segundos después de dar la primera pasada a la hoja,
que mejor no debía afilar su hacha en ese momento. Eso podría
distraerlo recordando viejos momentos y maderos caídos... aunque en
realidad no quería poner más nervioso a Gwydeon haciendo como que no
le prestaba importancia al alerta que éste había dado. Mejor sólo
llevarla en la mano; podría ser sólo una vieja del pueblo, de esas
que quiere saber qué sucede siempre a su alrededor para luego
comentarlo con detalles añadidos, mas podría ser realmente una
amenaza que, de conocer al pequeño pero fornido personaje,
seguramente lo pensaría dos veces teniendo éste su hacha en la mano.
Como se dijo, segundos antes de sacar su hacha había dado una señal
de sugerencia al medio-elfo para adentrarse más en el bosque, dejar
el camino fácil para evitar ser seguidos. Menos de un minuto después
había guardado la piedra de amolar en uno de sus grandes bolsillos.
Pensó, además, que si se internaban en el bosque, su segundo hogar,
podría enseñarle algunas cosas al joven legionario de ese mundo bajo
los árboles. Tal vez lograría que apreciase ese ambiente tanto como
él. Ese pensamiento le reconfortó y se dijo a sí mismo que nada malo
podría sucederle al amparo de los grandes árboles... así que sin
esperar por la respuesta de Gwydeon y, con una sonrisa en el rostro,
sintiéndose como rey entrando a su reino se internó en la espesura
del bosque. Iba hacia el sur-este, hacia el hermoso valle que se
encuentra entre Que-Kiri, Solace y el Bosque Oscuro. Había allí un
bajo entre dos de las montañas que definían al valle, que permitía
acceder al mismo. Era en ese espacio entre cimas en donde se
encontraba el risco de la veta de "la cosa negra".
* * *
De entre la espesura que les aguardaba en el trayecto, Argento y
Gwydeon fueron sorprendidos por dos figuras encapuchadas. Una de
ellas pudo ser reconocida por el medio-elfo como la que los espió
desde Solace. La otra, a la derecha de los héroes, ya había arrojado
unas bolas (arma lanzable utilizada por algunas tribus bárbaras) a
los pies de Argento, quien apenas tuvo tiempo para intentar
esquivarlas. Las bolas enredaron sus toscas extremidades exteriores,
finalizando la maniobra con los respectivos 3 golpes secos de las
pesadas bolas envueltas en cuero. Argento se tambaleaba aún cuando
notó que sus orejas se cerraban sobre si mismas, impidiéndole
escuchar, y sus párpados se juntaban.
La otra figura no hizo ningún ademán de ataque a Gwydeon, sino que
levantó su mano haciendo una señal que el medio-elfo pudo reconocer
como una seña secreta de la Legión de Steel. La oscuridad de la noche
le impidió detallar las caras de sus atacantes, quienes al parecer
esperaban por la reacción del Hechicero Legionario.
* * *
A esa hora en esa misma tarde, volviendo 30 millas al sur-sureste, la
caravana avanzaba ya por entre las colinas limítrofes del Bosque
Oscuro, por la izquierda, y el arrolluelo de Solace (que más atrás se
unía con el río White-rage). Hacía ya mediodía que habían dejado el
asentamiento Qué-Teh, poblado de una tribu de bárbaros de las
planicies.
En su paso por este asentamiento, el mayor interesado en el "turismo"
y las baratijas que pudiesen conseguirse entre los bárbaros de las
planicies, había sido Tarasal. Con gran afán e interés buscó nuevas y
diversas plumas para incrementar su abundante colección.
En esa hora, en la que el cielo empezaba a ruborizarse hacia el
occidente, aquellos de la caravana que no habían percibido la
anomalía que surgió súbitamente en el borde de las colinas que
ocultaban al Bosque Oscuro, se enteraron del fenómeno al mirar al
resto de los viajeros quienes observaban con extrañeza lo que ocurría
a la izquierda del sendero. El bosque que terminaba con las colinas,
no tan verdes por la cercanía del otoño, súbitamente había cambiado.
Parecía también haberse "acercado".
Lo extraño no es que ya no fuese un bosque. O que no fuese el tipo de
vegetación. Sencillamente los árboles no eran los mismos, ahora eran
altos y más cercanos. Un parpadeo antes, Gregory Hilltop habría
jurado que observaba una baja colina que sostenía unos cerezos y
sauces de tamaño mediano. Ahora observaba unos altos Vallenwoods,
cedros, manzanos y robles. Su color apagado, en contraste con los
bosquecillos que bordeaban al valle por donde corría el sendero a
Solace, sólo era superado en incoherencia por la espesa niebla que
parecía yacer inmóvil entre los troncos de los árboles.
Tarasal Pocketfinder con una mirada de gran intriga y sorpresa
observó la ubicación actual y recordó la que anteriormente tenía el
bosque. Experimentó un gran asombro ante lo que observaba porque por
un momento se quedó "casi" inmóvil, pero ese momento fue tan largo
para él, que comenzó a hacer movimientos rápidos con sus brazos
porque se le estaban acalambrado.. y en parte para compensar la
inmovilidad un poquito, a la que poco están acostumbrados los
kenders. Peni, su ardilla voladora, que se encontraba cerca de su
cuello se metió en el bolso súbitamente. El kender miró
desenfocadamente hacia el vacío durante un minuto, y movió sus manos
como si fuese a recibir un abrazo del aire que lo rodeaba, mientras
su rostro se volvía un poco más serio de lo normal.
Un grupo de 10 jinetes elfos y 9 caballeros cubiertos de armaduras
negras, emergieron de la incongruente niebla, cabalgando a toda
prisa en dirección a la caravana. Al salir del bosque, uno de los
caballeros, con una poblada barba negra y nariz aguileña alzó la mano
derecha, que portaba una espada, en señal de pausa. El grupo de
recién llegados se frenó a lo que un kender podría catalogar
como "distancia de tiro de piedra", del costado izquierdo de la
caravana.
Una pregunta se formó en la mente de Aelensar el mercenario - "¿Qué
demonios está pasando aquí? ¡Estoy seguro de que no había ningún
bosque hace un momento!" Miró, sorprendido, hacia el banco de niebla
entre los árboles, y a las amenazantes figuras que acababan de salir
de él. "¡Caballeros de Takhisis! ¡Y parecen tan sorprendidos como
nosotros!" - pensó con una sonrisa mental.
Rápidamente, Aelensar repasó lo que sabía del grupo: Que hacia ese
bosque, y hacia el sur, están los dominios del dragón verde, llamado
Beryl. Que él gobierna al reino elfo de Qualinesti a través de los
Caballeros de Takhisis. Que se dice que el "Orador de los Soles" (el
rey élfico), es el hijo de Tanis y Laurana. Y que se dice de él, que
sólo es un títere de Beryl. Por lo tanto no era demasiado extraño ver
a unos elfos junto a caballeros oscuros, aunque a decir verdad, era
esta la primera vez que veía algo así con sus propios ojos.
Pendiente en todo momento de lo que estaba aconteciendo, Aelensar
comenzó a ponerse en posición adecuada para afrontar lo peor... O lo
mejor, pensó, mientras una predadora sonrisa de medio lado marcaba su
rostro, y su mano se ceñía en torno al mango de su espada.
Tarasal exclamó, por su parte: "¡Aja!, y ellos ¿qué querrán?"...
olvidando al parecer su extraño trance para continuar luego.
El caballero oscuro giró su caballo toda una vuelta sobre sí mismo,
mirando sorprendido los alrededores, al parecer más impresionado por
el pasto que por cualquier otra cosa. Tras un segundo de reflexión,
acercó su caballo 5 pasos a la caravana y gritó: "En nombre de la
Reina Oscura, les exijo indiquen en qué dirección huyeron los
rebeldes. No tenemos intención de derramar vuestra sangre
innecesariamente, así que olvidad vuestras armas y responded a mi
pregunta. Si obráis así dejaremos que vuestro camino vuelva a sus
pies."
Una voz chillona exclamó desde la vanguardia de la caravana -
"¿Rebeldes?, ¿cuáles rebeldes?, ¡yo no he visto ninguno!". Al
observar con más detalle a su intempestivo interlocutor, concluyó el
kender en voz alta -"Tú te pareces más a lo que yo llamaría un
rebelde".
"¿Rebeldes?" - se preguntó también Aelensar para sus adentros,
compartiendo con el kender (y el resto de la comitiva) su extrañeza.
Su buen juicio le decía que se ocultara tras una de las carretas,
desde donde podría guarecerse de los ataques, y quizás escapar sin
ser descubierto. En ese descampado, sin armas con las cuales
enfrentar ese batallón, y superado numéricamente, era un suicidio
hacer frente al grupo.
Los caballeros de negro, ignorando el comentario del kender, miraron
a la caravana con expectación y expresión orgullosa, el Sol de la
tarde reluciendo en los intrincados diseños de las placas de sus
armaduras, que emulaban las formas de calaveras, y lirios. Los elfos
miraron, por su lado, tanto a la gente como a sus alrededores,
escrutando incrédulos la pradera con expresión pesada, grave y
confundida. Cada uno de ellos llevaba un arco y una espada larga,
prestos a cualquier indicio de orden de ataque."
"¡Arcos y magia! ¡Maldición! ¿Una espada no es lo mejor para
enfrentarse a un grupo con ambas cualidades... Pero eres todo lo
Aelensar siempre ha necesitado, verdad, belleza?" - pensó el
mercenario, mirando de reojo a su espada mientras la sonrisa volvía a
su rostro.
Obviamente, hizo lo que sabía desde el principio que haría. Le habían
contratado para defender la caravana, y en ella había mucha gente
indefensa. ¡Y una mierda! ¿Por qué ocultar la verdad? Aunque
estuviera él sólo, y aunque no le hubieran pagado nada ¡estaría más
que contento de luchar esta batalla!
* * *
Dado que estaba en una contemplación interna - aprovechando el
momento libre de quehaceres - la mujer cubierta de harapos no
advirtió la llegada de los jinetes hasta muy tarde cuando ya estaban
encima de la caravana. Los sujetos lucían desagradables y peligrosos.
Aunque comprendía poco de la situación su intuición le decía que nada
bueno iba a resulta de este encuentro. Al ver las imágenes de las
calaveras en las placas metálicas de las armaduras, el vidrio de su
consciencia se empañó con nubes de recuerdos dolorosos y confusos.
Miraba a su alrededor, pero al mismo tiempo no lo hacía. Una parte de
ella parecía estar en una vasta oscuridad, tensa y agotada de dolor.
Pero nada más recordaba. Una cosa era clara: recordaba haber deseado
la muerte.
* * *
Greg Hilltop se alarmó al observar a los jinetes. La batalla podría
empezar al siguiente respiro. Mientras su mano izquierda liberaba el
seguro de la vaina de su sable, lanzó tres miradas.
La primera fue dirigida a Carr y al guardia de Goldmoon, a los que
levantó un poco la mano, como señalándoles esperar y cubrirse atrás.
No les atendió más.
El Guardia de Ciudadela se sorprendió ante la proactividad del marino
ante la tensa situación, pero, aparte de soltar el seguro de su
espada ancha, y ubicar con su vista el escudo en la parte posterior
de la carreta, no hizo ninguna otra cosa, ni osó abrir sus labios.
Hasta la respiración parecía ser demasiado sonora en comparación con
el tenso silencio ocasionado por el mandato del Caballero de Takhisis.
La aparición súbita y extraña de semejantes personajes tomó
completamente por descuido a Kieran. "¡Qué demo...!" fue lo único que
pudo barbotar antes que la caravana estuviese flanqueada.
Sencillamente fabuloso, pensó. Salteadores, y muy bien preparados.
Sin embargo, al escuchar las palabras del aparente líder de
los "salteadores" se quedó perplejo. "¿Rebeldes? ¿De qué me está
hablando este fantoche? ¡Y de paso nos habla con tal prepotencia!
¿Qué se ha creído el muy...?". Antes de que pudiera seguir con su
línea de razonamiento, un escalofrío recorrió su espalda al ver que
Gregory, osadamente, avanzaba hacia el líder con su mano alzada. Poco
le importó que segundos antes su reciente pero carismático compañero
le hubiera indicado que se quedara en la retaguardia.
Kieran Carr murmuró sin observar directamente a Hilltop -"Si llegan a
disparar, lo mejor es no convertirse en un blanco fijo y apuntar
hacia el bosque. Allí les será más difícil encontrarnos".
La segunda mirada de Greg Hilltop la dirigió al cielo vespertino. Una
sonrisa torcida apareció fugazmente en su cara.
La tercera, la más larga, la dirigió a los otros miembros de la
caravana. Observó la actitud de los arqueros y la tensión de sus
armas, así como cuán cubiertos estaban. En ello descubrió que los
arqueros parecían aún más expectantes que los caballeros. Sus arcos y
espadas reposaban en sus hombros y vainas, respectivamente, aunque
sobre los pomos de esas armas se encontrasen sus manos en tensión.
Se tomó un segundo para ubicar a la "harapienta" y estudiar su
reacción frente a los malos. Ella mostró una mirada contemplativa
ante la situación, pero nada más.
Luego, buscó con la mirada al líder de la caravana... quién yacía
sobre su caballo, boquiabierto.
Al notar su inacción, Hilltop se despojó de la capa, dejándola
indiferentemente en la carreta. Acto seguido avanzó hacia el
caballero oscuro que había hablado, con la mano derecha en alto.
"Veamos cómo salimos de esta", dijo para sí mismo, mientras caminaba.
Una inocente sonrisa apareció en su rostro.
* * *
¿Que pretendía hacer el hombre de la capa (ahora sin ella), y por qué
la sonrisa? ¡O sabía algo que no era del conocimiento del resto de la
caravana o era loco! - Concluyó la dama cuyo atuendo de batalla se
restringía a los harapos y un cuchillo de cocina envuelto en trapos
de dudosa higiene.
* * *
Aelensar, al unísono se ponía a paso calmado entre la caravana y los
caballeros, sin adoptar poses amenazantes - una cosa es saber dar
batalla, y otra comenzar una por gusto - se dio cuenta de que
su "buen juicio" y él estaban peleados. De por vida.
La sonrisa seguía en su rostro...
Aelensar observó como dos de los elfos que acompañaban a los
Caballeros Oscuros, quienes cerraban la "retaguardia", siguieron con
la vista sus lentos movimientos. Ninguno de los dos pudo evitar
interrogarse mutuamente con la mirada, tras buscar rápidamente con
sus aguzadas vistas, otras señales entre la caravana...
* * *
Mientras avanzaba la tarde, se hacia notablemente más fría. ¡Cómo
estar seguro de dónde venía ese gélido aire!.
Greg volvió a mirar al cielo, fugazmente. Luego volteó a ambos lados,
manteniendo en lo posible el cielo en su rango visual. Cuando volteó
a la derecha su cabeza siguió el giro tanto como su nuca lo permitió,
observando así la caravana. Todo esto duró lo que tardo en dar seis
lentos pasos.
Esa rápida inspección le permitió apreciar que los miembros de la
caravana, en general, parecían tan sorprendidos como el inútil
comerciante que "lideraba" la caravana. Al menos nadie había salido
corriendo como un niño,... lo cuál le recordó la presencia del
kender, pero el instante de alarma pasó de largo, cuando confirmó que
el kender parecía afirmar con su cabeza, gesticulando hacia el aire.
Aunque fuese un gesto nada común, al menos no vendría a extender la
mano a los caballeros, ni... lo que sería mucho peor... a lanzarles
puyas.
Fue cuando volvía a mirar a los guerreros malignos que notó al
mercenario. Se detuvo. Su cara mostró una seria expresión, pero sólo
por el más breve de los momentos. Después su sonrisa de simpatía
reapareció, pero esta vez concentrada exclusivamente en el valiente
hombre que estaba a su izquierda. Se mantuvo allí, con la mano en
alto por unos segundos, observando al hombre fuertemente armado. Un
hombre que cargaba una ballesta, si, pero se enfrentaba sólo con su
espada a una compañía de arqueros...
... arqueros mortalmente élficos. ¡Que irónica era la Quinta Era!
* * *
La vista de los arcos le incomodó sobremanera, ciertamente. Si eran
lo suficientemente diestros, esos arqueros acribillarían a la
caravana en segundos. Pero tampoco podía tolerar la idea de que
Gregory se arriesgara de un modo tan temerario. Entre la indecisión y
su propia timidez, Kieran tan sólo tensó sus músculos de las piernas,
dispuesto a auxiliar a Gregory de ser necesario, y desenfundar el
sable en la carrera. Viejos hábitos de entrenamiento militar
regresaron a su mente - "Si llegan a disparar, lo mejor es no
convertirse en un blanco fijo y apuntar hacia el bosque. Allí les
será más difícil encontrarnos". En resumen, pensó que de ser
necesario, pelearía por la vida de los integrantes de la caravana -
"Tal vez eso pueda redimirme" - pero estaría más a favor de la idea
de huir hacia el bosque, al unísono -"Daré la señal, aún si me cuesta
la vida.. y Gregory... espero que sepas lo que haces, ¡por Paladine!
¡Me disgustaría sobremanera tener que ir en tu ayuda primero que
nadie!"
Kieran sopesó una vez más la situación. Detalles nuevos afloraron en
su mente, trabajando incansable en una situación de vida o
muerte. "¿Arqueros elfos? ¿"Trabajando" para Takhisis? Si es cierto
que éste es un escuadrón de las hordas de la Reina de la Oscuridad,
entonces..."- volvió a dar una mirada nerviosa a su alrededor, los
arqueros y el líder. "Huir es casi imposible"- aseveró. "Nos cazarán
antes de que logremos escondernos bien en el bosque. Sólo quedan 2
opciones entonces: o proclamamos que no sabemos nada - lo cual es
cierto - (que es lo que espero que Gregory haga, caminando sobre
hielo delgado), o peleamos... pero llevamos una gran desventaja.
Aunque el hecho de que parecen tan confundidos como nosotros quizás
nos proporcione la ventaja del factor sorpresa..."- febrilmente, el
conocimiento militar acudía a Kieran en un raudal indetenible, hasta
que llegó a una decisión final: "Esperaré ver qué se trae Gregory
entre manos. Capaz y el chicuelo me enseña un par de cosas. Si eso
falla... bueno, no importará demasiado. Pelearé. Por Ellemir que
pelearé sin descanso". Miró al cielo en actitud nostálgica y luego
bajó la mirada hacia donde estaba el líder. En pocos segundos se
decidiría el destino. Apretó los dientes y los puños...
* * *
El líder de la caravana, un comerciante humano de nombre Lienkor
Pernan, de acento solámnico, ya entrado en los 30, parecía no creer
lo que había sucedido. Salió de su momentáneo trance de incredulidad,
al observar como se incorporaba el marinero, y caminaba con la mano
en alto, a la derecha de uno de los escoltas mejor armados.
Rápidamente desvió su mirada del marino que viajaba con los de la
carreta vacía, y la volvió hacia el líder de los imponentes
seguidores de Takhisis. Retomando los rieles de su conciencia,
adelantó su caballo con la menor brusquedad posible, y trató de
acomodar los músculos de su rostro para no mostrar el temor. Había
considerado bajarse del caballo, pero la esperanza de huir en caso de
ser necesario, y la poca confianza en que podría evitar el temblor en
las piernas, le convencieron de mantenerse en su montura.
Al empezar a moverse, y un poco temeroso de la vergüenza de que uno
de sus "clientes" hablara por él, alzó la voz (con una calma
claramente forzada), diciendo: "Honorables Caballeros, tengo el
agrado de informarles que hemos hecho nuestra travesía sin muchas
novedades. Hasta este momento, en que tuvimos la gracia de
encontrarnos con ustedes, hemos sido los únicos en el sendero. De
cualquier modo, no dudéis que estaremos alerta por la presencia de
esos peligrosos rebeldes."
El comerciante a cargo de la caravana nunca le pareció a la bella
pordiosera un hombre de gran valentía desde el principio del viaje,
pero al escuchar sus palabras dejaba su naturaleza al desnudo, estaba
segura de que si los sujetos le pedían todos los valores de la
caravana, el comerciante los ayudaría a transferir los bienes.. ¡y
guardarlos!. Volteó la mirada hacia los caballeros negros...
No fueron menos de 3 los caballeros que irresistiblemente sonrieron
ante tan absurdamente cordial respuesta, posiblemente arribando a la
misma conclusión que la harapienta. El barbudo caballero levantó las
cejas con diversión, y haciendo una mueca cínica con los labios
respondió, en el mismo tono protocolar con que el comerciante se
dirigió a él: "Si es así, y dado que no parece haber, en efecto,
nadie más en esta zona del valle, os solicitaré que seáis amables y
no opongáis resistencia mientras nos cercioramos de que ninguno de
los integrantes de vuestra caravana es uno de nuestros "peligrosos"
rebeldes Qualinesti." Y con este final de frase, hizo una señal con
la mano izquierda. "Caballeros Guerreros Uth Ewgan y Trevor, tomen a
5 de la Guardia Qualinesti y revísenlos. No olviden buscar en la
carga de las carretas." Tras esto, uno de los caballeros hizo
calmadamente un ademán a 5 de los elfos quienes se acercaron de
inmediato. Él, junto a los 5 qualinestis, y al otro caballero oscuro,
se adelantaron al Jefe de Garra, avanzando hacia el comienzo de la
caravana en un trote "calmado".
Ante esto, y observando el movimiento de Aelensar, los restantes
escoltas intercambiaron miradas, y tensaron sus músculos, con
indecisión en cuanto a si cambiar de posición o no. Originalmente
estaban relativamente igual distribuidos a lo largo de la caravana, a
ambos lados. Aunque la niebla quedaba atrás, entre los árboles,
parecía que el aire tenso que se respiraba en la caravana, parecía
más niebla que aire. Niebla de temor.
* * *
Ritchgard Blackmore, Caballero del Lirio Negro, casi no pudo contener
una risa verdaderamente descontrolada al ver las cómicas caras
asustadas de los aventureros. Era como si los viejos días de
escaramuzas en los bordes de Teyr volvieran; las caras de los
escuderos y novatos deformadas por el terror de tener ante sí una
carga de draconianos con sus alas extendidas. Tenía lógicas dudas
acerca de si sobrevivirían estos tiempos de pesadilla. -¡Por la Reina
Oscura, si alguna vez volvía! ¿cómo era posible que el futuro
dependiera de esos vulnerables seres?- exclamó para sí mismo,
reconociendo aún así que sentía simpatía por ellos. Sinceramente
extrañó a su verdadera montura, ella le habría aclarado que su deber
no era hacer filosofía. Con seguridad los viajeros morirían, si no
confrontaban la necesidad. "Son varios los que deberían pagar este
error. Y veré que así sea" - se dijo Blackmore, al volver la vista al
camino que tenía adelante.
* * *
"¿¡Las elfas!?" - pensó Aelensar - "¿Será a ellas a quienes están
buscando? Tenían pinta de estar escondiéndose de alguien..."
Inmóvil, repasó la posición de las elfas en la caravana, sopesando si
podrían esconderse a la revisión, en caso de desearlo.
"Bueno, si es por revisar ¡que revisen lo que les dé la gana!" -
pensó - "Pero esta caravana está bajo mi protección, y no dejaré que
ningún desgraciado caballero, por muy apoyado que esté, se lleve a
ninguno de los que viajan en ella."
Y con una expresión amarga, añadió para sus adentros -"Ni siquiera al
kender".
A medida que los elfos y Caballeros de Takhisis se aproximaron a la
caravana, Aelensar se aproximó a ellos tangencialmente. Su actitud no
era amenazante, pero era evidente que no se permitiría despegarse de
ellos demasiado. "¡Bien, señores!" - pensó - "veamos cómo llevan a
cabo su revisión..."
* * *
Al oír las pacíficas palabras del jefe de caravanas, Kieran pudo
relajarse un momento. "Muy probablemente no pase de una mera
revisión. No creo que tengamos algo que ocultar ¿o sí? A menos que
estén buscando a ese par de elfas"- dudó el veterano -"¡no han
ocultado muy bien el hecho de ser lo que son!" - y aquí la faz de
Kieran cambió a un ligero aire despectivo, y miró brevemente hacia
donde se suponía que estaban dichas beldades - "no hay mucho de qué
preocuparse, pero si se les ocurre ligarnos como cómplices de
resguardarlas..." -se estremeció al imaginar la carnicería que podría
surgir de cumplirse tal hipótesis. "No soy partícipe de pelear aquí y
ahora, a menos que se me presente el caso. E incluso entonces..."-
imágenes de años atrás se presentaron en su conciencia, y cerró los
ojos en un ademán fútil para alejarlas.
Sacudió su cabeza, esperando aclarar sus ideas.
* * *
La harapienta, quien no recordaba haber recibido entrenamiento
militar, sintió que su sangre se avivaba ante la tensa situación.
Para ella estaba sorprendentemente claro que la falta de liderazgo en
la caravana iba a ponerlos en situación difícil si se producía un
conflicto, los mercenarios carecían de una dirección a tomar. En
realidad como que nadie sabía que hacer, los caballeros parecían que
iban a tomar el control de la caravana... parecían moverse como uno
sólo, bajo la mirada de su líder.
* * *
Greg Hilltop odiaba sudar. Y el sudor húmedo en su nuca parecía
además estar tomando la contextura de la leche agria.
Desde el momento en que el solámnico hablara, hasta que fue
respondido por el líder de garra, su expresión sufrió una larga
transformación, hasta parecerse mucho a la del hombre que, montado a
caballo, comandaba la caravana.
De repente Greg volvió a ser él mismo y su sonrisa reapareció.
"¡Salud, Caballero Oscuro! ¡Pueda Sargonnas volver también y dar
justo castigo a nuestros ofensores!"- exclamó en la lengua de Ergoth,
amistoso.
"No hemos visto rebelde alguno, mas si en verdad los buscáis,
deberíais volver vuestra vista al sur y al oeste, hacia donde los
árboles se espesan; es allí donde aquellos que han causado vuestra
cólera se refugian. Aquí no conseguiréis más que súbditos humildes
de..." -rápidamente cambió a abanisinio- "La Muerte Verde" -y
volviendo a ergothiano concluyó, "y viajeros bien ocupados".
"No pretendo retaros, no yo; pero la situación es incómoda y, a menos
que poseáis poderosa magia, vosotros tenéis muchas millas que
recorrer para llegar ante vuestro superior y evitar que la cena se
enfríe. Consideradlo bien: estamos a menos de una milla de Solace y
la patrulla debe estar por hacer su ronda. Podéis volver con vuestras
manos vacías pero completos, o con las manos vacías excepto por
varios cadáveres sobre los lomos de sus caballos. ¿Qué le dará más
gloria a vuestra Oscura Majestad? ¡Nosotros no llevamos rebeldes y
vosotros ya habéis fallado, ¡no hagáis vuestra desgracia mayor!"-
argumentó, con gran seguridad de sí mismo, Greg en el mismo tono
respetuoso y jovial.
* * *
"Valiente y descabellado a la vez" -pensó Kieran Carr al escuchar el
insólito diálogo de Greg. "Al menos espero que eso les enseñe a no
ser tan... arrogantes" - reflexionó dejando escapar un suspiro de
cansancio adelantado. Dado que evidentemente esas palabras
provocarían una pelea, de por sí inminente, Kieran volvió a tensar
sus músculos y miró rápidamente a su alrededor, en búsqueda de
guerreros que ya estuvieran aunque fuera medianamente prestos para la
lucha, como él. Aparte de los 5 mercenarios, el par de elfas, y su
compañero... la búsqueda había sido inútil. Con toda seguridad el
pasto lucirá rojo en este atardecer, por razones más dramáticas que
el periódico rubor del Sol de las tardes.
* * *
"¡Está definitivamente Loco!". A la pordiosera no le quedaba la menor
duda de que aquí correría sangre, luego de escuchar las palabras del
apuesto marino. Rápidamente miró a sus alrededores para medir la
situación. Quería ver la reacción del guardia en la carreta donde
viajaba el marino ante la osadía de su acompañante. Los mercenarios
estaban tensos y todos mantenían una mano posada sobre un arma de
algún tipo, aunque claramente no deseaban desenvainar inoportunamente
sentenciándolos a todos a muerte.
A todas estas había perdido de vista a la persona bajita (¿Kender era
su nombre? ¿o su raza? estos son los problemas de lidiar con memorias
con muchos huecos) -"¿a dónde se habrá metido? ¿estará a la cabeza de
la caravana?"- se preguntó la humana.
Optó por acercarse a las elfas y al anciano ya que tenía una
corazonada que todo esto tenía que ver con ellos. Si estaba
equivocada igual habría mayor seguridad en grupos.
Siguiendo la mirada divertida (extraño asunto, dentro de este
contexto) del anciano, encontró que las dos personitas que buscaba
estaban a punto de ser ignoradas dentro de la revisión de los
caballeros, a juzgar por la dirección que estos llevaban,
encaminándose directamente hacia el guardia que iba al frente de la
caravana.
* * *
"¡Uth Ewgan¡ !Trevor! Continuad vuestro trabajo"- exclamó molesto el
jefe de la garra de Caballeros de Takhisis al ver que sus caballeros
titubearon ante las palabras de Greg Hilltop.
"Disculpadme que no me fíe de vuestras inteligentes palabras, maese
marino"- respondió con gravedad al intrépido humano echando un último
vistazo a sus alrededores. "Si fuese cierto que estamos en las
proximidades de Solace, y esto no es una simple ilusión de uno de sus
elfos fugitivos, entonces comprenderéis no habría problema (para
ustedes) en que verifiquemos la identidad de los que os acompañan. El
riesgo lo asumimos nosotros, no ustedes. Os doy mi palabra de honor
de que no se os hará daño si cooperáis. ¡Que la Reina de la Oscuridad
me abandone en el abismo si llegare a incumplir mi promesa!. Ahora
que... sería lógico que la seguridad que tenéis de la llegada de una
patrulla de Legionarios en cualquier momento debería inclinarles a
acceder pacíficamente a la revisión"
"Si por el contrario, mostráis resistencia a nuestras intenciones,
supondré simplemente que desconfiáis de la duración o efectividad de
vuestro sortilegio, y lamentareis altamente vuestra existencia." -
Dijo con ojos centelleantes, deteniéndose en el gesto que había
iniciado para envainar su espada, momentos atrás, y luego
culminándolo con brusquedad.
"Con esa hábil mente, mi amigo, comprenderá que llegar con las manos
vacías a mis superiores, habiendo sido burlados por una tonta
ilusión, no me permitirá sino cualquier otra cosa, entre la
humillación en la Orden, hasta pasar a convertirme en la cena de los
secuaces de La Muerte Verde, como bien has optado por llamarla. Así
pues, prefiero que encontremos la cena tan fría como el muro de
hielo, a permitirnos un fracaso por omisión"- concluyó con amargura
el Caballero del Lirio.
"Os hago una última concesión, hipotéticos inocentes viajeros de las
planicies Abinisinia:"- dijo antes de permitir que se le diese
respuesta a sus palabras- "si acabáis con la ilusión en este momento
y os rendís, les perdonaremos la vida y seréis hechos prisioneros. Se
os tratará con el debido respeto que tiene aquel que acepta su
culpabilidad con gallardía. En cualquiera de los casos, os ordeno
colocaros todos ordenadamente al costado izquierdo de cada una de las
carretas, incluso si no viajáis en una, descubrid vuestros rostros y
poned vuestras armas en el suelo dos pasos frente a ustedes"- exigió
el Caballero Guerrero, autoritario- "Caballeros"- prosiguió
refiriéndose a los restantes caballeros de Takhisis que quedaban tras
él- "Aseguraos que nadie escape o se esconda".- tras lo cual se
empezaron a desplegar a lo largo de la caravana, por el flanco
izquierdo, acompañados por la Patrulla de Guardias de Qualinesti.
"Ustedes también. Deponed vuestras armas."- demandó por último,
señalando a Hilltop, al líder de la caravana (claramente palidecido),
y a Aelensar.
Daga que fue dada a [[Gwydeon Ragnarok]] por la Legion de Steel para que investigara cómo fue posible la realización de un encantamiento permanente, en ella.
[img[http://lh5.ggpht.com/_jj9y7lDF9zw/S8z_UdKvB4I/AAAAAAAACa8/PfeszEwxsTM/s512/El%20sollozo%20de%20la%20harapienta.png]]
*[[Prólogo]]
*[[Compilación 1 - Apariciones|Compilación 1]] [[Resúmen de Compilación 1]]
*[[Compilación 2 - La orden final del caballero / ¿Amigo o enemigo?|Compilación 2]] [[Resúmen de Compilación 2]]
*[[Compilación 3 - Una Entrega Especial / El Duelo|Compilación 3]] [[Resúmen de Compilación 3]]
*(aquí van un montón de compilaciones.. ténganme paciencia.. jeje)
*[[Última Compilación (19-04-2010) - El sollozo de la harapienta/Túnicas Negras II|Última Compilación]]
*[[PRESENT - Compilación "en curso"]]
*[[SAGApedia|http://sagapedia.tiddlyspot.com]] - Enciclopedia web sobre el sistema de juego SAGA para DragonLance
*[[rupo Yahoo|http://games.groups.yahoo.com/group/JuRoCE/]] - Escribe acá, si vas a escribir para hacer comentarios sobre el juego... desde una burla o chiste, hasta una duda sobre DragonLance, o sobre la historia.
**Si eres "lurker", éste es el único grupo al que puedes escribir.
**Si eres jugador, puedes escribir haciéndote pasar por "lurker", escribiendo "inocentemente" desde tu cuenta personal de correo (LOL). También puedes escribir como enigmático jugador, desde la cuenta de correo "fantasma" (la que se usa para escribir los posts en cada "turno").
*[[Grupo Google|http://groups.google.com/group/JuRoCE]] - Escribe acá, sólo si eres jugador, y deberás hacerlo obligatoriamente dese la cuenta de correo "fantasma". Para mantener el orden en el grupo, los "Lurkers" no pueden escribir acá.
*[[Blog|http://juroce.blogspot.com]] - Blog en donde se publican las compilaciones, y noticias
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
window.onClickTag_mptw_orig.apply(this,arguments);
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
// Thanks Saq, you're a genius :)
var popup = Popup.stack[Popup.stack.length-1].popup;
createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
return false;
}
//}}}
Humano marinero muy ágil y dicharachero. Excelente jinete, por lo que se ha visto en la caravana, y hábil con el sable.
Medio-Elfo Hechicero de la [[Legión de Steel]].
Carga un arco largo y un carcaj de flechas. También una espada bastarda.
Zasthia y Argento le han visto generar una pequeña luz en su mano, como salida de una centella.
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place);
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place);
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place);
}}
});
//}}}
Esta es una historia de un grupo de aventureros en el mundo de Krynn (DragonLance) en la Era de los Mortales. Se ha ido escribiendo a partir de correos entre un Narrador y sus jugadores en un grupo virtual para jugar rol por correo electrónico.
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{
config.InstantTimestamp = {
// adjust to suit
timeFormat: 'DD/0MM/YY 0hh:0mm',
dateFormat: 'DD/0MM/YY',
translations: [
[/^!ts?$/img, "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
[/^!ds?$/img, "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],
// thanks Adapted Cat
[/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
[/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]
],
excludeTags: [
"noAutoCorrect",
"noTimestamp",
"html",
"CSS",
"css",
"systemConfig",
"systemConfigDisabled",
"zsystemConfig",
"Plugins",
"Plugin",
"plugins",
"plugin",
"javascript",
"code",
"systemTheme",
"systemPalette"
],
excludeTiddlers: [
"StyleSheet",
"StyleSheetLayout",
"StyleSheetColors",
"StyleSheetPrint"
// more?
]
};
TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
tags = tags ? tags : []; // just in case tags is null
tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
var conf = config.InstantTimestamp;
if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {
var now = new Date();
var trans = conf.translations;
for (var i=0;i<trans.length;i++) {
newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
}
}
// TODO: use apply() instead of naming all args?
return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}
// you can override these in StyleSheet
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");
//}}}
Items de Quest:
*[[Daga de Obsidiana]]
*[[Boleadora de Alta Hechicería]]
*[[Varita]]
!¿Qué es JuRoCEpedia?
JuRoCEpedia es un archivo que permite acceder de forma rápida y breve a los diferentes tipos de información que pueden ayudar al jugador de JuRoCE a consultar la información sobre éste juego en particular.
Incorpora información de:
*Las compilaciones de la historia.
*Referencias a las reglas de SAGA y la historia de DragonLance.
Desde el punto de vista técnico, JuRoCEpedia es un archivo construído con tecnología [[TiddlyWiki]].
Humano marino veterano
[img[http://xa.yimg.com/kq/groups/10154695/sn/1003941610/name/n_a]]
Humana de orígen desconocido.
Tiene extrañas visiones y presentimientos, así como arranques de ánimo en los que demuestra un manejo excepcional de la espada, y agilidad para combate.
[img[http://xa.yimg.com/kq/groups/10154695/sn/1682062418/name/n_a]]
Lago en las adyacencias de [[Solace]]
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second. So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only. Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{
var MINS = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
if (!config.lessBackups) {
config.lessBackups = {
// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
modes: [
["YYYY", 365*DAYS], // one per year for ever
["MMM", 31*DAYS], // one per month
["ddd", 7*DAYS], // one per weekday
//["d0DD", 1*DAYS], // one per day of month
["h0hh", 24*HOURS], // one per hour
["m0mm", 1*HOURS], // one per minute
["s0ss", 1*MINS], // one per second
["latest",0] // always keep last version. (leave this).
]
};
}
window.getSpecialBackupPath = function(backupPath) {
var now = new Date();
var modes = config.lessBackups.modes;
for (var i=0;i<modes.length;i++) {
// the filename we will try
var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')
// open the file
try {
if (config.browser.isIE) {
var fsobject = new ActiveXObject("Scripting.FileSystemObject")
var fileExists = fsobject.FileExists(specialBackupPath);
if (fileExists) {
var fileObject = fsobject.GetFile(specialBackupPath);
var modDate = new Date(fileObject.DateLastModified).valueOf();
}
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(specialBackupPath);
var fileExists = file.exists();
if (fileExists) {
var modDate = file.lastModifiedTime;
}
}
}
catch(e) {
// give up
return backupPath;
}
// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
// June file on disk that's more than an month old then it must be stale so overwrite
// note that "latest" should be always written because the expiration period is zero (see above)
var expiry = new Date(modDate + modes[i][1]);
if (!fileExists || now > expiry)
return specialBackupPath;
}
}
// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}
//}}}
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
MPTW is a distribution or edition of TiddlyWiki that includes a standard TiddlyWiki core packaged with some plugins designed to improve usability and provide a better way to organise your information. For more information see http://mptw.tiddlyspot.com/.
[[Inicio]]
[[Diario de Campaña]]
[[journal]]
[[Manos del Destino]]
[[Personajes]]
[[Geografía]]
[[Razas]]
[[Organizaciones y Sectas]]
[[Items]]
[[Galería]]
[[Ayuda]]
Yelmos 9
Yelmos 6
Escudos 8
Lunas 5
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300
This is in progress. Help appreciated.
Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;
config.options.chkHttpReadOnly = false; // means web visitors can experiment with your site by clicking edit
readOnly = false; // needed because the above doesn't work any more post 2.1 (??)
showBackstage = true; // show backstage for same reason
config.options.chkInsertTabs = true; // tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = ""; // don't need message when a tiddler doesn't exist
config.views.editor.defaultText = ""; // don't need message when creating a new tiddler
config.options.chkSaveBackups = true; // do save backups
config.options.txtBackupFolder = 'twbackup'; // put backups in a backups folder
config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file
config.mptwVersion = "2.5.3";
config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};
if (config.options.txtTheme == '')
config.options.txtTheme = 'MptwTheme';
// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";
// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see AdvancedOptions)/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");
// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';
//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|
!StyleSheet
/*{{{*/
[[MptwTheme##StyleSheet]]
.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }
.tab {
-moz-border-radius-topleft: 0.5em;
-moz-border-radius-topright: 0.5em;
}
#topMenu {
-moz-border-radius-bottomleft: 2em;
-moz-border-radius-bottomright: 2em;
}
/*}}}*/
Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)
!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
[[MptwTheme##ViewTemplateToolbar]]
<div class="tagglyTagged" macro="tags"></div>
<div class='titleContainer'>
<span class='title' macro='view title'></span>
<span macro="miniTag"></span>
</div>
<div class='subtitle'>
(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
by <span macro='view modifier link'></span>)
<!--
(<span macro='message views.wikified.createdPrompt'></span>
<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
-->
</div>
<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
<div class='viewer' macro='view text wikified'></div>
</div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
<!--}}}-->
!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
<span macro="showWhenTagged systemConfig">
<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
</span>
<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
<span style="padding:1em;"></span>
<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
</div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->
!StyleSheet
/*{{{*/
/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
background: [[ColorPalette::TertiaryLight]];
}
/* sexy colours and font for the header */
.headerForeground {
color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
color: [[ColorPalette::PrimaryMid]];
}
/* separate the top menu parts */
.headerForeground, .headerShadow {
padding: 1em 1em 0;
}
.headerForeground, .headerShadow {
font-family: 'Trebuchet MS' sans-serif;
font-weight:bold;
}
.headerForeground .siteSubtitle {
color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
color: [[ColorPalette::PrimaryMid]];
}
/* make shadow go and down right instead of up and left */
.headerShadow {
left: 1px;
top: 1px;
}
/* prefer monospace for editing */
.editor textarea, .editor input {
font-family: 'Consolas' monospace;
background-color:[[ColorPalette::TertiaryPale]];
}
/* sexy tiddler titles */
.title {
font-size: 250%;
color: [[ColorPalette::PrimaryLight]];
font-family: 'Trebuchet MS' sans-serif;
}
/* more subtle tiddler subtitle */
.subtitle {
padding:0px;
margin:0px;
padding-left:1em;
font-size: 90%;
color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
color: [[ColorPalette::TertiaryMid]];
}
/* a little bit of extra whitespace */
.viewer {
padding-bottom:3px;
}
/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
background-color: transparent;
color: [[ColorPalette::Foreground]];
}
/* give tiddlers 3d style border and explicit background */
.tiddler {
background: [[ColorPalette::Background]];
border-right: 2px [[ColorPalette::TertiaryMid]] solid;
border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
margin-bottom: 1em;
padding:1em 2em 2em 1.5em;
}
/* make options slider look nicer */
#sidebarOptions .sliderPanel {
border:solid 1px [[ColorPalette::PrimaryLight]];
}
/* the borders look wrong with the body background */
#sidebar .button {
border-style: none;
}
/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
display:inline;
}
/* horizontal main menu stuff */
#displayArea {
margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
display: none;
}
#topMenu {
background: [[ColorPalette::PrimaryMid]];
color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
margin-left: 0.5em;
margin-right: 0.5em;
padding-left: 3px;
padding-right: 3px;
color: [[ColorPalette::PrimaryPale]];
font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
background: [[ColorPalette::PrimaryDark]];
}
/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
visibility:hidden;
}
.selected .toolbar {
visibility:visible;
}
/* experimental. this is a little borked in IE7 with the button
* borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }
/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
display:inline;
}
/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
padding:0.5em;
display:block;
}
#sidebarOptions .sliderPanel .select br {
display:none;
}
/* make it print a little cleaner */
@media print {
#topMenu {
display: none ! important;
}
/* not sure if we need all the importants */
.tiddler {
border-style: none ! important;
margin:0px ! important;
padding:0px ! important;
padding-bottom:2em ! important;
}
.tagglyTagging .button, .tagglyTagging .hidebutton {
display: none ! important;
}
.headerShadow {
visibility: hidden ! important;
}
.tagglyTagged .quickopentag, .tagged .quickopentag {
border-style: none ! important;
}
.quickopentag a.button, .miniTag {
display: none ! important;
}
}
/* get user styles specified in StyleSheet */
[[StyleSheet]]
/*}}}*/
|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|
!PageTemplate
<!--{{{-->
<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
<div id='sidebarOptions'>
<div refresh='content' tiddler='SideBarOptions'></div>
<div style="margin-left:0.1em;"
macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
</div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
For upgrading. See [[ImportTiddlers]].
URL: http://mptw.tiddlyspot.com/upgrade.html
/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{
// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';
// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';
// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';
// uncomment to disable 'new means new' functionality for the new journal macro
//config.newMeansNewForJournalsToo = false;
//}}}
!¿Cómo navegar por SAGApedia?
*Haga click en los hipervínculos (links) o partes del menú superior progresivamente.
*Cada vez que abra un nuevo micro-contenido luego de hacer click, el micro-contenido se abrirá ahondando en detalles. El micro-contenido anterior no desaparecerá de su pantalla sino que se mantendrá abierto.
*No es de utilidad hacer uso del botón "Atrás" o "Back" del navegador de internet. En su lugar, debe hacer uso de los controles del micro-contenido (texto gris que aparece a la derecha y arriba en cada micro-contenido al pasar el ratón por esa esquina). Las opciones por defecto son:
**{{{close}}}: cerrará el micro-contenido al cuál pertenece.
**{{{close others}}}: cerrará todos los micro-contenidos excepto ese al cuál pertenece.
**{{{edit}}}: activará un modo de edición del contenido del tiddler. Para quien consulta JuRoCEpedia no es de utilidad, pues no se pueden guardar los cambios.
**{{{delete}}}: borra el micro-contenido, pero sin la permisología correcta, no tiene efecto debido a que no se pueden guardar los cambios.
**{{{more}}}: hace disponibles [[otros controles]] del micro-contenido.
**{{{new here}}}: hace posible crear un nuevo micro-contenido. No es de utilidad para quién consulta la JuRoCEpedia.
**{{{new journal}}}: hace posible crear un nuevo micro-contenido con título igual a la fecha del día de creación. No es de utilidad para quién consulta la JuRoCEpedia.
*Si hace doble-click, intencionalmente o no, sobre el contenido de un micro-contenido (tiddler), este cambiará a modo de edición. Sin embargo, si usted no está autorizado, no podrá modificar permanentemente ningún micro-contenido. Para salir de modo edición, use los controles del micro-contenido:
**{{{done/close}}} o {{{cancel/close}}}: para salir del modo de edición y cerrar el micro-contenido. Si eligió {{{cancel/close}}}, se descartará cualquier cambio realizado en la edición.
**{{{close others}}}: en esta implementación este control //no tendrá efectos visibles// para el usuario.
**{{{done}}}: para salir del modo de edición, manteniendo el micro-contenido en pantalla.
Es el sitio donde inician la crónica los llamados [[Caravaneros]].
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
},
newJournalHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
}
});
//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{
// change this or set config.newMeansNewForJournalsToo it in MptwUuserConfigPlugin
if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;
String.prototype.getNextFreeName = function() {
var numberRegExp = / \(([0-9]+)\)$/;
var match = numberRegExp.exec(this);
if (match) {
var num = parseInt(match[1]) + 1;
return this.replace(numberRegExp," ("+num+")");
}
else {
return this + " (1)";
}
}
config.macros.newTiddler.checkForUnsaved = function(newName) {
var r = false;
story.forEachTiddler(function(title,element) {
if (title == newName)
r = true;
});
return r;
}
config.macros.newTiddler.getName = function(newName) {
while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
newName = newName.getNextFreeName();
return newName;
}
config.macros.newTiddler.onClickNewTiddler = function()
{
var title = this.getAttribute("newTitle");
if(this.getAttribute("isJournal") == "true") {
title = new Date().formatString(title.trim());
}
// ---- these three lines should be the only difference between this and the core onClickNewTiddler
if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
title = config.macros.newTiddler.getName(title);
var params = this.getAttribute("params");
var tags = params ? params.split("|") : [];
var focus = this.getAttribute("newFocus");
var template = this.getAttribute("newTemplate");
var customFields = this.getAttribute("customFields");
if(!customFields && !store.isShadowTiddler(title))
customFields = String.encodeHashMap(config.defaultCustomFields);
story.displayTiddler(null,title,template,false,null,null);
var tiddlerElem = story.getTiddler(title);
if(customFields)
story.addCustomFields(tiddlerElem,customFields);
var text = this.getAttribute("newText");
if(typeof text == "string")
story.getTiddlerField(title,"text").value = text.format([title]);
for(var t=0;t<tags.length;t++)
story.setTiddlerTag(title,tags[t],+1);
story.focusTiddler(title,focus);
return false;
};
//}}}
*[[Caballeros de Takhisis]]
**[[Ritchgard Blackmore]]
*[[Legión de Steel]]
**[[Gwydeon Ragnarok]]
*[[Alta Hechicería]]
**[[Osbearn Stronghelm]]
- Olvida eso. - Puso su brazo alrededor de ella y se incorporó, permitiendo que se apoyara en él. - Vamos a ubicar, primero, un sitio donde poner los heridos. Y a ver qué podemos hacer allí. No te alejes de mi. Seguro que salvar a algunas personas en desgracia nos hace sentir mejor, ¿Tú no crees? El caballero de takhisis continuaba ergido, con ambas manos sobre el pomo de la espada, cuya punta aún hería el pasto. Su compañero, derribado de su caballo por la maniobra del kender, se incorporó y se
subió a duras penas sobre uno de los caballos que con nerviosismo llevaba una carreta a la deriva. Cortaba con su espada los aparejos que mantenían unidos al caballo y la carreta.
----
El elfo que había herido de muerte a Kieran Carr esperaba sobre su caballo, sin ver claramente nada de lo que ocurría a su alrededor, pues sus ojos permanecían cubiertos de sangre. Lentamente sacó una daga de hoja negra. Andar a ciegas, en medio de sonidos de batalla no era nada agradable, y buscaba sentirse menos indefenso. Espoleó su
caballo levemente buscando alejarse de la refriega. Había sentido tres objetos pasar muy cerca de él, uno de ellos silvando en el viento, como si girara muy rápidamente, y eso no podía ser nada bueno, fuera él la diana, o no.
-----
Tarasal iba en busca de las elfas cuando fue distraído por dos cosas (normalmente las distracciones son parte de mundo, pero estas gritaron más duro en el concierto de percepciones). Escuchó, por un lado, un murmullo de caballos que se escuchaba venir desde el norte. Por otro, empezó a sentir un sobrecogimiento. Sentía la muerte a todo su alrededor, pero empezó a sentir algo siniestro viniendo del río, como si las almas allí se perdieran, en lugar de seguir los caminos que usualmente toman.
Aelensar podía ver como el anciano caía de su caballo. Iba a comentárselo a la elfa, pero se detuvo cuando la escuchó gemir brevemente y aguantar la respiración, su mirada era una mirada al mismo tiempo de nervio, curiosidad y terror.
Entre los incendios que se habían iniciado con el combate, Adaline había visto como rápidamente el pequeño punto caliente que veía entre las flamas parecía volar hacia ella, describiendo un arco en el aire.
Con la espalda contra el primer árbol cercano a Argento, Gwydeon se concentró en escuchar. Su mano, casi por instinto, tomo la empuñadura del gran cuchillo que pendía de su cintura. Sus oídos se enfocaron en separar los ruidos del bosque y escuchar eso que a Argento había alarmado.
El medio-elfo escuchó claramente los pasos de lo que parecían dos personas, en el extremo opuesto del claro. Una de ellas se movía con más ligereza que la otra, quizá podría tratarse de un elfo.
Zasthia, a su lado, estaba totalmente quieta, mirando entre el matorral, que se confundía con los matices de su cabello y su rostro. Era claro que ya estaba viendo al par de indivíduos.
Poco a poco les empezó a llegar un olor a muerte, a rosas, a clavos de especie, a putrefacción de cuevas y a vinagre. La última vez que Hechicero Legionario había percibido esa mezcla de olores, éstos emanaban de una tersa túnica negra en la Torre de Alta Hechicería de Wayreth.
Sin embargo, esto carecía de sentido, pues desde hacía 30 años ningún hechicero había logrado volver a realizar conjuros de Alta Hechicería, a través del uso de la lengua arcana, acompañada de precisos gestos y muy específicos componentes materiales. Percibir ese olor era para Gwydeon como un viaje en el tiempo.
“Nadie carga excrementos de murciélago en un bolsillo por gusto” - pensó el Legionario. En la antígüedad se llevaban por necesidad. Hoy en día sólo podrían llevarse por un desquicio anacrónico...
...a menos que!...
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
var diff = (((new Date()).getTime() - this.getTime()) / 1000);
var day_diff = Math.floor(diff / 86400);
if (isNaN(day_diff)) return "";
else if (diff < 0) return "in the future";
else if (diff < 60) return "just now";
else if (diff < 120) return "1 minute ago";
else if (diff < 3600) return Math.floor(diff/60) + " minutes ago";
else if (diff < 7200) return "1 hour ago";
else if (diff < 86400) return Math.floor(diff/3600) + " hours ago";
else if (day_diff == 1) return "Yesterday";
else if (day_diff < 7) return day_diff + " days ago";
else if (day_diff < 14) return "a week ago";
else if (day_diff < 31) return Math.ceil(day_diff/7) + " weeks ago";
else if (day_diff < 62) return "a month ago";
else if (day_diff < 365) return "about " + Math.ceil(day_diff/31) + " months ago";
else if (day_diff < 730) return "a year ago";
else return Math.ceil(day_diff/365) + " years ago";
}
Date.prototype.formatString_orig_mptw = Date.prototype.formatString;
Date.prototype.formatString = function(template) {
return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}
// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)';
config.mptwDateFormat = 'pppp';
//}}}
- 1ero de Enero, año 31 Saer Cataclius.
"Yo lo veo todo.
Soy el Heraldo, cantor de canciones, contador de historias. He visto ocurrir muchas cosas a lo largo y ancho del continente de Ansalon, y he aprendido aún más de lo que he visto. Así, ahora me detengo, pues a medida que el atardecer trae oscuridad y luz de estrellas a este
día, entramos en lo que los maestros del tiempo llamarían la Era de los Mortales - La Quinta Era de Krynn.
De las sombras de estas tierras desoladas por guerras, temibles y enormes dragones han emergido para subyugar a las razas que dan vida y sentido a Krynn. Los dioses se han ido sin dejar a nadie para contener a estas fantásticas criaturas del mal, más poderosas que cualquiera que hayamos conocido. Y así, he venido a hacer lo que debo en este importante momento. Soy un hombre sin memorias propias - mi mente sólo conoce las memorias del mundo. Quizá dentro de las palabras de mis historias yace el secreto que permitirá que haya un nuevo amanecer en Ansalon.
Treinta años atrás, el Caos vino, literalmente, manifestándose ante nuestros ojos, la encarnación de la furia de aquel que constituye la antítesis del órden de las cosas. Un malentendido aflojó las cadenas que reprimían a su malévolo poder, de cuya misma esencia los dioses forjaron el mundo. Una vez libre, Caos desafió el tesoro más querido de los dioses: el mundo de Krynn. A través del poder de la magia, en ese verano, al que han optado por llamar "el Verano de Caos", todos los hijos de los dioses se juntaron y forzaron la huída de Caos. Éste último aceptó retirarse, pero no sin antes ordenar a los dioses que
lo siguiesen. Esa fue su última afrenta en Krynn: la de apostar con los dioses, a la autodestrucción de ese Krynn sin dioses que dejaban al final del caluroso verano.
Ahora, más que nunca en la historia de Krynn, los mortales se encuentran sólos. Al irse los dioses, se han cerrado las puertas a su más preciado regalo: la magia. Sin ella, los mortales no son competencia de los primeros hijos de la diosa del Mal, la llamada "Reina de la Oscuridad". Ellos, los dragones, son ahora libres de gobernar. Desde más allá de los mares conocidos en Ansalon viene una raza de Grandes Dragones, liderizados por Malystryx la Roja. En una violenta Purga de Dragones, estos grandes y antiguos
dragones lucharon entre si, para reclamar las tierras de Ansalon como suyas. En el amanecer de esta nueva era, los mortales lucharon una batalla desesperada para sobrevivir a las luchas de los colosos hijos de Takhisis, quienes parecían ignorar, o desestimar, la destrucción que causaban en el mundo.
Pero a pesar de que los dioses nos han abandonado, yo digo que aún hay esperanza. Nuestro mundo no fue salvado de Caos para ser dado a los dragones. No fue creado para ellos. Ellos no le pertenecen. Yo percibo que se acerca un momento crucial, la luz del Bien brilla entre los humos del velo oscuro del reinado del Mal. Los nuevos hechiceros han recurrido a la forma más antígua y primigenia de las
formas de magia, para restaurar mucha de la antigua magia de nuestro mundo. Nuestra Ciudadela de la Luz nos enseña a mirar en nuestro interior para encontrar el poder de nuestros propios Corazones. Nuestros espíritus, dicen ellos, son las creaciones más valiosas de los Dioses, y en ellos reside la más especial de las formas de magia.
Los Caballeros de Solamnia continuan dando ejemplo y aliento a las fuerzas del Bien, la Legión de Steel lucha por la justicia, enseñando discernimiento a las mentes de juicios demasiado veloces, y practicidad a las mentes de juicios lentos. Y aún hay más. Los Dragones Metálicos, los primeros hijos del dios del Bien, Paladín el Guerrero Plateado, yacen escondidos, trabajando aún en el mundo.
Esta es una era de descubrimientos, una era de aventuras, un tiempo de héroes, un momento de esperanza. Levántate, amada Krynn, que ha llegado el amanecer de la Quinta Era, la de los Mortales. Conoced esto, gentes de Ansalon: el Bien prevalecerá...
...sólo depende de nosotros."
El Heraldo
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {
dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?
createTagButton: function(place,tag,excludeTiddler) {
// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
var splitTag = tag.split("|");
var pretty = tag;
if (splitTag.length == 2) {
tag = splitTag[1];
pretty = splitTag[0];
}
var sp = createTiddlyElement(place,"span",null,"quickopentag");
createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tag]),onClickTag);
theTag.setAttribute("tag",tag);
if (excludeTiddler)
theTag.setAttribute("tiddler",excludeTiddler);
return(theTag);
},
miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tagged = store.getTaggedTiddlers(tiddler.title);
if (tagged.length > 0) {
var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
theTag.setAttribute("tag",tiddler.title);
theTag.className = "miniTag";
}
},
allTagsHandler: function(place,macroName,params) {
var tags = store.getTags(params[0]);
var filter = params[1]; // new feature
var ul = createTiddlyElement(place,"ul");
if(tags.length == 0)
createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
for(var t=0; t<tags.length; t++) {
var title = tags[t][0];
if (!filter || (title.match(new RegExp('^'+filter)))) {
var info = getTiddlyLinkInfo(title);
var theListItem =createTiddlyElement(ul,"li");
var theLink = createTiddlyLink(theListItem,tags[t][0],true);
var theCount = " (" + tags[t][1] + ")";
theLink.appendChild(document.createTextNode(theCount));
var theDropDownBtn = createTiddlyButton(theListItem," " +
config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
theDropDownBtn.setAttribute("tag",tags[t][0]);
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
" { border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
" { margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
" /* looks better in right justified main menus */",
" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }",
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
""].join("\n"),
init: function() {
// we fully replace these builtins. can't hijack them easily
window.createTagButton = this.createTagButton;
config.macros.allTags.handler = this.allTagsHandler;
config.macros.miniTag = { handler: this.miniTagHandler };
config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
store.addNotification("QuickOpenTagStyles",refreshStyles);
}
}
config.quickOpenTag.init();
//}}}
*[[Elfos|http://sagapedia.tiddlyspot.com/#Elfos]]
**[[Adaline]] (Silvanesti)
*[[Humanos|http://sagapedia.tiddlyspot.com/#Humanos]]
**[[Aelensar Lathe]]
**[[Argento D´Alessandro]]
**[[Gregarious Hilltop]]
**[[Kieran Carr]]
**[[La Harapienta]]
*[[Medio-elfos|http://sagapedia.tiddlyspot.com/#Medio-Elfos]]
**[[Gwydeon Ragnarok]]
*[[Kenders|http://sagapedia.tiddlyspot.com/#Kenders]]
**[[Tarasal Pocketfinder]]
*Raza desconocida
**[[Osbearn Stronghelm]]
**[[Ritchgard Blackmore]]
**[[Zasthia Lyenn]]
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {
prompts: {
rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
remove: "Remove the tag '%0' from %1 tidder%2?"
},
removeTag: function(tag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
store.setTiddlerTag(tiddlers[i].title,false,tag);
}
store.resumeNotifications();
store.notifyAll();
},
renameTag: function(oldTag,newTag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
store.setTiddlerTag(tiddlers[i].title,true,newTag); // add new
}
store.resumeNotifications();
store.notifyAll();
},
storeMethods: {
saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,
saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
if (title != newTitle) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0) {
// then we are renaming a tag
if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
config.renameTags.renameTag(title,newTitle,tagged);
if (!this.tiddlerExists(title) && newBody == "")
// dont create unwanted tiddler
return null;
}
}
return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
},
removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,
removeTiddler: function(title) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0)
if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
config.renameTags.removeTag(title,tagged);
return this.removeTiddler_orig_renameTags(title);
}
},
init: function() {
merge(TiddlyWiki.prototype,this.storeMethods);
}
}
config.renameTags.init();
//}}}
Caballero del Lirio Negro de la Orden de Takhisis.
Está en la caravana, pero nadie le ha descubierto.
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{
saveCloseTiddler: {
text: 'done/close',
tooltip: 'Save changes to this tiddler and close it',
handler: function(ev,src,title) {
var closeTitle = title;
var newTitle = story.saveTiddler(title,ev.shiftKey);
if (newTitle)
closeTitle = newTitle;
return config.commands.closeTiddler.handler(ev,src,closeTitle);
}
},
cancelCloseTiddler: {
text: 'cancel/close',
tooltip: 'Undo changes to this tiddler and close it',
handler: function(ev,src,title) {
// the same as closeTiddler now actually
return config.commands.closeTiddler.handler(ev,src,title);
}
}
});
//}}}
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{
config.macros.selectTheme = {
label: {
selectTheme:"select theme",
selectPalette:"select palette"
},
prompt: {
selectTheme:"Select the current theme",
selectPalette:"Select the current palette"
},
tags: {
selectTheme:'systemTheme',
selectPalette:'systemPalette'
}
};
config.macros.selectTheme.handler = function(place,macroName)
{
var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
// want to handle palettes and themes with same code. use mode attribute to distinguish
btn.setAttribute('mode',macroName);
};
config.macros.selectTheme.onClick = function(ev)
{
var e = ev ? ev : window.event;
var popup = Popup.create(this);
var mode = this.getAttribute('mode');
var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
// for default
if (mode == "selectPalette") {
var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',"(default)");
btn.setAttribute('mode',mode);
}
for(var i=0; i<tiddlers.length; i++) {
var t = tiddlers[i].title;
var name = store.getTiddlerSlice(t,'Name');
var desc = store.getTiddlerSlice(t,'Description');
var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',t);
btn.setAttribute('mode',mode);
}
Popup.show();
return stopEvent(e);
};
config.macros.selectTheme.onClickTheme = function(ev)
{
var mode = this.getAttribute('mode');
var theme = this.getAttribute('theme');
if (mode == 'selectTheme')
story.switchTheme(theme);
else // selectPalette
config.macros.selectTheme.updatePalette(theme);
return false;
};
config.macros.selectTheme.updatePalette = function(title)
{
if (title != "") {
store.deleteTiddler("ColorPalette");
if (title != "(default)")
store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
config.options.txtUserName,undefined,"");
refreshAll();
if(config.options.chkAutoSave)
saveChanges(true);
}
};
config.macros.applyTheme = {
label: "apply",
prompt: "apply this theme or palette" // i'm lazy
};
config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var useTiddler = params[0] ? params[0] : tiddler.title;
var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
btn.setAttribute('theme',useTiddler);
btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}
config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;
config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};
//}}}
guía de referencia rápida de JuRoCE
Es el sitio donde inician la crónica los llamados [[Obsidian Riders]] (buscadores de obsidiana)
<<tabs txtMoreTab "Tags" "All Tags" TabAllTags "Miss" "Missing tiddlers" TabMoreMissing "Orph" "Orphaned tiddlers" TabMoreOrphans "Shad" "Shadowed tiddlers" TabMoreShadowed>>
<<allTags excludeLists [a-z]>>
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 9828 $)|
|Date:|$Date: 2009-06-03 21:38:41 +1000 (Wed, 03 Jun 2009) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
merge(String.prototype,{
parseTagExpr: function(debug) {
if (this.trim() == "")
return "(true)";
var anyLogicOp = /(!|&&|\|\||\(|\))/g;
var singleLogicOp = /^(!|&&|\|\||\(|\))$/;
var spaced = this.
// because square brackets in templates are no good
// this means you can use [(With Spaces)] instead of [[With Spaces]]
replace(/\[\(/g," [[").
replace(/\)\]/g,"]] ").
// space things out so we can use readBracketedList. tricky eh?
replace(anyLogicOp," $1 ");
var expr = "";
var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!
for (var i=0;i<tokens.length;i++)
if (tokens[i].match(singleLogicOp))
expr += tokens[i];
else
expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think
if (debug)
alert(expr);
return '('+expr+')';
}
});
merge(TiddlyWiki.prototype,{
getTiddlersByTagExpr: function(tagExpr,sortField) {
var result = [];
var expr = tagExpr.parseTagExpr();
store.forEachTiddler(function(title,tiddler) {
if (eval(expr))
result.push(tiddler);
});
if(!sortField)
sortField = "title";
result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
return result;
}
});
config.taggly = {
// for translations
lingo: {
labels: {
asc: "\u2191", // down arrow
desc: "\u2193", // up arrow
title: "title",
modified: "modified",
created: "created",
show: "+",
hide: "-",
normal: "normal",
group: "group",
commas: "commas",
sitemap: "sitemap",
numCols: "cols\u00b1", // plus minus sign
label: "Tagged as '%0':",
exprLabel: "Matching tag expression '%0':",
excerpts: "excerpts",
descr: "descr",
slices: "slices",
contents: "contents",
sliders: "sliders",
noexcerpts: "title only",
noneFound: "(none)"
},
tooltips: {
title: "Click to sort by title",
modified: "Click to sort by modified date",
created: "Click to sort by created date",
show: "Click to show tagging list",
hide: "Click to hide tagging list",
normal: "Click to show a normal ungrouped list",
group: "Click to show list grouped by tag",
sitemap: "Click to show a sitemap style list",
commas: "Click to show a comma separated list",
numCols: "Click to change number of columns",
excerpts: "Click to show excerpts",
descr: "Click to show the description slice",
slices: "Click to show all slices",
contents: "Click to show entire tiddler contents",
sliders: "Click to show tiddler contents in sliders",
noexcerpts: "Click to show entire title only"
},
tooDeepMessage: "* //sitemap too deep...//"
},
config: {
showTaggingCounts: true,
listOpts: {
// the first one will be the default
sortBy: ["title","modified","created"],
sortOrder: ["asc","desc"],
hideState: ["show","hide"],
listMode: ["normal","group","sitemap","commas"],
numCols: ["1","2","3","4","5","6"],
excerpts: ["noexcerpts","excerpts","descr","slices","contents","sliders"]
},
valuePrefix: "taggly.",
excludeTags: ["excludeLists","excludeTagging"],
excerptSize: 50,
excerptMarker: "/%"+"%/",
siteMapDepthLimit: 25
},
getTagglyOpt: function(title,opt) {
var val = store.getValue(title,this.config.valuePrefix+opt);
return val ? val : this.config.listOpts[opt][0];
},
setTagglyOpt: function(title,opt,value) {
// create it silently if it doesn't exist
if (!store.tiddlerExists(title)) {
store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
// <<tagglyTagging expr:"...">> creates a tiddler to store its display settings
// Make those tiddlers less noticeable by tagging as excludeSearch and excludeLists
// Because we don't want to hide real tags, check that they aren't actually tags before doing so
// Also tag them as tagglyExpression for manageability
// (contributed by RA)
if (!store.getTaggedTiddlers(title).length) {
store.setTiddlerTag(title,true,"excludeSearch");
store.setTiddlerTag(title,true,"excludeLists");
store.setTiddlerTag(title,true,"tagglyExpression");
}
}
// if value is default then remove it to save space
return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);
},
getNextValue: function(title,opt) {
var current = this.getTagglyOpt(title,opt);
var pos = this.config.listOpts[opt].indexOf(current);
// supposed to automagically don't let cols cycle up past the number of items
// currently broken in some situations, eg when using an expression
// lets fix it later when we rewrite for jquery
// the columns thing should be jquery table manipulation probably
var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
var newPos = (pos + 1) % limit;
return this.config.listOpts[opt][newPos];
},
toggleTagglyOpt: function(title,opt) {
var newVal = this.getNextValue(title,opt);
this.setTagglyOpt(title,opt,newVal);
},
createListControl: function(place,title,type) {
var lingo = config.taggly.lingo;
var label;
var tooltip;
var onclick;
if ((type == "title" || type == "modified" || type == "created")) {
// "special" controls. a little tricky. derived from sortOrder and sortBy
label = lingo.labels[type];
tooltip = lingo.tooltips[type];
if (this.getTagglyOpt(title,"sortBy") == type) {
label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
onclick = function() {
config.taggly.toggleTagglyOpt(title,"sortOrder");
return false;
}
}
else {
onclick = function() {
config.taggly.setTagglyOpt(title,"sortBy",type);
config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
return false;
}
}
}
else {
// "regular" controls, nice and simple
label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
onclick = function() {
config.taggly.toggleTagglyOpt(title,type);
return false;
}
}
// hide button because commas don't have columns
if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
},
makeColumns: function(orig,numCols) {
var listSize = orig.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize = colSize;
var lowerColsize = colSize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
upperColsize = Math.floor(colSize) + 1;
lowerColsize = Math.floor(colSize);
}
var output = [];
var c = 0;
for (var j=0;j<numCols;j++) {
var singleCol = [];
var thisSize = j < remainder ? upperColsize : lowerColsize;
for (var i=0;i<thisSize;i++)
singleCol.push(orig[c++]);
output.push(singleCol);
}
return output;
},
drawTable: function(place,columns,theClass) {
var newTable = createTiddlyElement(place,"table",null,theClass);
var newTbody = createTiddlyElement(newTable,"tbody");
var newTr = createTiddlyElement(newTbody,"tr");
for (var j=0;j<columns.length;j++) {
var colOutput = "";
for (var i=0;i<columns[j].length;i++)
colOutput += columns[j][i];
var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
wikify(colOutput,newTd);
}
return newTable;
},
createTagglyList: function(place,title,isTagExpr) {
switch(this.getTagglyOpt(title,"listMode")) {
case "group": return this.createTagglyListGrouped(place,title,isTagExpr); break;
case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
}
},
getTaggingCount: function(title,isTagExpr) {
// thanks to Doug Edmunds
if (this.config.showTaggingCounts) {
var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
if (tagCount > 0)
return " ("+tagCount+")";
}
return "";
},
getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
},
getExcerpt: function(inTiddlerTitle,title,indent) {
if (!indent)
indent = 1;
var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
var t = store.getTiddler(title);
if (t && displayMode == "excerpts") {
var text = t.text.replace(/\n/," ");
var marker = text.indexOf(this.config.excerptMarker);
if (marker != -1) {
return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
}
else if (text.length < this.config.excerptSize) {
return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
}
else {
return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
}
}
else if (t && displayMode == "contents") {
return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
}
else if (t && displayMode == "sliders") {
return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
}
else if (t && displayMode == "descr") {
var descr = store.getTiddlerSlice(title,'Description');
return descr ? " {{excerpt{" + descr + "}}}" : "";
}
else if (t && displayMode == "slices") {
var result = "";
var slices = store.calcAllSlices(title);
for (var s in slices)
result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
return result ? "\n{{excerpt excerptIndent{\n" + result + "}}}" : "";
}
return "";
},
notHidden: function(t,inTiddler) {
if (typeof t == "string")
t = store.getTiddler(t);
return (!t || !t.tags.containsAny(this.config.excludeTags) ||
(inTiddler && this.config.excludeTags.contains(inTiddler)));
},
// this is for normal and commas mode
createTagglyListNormal: function(place,title,useCommas,isTagExpr) {
var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);
if (this.getTagglyOpt(title,"sortOrder") == "desc")
list = list.reverse();
var output = [];
var first = true;
for (var i=0;i<list.length;i++) {
if (this.notHidden(list[i],title)) {
var countString = this.getTaggingCount(list[i].title);
var excerpt = this.getExcerpt(title,list[i].title);
if (useCommas)
output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
else
output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");
first = false;
}
}
return this.drawTable(place,
this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
useCommas ? "commas" : "normal");
},
// this is for the "grouped" mode
createTagglyListGrouped: function(place,title,isTagExpr) {
var sortBy = this.getTagglyOpt(title,"sortBy");
var sortOrder = this.getTagglyOpt(title,"sortOrder");
var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
if (sortOrder == "desc")
list = list.reverse();
var leftOvers = []
for (var i=0;i<list.length;i++)
leftOvers.push(list[i].title);
var allTagsHolder = {};
for (var i=0;i<list.length;i++) {
for (var j=0;j<list[i].tags.length;j++) {
if (list[i].tags[j] != title) { // not this tiddler
if (this.notHidden(list[i].tags[j],title)) {
if (!allTagsHolder[list[i].tags[j]])
allTagsHolder[list[i].tags[j]] = "";
if (this.notHidden(list[i],title)) {
allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";
leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
}
}
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
var sortHelper = function(a,b) {
if (a == b) return 0;
if (a < b) return -1;
return 1;
};
allTags.sort(function(a,b) {
var tidA = store.getTiddler(a);
var tidB = store.getTiddler(b);
if (sortBy == "title") return sortHelper(a,b);
else if (!tidA && !tidB) return 0;
else if (!tidA) return -1;
else if (!tidB) return +1;
else return sortHelper(tidA[sortBy],tidB[sortBy]);
});
var leftOverOutput = "";
for (var i=0;i<leftOvers.length;i++)
if (this.notHidden(leftOvers[i],title))
leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";
var output = [];
if (sortOrder == "desc")
allTags.reverse();
else if (leftOverOutput != "")
// leftovers first...
output.push(leftOverOutput);
for (var i=0;i<allTags.length;i++)
if (allTagsHolder[allTags[i]] != "")
output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);
if (sortOrder == "desc" && leftOverOutput != "")
// leftovers last...
output.push(leftOverOutput);
return this.drawTable(place,
this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
"grouped");
},
// used to build site map
treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {
var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);
if (sortOrder == "desc")
list.reverse();
var indent = "";
for (var j=0;j<depth;j++)
indent += "*"
var childOutput = "";
if (depth > this.config.siteMapDepthLimit)
childOutput += indent + this.lingo.tooDeepMessage;
else
for (var i=0;i<list.length;i++)
if (list[i].title != title)
if (this.notHidden(list[i].title,this.config.inTiddler))
childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);
if (depth == 0)
return childOutput;
else
return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
},
// this if for the site map mode
createTagglyListSiteMap: function(place,title,isTagExpr) {
this.config.inTiddler = title; // nasty. should pass it in to traverse probably
var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
return this.drawTable(place,
this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
"sitemap"
);
},
macros: {
tagglyTagging: {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var parsedParams = paramString.parseParams("tag",null,true);
var refreshContainer = createTiddlyElement(place,"div");
// do some refresh magic to make it keep the list fresh - thanks Saq
refreshContainer.setAttribute("refresh","macro");
refreshContainer.setAttribute("macroName",macroName);
var tag = getParam(parsedParams,"tag");
var expr = getParam(parsedParams,"expr");
if (expr) {
refreshContainer.setAttribute("isTagExpr","true");
refreshContainer.setAttribute("title",expr);
refreshContainer.setAttribute("showEmpty","true");
}
else {
refreshContainer.setAttribute("isTagExpr","false");
if (tag) {
refreshContainer.setAttribute("title",tag);
refreshContainer.setAttribute("showEmpty","true");
}
else {
refreshContainer.setAttribute("title",tiddler.title);
refreshContainer.setAttribute("showEmpty","false");
}
}
this.refresh(refreshContainer);
},
refresh: function(place) {
var title = place.getAttribute("title");
var isTagExpr = place.getAttribute("isTagExpr") == "true";
var showEmpty = place.getAttribute("showEmpty") == "true";
removeChildren(place);
addClass(place,"tagglyTagging");
var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
if (countFound > 0 || showEmpty) {
var lingo = config.taggly.lingo;
config.taggly.createListControl(place,title,"hideState");
if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
createTiddlyElement(place,"span",null,"tagglyLabel",
isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
config.taggly.createListControl(place,title,"title");
config.taggly.createListControl(place,title,"modified");
config.taggly.createListControl(place,title,"created");
config.taggly.createListControl(place,title,"listMode");
config.taggly.createListControl(place,title,"excerpts");
config.taggly.createListControl(place,title,"numCols");
config.taggly.createTagglyList(place,title,isTagExpr);
if (countFound == 0 && showEmpty)
createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
}
}
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
" margin-bottom:0.5em; }",
".tagglyTagging .indent1 { margin-left:3em; }",
".tagglyTagging .indent2 { margin-left:4em; }",
".tagglyTagging .indent3 { margin-left:5em; }",
".tagglyTagging .indent4 { margin-left:6em; }",
".tagglyTagging .indent5 { margin-left:7em; }",
".tagglyTagging .indent6 { margin-left:8em; }",
".tagglyTagging .indent7 { margin-left:9em; }",
".tagglyTagging .indent8 { margin-left:10em; }",
".tagglyTagging .indent9 { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
""].join("\n"),
init: function() {
merge(config.macros,this.macros);
config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
store.addNotification("TagglyTaggingStyles",refreshStyles);
}
};
config.taggly.init();
//}}}
/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin
// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed
***/
//{{{
config.formatters.unshift( {
name: "inlinesliders",
// match: "\\+\\+\\+\\+|\\<slider",
match: "\\<slider",
// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
handler: function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
wikify(lookaheadMatch[3],panel);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
},
onClickSlider : function(e) {
if(!e) var e = window.event;
var n = this.nextSibling;
n.style.display = (n.style.display=="none") ? "block" : "none";
return false;
}
});
//}}}
Kender con ciertas habilidades místicas.
Tiene una mascota llamada [[Penny]].
!¿Qué es un TiddlyWiki?
!!Descripción técnica
Es un wiki hecho en Javascript, en un solo fichero.
En la [[página oficial|http://www.tiddlywiki.com]] se define como “un bloc de notas web, reusable, personal y no-lineal“.
!!Descripción no-técnica
Un TW es un tipo de archivo que sirve para muchas cosas, y constantemente se le encuentran nuevos usos. Puede hacerse una presentación, un blog, un libro, una “base de datos”, un bloc de notas, una agenda, una lista de tareas pendientes, o mezclas de estas cosas. Todo queda incluído en un único archivo o fichero HTML.
En general, está relacionado con el tratamiento de pequeñas cantidades de información (textos) interconectadas, que reciben el nombre de "tiddlers" o "micro-contenidos".
!!Características
* Tiene un único fichero o archivo
* sintaxis wiki (como [[wikipedia|http://www.wikipedia.org]])
* micro-contenido (tiddlers)
* etiquetas
* busqueda integrada
* extensible
* sobre formato web
* y es software libre (BSD, Licencia de Código abierto)
!!Manejo del Archivo
Un archivo TiddlyWiki se descarga, se edita progresivamente, y puede ser guardado en el computador, en un pendrive USB, o en algún sitio web, y puedes ser enviado por correo electrónico.
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{
if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;
merge(config.macros,{
toggleTag: {
createIfRequired: true,
shortLabel: "[[%0]]",
longLabel: "[[%0]] [[%1]]",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tiddlerTitle = tiddler ? tiddler.title : '';
var tag = (params[0] && params[0] != '.') ? params[0] : "checked";
var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
label = (label == '-' ? '' : label); // dash means no label
var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
if (!store.tiddlerExists(title)) {
if (config.macros.toggleTag.createIfRequired) {
var content = store.getTiddlerText(title); // just in case it's a shadow
store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
}
else
return false;
}
if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
theTiddler.modified = new Date();
store.setTiddlerTag(title,this.checked,tag);
return true;
});
}
}
});
//}}}
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'jurocepedia';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
- 12 de Septiembre, año 32 Saer Cataclius, 6:45pm
Ningún fuego chisporroteaba de esa manera.
Tras subir a la elfa al caballo y espolear a este, Ael lo dirigió, sin mucha prisa pero sin pausa, hacia el otro caballo que había visto, el que llevaba al viejo sobre él, mientras con la vista recorría el campo de batalla, reconociendo la zona en busca de heridos o emboscadas.
"Apurad ya el paso del animal!" Le dijo Adaline al humano, lamentando no poder guiar ella misma las riendas de la bestia. "Debemos alejarnos de las flamas cuanto antes, pero no perdais de vista al anciano." Sin embargo, no quiso darle ninguna explicación al humano para que este cuidase de alcanzar al anciano.
Por unos instantes, Adaline procuró alejar de sí todo pensamiento causado por lo qu ela rodeaba para poder así concentrarse en recordar cualquier cosa que pudiera ayudarle a identificar aquellas chispas. Como miembro de la casa Advocate, siempre fue atenta a todo lo que contaban aquellos con los que tenía contacto. Buscó particularmente entre lo que recordaba de las historias de viajeros y mercaderes de otras tierras con los cuales ayudó en múltiples negociaciones. Siempre
prestó especial atención a las historias indreíbles, pues estas tenían siempre algo de verdad; al igual que desde niña había estudiado con dedicación las costumbres y leyendas de otras culturas. Alguna cosa debía poder recordar.
En una ocasión había supervisado una negociación con un mercader que venía con artefactos del Monte Noimporta. A cualquiera se le levantaría una ceja al escuchar las descripciones de cualquiera de estos alocados inventos, no sólo por lo extraño de su diseño, sino por lo altamente riesgoso que es siempre el intentar usarlos.
Sin embargo, el momento demostraba que no habían sido en vano esos días de aburridas negociaciones, en las que buscaba entretener su mente con genuino interés por las mercancías y su uso, más allá de los contratos. Habia escuchado de un mercader, mientras sostenía en su mano lo que parecía ser una vasija de barro con una minuscula apertura por la que salía una especie de cordón. Los gnomos le llamaban "tazafuegodormidocuerdaestrella", aunque el mercader insistió en que
bastaba llamarla "tazafuego". Comentó que parte del nombre se debía a que al usarse estos artilugios, una sustancia que almacenaba un fuego dormido, era despertada al encender el cordón, y que éste despedía chispas que en la noche parecían estrellas fugaces. El fuego, al despertar, servía para destruír los inventos gnómicos antes de que
explotaran por si mismos. Se comentaba que algunos minotauros y humanos habían encontrado un uso bélico para estas "tazas". Todo esto hizo sospechar a Adaline que lo que próximo que vería, sería una explosión...
Por su parte el mercenario también aprovechaba el corto viaje para pensar lo suyo: el día no había sido sencillo para él, y la orden de apurar al caballo, tal y como estaba haciendo, y de no perder de vista al viejo, tal y como estaba haciendo, por alguna causa lo molestó. A punto estuvo de decirle a la elfa un "cállate, niña", o algo igual de
hiriente. Pero decirle eso a alguien que quizás tuviera diez veces su edad no parecía una idea tan buena.
Trató de hacer oidos sordos a la elfa, y siguió en lo que le ocupaba ahora. Las razas altas a menudo eran las menos educadas. Algún bardo lo había dicho ya: un ser "civilizado" podía darse el lujo de ser menos educado que un bárbaro, porque sabía que no corría el riesgo de terminar con un hacha enterrada en su cabeza.
Ahora, algo de lo qu e la elfa había dicho le quedó rebotando en la cabeza... ¿Flamas?
No estaban tan cerca de las flamas como para que representaran un peligro...
- 12 de Septiembre, año 32 Saer Cataclius, 6:45pm
Horrorizada por sus propias acciones, la mujer en harapos se derrumbó en el pasto en medio de sollozos, mientras el escolta miraba incrédulo su brazo incompleto.
Hilltop miró atónito, por un instante, el cuadro frente a él.. Luego dirigió sus pasos y su atención hacia la mujer arrodillada en el piso, cerca de él.
- Tranquila. Todo va a estar bien - dijo suavemente mientras se arrodillaba junto a ella, cintura con cintura, pero sin quitar del todo la vista a los hombres que estaban próximos. - Todo estará bien... Te lo prometo.
Intentó poner sus manos sobre los hombros de ella. La bella mujer en harapos continuó sollozando, aún luego de sentir las manos de Hilltop posarse en sus hombros con calma.
- No.... nadie puede decir que todo estará bien. ¡¿Qué he hecho?! - dijo alternando su mirada entre los ojos del marino y sus propias manos. Sin embargo.... levantó la vista y miró a su alrededor. - ¡No! - La mujer tomó con su mano una de las de hilltop, y levantó la mirada viendo en todas direcciones, como si estuviese inmersa en una pesadilla - ¡El fuego aún traerá más sangre y muerte, tras el sonido del trueno!.
Hilltop la sentía temblar de miedo, mientras escuchaba caer al piso al escolta, a quien la vida se le escapaba por el brazo. La atrajo hacia él y la abrazó un instante, sin soltar su mano. Habló con suavidad.
- Tampoco puedes asegurar que tronará. Menos que las cosas no van a mejorar, ¿verdad? - Hecha esa pregunta Greg usó su mano libre para tomar la barbilla de la mujer y hacer que le mirase con atención. - Lo cierto es que el fuego sí es peligroso, y hay gente que necesita ayuda. Podemos ir a dársela ¿Quieres?
La mujer centró su mirada en el fondo de los ojos de Hilltop, mientras su agitada respiración se calmaba. Luego de que la tormenta parecía haber sido calmada, al menos en parte, por el apoyo que le brindaba el apuesto marino, asintió. Sin embargo sus piernas aún temblaban mucho como para que le permitiesen ponerse de pie por sus propios medios.
Un trueno sonó a lo lejos, mientras la centella iluminaba desde dentro de las nubes. La mujer vió hacia arriba, pero nada más ocurrió. Volvió su vista hacia el marino. Aún procuraba recordar por qué se le hacía familiar su rostro. Greg siguió la mirada de la mujer y, tras mirar un poco las nubes, se
sonrió.
[>img[imágen tomada de www.dailycognition.com|http://www.sonomaopenspace.org/imgManager/1000000149/grove_old_trees.jpg]]
- 13 de Septiembre, año 32 Saer Cataclius. 6:50 am.
Zasthia, Gwydeon y Argento siguieron su camino hacia Solace con cautela. Argento probablemente no se perdonaría ser el último, una vez más, en darse cuenta de las cosas en "su terreno". Gwydeon, en su natural desconfianza, que mantenía escondida tras un telón de seguridad, estaba alerta no sólo por lo que había compartido con sus
compañeros, sino especialmente por las sombrías sospechas que se había guardado para sí. Zasthia no entendía bien lo que ocurría, pues nunca estuvo involucrada en negocios con los humanos, pero para ella estaba claro que algo andaba mal.
Luego de caminar lo suficiente como para necesitar un breve descanso, Argento buscaba un lugar bueno para detenerse. Vale decir, un lugar
que les permitiera sentirse poco expuestos y que tuviese cierta visibilidad de los alrededores. Estas eran las características que debería tener si se desean minimizar las posibilidades de ser tomado por sorpresa.
Creía recordar que cerca del sendero había un claro a cuyos costados podría ser conveniente descansar, justo tras los árboles circundantes; se desvió del curso por el que habían subido para buscarlo. Gwydeon y Zashtia no repararon en el desvío, hasta que en las copas de los árboles se hizo evidente la presencia de un claro unos cuantos metros adelante.
Gwydeon iba a preguntar al leñador acerca del cambio de ruta, pero notó que éste, súbitamente, se hizo a un lado para esconderse tras un árbol, mientras hacía señas al legionario y a su exótica acompañante para que hiciesen lo mismo. La corpulencia y tosquedad del leñador fueron desmentidas por el sigilo con que rápidamente había ocultado su baja humanidad, caminando sobre la alformbra de hojas del bosque.
Ni Gwydeon ni Zasthia se enteraron de qué había puesto al humano en alerta. Sin embargo, Zasthia empezó a sentir en su corazón una presencia cuya esencia era extraña al bosque. Extraña a los animales y criaturas que fueron creadas hace cientos y miles de años. Nada más sabía ni sentía, pero tenía la certeza de que nada bueno podía
esperarse de semejante presencia.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 16/04/2010 16:17:42 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html#%5B%5BCompilaci%C3%B3n%201%5D%5D]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 16/04/2010 16:21:10 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html#%5B%5BCompilaci%C3%B3n%201%5D%5D]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 16/04/2010 16:22:07 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html#%5B%5BCompilaci%C3%B3n%201%5D%5D]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . |
| 19/04/2010 20:35:07 | OManzanilla | [[/|http://jurocepedia.tiddlyspot.com/]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 19/04/2010 20:37:29 | OManzanilla | [[/|http://jurocepedia.tiddlyspot.com/]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 19/04/2010 20:43:05 | OManzanilla | [[/|http://jurocepedia.tiddlyspot.com/#%5B%5BDiario%20de%20Campa%C3%B1a%5D%5D]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . |
| 18/05/2010 12:46:08 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 18/05/2010 14:00:57 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . | ok |
| 18/05/2010 16:14:09 | OManzanilla | [[index.html|http://jurocepedia.tiddlyspot.com/index.html]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . |
| 21/12/2012 18:39:19 | OManzanilla | [[/|http://jurocepedia.tiddlyspot.com/]] | [[store.cgi|http://jurocepedia.tiddlyspot.com/store.cgi]] | . | [[index.html | http://jurocepedia.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
Dada a Gwydeon Ragnarok. Sus propiedades mágicas aún no están del todo claras.
[img[http://groups.google.com/group/juroce/web/El%20sollozo%20de%20la%20harapienta.png]]