Решил сделать итем - не получилось
Активная способность - даёт вижн вокруг героя на опр радиусе на определенное время .Наподобие котла с аганимом ,только на время .
npc
vscript
Помогите пожалуйста
Активная способность - даёт вижн вокруг героя на опр радиусе на определенное время .Наподобие котла с аганимом ,только на время .
npc
Код:
"item_deserves"
{
// General
//-------------------------------------------------------------------------------------------------------------
"ID" "10109"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
"ItemCost" "500"
"ItemQuality" "Common"
"ItemDeclarations" "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS | DECLARE_PURCHASES_IN_SPEECH"
"ItemAlertable" "0"
"BaseClass" "item_datadriven"
"Model" "models/props_gameplay/red_box.vmdl"
"AbilityCooldown" "5"
"AbilityManaCost" "0"
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_day_vision" "500"
}
"02"
{
"var_type" "FIELD_INTEGER"
"vision_range" "1000"
}
"03"
{
"var_type" "FIELD_FLOAT"
"duration" "6"
}
}
"OnSpellStart"
{
"RunScript"
{
"ScriptFile" "items/deserves_lua.lua"
"Function" "DeservesCast"
"modifier_unrealvision" "modifier_unrealvision"
"sound_cast" "DOTA_Item.ghost_sceptre.Activate"
}
}
"Modifiers"
{
"modifier_item_deserves"
{
"Passive" "1"
"IsHidden" "1"
"IsBuff" "1"
"IsPurgable" "0"
"EffectName" "particles/econ/items/shadow_fiend/sf_fire_arcana/sf_fire_arcana_wings_grow_rope.vpc"
"EffectAttachType" "follow_origin"
"Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE"
"Properties"
{
"MODIFIER_PROPERTY_BONUS_DAY_VISION" "%bonus_day_vision"
}
}
"modifier_item_deserves_unrealvision"
{
"Passive" "0"
"IsHidden" "0"
"IsBuff" "1"
"IsPurgable" "0"
"Range" "%vision_range"
"Duration" "%duration"
"Attributes" "MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE"
"OnAbilityExecuted"
{
"RemoveModifier"
{
"ModifierName" "modifier_item_deserves_unrealvision"
"Target"
{
"Center" "CASTER"
"Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY"
"Types" "DOTA_UNIT_TARGET_HERO"
"Flags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE | DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD"
}
}
}
}
"States"
{
"MODIFIER_STATE_FLYING" "MODIFIER_STATE_VALUE_ENABLED"
"MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED"
}
}
}
Код:
function DeservesCast( keys )
local caster = keys.caster
local ability = keys.ability
local sound_cast = keys.sound_cast
EmitSoundOnLocationForAllies(caster:GetAbsOrigin(), sound_cast, caster)
local nearby_units = FindUnitsInRadius(caster:GetTeamNumber(), caster:GetAbsOrigin(), nil, 1200, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_CREEP, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES, FIND_ANY_ORDER, false)
for _, unit in pairs(nearby_units) do
if unit:CanEntityBeSeenByMyTeam(caster) then
EmitSoundOnLocationForAllies(caster:GetAbsOrigin(), sound_cast, unit)
return nil
end
end
end
function DeservesUnrealVisionCancel( keys )
local caster = keys.caster
caster.deserves_active = nil
end
function DeservesUnrealVision( keys )
local caster = keys.caster
local ability = keys.ability
local ability_level = ability:GetLevel() - 1
local modifier_unrealvision = keys.modifier_unrealvision
local unrealvision_duration = ability:GetLevelSpecialValueFor("unrealvision_duration", ability_level)
local unrealvision_vision_range = ability:GetLevelSpecialValueFor("unrealvision_vision_range", ability_level)
ability:ApplyDataDrivenModifier(caster, caster, modifier_unrealvision, {})
caster:AddNewModifier(caster, ability, "modifier_unrealvision", {duration = unrealvision_duration} , {range = unrealvision_vision_range})
end
function ShadowBladePhaseCooldownEnd( keys )
local caster = keys.caster
local ability = keys.ability
local modifier_unrealvision = keys.modifier_unrealvision
if caster:HasModifier(modifier_unrealvision) and caster:IsAlive() then
ability:ApplyDataDrivenModifier(caster, caster, modifier_unrealvision, {})
end
end
Последнее редактирование модератором: