Recuerdo del primer mensaje :Bienvenidos!
Hoy les traigo 5 héroes de DotA, iban a ser 6, pero el Fénix es muy difícil de hacer y permitir que todo lo demás ande(hay que reducir la velocidad mínima del map a 0 y eso chocaría con los slows y muchas muchas complicaciones, o no tuve una buena idea)IMPORTANTE: CORRESPONDEN A LA VERSION 6.78
Antes de pasar a los héroes, los requisitos de estos.[gui]Inicializar
Acontecimientos
Map initialization
Condiciones
Acciones
Tabla hash - Create a hashtable
Set TablaHash = (Last created hashtable)
Set DUMMY_ID = Dummy
[/gui]
Este detonador es usado por todos los héroes, así que ya saben su importancia.
[jass]// GUI-Friendly Damage Detection -- v1.2.1 -- by Weep
// http:// www.thehelper.net/forums/showthread.php?t=137957
//
// Requires: only this trigger and its variables.
//
// -- What? --
// This snippet provides a leak-free, GUI-friendly implementation of an "any unit takes
// damage" event. It requires no JASS knowledge to use.
//
// It uses the Game - Value Of Real Variable event as its method of activating other
// triggers, and passes the event responses through a few globals.
//
// -- Why? --
// The traditional GUI method of setting up a trigger than runs when any unit is damaged
// leaks trigger events. This snippet is easy to implement and removes the need to do
// you own GUI damage detection setup.
//
// -- How To Implement --
// 0. Before you copy triggers that use GDD into a new map, you need to copy over GDD
// with its GDD Variable Creator trigger, or there will be a problem: the variables
// won't be automatically created correctly.
//
// 1. Be sure "Automatically create unknown variables while pasting trigger data" is
// enabled in the World Editor general preferences.
// 2. Copy this trigger category ("GDD") and paste it into your map.
// (Alternately: create the variables listed in the globals block below, create a
// trigger named "GUI Friendly Damage Detection", and paste in this entire text.)
// 3. Create your damage triggers using Game - Value Of Real Variable as the event,
// select GDD_Event as the variable, and leave the rest of the settings to the default
// "becomes Equal to 0.00".
// The event responses are the following variables:
// GDD_Damage is the amount of damage, replacing Event Response - Damage Taken.
// GDD_DamagedUnit is the damaged unit, replacing Event Response - Triggering Unit.
// Triggering Unit can still be used, if you need to use waits.
// Read the -- Notes -- section below for more info.
// GDD_DamageSource is the damaging unit, replacing Event Response - Damage Source.
//
// -- Notes --
// GDD's event response variables are not wait-safe; you can't use them after a wait in
// a trigger. If you need to use waits, Triggering Unit (a.k.a. GetTriggerUnit()) can
// be used in place of GDD_DamageSource. There is no usable wait-safe equivalent to
// Event Damage or Damage Source; you'll need to save the values yourself.
//
// Don't write any values to the variables used as the event responses, or it will mess
// up any other triggers using this snippet for their triggering. Only use their values.
//
// This uses arrays, so can detect damage for a maximum of 8190 units at a time, and
// cleans up data at a rate of 33.33 per second, by default. This should be enough for
// most maps, but if you want to change the rate, change the value returned in the
// GDD_RecycleRate function at the top of the code, below.
//
// By default, GDD will not register units that have Locust at the moment of their
// entering the game, and will not recognize when they take damage (which can only
// happen if the Locust ability is later removed from the unit.) To allow a unit to have
// Locust yet still cause GDD damage events if Locust is removed, you can either design
// the unit to not have Locust by default and add it via triggers after creation, or
// edit the GDD_Filter function at the top of the code, below.
//
// -- Credits --
// Captain Griffin on wc3c.net for the research and concept of GroupRefresh.
//
// Credit in your map not needed, but please include this README.
//
// -- Version History --
// 1.2.1: Minor code cleaning. Added configuration functions. Updated documentation.
// 1.2.0: Made this snippet work properly with recursive damage.
// 1.1.1: Added a check in order to not index units with the Locust ability (dummy units).
// If you wish to check for damage taken by a unit that is unselectable, do not
// give the unit-type Locust in the object editor; instead, add the Locust ability
// 'Aloc' via a trigger after its creation, then remove it.
// 1.1.0: Added a check in case a unit gets moved out of the map and back.
// 1.0.0: First release.
//===================================================================
// Configurables.
function GDD_RecycleRate takes nothing returns real //The rate at which the system checks units to see if they've been removed from the game
return 0.05
endfunction
function GDD_Filter takes unit u returns boolean //The condition a unit has to pass to have it registered for damage detection
return GetUnitAbilityLevel(u, 'Aloc') == 0 //By default, the system ignores Locust units, because they normally can't take damage anyway
endfunction
//===================================================================
// This is just for reference.
// If you use JassHelper, you could uncomment this section instead of creating the variables in the trigger editor.
// globals
// real udg_GDD_Event = 0.
// real udg_GDD_Damage = 0.
// unit udg_GDD_DamagedUnit
// unit udg_GDD_DamageSource
// trigger array udg_GDD__TriggerArray
// integer array udg_GDD__Integers
// unit array udg_GDD__UnitArray
// group udg_GDD__LeftMapGroup = CreateGroup()
// endglobals
//===================================================================
// System code follows. Don't touch!
function GDD_Event takes nothing returns boolean
local unit damagedcache = udg_GDD_DamagedUnit
local unit damagingcache = udg_GDD_DamageSource
local real damagecache = udg_GDD_Damage
set udg_GDD_DamagedUnit = GetTriggerUnit()
set udg_GDD_DamageSource = GetEventDamageSource()
set udg_GDD_Damage = GetEventDamage()
set udg_GDD_Event = 1.
set udg_GDD_Event = 0.
set udg_GDD_DamagedUnit = damagedcache
set udg_GDD_DamageSource = damagingcache
set udg_GDD_Damage = damagecache
set damagedcache = null
set damagingcache = null
return false
endfunction
function GDD_AddDetection takes nothing returns boolean
// if(udg_GDD__Integers[0] > 8190) then
// call BJDebugMsg("GDD: Too many damage events! Decrease number of units present in the map or increase recycle rate.")
// ***Recycle rate is specified in the GDD_RecycleRate function at the top of the code. Smaller is faster.***
// return
// endif
if(IsUnitInGroup(GetFilterUnit(), udg_GDD__LeftMapGroup)) then
call GroupRemoveUnit(udg_GDD__LeftMapGroup, GetFilterUnit())
elseif(GDD_Filter(GetFilterUnit())) then
set udg_GDD__Integers[0] = udg_GDD__Integers[0]+1
set udg_GDD__UnitArray[udg_GDD__Integers[0]] = GetFilterUnit()
set udg_GDD__TriggerArray[udg_GDD__Integers[0]] = CreateTrigger()
call TriggerRegisterUnitEvent(udg_GDD__TriggerArray[udg_GDD__Integers[0]], udg_GDD__UnitArray[udg_GDD__Integers[0]], EVENT_UNIT_DAMAGED)
call TriggerAddCondition(udg_GDD__TriggerArray[udg_GDD__Integers[0]], Condition(function GDD_Event))
endif
return false
endfunction
function GDD_PreplacedDetection takes nothing returns nothing
local group g = CreateGroup()
local integer i = 0
loop
call GroupEnumUnitsOfPlayer(g, Player(i), Condition(function GDD_AddDetection))
set i = i+1
exitwhen i == bj_MAX_PLAYER_SLOTS
endloop
call DestroyGroup(g)
set g = null
endfunction
function GDD_GroupRefresh takes nothing returns nothing
// Based on GroupRefresh by Captain Griffen on wc3c.net
if (bj_slotControlUsed[5063] == true) then
call GroupClear(udg_GDD__LeftMapGroup)
set bj_slotControlUsed[5063] = false
endif
call GroupAddUnit(udg_GDD__LeftMapGroup, GetEnumUnit())
endfunction
function GDD_Recycle takes nothing returns nothing
if(udg_GDD__Integers[0] <= 0) then
return
elseif(udg_GDD__Integers[1] <= 0) then
set udg_GDD__Integers[1] = udg_GDD__Integers[0]
endif
if(GetUnitTypeId(udg_GDD__UnitArray[udg_GDD__Integers[1]]) == 0) then
call DestroyTrigger(udg_GDD__TriggerArray[udg_GDD__Integers[1]])
set udg_GDD__TriggerArray[udg_GDD__Integers[1]] = null
set udg_GDD__TriggerArray[udg_GDD__Integers[1]] = udg_GDD__TriggerArray[udg_GDD__Integers[0]]
set udg_GDD__UnitArray[udg_GDD__Integers[1]] = udg_GDD__UnitArray[udg_GDD__Integers[0]]
set udg_GDD__UnitArray[udg_GDD__Integers[0]] = null
set udg_GDD__Integers[0] = udg_GDD__Integers[0]-1
endif
set udg_GDD__Integers[1] = udg_GDD__Integers[1]-1
endfunction
function GDD_LeaveMap takes nothing returns boolean
local boolean cached = bj_slotControlUsed[5063]
if(udg_GDD__Integers[2] < 64) then
set udg_GDD__Integers[2] = udg_GDD__Integers[2]+1
else
set bj_slotControlUsed[5063] = true
call ForGroup(udg_GDD__LeftMapGroup, function GDD_GroupRefresh)
set udg_GDD__Integers[2] = 0
endif
call GroupAddUnit(udg_GDD__LeftMapGroup, GetFilterUnit())
set bj_slotControlUsed[5063] = cached
return false
endfunction
// ===========================================================================
function InitTrig_GUI_Friendly_Damage_Detection takes nothing returns nothing
local region r = CreateRegion()
call RegionAddRect(r, GetWorldBounds())
call TriggerRegisterEnterRegion(CreateTrigger(), r, Condition(function GDD_AddDetection))
call TriggerRegisterLeaveRegion(CreateTrigger(), r, Condition(function GDD_LeaveMap))
call GDD_PreplacedDetection()
call TimerStart(CreateTimer(), GDD_RecycleRate(), true, function GDD_Recycle)
set r = null
endfunction[/jass]
Crean las variables del sistema con esto
[gui]GDD Variable Creator
Acontecimientos
Condiciones
Acciones
Set GDD_Event = 0.00
Set GDD_Damage = 0.00
Set GDD_DamagedUnit = Ninguna unidad
Set GDD_DamageSource = Ninguna unidad
Set GDD__TriggerArray[0] = (This trigger)
Set GDD__Integers[0] = 0
Set GDD__UnitArray[0] = Ninguna unidad
Set GDD__LeftMapGroup = GDD__LeftMapGroup
[/gui]
Unit Invisible[jass]function UnitInvisible takes unit u returns boolean
return GetUnitAbilityLevel(u,'Agho')>0 or GetUnitAbilityLevel(u,'Apiv')>0 or GetUnitAbilityLevel(u,'BOwk')>0 or GetUnitAbilityLevel(u,'Binv')>0 or (GetUnitAbilityLevel(u, 'Ashm')>0 and GetFloatGameState(GAME_STATE_TIME_OF_DAY) > 18.00 and GetFloatGameState(GAME_STATE_TIME_OF_DAY) < 6.00 and OrderId2String(GetUnitCurrentOrder(u)) == "ambush") or (GetUnitAbilityLevel(u, 'Sshm')>0 and GetFloatGameState(GAME_STATE_TIME_OF_DAY) > 18.00 and GetFloatGameState(GAME_STATE_TIME_OF_DAY) < 6.00 and OrderId2String(GetUnitCurrentOrder(u)) == "ambush")
endfunction[/jass]
Esta función es solo utilizada por el Bloodseeker y su spell Thirst. Pueden agregar nuevos buffs de invisibles colocando en la línea del return esto [ljass] and GetUnitAbilityLevel(u,rawcode)[/ljass]. Si quieren saber el rawcode de sus buffs tienes que ir al editor de objetos y en Ver colocar Mostrar valores brutos. Luego solo colocan el rawcode entre ''
AddSpecialEffectTargetForPlayer[jass]function AddSpecialEffectTargetForPlayer takes string modelName, widget targetWidget, string attachPoint, player whichPlayer returns effect
local string s = ""
if GetLocalPlayer() == whichPlayer or IsPlayerAlly(GetLocalPlayer(), whichPlayer) then
set s = modelName
endif
return AddSpecialEffectTarget(s,targetWidget, attachPoint)
endfunction[/jass]
Esta función es usada por Spiritbreaker en Charge of Darkness y Sniper en Assassinate.
Bloodseeker![[PACK] Héroes de DotA - Página 3 Chaman_mini](https://www.dotaspanish.com/wp-content/uploads/chaman_mini.png)
Detonador de constantes:[gui]Constantes Hablidades Bloodseeker
Acontecimientos
Map initialization
Condiciones
Acciones
-------- ------------ Blood Bath ------------------ --------
Set BloodBath_Ability = Blood Bath
-------- ------------ Blood Rage ------------------ --------
Set BloodRage_Ability = Bloodrage
-------- ------------ Rupture ------------------ --------
Set Rupture_Ability = Rupture
-------- ------------ Thirst ------------------ --------
-------- Estos 2 deben ser iguales para que todo funcione --------
Set Thirst_Ability = Thirst
Set Thirst_AbilityHer = Thirst
Set Thirst_AumentoArmor_Ability = Thirst Armor Dummy
Set Thirst_AumentoMS_Ability = Thirst Dummy
Set Thirst_LibroConjuros_Ability = Libro Thirst
Set Thirst_UnidadDummy = DummyVisionThirst
Do Multiple ActionsFor each (Integer A) from 1 to 12, do (Actions)
Bucle: Acciones
Jugador - Desactivar Thirst_LibroConjuros_Ability for (Player((Integer A)))
[/gui]
Bloodrage: Drives a unit into a bloodthristy rage. That unit is unable to cast spells, has its attack damage increased, and loses a small amount of hit points every second.
[gui]Bloodrage
Acontecimientos
Unidad - A unit Inicia el efecto de una habilidad
Condiciones
(Ability being cast) Igual a (==) BloodRage_Ability
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
((Target unit of ability being cast) belongs to an enemy of (Triggering player)) Igual a (==) True
Entonces: Acciones
Unidad - Remove Positivo buffs considered Mágico from (Target unit of ability being cast) (Incluir expiration timers, Excluir auras)
Unidad - Remove Desaparición buff from (Target unit of ability being cast)
Otros: Acciones
Unidad - Remove Negativo buffs considered Mágico from (Target unit of ability being cast) (Incluir expiration timers, Excluir auras)
[/gui]
Blood bath: Whenever Strygwyr kills a unit, he bathes himself in the blood, regenerating his life source.
[gui]Blood Bath
Acontecimientos
Unidad - A unit Muere
Condiciones
((Triggering unit) is Una estructura) Igual a (==) False
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
((Triggering unit) is Un hÃ

roe) Igual a (==) True
Entonces: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Level of BloodBath_Ability for (Killing unit)) Mayor que (>) 0
Entonces: Acciones
Set Real = ((Vida máx. of (Triggering unit)) x (0.10 x (Real((Level of BloodBath_Ability for (Killing unit))))))
Unidad - Set life of (Killing unit) to ((Vida of (Killing unit)) + Real)
Efecto especial - Create a special effect attached to the origin of (Killing unit) using Objects\Spawnmodels\Human\HumanBlood\HeroBloodElfBlood.mdl
Efecto especial - Destroy (Last created special effect)
Otros: Acciones
Set Punto = (Position of (Triggering unit))
Custom script: set bj_wantDestroyGroup = true
Grupo de unidad - Pick every unit in (Units within 325.00 of Punto matching (((Level of BloodBath_Ability for (Matching unit)) Mayor que (>) 0) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Igual a (==) True))) and do (Actions)
Bucle: Acciones
Set Real = ((Vida máx. of (Triggering unit)) x (0.05 x (Real((Level of BloodBath_Ability for (Picked unit))))))
Unidad - Set life of (Picked unit) to ((Vida of (Picked unit)) + Real)
Custom script: call RemoveLocation(udg_Punto)
Otros: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Level of BloodBath_Ability for (Killing unit)) Mayor que (>) 0
Entonces: Acciones
Set Real = ((Vida máx. of (Triggering unit)) x (0.05 + (0.05 x (Real((Level of BloodBath_Ability for (Killing unit)))))))
Unidad - Set life of (Killing unit) to ((Vida of (Killing unit)) + Real)
Efecto especial - Create a special effect attached to the origin of (Killing unit) using Objects\Spawnmodels\Human\HumanBlood\HeroBloodElfBlood.mdl
Efecto especial - Destroy (Last created special effect)
Otros: Acciones
[/gui]
Thirst: Enables Strygwyr to sense the bleeding of any enemy hero below 20/30/40/50% hp. If he finds one, Strygwyr gains vision of that unit and increased movement speed and armor.
[gui]Thirst
Acontecimientos
Unidad - A unit Adquiere una habilidad
Condiciones
(Learned Hero Skill) Igual a (==) Thirst_AbilityHer
(Learned skill level) Igual a (==) 1
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
ST_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn on ThirstLoop
Otros: Acciones
Set ST_Enteros[1] = (ST_Enteros[1] + 1)
Set ST_Enteros[2] = (ST_Enteros[2] + 1)
Set ST_Caster[ST_Enteros[2]] = (Triggering unit)
Set ST_AoE[ST_Enteros[2]] = 6000.00
Set ST_Instancia[ST_Enteros[2]] = 0
[/gui]
[gui]ThirstLoop
Acontecimientos
Tiempo - Every 0.20 seconds of game time
Condiciones
Acciones
Do Multiple ActionsFor each (Integer ST_Enteros[3]) from 1 to ST_Enteros[2], do (Actions)
Bucle: Acciones
Set ST_Instancia[ST_Enteros[3]] = (ST_Instancia[ST_Enteros[3]] + 1)
Set Entero2 = (Level of Thirst_Ability for ST_Caster[ST_Enteros[3]])
Set Punto = (Position of ST_Caster[ST_Enteros[3]])
Set Grupo = (Units within 99999.00 of Punto matching (((((Matching unit) is Un hÃ
roe) Igual a (==) True) and (((Matching unit) is an illusion) Igual a (==) False)) and ((((Matching unit) is dead) Igual a (==) False) and (((Matching unit) belongs to an enemy of (Owner of
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(ST_Caster[ST_Enteros[3]] is dead) Igual a (==) True
Entonces: Acciones
Grupo de unidad - Pick every unit in Grupo and do (Actions)
Bucle: Acciones
Set Dummy = (Load (Key ThirstDummy) of (Key (Picked unit)) in TablaHash)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
Dummy No igual a (!=) Ninguna unidad
Entonces: Acciones
Unidad - Remove Dummy from the game
Tabla hash - Save Handle OfNinguna unidad as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Custom script: call RemoveSavedHandle(udg_TablaHash, GetHandleId(GetEnumUnit()),StringHash("ThirstDummy"))
Otros: Acciones
Grupo de unidad - Remove (Picked unit) from Grupo
Otros: Acciones
Grupo de unidad - Pick every unit in Grupo and do (Actions)
Bucle: Acciones
Set Dummy = (Load (Key ThirstDummy) of (Key (Picked unit)) in TablaHash)
Set Punto2 = (Position of (Picked unit))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Percentage life of (Picked unit)) Menor que o igual a (<=) (10.00 + (10.00 x (Real(Entero2))))
(Distance between Punto and Punto2) Menor que o igual a (<=) ST_AoE[ST_Enteros[3]]
Entonces: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
Dummy Igual a (==) Ninguna unidad
Entonces: Acciones
Custom script: if UnitInvisible(GetEnumUnit()) then
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Percentage life of (Picked unit)) Menor que o igual a (<=) (5.00 + (5.00 x (Real(Entero2))))
Entonces: Acciones
Unidad - Create 1 Thirst_UnidadDummy for (Owner of ST_Caster[ST_Enteros[3]]) at Punto2 facing Vista edificio predeterminada (270.0) degrees
Set Dummy = (Last created unit)
Tabla hash - Save Handle Of(Last created unit) as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Unidad - Add Vista certera (Neutral 1) to Dummy
Otros: Acciones
Unidad - Remove Dummy from the game
Tabla hash - Save Handle OfNinguna unidad as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Custom script: call RemoveSavedHandle(udg_TablaHash, GetHandleId(GetEnumUnit()),StringHash("ThirstDummy"))
Grupo de unidad - Remove (Picked unit) from Grupo
Custom script: else
Unidad - Create 1 Thirst_UnidadDummy for (Owner of ST_Caster[ST_Enteros[3]]) at Punto2 facing Vista edificio predeterminada (270.0) degrees
Set Dummy = (Last created unit)
Tabla hash - Save Handle Of(Last created unit) as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Custom script: endif
Otros: Acciones
Unidad - Move Dummy instantly to Punto2
Custom script: if UnitInvisible(GetEnumUnit()) then
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Percentage life of (Picked unit)) Menor que o igual a (<=) (5.00 + (5.00 x (Real(Entero2))))
Entonces: Acciones
Unidad - Add Vista certera (Neutral 1) to Dummy
Otros: Acciones
Unidad - Remove Dummy from the game
Tabla hash - Save Handle OfNinguna unidad as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Custom script: call RemoveSavedHandle(udg_TablaHash, GetHandleId(GetEnumUnit()),StringHash("ThirstDummy"))
Grupo de unidad - Remove (Picked unit) from Grupo
Custom script: endif
Otros: Acciones
Unidad - Remove Dummy from the game
Tabla hash - Save Handle OfNinguna unidad as (Key ThirstDummy) of (Key (Picked unit)) in TablaHash
Custom script: call RemoveSavedHandle(udg_TablaHash, GetHandleId(GetEnumUnit()),StringHash("ThirstDummy"))
Grupo de unidad - Remove (Picked unit) from Grupo
Custom script: call RemoveLocation(udg_Punto2)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Number of units in Grupo) Mayor que (>) 0
Entonces: Acciones
Unidad - Add Thirst_LibroConjuros_Ability to ST_Caster[ST_Enteros[3]]
Unidad - Set level of Thirst_AumentoMS_Ability for ST_Caster[ST_Enteros[3]] to Entero2
Unidad - Set level of Thirst_AumentoArmor_Ability for ST_Caster[ST_Enteros[3]] to Entero2
Otros: Acciones
Unidad - Remove Thirst_LibroConjuros_Ability from ST_Caster[ST_Enteros[3]]
Custom script: call DestroyGroup(udg_Grupo)
Custom script: call RemoveLocation(udg_Punto)
[/gui]
Rupture: Deals a mighty blow to the enemy causing any movement to result in bleeding and loss of life.
[gui]Rupture Init
Acontecimientos
Unidad - A unit Inicia el efecto de una habilidad
Condiciones
(Ability being cast) Igual a (==) Rupture_Ability
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
R_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn on Rupture Loop
Otros: Acciones
Set R_Enteros[1] = (R_Enteros[1] + 1)
Set R_Enteros[2] = (R_Enteros[2] + 1)
Set R_Caster[R_Enteros[2]] = (Triggering unit)
Set R_Target[R_Enteros[2]] = (Target unit of ability being cast)
Set R_Percentage[R_Enteros[2]] = (0.20 x (Real((Level of (Ability being cast) for (Triggering unit)))))
Set R_PuntoInit[R_Enteros[2]] = (Position of (Target unit of ability being cast))
Set R_Tiempo[R_Enteros[2]] = (6.00 + (Real((Level of (Ability being cast) for (Triggering unit)))))
Set Real = (50.00 + (100.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Vida of (Target unit of ability being cast)) Mayor que (>) Real
Entonces: Acciones
Unidad - Set life of (Target unit of ability being cast) to ((Vida of (Target unit of ability being cast)) - Real)
Otros: Acciones
Unidad - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing 9999.00 damage of attack type Caos and damage type Desconocido
[/gui]
[gui]Rupture Loop
Acontecimientos
Tiempo - Every 0.25 seconds of game time
Condiciones
Acciones
Do Multiple ActionsFor each (Integer R_Enteros[3]) from 1 to R_Enteros[2], do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
R_Caster[R_Enteros[3]] No igual a (!=) Ninguna unidad
Entonces: Acciones
Set R_Tiempo[R_Enteros[3]] = (R_Tiempo[R_Enteros[3]] - 0.25)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
R_Tiempo[R_Enteros[3]] Menor que (<) 0.01
Entonces: Acciones
Set R_Caster[R_Enteros[3]] = Ninguna unidad
Set R_Enteros[1] = (R_Enteros[1] - 1)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
R_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn off (This trigger)
Set R_Enteros[2] = 0
Otros: Acciones
Otros: Acciones
Set Punto = (Position of R_Target[R_Enteros[3]])
Set Real = (Distance between Punto and R_PuntoInit[R_Enteros[3]])
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
Real Menor que (<) 1300.00
Real Mayor que (>) 0.00
Entonces: Acciones
Efecto especial - Create a special effect attached to the chest of R_Target[R_Enteros[3]] using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
Efecto especial - Destroy (Last created special effect)
Set Damage = (Real x R_Percentage[R_Enteros[3]])
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Vida of R_Target[R_Enteros[3]]) Menor que (<) Damage
Entonces: Acciones
Unidad - Cause R_Caster[R_Enteros[3]] to damage R_Target[R_Enteros[3]], dealing 9999.00 damage of attack type Caos and damage type Desconocido
Otros: Acciones
Unidad - Set life of R_Target[R_Enteros[3]] to ((Vida of R_Target[R_Enteros[3]]) - Damage)
Otros: Acciones
Custom script: call RemoveLocation(udg_Punto)
Custom script: call RemoveLocation(udg_R_PuntoInit[udg_R_Enteros[3]])
Set R_PuntoInit[R_Enteros[3]] = (Position of R_Target[R_Enteros[3]])
Otros: Acciones
[/gui]
Spiritbreaker
http://media.playdota.com/hero/123/character.gif
Detonador de Constantes:
[gui]Constantes Habilidades Barathrum
Acontecimientos
Map initialization
Condiciones
Acciones
-------- ------------ Charge of Darkness ------------------ --------
Set ChargeOfDarkness_Ability = Charge of Darkness
Set ChargeOfDarkness_DummyHabi = StunDummy Charge Of Darkness
Set ChargeOfDarkness_ModelEffect = channel
Set ChargeOfDarkness_ModelEffect = Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
-------- ------------ Greater Bash ------------------ --------
Set GreaterBash_Ability = Greater Bash
Set GreaterBash_HabiAumentoMS = Increase MS Greater Bash
Set GreaterBash_ModelEffectFrictio = Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
-------- ------------ Nether Strike ------------------ --------
Set NetherStrike_Ability = Nether Strike
[/gui]
Requisito para Greater Bash's:
[gui]Do a Greater Bash
Acontecimientos
Condiciones
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
GB_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn on Greater Loop
Otros: Acciones
Set GB_Enteros[1] = (GB_Enteros[1] + 1)
Set GB_Enteros[2] = (GB_Enteros[2] + 1)
Set GB_Caster[GB_Enteros[2]] = GB_Caster[0]
Set GB_Duracion[GB_Enteros[2]] = GB_Duracion[0]
Set GB_Target[GB_Enteros[2]] = GB_Target[0]
Set GB_Speed[GB_Enteros[2]] = ((150.00 / GB_Duracion[0]) / 25.00)
Set GB_Punto = (Position of GB_Caster[0])
Set GB_Punto2 = (Position of GB_Target[0])
Set GB_Angulo[GB_Enteros[2]] = (Angle from GB_Punto to GB_Punto2)
Unidad - Cause GB_Caster[0] to damage GB_Target[0], dealing ((Current movement speed of GB_Caster[0]) x (0.10 x (Real((Level of GreaterBash_Ability for GB_Caster[0]))))) damage of attack type Conjuros and damage type Normal
Unidad - Set the custom value of GB_Target[0] to 1
Custom script: call RemoveLocation(udg_GB_Punto)
Custom script: call RemoveLocation(udg_GB_Punto2)
[/gui]
[gui]Greater Loop
Acontecimientos
Tiempo - Every 0.04 seconds of game time
Condiciones
Acciones
Do Multiple ActionsFor each (Integer GB_Enteros[3]) from 1 to GB_Enteros[2], do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
GB_Caster[GB_Enteros[3]] No igual a (!=) Ninguna unidad
Entonces: Acciones
Set GB_Duracion[GB_Enteros[3]] = (GB_Duracion[GB_Enteros[3]] - 0.04)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
GB_Duracion[GB_Enteros[3]] Mayor que o igual a (>=) 0.01
Entonces: Acciones
Set Punto = (Position of GB_Target[GB_Enteros[3]])
Set Punto2 = (Punto offset by GB_Speed[GB_Enteros[3]] towards GB_Angulo[GB_Enteros[3]] degrees)
Efecto especial - Create a special effect at Punto2 using GreaterBash_ModelEffectFrictio
Efecto especial - Destroy (Last created special effect)
Unidad - Move GB_Target[GB_Enteros[3]] instantly to Punto2
Custom script: call RemoveLocation(udg_Punto)
Custom script: call RemoveLocation(udg_Punto2)
Otros: Acciones
Unidad - Set the custom value of GB_Target[GB_Enteros[3]] to 0
Set GB_Caster[GB_Enteros[3]] = Ninguna unidad
Set GB_Enteros[1] = (GB_Enteros[1] - 1)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
GB_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn off (This trigger)
Set GB_Enteros[2] = 0
Otros: Acciones
Otros: Acciones
[/gui]
Charge of Darkness: Barathrum fixes his sight on an enemy and starts charging through all objects. Any unit that comes into contact during the charge is hit by a Greater Bash, including the target. Upon leaving the shadows, Barathrum shocks his opponent into an immobile state for some time. Charge is interrupted if disabled.
[gui]Charge of Darkness
Acontecimientos
Unidad - A unit Inicia el efecto de una habilidad
Condiciones
(Ability being cast) Igual a (==) ChargeOfDarkness_Ability
Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
CD_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn on ChargeOfDarkness
Otros: Acciones
Set CD_Enteros[1] = (CD_Enteros[1] + 1)
Set CD_Enteros[2] = (CD_Enteros[2] + 1)
Set CD_Booleana[CD_Enteros[2]] = False
Set CD_Caster[CD_Enteros[2]] = (Triggering unit)
Set CD_Target[CD_Enteros[2]] = (Target unit of ability being cast)
Set CD_Speed[CD_Enteros[2]] = ((550.00 + (50.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) / 25.00)
Custom script: set udg_CD_Efecto[udg_CD_Enteros[2]] = AddSpecialEffectTargetForPlayer( udg_ChargeOfDarkness_ModelEffect, GetSpellTargetUnit(), "overhead", GetTriggerPlayer() )
Custom script: call SetUnitAnimationByIndex(GetTriggerUnit(), 2)
Animación - Change (Triggering unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 40.00% transparency
Efecto especial - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl
Set CD_Efecto2[CD_Enteros[2]] = (Last created special effect)
[/gui]
[gui]ChargeOfDarkness
Acontecimientos
Tiempo - Every 0.04 seconds of game time
Condiciones
Acciones
Custom script: local real x
Custom script: local real y
Do Multiple ActionsFor each (Integer CD_Enteros[3]) from 1 to CD_Enteros[2], do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
CD_Caster[CD_Enteros[3]] No igual a (!=) Ninguna unidad
Entonces: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
Multiple ConditionsAnd - All (Conditions) are true
Condiciones
(Current order of CD_Caster[CD_Enteros[3]]) No igual a (!=) (Order(ChargeOfDarkness_ModelEffect))
Entonces: Acciones
Set CD_Booleana[CD_Enteros[3]] = True
Otros: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(CD_Caster[CD_Enteros[3]] is dead) Igual a (==) False
Entonces: Acciones
Set Punto = (Position of CD_Caster[CD_Enteros[3]])
Set Punto2 = (Position of CD_Target[CD_Enteros[3]])
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(CD_Target[CD_Enteros[3]] is dead) Igual a (==) True
Entonces: Acciones
Set CD_Booleana[CD_Enteros[3]] = True
Custom script: set bj_wantDestroyGroup = true
Grupo de unidad - Pick every unit in (Units within 4000.00 of Punto2 matching ((((Matching unit) is dead) Igual a (==) False) and ((((Matching unit) is Una estructura) Igual a (==) False) and ((((Matching unit) is visible to (Owner of CD_Caster[CD_Enteros[3]])) Igual a (==) True) and (((Matching and do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(CD_Target[CD_Enteros[3]] is dead) Igual a (==) True
Entonces: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Picked unit) No igual a (!=) Ninguna unidad
Entonces: Acciones
Efecto especial - Destroy CD_Efecto[CD_Enteros[3]]
Set CD_Target[CD_Enteros[3]] = (Picked unit)
Custom script: set udg_CD_Efecto[udg_CD_Enteros[3]] = AddSpecialEffectTargetForPlayer( udg_ChargeOfDarkness_ModelEffect, GetEnumUnit(), "overhead", GetOwningPlayer(udg_CD_Caster[udg_CD_Enteros[3]]) )
Custom script: call RemoveLocation(udg_Punto2)
Set Punto2 = (Position of CD_Target[CD_Enteros[3]])
Set CD_Booleana[CD_Enteros[3]] = False
Otros: Acciones
Otros: Acciones
Otros: Acciones
Set Real = (Angle from Punto to Punto2)
Set Punto3 = (Punto offset by CD_Speed[CD_Enteros[3]] towards Real degrees)
Custom script: set x = GetLocationX(udg_Punto3)
Custom script: set y = GetLocationY(udg_Punto3)
Unidad - Make CD_Caster[CD_Enteros[3]] face Real over 0.00 seconds
Custom script: call SetUnitX(udg_CD_Caster[udg_CD_Enteros[3]], x)
Custom script: call SetUnitY(udg_CD_Caster[udg_CD_Enteros[3]], y)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Level of GreaterBash_Ability for CD_Caster[CD_Enteros[3]]) Mayor que (>) 0
Entonces: Acciones
Set Grupo = (Units within 300.00 of Punto3 matching ((((Matching unit) is Una estructura) Igual a (==) False) and ((((((Matching unit) is dead) Igual a (==) False) and ((Custom value of (Matching unit)) Igual a (==) 0)) and ((Matching unit) No igual a (!=) CD_Target[CD_E
Set GB_Duracion[0] = (0.80 + (0.20 x (Real((Level of GreaterBash_Ability for CD_Caster[CD_Enteros[3]])))))
Set GB_Caster[0] = CD_Caster[CD_Enteros[3]]
Grupo de unidad - Pick every unit in Grupo and do (Actions)
Bucle: Acciones
Set GB_Target[0] = (Picked unit)
Detonador - Run Do a Greater Bash (ignoring conditions)
Otros: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Distance between Punto and Punto2) Menor que o igual a (<=) 128.00
Entonces: Acciones
Set CD_Booleana[CD_Enteros[3]] = True
Unidad - Create 1 DUMMY_ID for (Owner of CD_Caster[CD_Enteros[3]]) at Punto3 facing Real degrees
Unidad - Add ChargeOfDarkness_DummyHabi to (Last created unit)
Unidad - Set level of ChargeOfDarkness_DummyHabi for (Last created unit) to (Level of ChargeOfDarkness_Ability for CD_Caster[CD_Enteros[3]])
Unidad - Order (Last created unit) to Humano Rey de la Montaña: Rayo de tormenta CD_Target[CD_Enteros[3]]
Unidad - Add a 1.00 second GenÃ
rico expiration timer to (Last created unit)
Unidad - Cause CD_Caster[CD_Enteros[3]] to damage CD_Target[CD_Enteros[3]], dealing ((Current movement speed of CD_Caster[CD_Enteros[3]]) x (0.10 x (Real((Level of GreaterBash_Ability for CD_Caster[CD_Enteros[3]]))))) damage of attack type Conjuros and damage type Normal
Unidad - Order CD_Caster[CD_Enteros[3]] to Atacar CD_Target[CD_Enteros[3]]
Otros: Acciones
Custom script: call RemoveLocation(udg_Punto)
Custom script: call RemoveLocation(udg_Punto2)
Custom script: call RemoveLocation(udg_Punto3)
Otros: Acciones
Set CD_Booleana[CD_Enteros[3]] = True
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
CD_Booleana[CD_Enteros[3]] Igual a (==) True
Entonces: Acciones
Animación - Change CD_Caster[CD_Enteros[3]]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
Efecto especial - Destroy CD_Efecto[CD_Enteros[3]]
Efecto especial - Destroy CD_Efecto2[CD_Enteros[3]]
Set CD_Caster[CD_Enteros[3]] = Ninguna unidad
Set CD_Enteros[1] = (CD_Enteros[1] - 1)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
CD_Enteros[1] Igual a (==) 0
Entonces: Acciones
Detonador - Turn off (This trigger)
Set CD_Enteros[2] = 0
Otros: Acciones
Otros: Acciones
Otros: Acciones
[/gui]
Empowering Haste: His presence increases the movement speed of nearby allied units.
Greater Bash: Gives a 17% chance to bash enemies across the ground, doing more initial damage and damage as they skid. You gain 15% movement speed bonus for 3 seconds when this triggers.
[gui]Greater Bash
Acontecimientos
Unidad - A unit Es atacado
Condiciones
(Level of GreaterBash_Ability for (Attacking unit)) Mayor que (>) 0
((Triggering unit) is Una estructura) Igual a (==) False
(Random integer number between 1 and 100) Menor que o igual a (<=) 17
(Custom value of (Triggering unit)) Igual a (==) 0
Acciones
Efecto especial - Create a special effect attached to the hand, right of (Attacking unit) using Abilities\Weapons\PhoenixMissile\Phoenix_Missile_mini.mdl
Efecto especial - Destroy (Last created special effect)
Set Punto = (Position of (Triggering unit))
Unidad - Create 1 DUMMY_ID for (Owner of (Attacking unit)) at Punto facing Vista edificio predeterminada (270.0) degrees
Unidad - Add GreaterBash_HabiAumentoMS to (Last created unit)
Unidad - Add a 1.00 second GenÃ
rico expiration timer to (Last created unit)
Unidad - Order (Last created unit) to Orco Chamán: Sed de sangre (Attacking unit)
Set GB_Caster[0] = (Attacking unit)
Set GB_Duracion[0] = (0.80 + (0.20 x (Real((Level of GreaterBash_Ability for (Attacking unit))))))
Set GB_Target[0] = (Triggering unit)
Detonador - Run Do a Greater Bash (ignoring conditions)
[/gui]
Nether Strike: Moves you next to your target doing extra damage. Performs a greater bash hit. Casting range improves per level.
[gui]Nether Strike
Acontecimientos
Unidad - A unit Inicia el efecto de una habilidad
Condiciones
(Ability being cast) Igual a (==) NetherStrike_Ability
Acciones
Set NS_Enteros[1] = (NS_Enteros[1] + 1)
Set NS_Enteros[2] = (NS_Enteros[2] + 1)
Set NS_Caster[NS_Enteros[2]] = (Triggering unit)
Set NS_Target[NS_Enteros[2]] = (Target unit of ability being cast)
Set NS_Damage[NS_Enteros[2]] = (50.00 + (100.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))
[/gui]
[gui]Nether Strike Finaliza
Acontecimientos
Unidad - A unit Finaliza el lanzamiento de una habilidad
Condiciones
(Ability being cast) Igual a (==) NetherStrike_Ability
Acciones
Custom script: local real x
Custom script: local real y
Do Multiple ActionsFor each (Integer NS_Enteros[3]) from 1 to NS_Enteros[2], do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Triggering unit) Igual a (==) NS_Caster[NS_Enteros[3]]
Entonces: Acciones
Set Punto = (Position of NS_Target[NS_Enteros[3]])
Set Punto2 = (Position of NS_Caster[NS_Enteros[3]])
Set Punto3 = (Punto offset by 128.00 towards (Angle from Punto2 to Punto) degrees)
Custom script: set x = GetLocationX(udg_Punto3)
Custom script: set y = GetLocationY(udg_Punto3)
Custom script: call SetUnitX(udg_NS_Caster[udg_NS_Enteros[3]], x)
Custom script: call SetUnitY(udg_NS_Caster[udg_NS_Enteros[3]], y)
Unidad - Make NS_Caster[NS_Enteros[3]] face Punto over 0.00 seconds
Animación - Play NS_Caster[NS_Enteros[3]]'s attack animation
Unidad - Cause NS_Caster[NS_Enteros[3]] to damage NS_Target[NS_Enteros[3]], dealing NS_Damage[NS_Enteros[3]] damage of attack type Conjuros and damage type Normal
Set GB_Caster[0] = NS_Caster[NS_Enteros[3]]
Set GB_Target[0] = NS_Target[NS_Enteros[3]]
Set GB_Duracion[0] = (0.80 + (0.20 x (Real((Level of GreaterBash_Ability for GB_Caster[0])))))
Detonador - Run Do a Greater Bash (ignoring conditions)
Otros: Acciones
[/gui]
[gui]Nether Strike Detiene
Acontecimientos
Unidad - A unit Detiene el lanzamiento de una habilidad
Condiciones
(Ability being cast) Igual a (==) NetherStrike_Ability
Acciones
Do Multiple ActionsFor each (Integer NS_Enteros[3]) from 1 to NS_Enteros[2], do (Actions)
Bucle: Acciones
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Triggering unit) Igual a (==) NS_Caster[NS_Enteros[3]]
Entonces: Acciones
Set NS_Caster[NS_Enteros[3]] = Ninguna unidad
Set NS_Enteros[1] = (NS_Enteros[1] - 1)
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
NS_Enteros[1] Igual a (==) 0
Entonces: Acciones
Set NS_Enteros[2] = 0
Otros: Acciones
Otros: Acciones
[/gui]