Foro especializado en Warcraft III y su editor
 
BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado !

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte
 

 [Reinventando las mecánicas] Spells escalando por atributos

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Marcos_M

Marcos_M


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3238
Reputación Reputación : 565
Monedas de oro : 10091
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Sáb Mayo 04, 2019 2:15 pm

Hola señores n.n

Este es el sexto tutorial de una serie de tutoriales simples donde les enseñaré como modificar mecánicas de Warcraft y crear nuevas mecánicas de manera simple y sencilla.

Para entender este tutorial necesitas:
-Conocimiento en el uso del editor de objetos (Unidades y Habilidades principalmente)
-Conocer la existencia de los leaks de memoria
-Saber como importar spells y sistemas al mapa.

Estaremos usando 2 sistemas para facilitar la creación de hechizos:
-MUI de Ruke
-Unit indexer de Bribe


Estos sistemas nos permitirán mejorar las mecánicas del juego y crear nuevas de manera rápida y sencilla.
[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Introducción al tutorial.

Antes de comenzar con los ejemplos de hechizos, tenemos que explicar como se hace un escalado por atributos, hay 2 funciones principales que usaremos

Arithmetic y Héroe - Hero attribute. Estas son funciones numéricas, entregan un número, y en el caso de Arithmetic, recibe 2 números para hacer una operación matemática(para los más distraídos, una operación matemática es algo que aprendes en la escuelita en primer grado, si no sabes como se hacen, vamos mal).
Lo segundo a entender, es que cada hechizo, requiere un proceso específico para convertirlo. Algunos crearemos desde 0, otros construiremos encima de ellos, pero aquí pondré como extra, un hechizo que escala por atributo ultra sencillo.

[gui]Golpe adaptable
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Damage por atributo
   Acciones
       Unidad - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (4.00 x (Real((Agilidad of (Triggering unit) (Incluir bonuses))))) damage of attack type Conjuros and damage type Normal
[/gui]
Esto es así de simple, veamos los siguientes ejemplos


[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Inmolación

En este spell estaremos usando el sistema Unit Indexer.
Inmolación es un hechizo especial, ya que no funciona muy bien usando el evento común para hechizos, sino que se debe usar el evento de orden para inmolar y desinmolar, usaremos este evento para detectar las unidades con inmolación y activar o desactivar los detonadores acorde.

Este hechizo utiliza el mismo hechizo base y se conservan los efectos originales, pero el daño se realiza totalmente desde el detonador

[gui]Inmolacion
   Acontecimientos
       Unidad - A unit Emite una orden sin objetivo
   Condiciones
        Multiple ConditionsOr - Any (Conditions) are true
           Condiciones
               (Issued order) Igual a (==) (Order(immolation))
               (Issued order) Igual a (==) (Order(unimmolation))
   Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               ((Triggering unit) is in Immolate_grupo) Igual a (==) False
           Entonces: Acciones
               Grupo de unidad - Add (Triggering unit) to Immolate_grupo
           Otros: Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (Issued order) Igual a (==) (Order(immolation))
           Entonces: Acciones
               Set Immolate_intervalo[(Custom value of (Triggering unit))] = 1.00
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       (Inmolacion dps is on) Igual a (==) False
                   Entonces: Acciones
                       Detonador - Turn on Inmolacion
                   Otros: Acciones
               Set Immolate_active[(Custom value of (Triggering unit))] = True
           Otros: Acciones
               Set Immolate_active[(Custom value of (Triggering unit))] = False
[/gui]

[gui]Inmolacion dps
   Acontecimientos
       Tiempo - Every 0.25 seconds of game time
   Condiciones
   Acciones
       Set temp_integer[1] = 0
       Grupo de unidad - Pick every unit in Immolate_grupo and do (Actions)
           Bucle: Acciones
               Set ID = (Custom value of (Picked unit))
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       ((Picked unit) has buff Inmolación) Igual a (==) True
                   Entonces: Acciones
                       Set Immolate_active[ID] = False
                   Otros: Acciones
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       Immolate_active[ID] Igual a (==) True
                   Entonces: Acciones
                       Set Caster = (Picked unit)
                       Set Immolate_dps[ID] = ((5.00 + (5.00 x (Real((Level of Inmolación (Modificado) for (Picked unit)))))) + (0.05 x (Real((Agilidad of (Picked unit) (Incluir bonuses))))))
                       Set Immolate_intervalo[ID] = (Immolate_intervalo[ID] - 0.25)
                        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                           Si: Condiciones
                               Immolate_intervalo[ID] Menor que o igual a (<=) 0.00
                           Entonces: Acciones
                               Set Immolate_intervalo[ID] = 1.00
                               Set temp_point[1] = (Position of Caster)
                               Custom script:   set bj_wantDestroyGroup = true
                               Grupo de unidad - Pick every unit in (Units within 192.00 of temp_point[1]) and do (Actions)
                                   Bucle: Acciones
                                        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                           Si: Condiciones
                                               ((Picked unit) is Una estructura) Igual a (==) False
                                               ((Picked unit) is Inmune a la magia) Igual a (==) False
                                               ((Picked unit) is dead) Igual a (==) False
                                               ((Picked unit) belongs to an enemy of (Owner of Caster)) Igual a (==) True
                                           Entonces: Acciones
                                               Unidad - Cause Caster to damage (Picked unit), dealing Immolate_dps[ID] damage of attack type Conjuros and damage type Normal
                                           Otros: Acciones
                               Custom script:   call RemoveLocation(udg_temp_point[1])
                           Otros: Acciones
                   Otros: Acciones
                       Set temp_integer[1] = (temp_integer[1] + 1)
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               temp_integer[1] Igual a (==) (Number of units in Immolate_grupo)
           Entonces: Acciones
               Detonador - Turn off (This trigger)
           Otros: Acciones
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Golpe adaptable

Este es un poder simple. Causará daño según la agilidad del caster, y según el mayor atributo del enemigo, causará efectos diferentes.

Se utiliza 1 If/then/else que anida otros 2 if/then/else dentro para saber cuál es el atributo con mayor cantidad.
En este caso, cuando hay inteligencia como mayor, se quitará maná en base al nivel de la habilidad
Cuando hay fuerza mayor, se robará un % de vida
Cuando hay agilidad mayor, se aplicará un aturdimiento al objetivo
Usaremos efectos especiales para demostrar cual efecto sucede según el atributo

Esto es un poder personalizado realizado 100% desde detonador

[gui]Golpe adaptable
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Golpe adaptable (Modificado)
   Acciones
       Unidad - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (4.00 x (Real((Agilidad of (Triggering unit) (Incluir bonuses))))) damage of attack type Conjuros and damage type Normal
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (Fuerza of (Target unit of ability being cast) (Incluir bonuses)) Mayor que (>) (Agilidad of (Target unit of ability being cast) (Incluir bonuses))
           Entonces: Acciones
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       (Inteligencia of (Target unit of ability being cast) (Incluir bonuses)) Mayor que (>) (Fuerza of (Target unit of ability being cast) (Incluir bonuses))
                   Entonces: Acciones
                       Set Damage = (10.00 + (5.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))
                       Unidad - Set mana of (Target unit of ability being cast) to ((Percentage mana of (Target unit of ability being cast)) - Damage)%
                       Efecto especial - Create a special effect attached to the overhead of (Target unit of ability being cast) using Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
                       Efecto especial - Destroy (Last created special effect)
                       -------- Max INT --------
                   Otros: Acciones
                       Set Damage = (0.05 x (Real((Level of (Ability being cast) for (Triggering unit)))))
                       Unidad - Set life of (Target unit of ability being cast) to ((Vida of (Target unit of ability being cast)) - ((Vida máx. of (Target unit of ability being cast)) x Damage))
                       Unidad - Set life of (Triggering unit) to ((Vida of (Triggering unit)) + ((Vida máx. of (Target unit of ability being cast)) x Damage))
                       Efecto especial - Create a special effect attached to the chest of (Triggering unit) using Abilities\Spells\Items\StaffOfSanctuary\Staff_Sanctuary_Target.mdl
                       Efecto especial - Destroy (Last created special effect)
                       Efecto especial - Create a special effect attached to the chest of (Target unit of ability being cast) using Abilities\Spells\Undead\DeathPact\DeathPactCaster.mdl
                       Efecto especial - Destroy (Last created special effect)
                       -------- Max STR --------
           Otros: Acciones
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       (Inteligencia of (Target unit of ability being cast) (Incluir bonuses)) Mayor que (>) (Agilidad of (Target unit of ability being cast) (Incluir bonuses))
                   Entonces: Acciones
                       Set Damage = (10.00 + (5.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))
                       Unidad - Set mana of (Target unit of ability being cast) to ((Percentage mana of (Target unit of ability being cast)) - Damage)%
                       Efecto especial - Create a special effect attached to the overhead of (Target unit of ability being cast) using Abilities\Spells\Undead\DarkRitual\DarkRitualTarget.mdl
                       Efecto especial - Destroy (Last created special effect)
                       -------- Max INT --------
                   Otros: Acciones
                       Set temp_point[4] = (Position of (Triggering unit))
                       Unidad - Create 1 ID_DUMMY_CASTER for (Triggering player) at temp_point[4] facing Vista edificio predeterminada (270.0) degrees
                       Unidad - Add a 2.00 second Genérico expiration timer to (Last created unit)
                       Unidad - Add Golpe adaptable dummy  to (Last created unit)
                       Unidad - Set level of Golpe adaptable dummy  for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
                       Unidad - Order (Last created unit) to Humano Rey de la Montaña: Rayo de tormenta (Target unit of ability being cast)
                       Custom script:   call RemoveLocation(udg_temp_point[4])
                       -------- Max AGI --------
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Quemar maná

Quemar maná es muy sencillo de mejorar mediante detonadores, pero mostrar el cartelito con el número correcto requiere un trabajito extra. Tomenlo como tarea para la casa

Este poder utiliza el mismo hechizo base y el detonador solo hace el daño extra por atributo

[gui]Quemar mana
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Quemar Maná (Modificado)
   Acciones
       Set temp_integer[10] = ((Agilidad of (Triggering unit) (Incluir bonuses)) x (Level of (Ability being cast) for (Triggering unit)))
       Set temp_integer[9] = (Integer((Maná of (Target unit of ability being cast))))
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               temp_integer[10] Mayor que (>) temp_integer[9]
           Entonces: Acciones
               Set temp_integer[10] = temp_integer[9]
           Otros: Acciones
       Unidad - Set mana of (Target unit of ability being cast) to ((Maná of (Target unit of ability being cast)) - (Real(temp_integer[10])))
       Unidad - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing (Real(temp_integer[10])) damage of attack type Conjuros and damage type Normal
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Pulverizar

Pulverizar es una habilidad que causa daño extra en ataque. Usaremos MUI y Unit Indexer para hacer el daño, y poner una "protección" para evitar que se abusen de la habilidad reactivandola entre ataques.
Este hechizo se hace totalmente desde el detonador, efecto especial, daño y activación

[gui]Pulverizar init
   Acontecimientos
       Partida - UnitIndexEvent becomes Igual a 1.00
   Condiciones
   Acciones
       Set PulverizarCD[UDex] = False
[/gui]

[gui]Pulverizar
   Acontecimientos
       Unidad - A unit Es atacado
   Condiciones
       (Level of Pulverizar (Modificado) for (Attacking unit)) Mayor que (>) 0
   Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               PulverizarCD[(Custom value of (Attacking unit))] Igual a (==) False
               (Random real number between 0.00 and 100.00) Menor que (<) 25.00
           Entonces: Acciones
               Animación - Play (Attacking unit)'s attack slam animation
               Set PulverizarCD[(Custom value of (Attacking unit))] = True
               Set set_unit[1] = (Attacking unit)
               Set set_unit[2] = (Triggering unit)
               Set used_units = 2
               -------- -------------------------------------------------------------------- --------
               Set set_real[1] = 0.36
               Set set_real[2] = ((20.00 + (10.00 x (Real((Level of Pulverizar (Modificado) for set_unit[1]))))) + (0.80 x (Real((Fuerza of set_unit[1] (Incluir bonuses))))))
               Set used_reals = 2
               -------- -------------------------------------------------------------------- --------
               Set trigger = Pulverizar dmg
               Set timeout = 0.02
           Otros: Acciones
[/gui]

[gui]Pulverizar dmg
   Acontecimientos
   Condiciones
   Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (Current order of get_unit[1]) No igual a (!=) (Order(attack))
               (Current order of get_unit[1]) No igual a (!=) (Order(smart))
           Entonces: Acciones
               Set finish = True
               Set automaticClean = True
               Set PulverizarCD[(Custom value of get_unit[1])] = False
           Otros: Acciones
               Set get_real[1] = (get_real[1] - 0.02)
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       get_real[1] Menor que o igual a (<=) 0.00
                   Entonces: Acciones
                       Set temp_point[5] = (Position of get_unit[2])
                       Efecto especial - Create a special effect at temp_point[5] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
                       Efecto especial - Destroy (Last created special effect)
                       Custom script:   set bj_wantDestroyGroup = true
                       Grupo de unidad - Pick every unit in (Units within 375.00 of temp_point[5]) and do (Actions)
                           Bucle: Acciones
                                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                   Si: Condiciones
                                       ((Picked unit) is Una estructura) Igual a (==) False
                                       ((Picked unit) belongs to an enemy of (Owner of get_unit[1])) Igual a (==) True
                                   Entonces: Acciones
                                       Set temp_point[6] = (Position of (Picked unit))
                                        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                           Si: Condiciones
                                               (Distance between temp_point[5] and temp_point[6]) Mayor que o igual a (>=) 275.00
                                           Entonces: Acciones
                                               Unidad - Cause get_unit[1] to damage (Picked unit), dealing (get_real[2] / 2.00) damage of attack type Conjuros and damage type Normal
                                           Otros: Acciones
                                               Unidad - Cause get_unit[1] to damage (Picked unit), dealing get_real[2] damage of attack type Conjuros and damage type Normal
                                       Custom script:   call RemoveLocation(udg_temp_point[6])
                                   Otros: Acciones
                       Set finish = True
                       Set automaticClean = True
                       Set PulverizarCD[(Custom value of get_unit[1])] = False
                       Custom script:   call RemoveLocation(udg_temp_point[5])
                   Otros: Acciones
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Onda Expansiva

Onda expansiva es un poco larga de crear a comparación de las demás habilidades, pero en la lógica es simple, solamente que hay que acomodar varios valores antes de hacerlo.
Este hechizo es prácticamente 100% por detonador y aunque use el mismo hechizo base, el hechizo no hace nada más que seleccionar punto objetivo.

[gui]Onda expansiva
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Onda expansiva (Modificado)
   Acciones
       Set MS_PuntoCaster[1] = (Position of (Triggering unit))
       Set MS_PuntoCaster[2] = (Target point of ability being cast)
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               MS_Enteros[1] Igual a (==) 0
           Entonces: Acciones
               Detonador - Turn on Misil Loop
           Otros: Acciones
       Set MS_Enteros[1] = (MS_Enteros[1] + 1)
       Set MS_Enteros[2] = (MS_Enteros[2] + 1)
       Set MS_Booleana[MS_Enteros[2]] = False
       Set MS_Caster[MS_Enteros[2]] = (Triggering unit)
       Set MS_Angulo[MS_Enteros[2]] = (Angle from MS_PuntoCaster[1] to MS_PuntoCaster[2])
       Set MS_Altura[MS_Enteros[2]] = 100.00
       Set MS_AngleSpeed[MS_Enteros[2]] = 0.00
       Set MS_Speed[MS_Enteros[2]] = (1050.00 / 25.00)
       Set MS_SpeedChange[MS_Enteros[2]] = 0.00
       Set MS_Distancia[MS_Enteros[2]] = 0.00
       Set MS_DistanciaMAX[MS_Enteros[2]] = 800.00
       Set MS_AoE[MS_Enteros[2]] = 150.00
       Custom script:   set udg_MS_Grupo[udg_MS_Enteros[2]] = CreateGroup()
       Custom script:   call RemoveLocation(udg_MS_Punto[udg_MS_Enteros[2]])
       Set MS_Punto[MS_Enteros[2]] = (MS_PuntoCaster[1] offset by 10.00 towards MS_Angulo[MS_Enteros[2]] degrees)
       Unidad - Create 1 ID_DUMMY for (Owner of MS_Caster[MS_Enteros[2]]) at MS_Punto[MS_Enteros[2]] facing MS_Angulo[MS_Enteros[2]] degrees
       Efecto especial - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl
       Set MS_Efecto[MS_Enteros[2]] = (Last created special effect)
       Set MS_Dummy[MS_Enteros[2]] = (Last created unit)
       Set MS_Damage[MS_Enteros[2]] = ((5.00 + (70.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) + (2.00 x (Real((Fuerza of (Triggering unit) (Incluir bonuses))))))
       Custom script:   call RemoveLocation(udg_MS_Punto[udg_MS_Enteros[2]])
       Custom script:   call RemoveLocation(udg_MS_PuntoCaster[1])
       Custom script:   call RemoveLocation(udg_MS_PuntoCaster[2])
[/gui]

[gui]Misil Loop
   Acontecimientos
       Tiempo - Every 0.04 seconds of game time
   Condiciones
   Acciones
        Do Multiple ActionsFor each (Integer MS_Enteros[3]) from 1 to MS_Enteros[2], do (Actions)
           Bucle: Acciones
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       MS_Booleana[MS_Enteros[3]] Igual a (==) False
                   Entonces: Acciones
                       Set MS_Angulo[MS_Enteros[3]] = (MS_Angulo[MS_Enteros[3]] + MS_AngleSpeed[MS_Enteros[3]])
                       Set MS_Speed[MS_Enteros[3]] = (MS_Speed[MS_Enteros[3]] + MS_SpeedChange[MS_Enteros[3]])
                       Set MS_PuntoCaster[MS_Enteros[3]] = (Position of MS_Dummy[MS_Enteros[3]])
                       Set MS_Punto[MS_Enteros[3]] = (MS_PuntoCaster[MS_Enteros[3]] offset by MS_Speed[MS_Enteros[3]] towards MS_Angulo[MS_Enteros[3]] degrees)
                       Set MS_Distancia[MS_Enteros[3]] = (MS_Distancia[MS_Enteros[3]] + MS_Speed[MS_Enteros[3]])
                       Unidad - Move MS_Dummy[MS_Enteros[3]] instantly to MS_Punto[MS_Enteros[3]]
                        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                           Si: Condiciones
                               MS_Distancia[MS_Enteros[3]] Menor que o igual a (<=) MS_DistanciaMAX[MS_Enteros[3]]
                           Entonces: Acciones
                               Set Grupo = (Units within MS_AoE[MS_Enteros[3]] of MS_Punto[MS_Enteros[3]] matching (((Matching unit) belongs to an enemy of (Owner of MS_Caster[MS_Enteros[3]])) Igual a (==) True))
                               Destructible - Pick every destructible within 30.00 of MS_Punto[MS_Enteros[3]] and do (Actions)
                                   Bucle: Acciones
                                       Destructible - Kill (Picked destructible)
                               Grupo de unidad - Pick every unit in Grupo and do (Actions)
                                   Bucle: Acciones
                                        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                           Si: Condiciones
                                               ((Picked unit) is in MS_Grupo[MS_Enteros[3]]) Igual a (==) False
                                           Entonces: Acciones
                                               Unidad - Cause MS_Caster[MS_Enteros[3]] to damage (Picked unit), dealing MS_Damage[MS_Enteros[3]] damage of attack type Conjuros and damage type Fuerza
                                               Grupo de unidad - Add (Picked unit) to MS_Grupo[MS_Enteros[3]]
                                           Otros: Acciones
                               Custom script:   call DestroyGroup(udg_Grupo)
                           Otros: Acciones
                               Set MS_Enteros[1] = (MS_Enteros[1] - 1)
                               Set MS_Booleana[MS_Enteros[3]] = True
                               Set MS_Caster[MS_Enteros[3]] = Ninguna unidad
                               Unidad - Kill MS_Dummy[MS_Enteros[3]]
                               Efecto especial - Destroy MS_Efecto[MS_Enteros[3]]
                               Set MS_Dummy[MS_Enteros[3]] = Ninguna unidad
                                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                   Si: Condiciones
                                       MS_Enteros[1] Igual a (==) 0
                                   Entonces: Acciones
                                       Set MS_Enteros[2] = 0
                                       Detonador - Turn off (This trigger)
                                   Otros: Acciones
                       Custom script:   call RemoveLocation(udg_MS_Punto[udg_MS_Enteros[3]])
                       Custom script:   call RemoveLocation(udg_MS_PuntoCaster[udg_MS_Enteros[3]])
                   Otros: Acciones
[/gui]


[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee


Pisotón letal

Pisotón letal es muy simple de crear, simplemente se toman las unidades alrededor y se hace el daño que queremos.
Este hechizo está construido sobre el poder original, simplemente añade el daño de atributos encima del efecto original

[gui]Pisoton letal
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Pisotón letal (Modificado)
   Acciones
       Set temp_point[2] = (Position of (Triggering unit))
       Custom script:   set bj_wantDestroyGroup = true
       Grupo de unidad - Pick every unit in (Units within (225.00 + (50.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) of temp_point[2]) and do (Actions)
           Bucle: Acciones
               Unidad - Cause (Triggering unit) to damage (Picked unit), dealing ((Real((Fuerza of (Triggering unit) (Incluir bonuses)))) x 0.75) damage of attack type Conjuros and damage type Normal
[/gui]


[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Pisotón letal

Pisotón letal es muy simple de crear, simplemente se toman las unidades alrededor y se hace el daño que queremos.
Este hechizo está construido sobre el poder original, simplemente añade el daño de atributos encima del efecto original

[gui]Pisoton letal
Acontecimientos
Unidad - A unit Inicia el efecto de una habilidad
Condiciones
(Ability being cast) Igual a (==) Pisotón letal (Modificado)
Acciones
Set temp_point[2] = (Position of (Triggering unit))
Custom script: set bj_wantDestroyGroup = true
Grupo de unidad - Pick every unit in (Units within (225.00 + (50.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) of temp_point[2]) and do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
((Picked unit) is Una estructura) Igual a (==) False
((Picked unit) is Inmune a la magia) Igual a (==) False
((Picked unit) is dead) Igual a (==) False
((Picked unit) belongs to an enemy of (Triggering player)) Igual a (==) True
Entonces: Acciones
Unidad - Cause (Triggering unit) to damage (Picked unit), dealing ((Real((Fuerza of (Triggering unit) (Incluir bonuses)))) x 0.75) damage of attack type Conjuros and damage type Normal
Otros: Acciones
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Rejuvenecimiento

Para rejuvenecimiento utilizamos el sistema MUI para otorgar la curación extra por atributo.
Este hechizo utiliza el hechizo original y añade la curación por atributo encima

[gui]Rejuvenecimiento
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Rejuvenecimiento (Modificado)
   Acciones
       Set set_unit[1] = (Triggering unit)
       Set set_unit[2] = (Target unit of ability being cast)
       Set used_units = 2
       -------- -------------------------------------------------------------------- --------
       Set set_real[1] = (1.25 x (Real((Inteligencia of (Triggering unit) (Incluir bonuses)))))
       Set used_reals = 1
       -------- -------------------------------------------------------------------- --------
       Set trigger = Rejuvenecimiento loop
       Set timeout = 0.99
[/gui]

[gui]Rejuvenecimiento loop
   Acontecimientos
   Condiciones
   Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (get_unit[2] has buff Rejuvenecimiento) Igual a (==) True
           Entonces: Acciones
               Unidad - Set life of get_unit[2] to ((Vida of get_unit[2]) + get_real[1])
           Otros: Acciones
               Set finish = True
               Set automaticClean = True
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Raíces enredaderas

Raíces enredaderas es MUY similar a rejuvenecimiento, trabajamos con MUI exactamente de la misma manera.
Este hechizo también se aplica por encima del original.

[gui]Raices enredaderas
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Raíces enredaderas (Modificado)
   Acciones
       Set set_unit[1] = (Triggering unit)
       Set set_unit[2] = (Target unit of ability being cast)
       Set used_units = 2
       -------- -------------------------------------------------------------------- --------
       Set set_real[1] = (0.50 x (Real((Inteligencia of (Triggering unit) (Incluir bonuses)))))
       Set used_reals = 1
       -------- -------------------------------------------------------------------- --------
       Set trigger = Raices enredaderas loop
       Set timeout = 0.99
[/gui]

[gui]Raices enredaderas loop
   Acontecimientos
   Condiciones
   Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (get_unit[2] has buff Raíces enredaderas) Igual a (==) True
           Entonces: Acciones
               Unidad - Cause get_unit[1] to damage get_unit[2], dealing get_real[1] damage of attack type Conjuros and damage type Normal
           Otros: Acciones
               Set finish = True
               Set automaticClean = True
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Tranquilidad

Tranquilidad es un hechizo en área, se utiliza el sistema MUI para este y la curación extra se aplica por detonador.
Este hechizo se construye por encima del original

[gui]Tranquilidad
   Acontecimientos
       Unidad - A unit Inicia el efecto de una habilidad
   Condiciones
       (Ability being cast) Igual a (==) Tranquilidad (Modificado)
   Acciones
       Set set_unit[1] = (Triggering unit)
       Set used_units = 1
       -------- -------------------------------------------------------------------- --------
       Set set_point[1] = (Position of (Triggering unit))
       Set used_points = 1
       -------- -------------------------------------------------------------------- --------
       Set set_real[1] = ((0.75 x (Real((Inteligencia of (Triggering unit) (Incluir bonuses))))) x 0.10)
       Set used_reals = 1
       -------- -------------------------------------------------------------------- --------
       Set trigger = Tranquilidad loop
       Set timeout = 0.10
[/gui]

[gui]Tranquilidad loop
   Acontecimientos
   Condiciones
   Acciones
       Custom script:   set bj_wantDestroyGroup = true
       Grupo de unidad - Pick every unit in (Units within 950.00 of get_point[1]) and do (Actions)
           Bucle: Acciones
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       ((Picked unit) is Una estructura) Igual a (==) False
                       ((Picked unit) is Mecánica) Igual a (==) False
                       ((Picked unit) belongs to an enemy of (Owner of get_unit[1])) Igual a (==) False
                   Entonces: Acciones
                       Unidad - Set life of (Picked unit) to ((Vida of (Picked unit)) + get_real[1])
                   Otros: Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               (Current order of get_unit[1]) No igual a (!=) (Order(tranquility))
           Entonces: Acciones
               Set finish = True
               Set automaticClean = True
           Otros: Acciones
[/gui]

[Reinventando las mecánicas] Spells escalando por atributos 623713d2ee

Eso sería todo por ahora, continuaré esto en otro tutorial donde colocaré hechizos más complejos creados mediante sistemas propios, que mejorarán el tiempo de creación de estos hechizos.
Ahora deberían tener una base inicial para sus hechizos con escalado de atributos y una idea del trabajo que requiere al crearlos


Link: https://www.epicwar.com/maps/293279/


Última edición por Marcos_M el Sáb Mayo 18, 2019 6:27 pm, editado 1 vez
Volver arriba Ir abajo
Trycex
Soldado
Trycex


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 120
Reputación Reputación : 16
Monedas de oro : 610
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Mar Mayo 07, 2019 10:57 am

Tengo una duda con respecto a las spells de "rejuvenecimiento" y "Raices enredaderas"

Si usas la misma habilidad base sin numeros, como realizan la sanación en el tiempo y el daño en el tiempo?

Al menos yo en esos caso hacia 3 detonadores
1-Uno que setea las variables y y crea un reloj el cual marca la duración y activar el detonador 2
2-El evento periódico que se activa cada X segundos
3-El que luego cuando el reloj expira, apagar el detonador 2

Veo que tu forma tiene la opcion de "unidad seteada tiene buff X" pero no veo algo que diga "cada X realice esa acción"
Volver arriba Ir abajo
Marcos_M

Marcos_M


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3238
Reputación Reputación : 565
Monedas de oro : 10091
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Mar Mayo 07, 2019 8:13 pm

@Trycex escribió:
Tengo una duda con respecto a las spells de "rejuvenecimiento" y "Raices enredaderas"

Si usas la misma habilidad base sin numeros, como realizan la sanación en el tiempo y el daño en el tiempo?

Al menos yo en esos caso hacia 3 detonadores
1-Uno que setea las variables y y crea un reloj el cual marca la duración y activar el detonador 2
2-El evento periódico que se activa cada X segundos
3-El que luego cuando el reloj  expira, apagar el detonador 2

Veo que tu forma tiene la opcion de "unidad seteada tiene buff X" pero no veo algo que diga "cada X realice esa acción"

Es que utiliza el sistema MUI, de Ruke, que es un sistema que hace el trabajo de crear un reloj y guardar los valores de tus variables por vos. Pequeña explicación aquí:
http://www.worldofeditors.net/t521-haciendo-habilidades-mui-en-gui-la-manera-de-sauron-o
Volver arriba Ir abajo
Trycex
Soldado
Trycex


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 120
Reputación Reputación : 16
Monedas de oro : 610
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Miér Mayo 08, 2019 12:23 pm

El sistema de ruke(es sauron ?) es solo colocar variables que trabajan mágicamente(?) o sera que como estoy viejo y no entiendo pareciera que todo sale de la nada xD.

Que me acabo de ver el post explica todo paso a paso y al mismo tiempo lleva a otro post donde explica todo ya hecho, es que cuando no lo hago yo siento que veo algo mas y todo parece chino.

Pensaba que los sistemas era algo que creabas en un detonador y lo copiabas/pegabas. Como sea ya descargue los mapas, confio que pronto los pueda revisar.
Volver arriba Ir abajo
Marcos_M

Marcos_M


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3238
Reputación Reputación : 565
Monedas de oro : 10091
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Miér Mayo 08, 2019 8:10 pm

@Trycex escribió:
El sistema de ruke(es sauron ?) es solo colocar variables que trabajan mágicamente(?) o sera que como estoy viejo y no entiendo pareciera que todo sale de la nada xD.

Que me acabo de ver el post explica todo paso a paso y al mismo tiempo lleva a otro post donde explica todo ya hecho, es que cuando no lo hago yo siento que veo algo mas y todo parece chino.

Pensaba que los sistemas era algo que creabas en un detonador y lo copiabas/pegabas. Como sea ya descargue los mapas, confio que pronto los pueda revisar.

La explicación interior es la siguiente:

la variable "timeout", funciona como un activador del sistema. El sistema deteca cuando hacer un [gui]Set timeout = lo que sea[/gui]
y en ese momento guarda todos los datos que indicaste, unidades, números y detonador compañero. Entonces guarda todo eso y lo enlaza con un temporizador que se activará en el tiempo que "timeout" indique. Entonces cuando el temporizador se activa, todas las variables que guardaste, se movilizan a "get_variable[n]", y una vez se guardan, se activa el detonador compañero.
Una vez corre este detonador, el sistema, se encarga de actualizar todos los valores de las variables que está usando tu spell(incluso limpia los leaks de grupo,punto,efecto especial)
Volver arriba Ir abajo
Kuzui16
Aprendiz


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 28
Reputación Reputación : 0
Monedas de oro : 66
Monedas de Platino : 0 [Reinventando las mecánicas] Spells escalando por atributos Empty

Inventario :
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10
[Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10 [Reinventando las mecánicas] Spells escalando por atributos Empysl10

[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10Sáb Mayo 11, 2019 4:10 am

Éstas son las mecánicas Perfectas para mi mapa. +rep Very Happy
Volver arriba Ir abajo
Contenido patrocinado




[Reinventando las mecánicas] Spells escalando por atributos Empty
Mensaje(#) Tema: Re: [Reinventando las mecánicas] Spells escalando por atributos [Reinventando las mecánicas] Spells escalando por atributos Clock10

Volver arriba Ir abajo
 

[Reinventando las mecánicas] Spells escalando por atributos

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» Silhouette Core - Sistema de rol con d6
» Crónicas Mercenarias
» Obligada a dejar los Juegos Olímpicos por mantener una relación sentimental con un miembro del NPD
» En las tiendas GAME británicas ya pueden comprarse códigos para comprar en Steam
» Mecánica de Castillo de Falkenstein

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Academia :: Area GUI :: Creación de Spells-