Lua-Orb-Effect

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Как написать датадрайвен дезолятор со скриптом при "OnOrbFire", который при необходимости будет менять эффект desolator_projectile на другой? Т.е. как написать вот это на lua?:
Код:
			"Orb"
			{
				"Priority"				"DOTA_ORB_PRIORITY_ITEM"
				"ProjectileName"		"particles/items_fx/desolator_projectile.vpcf"
				"CastAttack"			"0"
			}
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Ну так и делать: свой модификатор создавать, это во первых, а во вторых вещь свою сделать и в её коде реализовывать подобный механизм.

Можешь даже два одинаковых модификатора с разными партиклями реализовать, чтобы проще было. Ну или партикли реализовывать в коде вещи, а не модификатора.

Или еще проще - сделать один свой модификатор, а вторым использовать оригинальный дезолевский.
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
[quote author=Илья link=topic=998.msg5391#msg5391 date=1469362319]
Ну так и делать: свой модификатор создавать, это во первых, а во вторых вещь свою сделать и в её коде реализовывать подобный механизм.

Можешь даже два одинаковых модификатора с разными партиклями реализовать, чтобы проще было. Ну или партикли реализовывать в коде вещи, а не модификатора.

Или еще проще - сделать один свой модификатор, а вторым использовать оригинальный дезолевский.
[/quote]
Можно ли сделать подобным образом?:
Код:
Предмет
его описание
Он креейт ранскрипт
Модифиерс:
модифер1:
орб
модифер2:
орб2
Код:
function ранскрипта:
если то-то эпплимодифаер модифаер1
если другое эпплимодифаер модифаер2
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Да, по идеи можно.

Только я имел в виду луа модификаторы, но, думаю, так тоже будет работать.
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Да, по идеи можно.

Только я имел в виду луа модификаторы, но, думаю, так тоже будет работать.
Пока не понадобится делать целенаправленные скиллы или такие же предметы (как вы говорили, для нормальной работы Лотуса), буду пользоваться датадрайвеном с:
 
Последнее редактирование модератором:

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Да, по идеи можно.

Только я имел в виду луа модификаторы, но, думаю, так тоже будет работать.
Я реализовывал этот механизм долго, зато продуктивно. Теперь осталось только дописывать в него все остальные орбы. Если интересно, я сейчас прикреплю к себе в статус ссылку на аддон
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Скинул бы лучше сюда код для будущих поколений. Ну и мож кто не ленивый его посмотрит и улучшит.
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Скинул бы лучше сюда код для будущих поколений. Ну и мож кто не ленивый его посмотрит и улучшит.
Не хотелось бы, чтоб мои труды воровали школьники(
Тем более улучшать там нечего, разве что посмотреть код и переделать его под lua-модификаторы
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Хахахахха, а ты не воруешь чужую интеллектуальную собственность на гитхабе или нашем же форуме? ;)

Кроме того, если ты выгрузишь код в дотку, то его достать не проблема. Единственная защита и возможность "качать права" - патент. Да и зачем это нужно, если ты пользуешься чужим инструментарием (API workshopa). Твоя здесь только последовательность запуска тех или иных функций. Даже холст, на котором ты реализуешь все - не твой.

Ну да дело твое, я не давлю, просто меня забавляют подобные отговорки.
Ну и само по себе выкладывание кода будущим поколениям - красивый жест, показывающий, что тут люди больше рисуют карту для всех, нежели с помощью чужих карт ищут сокровища, которыми не делятся.
 
Последнее редактирование модератором:
  • Нравится
Реакции: almazist1

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Хахахахха, а ты не воруешь чужую интеллектуальную собственность на гитхабе или нашем же форуме? ;)

Кроме того, если ты выгрузишь код в дотку, то его достать не проблема. Единственная защита и возможность "качать права" - патент. Да и зачем это нужно, если ты пользуешься чужим инструментарием (API workshopa). Твоя здесь только последовательность запуска тех или иных функций. Даже холст, на котором ты реализуешь все - не твой.

Ну да дело твое, я не давлю, просто меня забавляют подобные отговорки.
Ну и само по себе выкладывание кода будущим поколениям - красивый жест, показывающий, что тут люди больше рисуют карту для всех, нежели с помощью чужих карт ищут сокровища, которыми не делятся.
Хорошо, я не против буду выгрузить свою систему, если ты покажешь мне, как достать наработки других аддоноделов, допустим, из Дота Имбы
 
Последнее редактирование модератором:

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
[quote author=Илья link=topic=998.msg5502#msg5502 date=1469781829]
Ах ты продажный борец не за идею :)

Вбивай GCFScape в поиск.
[/quote]
Он у меня скачан ещё с 2014-го. Сейчас гляну, что там вы обсуждали
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
[quote author=Илья link=topic=998.msg5502#msg5502 date=1469781829]
Ах ты продажный борец не за идею :)

Вбивай GCFScape в поиск.
[/quote]
Я не нашёл vpk Dota Imba'ы
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Скинул бы лучше сюда код для будущих поколений. Ну и мож кто не ленивый его посмотрит и улучшит.
А вот и моя система:
Код:
	//=================================================================================================================
	// Recipe: Skadi
	//=================================================================================================================
	"item_recipe_skadi_1"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"item_datadriven"
		"ID"							"15900" //Valve's version of this item uses the ID "167".
		"Model"							"models/props_gameplay/recipe.mdl"
		"AbilityTextureName"			"item_recipe"
	
		// Item Info
		//-------------------------------------------------------------------------------------------------------------
		"ItemCost"						"0"	
		"ItemShopTags"					""
	
		// Recipe
		//-------------------------------------------------------------------------------------------------------------
		"ItemRecipe"					"1"
		"ItemResult"					"item_skadi_1"
		"ItemRequirements"
		{
			"01"						"item_ultimate_orb;item_ultimate_orb;item_point_booster;item_orb_of_venom"
		}
	}
	
	//=================================================================================================================
	// Skadi
	//=================================================================================================================
	"item_skadi_1"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"item_datadriven"
		"ID"							"16000" //Valve's version of this item uses the ID "160".
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		"Model"							"models/props_gameplay/red_box.vmdl" 
		"Effect"						"particles/generic_gameplay/dropped_item.vpcf"
		"AbilityTextureName"			"item_skadi"
	
		// Item Info
		//-------------------------------------------------------------------------------------------------------------
		"ItemCost"						"5675"
		"ItemShopTags"					"agi;str;int;hard_to_tag;mana_pool;health_pool;unique"
		"ItemQuality"					"artifact"
		"ItemAliases"					"eos;eye of skadi"
		"ItemDeclarations"				"DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_IN_SPEECH | DECLARE_PURCHASES_TO_SPECTATORS"
		
		// Special	
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_all_stats"		"25"
			}
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_health"			"225"
			}
			"03"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_mana"			"250"
			}
			"04"
			{
				"var_type"				"FIELD_INTEGER"
				"cold_movement_speed"		"-35"
			}
			"05"
			{
				"var_type"				"FIELD_INTEGER"
				"cold_attack_speed"		"-45"
			}
			"06"
			{
				"var_type"				"FIELD_FLOAT"
				"cold_duration_melee"		"5.0"
			}
			"07"
			{
				"var_type"				"FIELD_FLOAT"
				"cold_duration_ranged"		"2.5"
			}
			//Desolator
			"08"
			{
				"var_type"				"FIELD_INTEGER"
				"corruption_armor"		"-7"
			}
			"09"
			{
				"var_type"				"FIELD_FLOAT"
				"corruption_duration"		"15.0"
			}
		}
	
		"Modifiers"
		{
			"modifier_item_skadi_1"
			{
				"Passive"				"1"
				"IsHidden"				"1"
				"Attributes" 			"MODIFIER_ATTRIBUTE_MULTIPLE"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_STATS_STRENGTH_BONUS"		"%bonus_all_stats"
					"MODIFIER_PROPERTY_STATS_AGILITY_BONUS"			"%bonus_all_stats"
					"MODIFIER_PROPERTY_STATS_INTELLECT_BONUS"		"%bonus_all_stats"
					"MODIFIER_PROPERTY_HEALTH_BONUS"			"%bonus_health"
					"MODIFIER_PROPERTY_MANA_BONUS"				"%bonus_mana"
				}
				"OnCreated"
				{
					"ApplyModifier"
					{
						"Target"		"CASTER"
						"ModifierName"		"modifier_item_skadi_thinker"
					}	
				}
				"OnDestroy"
				{
					"RemoveModifier"
					{
						"Target"		"CASTER"
						"ModifierName"		"modifier_item_skadi_thinker"
					}
					"RunScript"
					{
						"ScriptFile"		"items/item_skadi_1.lua"
						"Function"		"modifier_item_orb_thinking_remover"
					}
				}
			}

			"modifier_item_skadi_thinker"
			{
				"IsHidden"			"1"
				"ThinkInterval" 		"0.03"
				"OnIntervalThink"
				{
					"RunScript"
					{
						"ScriptFile"			"items/item_skadi_1.lua"
						"Function"			"modifier_item_orb"
					}
				}
			}
			//Desolator Orb
			"modifier_item_desolator_orb"
			{
				"IsHidden"			"1"
				"TextureName"			"desolator_orb"
	
				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"ProjectileName"		"particles/items_fx/desolator_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbFire"
				{
					"ApplyModifier"
					{
						"Target"			"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption"
					}

					"FireSound"
					{
						"EffectName"		"Item_Desolator.Target"
						"Target"			"TARGET"
					}
				}
			}
			///Skadi Orb
			"modifier_item_skadi_orb"
			{
				"IsHidden"			"0"
				"TextureName"			"skadi_orb"

				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"Label"					"DOTA_ORB_LABEL_SKADI" //This does not currently seem to have an effect. "Label" may not be the right key.
					"ProjectileName"		"particles/items2_fx/skadi_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbImpact"
				{
					"RunScript"
					{
						"ScriptFile"			"items/item_skadi_1.lua"
						"Function"			"modifier_item_skadi_orb"
						"ColdDurationMelee"		"%cold_duration_melee"
						"ColdDurationRanged"		"%cold_duration_ranged"
					}
				}
			}
			//Desolator and Skadi Orb
			"modifier_item_desolator_skadi_orb"
			{
				"IsHidden"			"0"
				"TextureName"			"desolator_skadi_orb"
	
				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"ProjectileName"		"particles/items2_fx/desolator_skadi_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbFire"
				{
					"ApplyModifier"
					{
						"Target"			"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption"
					}

					"RunScript"
					{
						"ScriptFile"			"items/item_skadi_1.lua"
						"Function"			"modifier_item_desolator_skadi_orb"
						"ColdDurationMelee"		"%cold_duration_melee"
						"ColdDurationRanged"		"%cold_duration_ranged"
					}

					"FireSound"
					{
						"EffectName"		"Item_Desolator.Target"
						"Target"			"TARGET"
					}
				}
			}


			//Desolator
			"modifier_item_desolator_corruption"
			{
				"Duration"				"%corruption_duration"
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"IsPurgable"				"1"
				"TextureName"			"desolator_corruption"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS"		"%corruption_armor"
				}
				"OnCreated"
				{
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_skadi_1.lua"
						"Function"		"modifier_item_desolator_corruption"
					}
				}
			}
			//Skadi
			"modifier_item_skadi_corruption"
			{
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"IsPurgable"				"1"
				"TextureName"			"skadi_corruption"
			
				"StatusEffectName"   "particles/status_fx/status_effect_frost.vpcf"
				"StatusEffectPriority" "10"
				
				"Properties"
				{
					"MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"		"%cold_attack_speed"
					"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"		"%cold_movement_speed"
				}
				"OnCreated"
				{
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_skadi_1.lua"
						"Function"		"modifier_item_skadi_corruption"
					}
				}
			}
			//Desolator and Skadi
			"modifier_item_desolator_skadi_corruption"
			{
				"Passive"				"0"
				"IsHidden"				"1"
				"IsDebuff"				"1"
				"IsPurgable"				"1"

				"StatusEffectName"   "particles/status_fx/status_effect_frost.vpcf"
				"StatusEffectPriority" "10"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"		"%cold_attack_speed"
					"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"		"%cold_movement_speed"
				}
				"OnCreated"
				{
					"ApplyModifier"
					{
						"Target"		"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption_for_desolator_skadi"
					}
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_skadi_1.lua"
						"Function"		"modifier_item_desolator_skadi_corruption"
					}
				}
			}
			"modifier_item_desolator_corruption_for_desolator_skadi"
			{
				"Duration"				"%corruption_duration"
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"TextureName"			"desolator_skadi_corruption"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS"		"%corruption_armor"
				}
			}
		}
	}
Код:
	//=================================================================================================================
	// Recipe: Desolator
	//=================================================================================================================
	"item_recipe_desolator_1"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"item_datadriven"
		"ID"							"16700" //Valve's version of this item uses the ID "167".
		"Model"							"models/props_gameplay/recipe.mdl"
		"AbilityTextureName"			"item_recipe"
	
		// Item Info
		//-------------------------------------------------------------------------------------------------------------
		"ItemCost"						"0"	
		"ItemShopTags"					""
	
		// Recipe
		//-------------------------------------------------------------------------------------------------------------
		"ItemRecipe"					"1"
		"ItemResult"					"item_desolator_1"
		"ItemRequirements"
		{
			"01"				"item_mithril_hammer;item_mithril_hammer;item_blight_stone"
		}
	}
	
	//=================================================================================================================
	// Desolator
	//=================================================================================================================
	"item_desolator_1"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"						"item_datadriven"
		"ID"							"16800" //Valve's version of this item uses the ID "168".
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_PASSIVE"
		"Model"							"models/props_gameplay/red_box.vmdl" 
		"Effect"						"particles/generic_gameplay/dropped_item.vpcf"
		"AbilityTextureName"			"item_desolator"
	
		// Item Info
		//-------------------------------------------------------------------------------------------------------------
		"ItemCost"						"3500"
		"ItemShopTags"					"damage;unique"
		"ItemQuality"					"artifact"
		"ItemAliases"					"desolator"
		"ItemDeclarations"				"DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_IN_SPEECH | DECLARE_PURCHASES_TO_SPECTATORS"
		
		// Special	
		//-------------------------------------------------------------------------------------------------------------
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"bonus_damage"			"50"
			}
			"02"
			{
				"var_type"				"FIELD_INTEGER"
				"corruption_armor"		"-7"
			}
			"03"
			{
				"var_type"				"FIELD_FLOAT"
				"corruption_duration"		"15.0"
			}
			//Skadi Orb
			"04"
			{
				"var_type"				"FIELD_INTEGER"
				"cold_movement_speed"	"-35"
			}
			"05"
			{
				"var_type"				"FIELD_INTEGER"
				"cold_attack_speed"	"-45"
			}
			"06"
			{
				"var_type"				"FIELD_FLOAT"
				"cold_duration_melee"	"5.0"
			}
			"07"
			{
				"var_type"				"FIELD_FLOAT"
				"cold_duration_ranged"	"3.0"
			}
		}

		"Modifiers"
		{
			"modifier_item_desolator"
			{
				"Passive"			"1"
				"IsHidden"			"1"
				"Attributes" 		"MODIFIER_ATTRIBUTE_MULTIPLE"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE"						"%bonus_damage"
				}
				"OnCreated"
				{
					"ApplyModifier"
					{
						"Target"		"CASTER"
						"ModifierName"		"modifier_item_desolator_thinker"
					}	
				}
				"OnDestroy"
				{
					"RemoveModifier"
					{
						"Target"		"CASTER"
						"ModifierName"		"modifier_item_desolator_thinker"
					}
					"RunScript"
					{
						"ScriptFile"		"items/item_desolator_1.lua"
						"Function"		"modifier_item_orb_thinking_remover"
					}
				}
			}
			"modifier_item_desolator_thinker"
			{
				"IsHidden"			"1"
				"ThinkInterval" 		"0.03"
				"OnIntervalThink"
				{
					"RunScript"
					{
						"ScriptFile"			"items/item_desolator_1.lua"
						"Function"			"modifier_item_orb"
					}
				}
			}
			//Desolator Orb
			"modifier_item_desolator_orb"
			{
				"IsHidden"			"0"
				"TextureName"			"desolator_orb"
	
				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"ProjectileName"		"particles/items_fx/desolator_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbFire"
				{
					"ApplyModifier"
					{
						"Target"			"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption"
					}

					"FireSound"
					{
						"EffectName"		"Item_Desolator.Target"
						"Target"			"TARGET"
					}
				}
			}
			///Skadi Orb
			"modifier_item_skadi_orb"
			{
				"IsHidden"			"0"
				"TextureName"			"skadi_orb"

				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"Label"					"DOTA_ORB_LABEL_SKADI" //This does not currently seem to have an effect. "Label" may not be the right key.
					"ProjectileName"		"particles/items2_fx/skadi_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbImpact"
				{
					"RunScript"
					{
						"ScriptFile"			"items/item_desolator_1.lua"
						"Function"			"modifier_item_skadi_orb"
						"ColdDurationMelee"		"%cold_duration_melee"
						"ColdDurationRanged"		"%cold_duration_ranged"
					}
				}
			}
			//Desolator and Skadi Orb
			"modifier_item_desolator_skadi_orb"
			{
				"IsHidden"			"0"
				"TextureName"			"desolator_skadi_orb"
	
				"Orb"
				{
					"Priority"				"DOTA_ORB_PRIORITY_ITEM"
					"ProjectileName"		"particles/items2_fx/desolator_skadi_projectile.vpcf"
					"CastAttack"			"0"
				}

				"OnOrbFire"
				{
					"ApplyModifier"
					{
						"Target"			"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption"
					}

					"RunScript"
					{
						"ScriptFile"			"items/item_desolator_1.lua"
						"Function"			"modifier_item_desolator_skadi_orb"
						"ColdDurationMelee"		"%cold_duration_melee"
						"ColdDurationRanged"		"%cold_duration_ranged"
					}

					"FireSound"
					{
						"EffectName"		"Item_Desolator.Target"
						"Target"			"TARGET"
					}
				}
			}

			//Desolator
			"modifier_item_desolator_corruption"
			{
				"Duration"				"%corruption_duration"
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"IsPurgable"				"1"
				"TextureName"			"desolator_corruption"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS"		"%corruption_armor"
				}
				"OnCreated"
				{
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_desolator_1.lua"
						"Function"		"modifier_item_desolator_corruption"
					}
				}
			}
			//Skadi
			"modifier_item_skadi_corruption"
			{
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"IsPurgable"				"1"
				"TextureName"			"skadi_corruption"
			
				"StatusEffectName"   "particles/status_fx/status_effect_frost.vpcf"
				"StatusEffectPriority" "10"
				
				"Properties"
				{
					"MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"		"%cold_attack_speed"
					"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"		"%cold_movement_speed"
				}
				"OnCreated"
				{
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_desolator_1.lua"
						"Function"		"modifier_item_skadi_corruption"
					}
				}
			}
			//Desolator and Skadi
			"modifier_item_desolator_skadi_corruption"
			{
				"Passive"				"0"
				"IsHidden"				"1"
				"IsDebuff"				"1"
				"IsPurgable"				"1"

				"StatusEffectName"   "particles/status_fx/status_effect_frost.vpcf"
				"StatusEffectPriority" "10"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"		"%cold_attack_speed"
					"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"		"%cold_movement_speed"
				}
				"OnCreated"
				{
					"ApplyModifier"
					{
						"Target"		"TARGET"
						"ModifierName"		"modifier_item_desolator_corruption_for_desolator_skadi"
					}
					"RunScript"
					{
						"Target"		"TARGET"
						"ScriptFile"		"items/item_desolator_1.lua"
						"Function"		"modifier_item_desolator_skadi_corruption"
					}
				}
			}
			"modifier_item_desolator_corruption_for_desolator_skadi"
			{
				"Duration"				"%corruption_duration"
				"Passive"				"0"
				"IsHidden"				"0"
				"IsDebuff"				"1"
				"IsPurgable"				"1"
				"TextureName"				"desolator_skadi_corruption"
			
				"Properties"
				{
					"MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS"		"%corruption_armor"
				}
			}

		}
	}
Код:
function modifier_item_orb(keys)
--if --[[not keys.caster:HasModifier("modifier_item_desolator_thinker") or]] not keys.caster:HasModifier("modifier_item_skadi_thinker") then
	local desolator = 0
	local skadi = 0
	--if keys.caster:HasModifier("modifier_item_desolator_thinker") end
	--if keys.caster:HasModifier("modifier_item_skadi_thinker") end
	for i=0, 5, 1 do 
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item ~= nil then
			if current_item:GetName() == "item_desolator_1" then desolator = 1 end
			if current_item:GetName() == "item_skadi_1" then skadi = 1 end
		end
	end
		if desolator == 0 then keys.caster:RemoveModifierByName("modifier_item_desolator_thinker")
		elseif skadi == 0 then keys.caster:RemoveModifierByName("modifier_item_skadi_thinker")
		end

		if desolator == 0 and skadi == 0 then
			keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
		--if --[[desolator == 0 and]] skadi == 1 then
		--	keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_skadi_orb", nil)
		--	keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
		--	--keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
		--	keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		--end
		if --[[desolator == 1 and]] skadi == 0 then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_desolator_orb", nil)
			--keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
		if --[[desolator == 1 and]] skadi == 1 then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_desolator_skadi_orb", nil)
			keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			--keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
--end
end
--Remover
function modifier_item_orb_thinking_remover(keys)
	keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
	keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
	keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
end
--Joint Cooperation
function modifier_item_desolator_corruption(keys)
	keys.target:RemoveModifierByName("modifier_item_desolator_skadi_corruption")
	keys.target:RemoveModifierByName("modifier_item_desolator_corruption_for_desolator_skadi")
end
function modifier_item_skadi_corruption(keys)
	keys.target:RemoveModifierByName("modifier_item_desolator_skadi_corruption")
	keys.target:RemoveModifierByName("modifier_item_desolator_corruption_for_desolator_skadi")
end
function modifier_item_desolator_skadi_corruption(keys) -- Нужно удалить все остальные дебаффы, касающиеся Desolator и Skadi
	keys.target:RemoveModifierByName("modifier_item_desolator_corruption")
	keys.target:RemoveModifierByName("modifier_item_skadi_corruption")
end
--Corruption Stratification
function modifier_item_skadi_orb(keys)
	if keys.target.GetInvulnCount == nil then
		if keys.caster:IsRangedAttacker() then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_corruption", {duration = keys.ColdDurationRanged})
		else
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_corruption", {duration = keys.ColdDurationMelee})
		end
	end
end
function modifier_item_desolator_skadi_orb(keys)
	if keys.target.GetInvulnCount == nil then
		if keys.caster:IsRangedAttacker() then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_desolator_skadi_corruption", {duration = keys.ColdDurationRanged})
		else
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_desolator_skadi_corruption", {duration = keys.ColdDurationMelee})
		end
	end
end
Код:
function modifier_item_orb(keys)
if not keys.caster:HasModifier("modifier_item_desolator_thinker") --[[or not keys.caster:HasModifier("modifier_item_skadi_thinker")]] then
	local desolator = 0
	local skadi = 0
	--if keys.caster:HasModifier("modifier_item_desolator_thinker") end
	--if keys.caster:HasModifier("modifier_item_skadi_thinker") end
	for i=0, 5, 1 do 
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item ~= nil then
			if current_item:GetName() == "item_desolator_1" then desolator = 1 end
			if current_item:GetName() == "item_skadi_1" then skadi = 1 end
		end
	end
		if desolator == 0 then keys.caster:RemoveModifierByName("modifier_item_desolator_thinker")
		elseif skadi == 0 then keys.caster:RemoveModifierByName("modifier_item_skadi_thinker")
		end

		if desolator == 0 and skadi == 0 then
			keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
		if desolator == 0 --[[and skadi == 1]] then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_skadi_orb", nil)
			keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			--keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
		--if desolator == 1 --[[and skadi]] == 0 then
		--	keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_desolator_orb", nil)
		--	--keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
		--	keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
		--	keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		--end
		if desolator == 1 --[[and skadi]] == 1 then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_item_desolator_skadi_orb", nil)
			keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
			keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
			--keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
		end
end
end
--Remover
function modifier_item_orb_thinking_remover(keys)
	keys.caster:RemoveModifierByName("modifier_item_desolator_orb")
	keys.caster:RemoveModifierByName("modifier_item_skadi_orb")
	keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_orb")
end
--Joint Cooperation
function modifier_item_desolator_corruption(keys)
	keys.caster:RemoveModifierByName("modifier_item_desolator_skadi_corruption")
end
function modifier_item_skadi_corruption(keys)
	keys.caster:RemoveModifierByName("modifier_item_desolator_corruption")
end
function modifier_item_desolator_skadi_corruption(keys) -- Нужно удалить все остальные дебаффы, касающиеся Desolator и Skadi
	keys.caster:RemoveModifierByName("modifier_item_desolator_corruption")
	keys.caster:RemoveModifierByName("modifier_item_skadi_corruption")
end
--Corruption Stratification
function modifier_item_skadi_orb(keys)
	if keys.target.GetInvulnCount == nil then
		if keys.caster:IsRangedAttacker() then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_corruption", {duration = keys.ColdDurationRanged})
		else
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_skadi_corruption", {duration = keys.ColdDurationMelee})
		end
	end
end
function modifier_item_desolator_skadi_orb(keys)
	if keys.target.GetInvulnCount == nil then
		if keys.caster:IsRangedAttacker() then
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_desolator_skadi_corruption", {duration = keys.ColdDurationRanged})
		else
			keys.ability:ApplyDataDrivenModifier(keys.caster, keys.target, "modifier_item_desolator_skadi_corruption", {duration = keys.ColdDurationMelee})
		end
	end
end
Осталось добавить сюда остальные орбы и готово
(Хотелось бы перевести все эти модификаторы на lua)
 
Последнее редактирование модератором:
Реклама: