Guia para hacer hechizos con Triggers (XI)
II. Herramientas y concocimiento que se necesitan
III. Trabajando con el Object Editor
IV. Triggers: ¿Que són y como funcionan?
VII. Acciones Básicas (primera parte)
VII. Acciones Básicas (segunda parte)
VIII. Condiciones y Eventos Básicos
IX. Eventos - Variables de Respuesta en Detalle
XII. Hechizos de un solo objetivo
Este es, probablemente, la clase más simple de hechizos, cuando nos referimos a implementarlo con triggers. Estos hechizos son los que hacen objetivo a un único y específico objetivo. Esto significa que el jugador elige el objetivo y solo ese es afectado por el hechizo. Hechizos como ese incluyen a Cripple, Soul Burn, Storm Bolt, Entangling Roots, Rejuvenation, Possession, Holy Light, Death Coil, Life Drain, Siphon Mana, Mana Burn, Shadow Strike, Finger of Death y otros.
Nota:
Chain Lightning, Healing Wave u otros hechizos en cadena no son de un solo objetivo. Aún cuando el jugador seleccione el primer objetivo, para accionar el efecto, no es tan fácil, porque este afecta a las otras unidades "en la cadena". De todas maneras, estos hechizos pueden usarse como hechizos dummy, si se establece que solo haga efecto en un solo objetivo, y no haga nada más.
Por ahora, nos apegaremos a hechizos de no-canalización o con buffs. Cuando aprendas como hacer hechizos de cada categoría, luego tendrás a los hechizos de canalización/buff que requieren de técnicas separadas, las cuales una vez aprendidas, no necesitarás luchar con cada categoría otra vez, teóricamente por supuesto.
Así, que empecemos. Voy a comenzar con la teoría y luego vamos a hacer un hechizo práctico. La idea de un Hechizo de un Solo Objetivo es simple. Tu chequeas siempre que una unidad lance la habilidad alterada, y luego creas las unidades dummy y le ordenas que lance varios hechizos al objetivo, o que lo dañe, o talvez algo similar, dependiendo de tu hechizo. Esto es por puro efecto del hechizo. En este tutorial no voy a explicar sobre los efectos especiales. ¡Talvez pueda hacer un tutorial aparte luego!
Y ahora, vamos a hacer el ejemplo práctico. He aquí los pasos básicos:
Paso 1 - La idea del hechizo
Vamos hacer un hechizo aparentemente dificil (especialmente si tu nunca has hecho un hechizo mejorado con triggers) llamado Shock Destructor (bah!, probablemente no es el mejor nombre, puedes cambiarlo si quieres). Esta descripción es mas o menos lo que hace:
- El caster emite un rayo de energía que hace objetivo a una unidad. Dependiendo de su naturaleza, hace un efecto diferente.
- Las Estructuras reciben daño (50 en nivel 1, 75 en nivel 2 y 100 en nivel 3)
- Las unidades Mecanicas son paralizadas (6 segundos en nivel 1, 7 en nivel 2 y 8 en nivel 3)
- Las unidaes Organicas son purgadas (3 segundos en nivel 1, 4 en nivel 2 y 5 en nivel 3)
Vamos a buscar una habilidad dummy. Recuerden, debe ser un instantaneo, hechizo de un solo objetivo. Ya he mencionado unos cuantos hechizos arriba, pero no todos son hechizos instantaneos (su efecto dura un par de segundos y pueden ser dispeleados). Aún sí, puedes hacer esas habilidades como si fueran instanteas. Solo fija su duración a 0.01 y parecerá como si fueran instanteas.
Nota:
Una duración de 0.00 no significa que no tenga duración, esto significa que el hechizo va a durar para siempre, o hasta que sea dispeleado. Es una convención
Nota:
Algunas habilidades, pueden dejar efectos secundarios aún si su duración es casi imperceptible. Hechizos que pueden interrumpir abilidades de canalización (causar parálisis, sueño -sleep-, silencio, etc) puede ser un problema si tu hechizo no se supone que actualmente rompa las canalizaciones. Te sugiero que evites esos hechizos lo más posible, a menos que intentes de todas maneras cancelar hechizos de canalización!
Ahora, revisemos la descripción del hechizo, te darás cuenta que he mencionado que el caster emite un rayo de energía. Hmm, ¿Tenemos algún hechizo que haga eso? Pues claro, lo tenemos. Lo hace Chain Lightning. Este causa que el caster emita un rayo de energía. De todas maneras, queremos que este hechizo afecte solo a un único objetivo. Haz una copia del hechizo, y luego cambia alguno de sus campos.
Primero que nada, vamos a hacer el hechizo que servirá como un hechizo dummy, es decir que este no afectará al objetivo de ninguna manera. Fija el daño inicial a 0 en todos los niveles, número de objetivos igual a 1 (se va a ver extraño que salte y solo afecte al primer objetivo)... y eso es todo. Si probarías el hechizo, este no haría nada.
Ahora es momento de hacer que el hechizo se vea realístico. Dejando la antigua descripción del Chain Lightning, nombre e iconos hará que el jugador piense que está lanzando un Chain Lightning. Así que cambia su nombre a Shock Destructor y todas las descripciones correspondiente y aún deberías cambiar el icono. He usado el icono de la habilidad Dark Portal, pero eso en realidad no interesa. ¡Haz que se vea convincente!
Y ahora, todavía tenemos algunas cosas técnicas que resolver. El hechizo tiene el costo de mana y el tiempo de recarga antiguos del Chain Lightning. Yo he conservado algunos valores, pero puedes cambiarle si quieres. El costo de mana que he elegido es 70/65/55 (nivel 1/nivel 2/nivel 3) y el tiempo de recarga en 8/8/8 segundos. Una última cosa que hay que cambiar son los objetivos. Chain Lightning solo afecta a unidades organicas. Aquí están los objetivos válidos que le he dado (y sería mejor que tu tambien lo sigas): Aire, Tierra, Enemigo, Organico, Estructura, Mecanico, Vulnerable. Es bueno darle todos los valores que tu le encuentres válido al hechizo. En ese caso, no dandole Vulnerable puede hacer que el hechizo sea lanzado de todas maneras en unidades Invulnerables, pero no deberías correr el riesgo. Algunos hechizos tienen estos valores bugeados.
Ahora puedes darle la habilidad al heroe que vas a probar. Tiene que verse extremadamente realístico, pero si tu ordenas al heroe que lo castee, solo obtendrás una unidad golpeada por un rayo de energía, sin consecuencias, pero el mana se habrá perdido y el tiempo de recarga se habrá iniciado. Esto es un inicio prometedor. Vamos al
You can now give the ability to a hero and test it. It will look extremely realistic, but if you order the hero to cast it, you will only get a unit struck by a bolt of lightning, with no consequences, but mana lost and a cooldown fired. It’s a promising start though. Regresemos al Object Editor, puesto que no hemos terminado.
Tenemos que tener algunas habilidades para las unidades dummy. Necesitamos una habilidad que haga un solo objetivo y paralice (sugiero Storm Bolt) y una que Purgue (la descripción es muy obvia). Copia y pega ambas habilidades, y luego editalas de la siguiente manera.
- Hazle que tenga 3 niveles, pero conservando su estado de habilidad de unidad, no de heroe.
- Cambia el costo de mana a 0/0/0, tiempo de recarga a 3/3/3 segundos (usualmente un valor alto así nos aseguramos que la unidad dummy está habilitada para castear la habilidad solo cuando se le ha ordenado y no siempre y cuando quiera), que tan largo va a durar el hechizo es supuestamente el tiempoque el objetivo ha sido afectado por el hechizo y tu debes de cambiar sus buffs.
- Revisa los objetivos. Asegurate de que la unidad dummy está habilitada para castear el hechizo en una unidad válida. En ese caso, asegúrate de que el Storm Bolt pueda hacer objetivo a una unidad Enemiga y Mecanica y que el Purgar pueda hacer objetivo a una unidad Enemiga y Orgánica.
- Iconos y descripciones usualmente se les dejan en blanco ya que no las vamos a ver de ninguna manera.
- Para saber cuales son los hechizos que has usado para tus habilidades customizadas, te sugiero que le agreges en la opción de editor suffix, con el nombre del hechizo dummy. De esta manera, te hará la vida más fácil. En este caso tengo un Purge (Shock Destructor) y un Storm Bolt (Shock Destructor).
Paso 3 – Mejorado la habilidad con Triggers
Probablemente el paso más difícil. Puede incluso asustarte, pero en verdad no hay por que. Vamos a tomar el código paso a paso. Necesitamos eventos, condiciones y acciones. Si no recuerdas como alguno de ellos funciona, porfavor relee el capítulo previo, hasta que entiendas completamente como funcionan los triggers. No te saltes ese capítulo, porque es extremadamente importante comprender la mejora con triggers. Mantente leyendo e intentando de entenderlos hasta que estés completamente seguro que sabes como funcionan los triggers.Crea un nuevo trigger. De nuevo, sugiero que le des a los triggers el mismo nombre que tu hechizo (si necesitas más de un trigger sigue alguna regla pero que relacione al nombre del trigger), así podrás reconocerlo despues, si aún quieres cambiar tu hechizo. Es muy importante mantener en order en ambos, el Object Editor y el Trigger Editor.
Ahora, vamos a ver como un trigger se activaría cuando una unidad castee el Shock Destructor. En código puede verse algo así:
Trigger:
Events
Unit - A unit Starts the effect of an abilityEsto no es nada nuevo, si has leído el capítulo 8. El evento básico, la condición básica. Ahora vamos a ver profundamente en las acciones, donde hay cosas que nos pueden perder. Sabemos que necesitamos una unidad dummy, para dañar o castear una habilidad a un objetivo. Así, creamos una unidad dummy en la posición del objetivo, el cual ha hecho el caster. Mas aún, la unidad desaparecerá luego de un corto período de tiempo, así que sería bueno agregar un timer de expiración con un muy corto valor. La accion puede ser así:
Conditions
(Ability being cast) Equal to Shock Destructor
Trigger:
Actions
Unit - Create 1 Dummy for (Owner of (Triggering unit)) at (Position of (Target unit of ability being cast)) facing 0.00 degreesAhora, las cosas se complican más, porque dependiendo del tipo de objetivo (organico, mecanico o estructura), el dummy hará algo. Es claro que este es el paso donde las cosas se hacen diferentes por cada hechizo de objetivo único. Vamos a usar multiples Ifs, cada uno para verificar si el objetivo es Organico o Mecánico o Estructura. No sugiero que insertes en el ELSE de un IF otro IF porque puedes hacerlo lentamente y tener nada de codigo, especialmente cuando complicas más y más el código.
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Así, que vamos a empezar con el primer IF. Este chequea si el objetivo es una estructura, y si lo es, daña al objetivo. Aún así, para el daño necesitas una fórmula, porque si el nivel de la habilidad es grande, luego el daño es tan grande como ese. Así que tu fórmula depende de cada nivel de la habilidad. Ahora vamos a dar una mirada al daño:
50 para el nivel 1, 75 para el nivel 2 y 100 para el nivel 3. Es claro que con cada nivel, el daño se incrementa en 25. Esta diferencia entre niveles DEBE ser una constante si quieres usar una fórmula. La diferencia es llamada Ratio. Usualmente la fórmula es algo así:
Código:
(Level 1 damage – Ratio)+(Ratio*Level of the Ability)
Y de repente las cosas se vuelven simples no? En el código, la fórumla debería verse así:
Código:
Damage = (50-25)+(25*(Current Level of (Shocking Destructor) for (Triggering Unit))
Esta fórmula aún puede ser simplificada, par su fácil trabajo en la PC y hacer que tu hechizo sea más eficiente. Si tu ya sabes que 50-25 es 25. En vez de poner que el juego lo calcule todo el tiempo que el hechizo haga objetivo a una estructura, hazlo tu mismo. Esto no te cuesta nada, pero si le cuesta a la PC. ¡Haz tu fórmula lo más eficiente posible!
Ahora que tenemos la fórmula, el siguiente paso de la acción es simplemente implementar lo que has aprendido. Aquí está lo que tendríamos:
Trigger:
If (((Target unit of ability being cast) is A structure) Equal to True) then do (Unit - Order (Last created unit) to damage (Target unit of ability being cast) for (25.00 + (25.00 x (Real((Level of Shock Destructor for (Triggering unit)))))) using attack type Magic and damage type Fire.) else do (Do nothing)Real() hace una conversión a real. En este caso, convierto un entero, porque en una operación puedes usar número del mismo tipo (real o entero) pero no puedes mezclarlos. En este caso, el daño se supone que es real desde que (Level of Ability for unit) la función devuelve un valor entero, tienes que convertirlo tu mismo. Esto lo encontraras un montón de veces.
Ahora si pruebas tu habilidad en una estructura, ¡esa estructura tiene que dañarse! Aún así, vamos todavía a necesitar afectar a unidades organicas y mecánicas. Aquí, la teoría es la misma, solo que usas diferentes habilidades. Así que voy a explicar solo para las orgánicas.
Tienes que darle a la unidad dummy la habilidad customizada Purge, para que se lo castee al objetivo. Pero de nuevo, el hechizo debe de durar más por cada nivel. ¿Ves? no te dije que le des tres niveles a este hechizo por las puras. Y si recuerdas, hay una acción que permite establecer niveles para habilidades normales también. Así todo lo que tienes que hacer, es darle la habilidad purge al dummy, establecer el nivel al nivel del Shock Destructor, y luego ordenar al dummy que lo castee al objetivo. Una unidad orgánica es una que no es ni mecanica ni estructura. Aquí está el código:
Trigger:
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) is A structure) Equal to False
((Triggering unit) is Mechanical) Equal to False
Then - Actions
Unit - Add Purge (Shock Destructor) to (Last created unit)
Set Level of Purge (Shock Destructor) for (Last created unit) to (Level of Shock Destructor for (Triggering unit))
Unit - Order (Last created unit) to Orc Shaman - Purge (Target unit of ability being cast)
Else - Actions
Ahora cambia este código para unidades Mecanicas. Más abajo está el código completo. Si lo copias correctamente, el hechizo funcionará:
Trigger:
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Shock Destructor
Actions
Unit - Create 1 Dummy for (Owner of (Triggering unit)) at (Position of (Target unit of ability being cast)) facing 0.00 degrees
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
If (((Target unit of ability being cast) is A structure) Equal to True) then do (Unit - Order (Last created unit) to damage (Target unit of ability being cast) for (25.00 + (25.00 x (Real((Level of Shock Destructor for (Triggering unit)))))) using attack type Magic and damage type Fire.) else do (Do nothing)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) is A structure) Equal to False
((Triggering unit) is Mechanical) Equal to False
Then - Actions
Unit - Add Purge (Shock Destructor) to (Last created unit)
Unit - Set Level of Purge (Shock Destructor) for (Last created unit) to (Level of Shock Destructor) for (Triggering unit))
Unit - Order (Last created unit) to Orc Shaman - Purge (Target unit of ability being cast)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Triggering unit) is Mechanical) Equal to True
Then - Actions
Unit - Add Storm Bolt (Shock Destructor) to (Last created unit)
Unit - Set Level of Storm Bolt (Shock Destructor) for (Last created unit) to (Level of Shock Destructor for (Triggering unit))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Target unit of ability being cast)
Else - Actions¡Felicitaciones, has completado tu primer hechizo mejorado con triggers! Mientras practiques, serás más habil parar hacer hechizos de un solo objetivo más difíciles. Pero ahora, es tiempo de ver la segunda categoría.