"npc_dota_venom_trap_ward"
{
// General
//
"BaseClass" "npc_dota_creature" // Class of entity of link to.
"Model" "models/props/traps/hooded_fang/hooded_fang.vmdl"// Model.
"Level" "1"
"VisbibleInPortraitOnly" "1"
// Abilities
//----------------------------------------------------------------
"Ability1" "breathe_poison" // Ability 1.
"Ability2" "trap_unselectable" // Ability 2.
"Ability3" "" // Ability 3.
"Ability4" "" // Ability 4.
"Ability5" "" // Ability 5.
"Ability6" "" // Ability 6 - Extra.
"Ability7" "" // Ability 7 - Extra.
"Ability8" "" // Ability 8 - Extra.
// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_RANGED_ATTACK"
// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_NONE" // Type of locomotion - ground, air
"MovementSpeed" "0" // Speed
"MovementTurnRate" "0.25" // Turning rate.
// Team
//----------------------------------------------------------------
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_WARD"
}
}
ну и содержимое файла venom_trap_trigger
--[[ venom_trap_trigger.lua ]]
local triggerActive = true
function OnStartTouch(trigger)
local triggerName = thisEntity:GetName()
local team = trigger.activator:GetTeam()
local level = trigger.activator:GetLevel()
--print("Trap Button Trigger Entered")
if not triggerActive then
print( "Trap Skip" )
return
end
triggerActive = false
local button = triggerName .. "_button"
local model = triggerName .. "_model"
local npc = Entities:FindByName( nil, triggerName .. "_npc" )
local target = Entities:FindByName( nil, triggerName .. "_target" )
if npc ~= nil then
local venomTrap = npc:FindAbilityByName("breathe_poison")
npc:SetContextThink( "ResetButtonModel", function() ResetButtonModel() end, 4 )
npc:CastAbilityOnPosition(target:GetOrigin(), venomTrap, -1 )
DoEntFire( model, "SetAnimation", "fang_attack", .4, self, self )
end
local model1 = triggerName .. "_model1"
local npc1 = Entities:FindByName( nil, triggerName .. "_npc1" )
local target1 = Entities:FindByName( nil, triggerName .. "_target1" )
if npc1 ~= nil then
local venomTrap = npc1:FindAbilityByName("breathe_poison")
--npc:SetContextThink( "ResetButtonModel", function() ResetButtonModel() end, 4 )
npc1:CastAbilityOnPosition(target1:GetOrigin(), venomTrap, -1 )
DoEntFire( model1, "SetAnimation", "fang_attack", .4, self, self )
end
local model2 = triggerName .. "_model2"
local npc2 = Entities:FindByName( nil, triggerName .. "_npc2" )
local target2 = Entities:FindByName( nil, triggerName .. "_target2" )
if npc2 ~= nil then
local venomTrap = npc2:FindAbilityByName("breathe_poison")
--npc2:SetContextThink( "ResetButtonModel", function() ResetButtonModel() end, 4 )
npc2:CastAbilityOnPosition(target2:GetOrigin(), venomTrap, -1 )
DoEntFire( model2, "SetAnimation", "fang_attack", .4, self, self )
end
DoEntFire( button, "SetAnimation", "ancient_trigger001_down", 0, self, self )
DoEntFire( button, "SetAnimation", "ancient_trigger001_down_idle", .35, self, self )
DoEntFire( button, "SetAnimation", "ancient_trigger001_up", 4, self, self )
DoEntFire( button, "SetAnimation", "ancient_trigger001_idle", 4.5, self, self )
local heroIndex = trigger.activator:GetEntityIndex()
local heroHandle = EntIndexToHScript(heroIndex)
npc.KillerToCredit = heroHandle
end
function OnEndTouch(trigger)
local triggerName = thisEntity:GetName()
local team = trigger.activator:GetTeam()
--print("Trap Button Trigger Exited")
local heroIndex = trigger.activator:GetEntityIndex()
local heroHandle = EntIndexToHScript(heroIndex)
end
function ResetButtonModel()
print( "Trap RESET" )
triggerActive = true
end