Перезапись абилки (geomagnetic grip)

mrlikelot

Продвинутый
24 Июл 2015
168
1
Впервые прихожу к этому. Нужно изменить geomagnetic_grip так, чтобы он мог притягивать врагов.
Код:
"earth_spirit_geomagnetic_grip"
 {
  "AbilityBehavior"      "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
  "AbilityUnitTargetTeam"   "DOTA_UNIT_TARGET_TEAM_ENEMY"
  "AbilityUnitTargetType"   "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
  "AbilityCastRange"    "1800"

  "AbilityCooldown"    "13 11 9 7"

  "AbilityManaCost"    "70 80 90 100"

  "AbilitySpecial"
  {
   "01"
   {
    "var_type"    "FIELD_INTEGER"
    "radius"    "250"
   }
   "02"
   {
    "var_type"    "FIELD_INTEGER"
    "miss_rate"    "75"
   }
   "03"
   {
    "var_type"    "FIELD_FLOAT"
    "miss_duration"   "2.5 3 3.5 4"
   }
   "04"
   {
    "var_type"    "FIELD_FLOAT"
    "pull_units_per_second_heroes"  "1400"
   }    
   "05"
   {
    "var_type"    "FIELD_INTEGER"
    "rock_damage"   "75 150 225 300"
   }    
   "06"
   {
    "var_type"    "FIELD_FLOAT"
    "pull_units_per_second" "1400"
   }
   "07"
   {
    "var_type"    "FIELD_INTEGER"
    "speed"     "1400"
   } 
   "08"
   {
    "var_type"    "FIELD_FLOAT"
    "total_pull_distance" "1800"
   }   
  }
 }
Сделал так, но в доте ошибка
7d3a4c58f8b7.png


fe9a182e809f.png
Структура взята из dota imba, там в других спелках тоже есть изменения таргета и команды. Я сделал ошибку где то?
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
11
Re: Перезапись абилки

Не у всех дотовских скилов их параметры в конфиге привязаны к механике.
 

mrlikelot

Продвинутый
24 Июл 2015
168
1
Re: Перезапись абилки

Если кому нибудь понадобится простенький аналог geomagnetic grip (возможно партиклы не те):
npc_abilities_custom.txt
Код:
  "earth_spirit_geomagnetic_grip_datadriven"
  {
   "BaseClass"           "ability_datadriven"
   "AbilityTextureName"      "abyssal_underlord_atrophy_aura"
   "MaxLevel"           "1"

   "AbilityBehavior"        "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
   "AbilityUnitTargetType"			"DOTA_UNIT_TARGET_BASIC | DOTA_UNIT_TARGET_HERO"
   "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
   "AbilityCooldown"        "30.0"
   "AbilityManaCost"        "0"
   "AbilityDamage"         "75 130 200"
   "precache"
   {
     "particle" "particles/units/heroes/hero_earth_spirit/espirit_geomagneticgrip_orientedmagnetic.vpcf"
   }
   "AbilitySpecial"
   {
     "01"
     {
       "var_type"     "FIELD_INTEGER"
       "value"       "900"
     }
     "02"
     {
       "var_type"     "FIELD_FLOAT"
       "duration"     "1.0"
     }
   }
	  	"OnSpellStart"
	  	{
	  	  "ApplyMotionController"
			{
				"Target"		"TARGET"
				"ScriptFile"  "heroes/geomagnetic.lua"
				"HorizontalControlFunction" "Sweep"
			}
	  	  "ApplyModifier"
	  	  {
	  	    "ModifierName" "modifier_effect_geo"
	  	    "Target"    "TARGET"
	  	    "Duration"   "%duration"
	  	  }
	  	}

	  	"Modifiers"
	  	{
	  	  "modifier_effect_geo"
	    {
	      "Passive"      "0"
	      "IsHidden"     "0"
	      "IsDebuff"     "1"
	      "OnCreated"
	      {
	        "AttachEffect"
		      {
		        "EffectName"    "particles/units/heroes/hero_earth_spirit/espirit_geomagneticgrip_orientedmagnetic.vpcf"
		        "EffectAttachType" "follow_origin"
		        "Target"      "TARGET"
		      }
	      } 
	    }
	  	}
  }
geomagnetic.lua
Код:
function Sweep( keys )
	local caster = keys.caster
	local unit = keys.target
	local ability = keys.ability
	local distance = (unit:GetAbsOrigin()-caster:GetAbsOrigin()):Length2D()
	local direction = (unit:GetAbsOrigin()-caster:GetAbsOrigin()):Normalized()
	unit:SetAbsOrigin(unit:GetAbsOrigin() - direction * 40)
	if distance > 300 then
		return 1
	end
	unit:InterruptMotionControllers(false)
	ResolveNPCPositions(unit:GetAbsOrigin(), 100)
end
 
Последнее редактирование модератором:
Реклама: