Абилка, меняющая модель героя

NanoDragon

Новичок
30 Июн 2017
4
0
Привет, как сделать чтобы юзал скилл и тебя превращало в кого-то, будь это машина, волк... Неважно.
 
Код:
beast_shapeshift = class({})
LinkLuaModifier( "modifier_beast_shapeshift", "abilities/beast_shapeshift.lua", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_beast_shapeshift_passive", "abilities/beast_shapeshift.lua", LUA_MODIFIER_MOTION_NONE )

function beast_shapeshift:GetIntrinsicModifierName ()
  return "modifier_beast_shapeshift_passive"
end

function beast_shapeshift:OnSpellStart()
	local duration = self:GetSpecialValueFor( "duration" )

 self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_stunned", {duration = self:GetSpecialValueFor("transformation_time")} )
 Timers:CreateTimer(self:GetSpecialValueFor("transformation_time"), function()
  self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_beast_shapeshift", { duration = duration } )
 end)

	local nFXIndex = ParticleManager:CreateParticle( "particles/units/heroes/hero_sven/sven_spell_gods_strength.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetCaster() )
	ParticleManager:SetParticleControlEnt( nFXIndex, 1, self:GetCaster(), PATTACH_ABSORIGIN_FOLLOW, nil, self:GetCaster():GetOrigin(), true )
	ParticleManager:ReleaseParticleIndex( nFXIndex )

	EmitSoundOn( "Hero_Lycan.Shapeshift.Cast", self:GetCaster() )

	self:GetCaster():StartGesture( ACT_DOTA_OVERRIDE_ABILITY_4 );
end

if modifier_beast_shapeshift == nil then modifier_beast_shapeshift = class({}) end

function modifier_beast_shapeshift:IsBuff()
  return true
end

function modifier_beast_shapeshift:IsPurgable()
  return false
end

function modifier_beast_shapeshift:DeclareFunctions ()
  local funcs = {
    MODIFIER_PROPERTY_MODEL_CHANGE,
    MODIFIER_PROPERTY_MODEL_SCALE,
    MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE,
    MODIFIER_PROPERTY_MOVESPEED_LIMIT,
    MODIFIER_PROPERTY_MOVESPEED_MAX
  }

  return funcs
end

function modifier_beast_shapeshift:GetModifierModelChange(params)
 return "models/creeps/nian/nian_creep.vmdl"
end

function modifier_beast_shapeshift:GetModifierModelScale(params)
 return -0.4
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Absolute(params)
 return self:GetAbility():GetSpecialValueFor("speed")
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Limit(params)
 return self:GetAbility():GetSpecialValueFor("speed")
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Max(params)
 return self:GetAbility():GetSpecialValueFor("speed")
end

if modifier_beast_shapeshift_passive == nil then modifier_beast_shapeshift_passive = class({}) end

function modifier_beast_shapeshift_passive:IsBuff()
  return true
end

function modifier_beast_shapeshift_passive:IsPurgable()
  return false
end

function modifier_beast_shapeshift_passive:IsHidden()
  return true
end

function modifier_beast_shapeshift_passive:DeclareFunctions ()
  local funcs = {
    MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE,
  }

  return funcs
end

function modifier_beast_shapeshift_passive:GetModifierIncomingDamage_Percentage(params)
 return self:GetAbility():GetSpecialValueFor("damage_reduction")
end

function beast_shapeshift:GetAbilityTextureName() return self.BaseClass.GetAbilityTextureName(self) end
 
Последнее редактирование модератором:
> function beast_shapeshift:GetAbilityTextureName() return self.BaseClass.GetAbilityTextureName(self) end
Уже не нужно.
Я считаю модифаеры нужно всегда в отдельные файлы выносить т.к. каждый модифаер заново запускает свой указанный файл и дополнительно инитит, но это мелочи.
 
Последнее редактирование модератором:
Реклама: