урон в секунду (суицид)

  • Автор темы Автор темы den4iccc
  • Дата начала Дата начала

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
какой модификатор отвечает за урон в секунду хочу сделать скил который бы мог наносить урон в секунду владельцу скила в стиле вонючки пуджа
 
den4iccc, https://developer.valvesoftware.com/wiki/Dota_2_Actions_and_Modifiers - Все модификаторы.
Знаешь, как действует Радик?
Код:
"item_radiance"
{
  // General
  //-------------------------------------------------------------------------------------------------------------
  "BaseClass"         "item_datadriven"
  "ID"           "1372" //Valve's version of this item uses the ID "137".
  "AbilityBehavior"        "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL"
  "Model"           "models/props_gameplay/red_box.vmdl" 
  "Effect"         "particles/generic_gameplay/dropped_item.vpcf"
  "AbilityTextureName"        "item_radiance"
  
  // Item Info
  //-------------------------------------------------------------------------------------------------------------
  "ItemCost"         "6500"
  "ItemShopTags"        "damage"
  "ItemQuality"        "epic"
  "ItemAliases"        "radiance"
  "ItemDeclarations"      "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_IN_SPEECH | DECLARE_PURCHASES_TO_SPECTATORS"
  
  "AbilitySpecial"
  {
   "01"
   {
     "var_type"      "FIELD_INTEGER"
     "bonus_damage"     "75"
   }
   "02"
   {
     "var_type"      "FIELD_INTEGER"
     "blind_pct"     "17"
   "03"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_radius"     "700"
   }
   "04"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_damage_per_second"  "65"
   }
   "05"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_damage_interval"   "1"
  }
  
  "OnSpellStart" //Switch to the inactive version of Radiance.
  {
   "RunScript"
   {
     "ScriptFile"     "items/item_radiance.lua"
     "Function"     "item_radiance_on_spell_start"
   }
  }
  
  "Modifiers"
  {
   "modifier_item_radiance"
   {
     "Passive"     "1"
     "IsHidden"     "1"
     "Attributes"    "MODIFIER_ATTRIBUTE_MULTIPLE"
     
     "Properties"
     {
      "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE"  "%bonus_damage"
      "MODIFIER_PROPERTY_EVASION_CONSTANT"   "%blind_pct"
     }
   }
   "modifier_item_radiance_aura_emitter"
   {
     "Passive"      "1"
     "IsHidden"      "1"
     "EffectName"     "particles/items2_fx/radiance_owner.vpcf"
     "EffectAttachType"   "follow_origin"
     "ControlPoints"
           {
             "01"  "0 0 2000"
     }
     "Aura"        "modifier_item_radiance_aura"
     "Aura_Radius"     "%aura_radius"
     "Aura_Teams"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
     "Aura_Types"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
     "Aura_Flags"     "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
     "Aura_ApplyToCaster"  "0"
   }
   "modifier_item_radiance_aura"
   {
     "Passive"     "0"
     "IsHidden"     "1"
     "IsBuff"     "0"
     "IsDebuff"     "1"
     "IsPurgable"   "0"
     "EffectName"     "particles/items2_fx/radiance.vpcf"
     "EffectAttachType"   "follow_origin"
     "ControlPoints"
           {
             "01"  "0 0 2000"
     }
     "ThinkInterval"    "%aura_damage_interval"
     "OnIntervalThink"
     {
      "RunScript"
      {
        "ScriptFile"   "items/item_radiance.lua"
        "Function"   "modifier_item_radiance_aura_on_interval_think"
        "AuraDamageInterval"  "%aura_damage_interval"
        "AuraDamagePerSecond"  "%aura_damage_per_second"
      }
     }
     
   }
  }
}
"item_radiance_inactive"
{
  // General
  //-------------------------------------------------------------------------------------------------------------
  "BaseClass"         "item_datadriven"
  "ID"           "1372" //Valve's version of this item uses the ID "137".
  "AbilityBehavior"      "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL"
  "Model"           "models/props_gameplay/red_box.vmdl" 
  "Effect"         "particles/generic_gameplay/dropped_item.vpcf"
  "AbilityTextureName"     "item_radiance_inactive"
  
  // Item Info
  //-------------------------------------------------------------------------------------------------------------
  "ItemCost"         "6500"
  "ItemShopTags"        "damage"
  "ItemQuality"        "epic"
  "ItemAliases"        "radiance"
  "ItemDeclarations"      "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_IN_SPEECH | DECLARE_PURCHASES_TO_SPECTATORS"
  "ItemPurchasable"      "0"
  
  "AbilitySpecial"
  {
   "01"
   {
     "var_type"      "FIELD_INTEGER"
     "bonus_damage"     "75"
   }
   "02"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_radius"     "700"
   }
   "03"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_damage_per_second"  "65"
   }
   "04"
   {
     "var_type"      "FIELD_INTEGER"
     "aura_damage_interval"   "1"
  }
  
  "OnSpellStart" //Switch to the active version of Radiance.
  {
   "RunScript"
   {
     "ScriptFile"     "items/item_radiance.lua"
     "Function"     "item_radiance_inactive_on_spell_start"
   }
  }
  
  "Modifiers"
  {
   "modifier_item_radiance_inactive"
   {
     "Passive"     "1"
     "IsHidden"     "1"
     "Attributes"    "MODIFIER_ATTRIBUTE_MULTIPLE"
     
     "Properties"
     {
      "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE"  "%bonus_damage"
      "MODIFIER_PROPERTY_EVASION_CONSTANT"   "%blind_pct"
     }
   }
  }
}
Урон здесь наносится от модификатора "modifier_item_radiance_aura" , который работает от lua-скрипта. Lua-скрипт вычисляет урон и интервал его нанесения:
Код:
function swap_to_item(keys, ItemName)
  for i=0, 5, 1 do --Fill all empty slots in the player's inventory with "dummy" items.
   local current_item = keys.caster:GetItemInSlot(i)
   if current_item == nil then
     keys.caster:AddItem(CreateItem("item_dummy", keys.caster, keys.caster))
   end
  end
  
  keys.caster:RemoveItem(keys.ability)
  keys.caster:AddItem(CreateItem(ItemName, keys.caster, keys.caster)) --This should be put into the same slot that the removed item was in.
  
  for i=0, 5, 1 do --Remove all dummy items from the player's inventory.
   local current_item = keys.caster:GetItemInSlot(i)
   if current_item ~= nil then
     if current_item:GetName() == "item_dummy_datadriven" then
      keys.caster:RemoveItem(current_item)
     end
   end
  end
end


function modifier_item_radiance_aura_on_interval_think(keys)
  local damage_to_deal = keys.AuraDamagePerSecond * keys.AuraDamageInterval  --This gives us the damage per interval.
  ApplyDamage({victim = keys.target, attacker = keys.caster, damage = damage_to_deal, damage_type = DAMAGE_TYPE_MAGICAL,})
end


function item_radiance_on_spell_start(keys)
  swap_to_item(keys, "item_radiance_inactive_datadriven")
end


function item_radiance_inactive_on_spell_start(keys)
  swap_to_item(keys, "item_radiance")
end
 
Последнее редактирование модератором:
Вот стандартные модификаторы.

А вот,к примеру, того же радика: modifier_item_radiance
 
Реклама: