Не отображается бонус модификатора./Бонусный радиус каста.

20 Дек 2016
892
170
Не отображается бонус модификатора.
Не отображается бонус к скорости на панельке со статами, придаваемый модификатором, хотя сам модификатор работает, и бонус к скорости в самой игре тоже дается (Что я проверяю в OnHeroSpawn). Способность, добавляющая модификатор дается герою на спавне.

Бонусный радиус каста.
Этот же модификатор должен добавлять бонусный радиус каста, но он этого не делает даже фактически. В списке API функций константа MODIFIER_PROPERTY_CAST_RANGE_BONUS не имеет значения, что, видимо, намекает на то, что этот модифиер вообще не работает. Каким образом можно изменить радиусы кастов героев с помощью способности?

Кусок из addon_game_mode:
Код:
function CAddonTemplateGameMode:InitGameMode()
	print( "Template addon is loaded." )
	GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
	ListenToGameEvent( "dota_player_killed", Dynamic_Wrap( CAddonTemplateGameMode, 'OnHeroKilled' ), self )
	ListenToGameEvent( "npc_spawned", Dynamic_Wrap( CAddonTemplateGameMode, 'OnHeroSpawn' ), self )
end

function CAddonTemplateGameMode:OnHeroSpawn( keys )
	local spawned_hero = EntIndexToHScript( keys.entindex )
	print( spawned_hero:GetMoveSpeedModifier(290) )
	if spawned_hero:IsRealHero() and spawned_hero:FindAbilityByName( "stats_bonus_fix" ) == nil then
		Say( nil, "1", false )
		spawned_hero:AddAbility( "stats_bonus_fix" )
		spawned_hero:FindAbilityByName( "stats_bonus_fix" ):SetLevel(1)
	end
end

способность в КВ:
Код:
  "stats_bonus_fix"
  {
    "BaseClass"			"ability_lua" 
    "ScriptFile"			"stats_bonus_fix"
	"MaxLevel"			"1"
  
    "AbilityBehavior"		"DOTA_ABILITY_BEHAVIOR_HIDDEN"
  }

Способность на луа:
Код:
stats_bonus_fix = class({})

LinkLuaModifier( "modifier_stats_bonus_fix", LUA_MODIFIER_MOTION_NONE )

function stats_bonus_fix:GetIntrinsicModifierName() 
	return "modifier_stats_bonus_fix"
end

Модификатор:
Код:
modifier_stats_bonus_fix = class({})

function modifier_stats_bonus_fix:IsHidden()
	return false 
end

function modifier_stats_bonus_fix:IsDebuff()
	return false
end

function modifier_stats_bonus_fix:DeclareFunctions()
	local funcs = {
		MODIFIER_PROPERTY_MANA_BONUS,
		MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE,
		MODIFIER_PROPERTY_MOVESPEED_MAX,
		MODIFIER_PROPERTY_CAST_RANGE_BONUS,
		MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT,
	}
 
	return funcs
end

function modifier_stats_bonus_fix:GetModifierManaBonus( params )
	return -( self:GetCaster():GetIntellect() * 12 )
end

function modifier_stats_bonus_fix:GetModifierPercentageManaRegen( params )
	return -100
end

function modifier_stats_bonus_fix:GetModifierMoveSpeed_Max( params )
	return 1000
end

function modifier_stats_bonus_fix:GetModifierCastRangeBonus( params )
	return self:GetCaster():GetIntellect() * 2
end

function modifier_stats_bonus_fix:GetModifierMoveSpeedBonus_Constant( params )
	return self:GetCaster():GetIntellect()
end
 
Последнее редактирование модератором:
Я устал от чужого кода, и когда под описание ошибки попадает уже разбираемый когда-то вопрос, просто скидываю в помощь на него ссылку:

Прочти эту и эту темы, в последний обрати внимание на этот комментарий (где-то было от него же объяснение получше, но и этого вполне достаточно). Если твоя ошибка не в этом, то либо я, либо кто-нибудь еще рассмотрит твой код по наличию свободного времени.
 
Реклама: