Jump to content
Sign in to follow this  
Nesag

Проблема с добавлением эффекта скилу

Recommended Posts

Доброго времени суток, уважаемые форумчане!

 

Собственно сабж, имеется скилл "Луч Ксерея", вот его функция из skilleffect.lua

Код старался максимально закоментить

function SkillArea_Line_Ks_Ray ( sklv )										--"Kcerays ray"
	local lenth = 500 + sklv * 30  --length (more)
	local width = 100 + sklv * 10 --width (a bit more)
	SetSkillRange ( 1 , lenth , width  )  
end

function SkillCooldown_Ks_Ray( sklv )
	local Cooldown = 45000 --cd 45sec
	return Cooldown
end

function SkillSp_Ks_Ray ( sklv )										
	local sp_reduce = 150+ sklv * 15   --10lvl req 300sp
	return sp_reduce 
end


function SkillEnergy_Ks_Ray ( sklv )										
	local energy_reduce = math.floor ( 30 + sklv * 3 )    --corall eng req, rand*(60) at 10lvl
	return energy_reduce 
end 

function Skill_Ks_Ray_Begin ( role , sklv ) 
	local sp = Sp(role) 
	local sp_reduce  = SkillSp_Ks_Ray ( sklv )  
	if sp - sp_reduce < 0 then 
		SkillUnable(role) 
		return 
	end 
	Sp_Red (role , sp_reduce ) 
end 

function Skill_Ks_Ray_End ( ATKER , DEFER , sklv ) 
                         
	local sta_atk= Sta ( ATKER ) 
	local sta_def = Sta ( DEFER ) 
	local AddStateLv = 0
	AddStateLv = GetChaStateLv ( ATKER , STATE_MLCH ) 

	local dmg = math.floor( 200 + sklv*3 +sta_atk*2 ) --dmg

	--local map_name_DEFER = GetChaMapName ( DEFER ) возможно допилю интересные проверки, но лень
	--local agi_atker = Agi(ATKER)
	--local Can_Pk_Garner2 = Is_NormalMonster (DEFER)
	
	local statelv = sklv 
	local statetime =  10    
	AddState ( ATKER , DEFER , STATE_ZD , statelv , statetime ) -- эффект ядовитого дротика, просто для примера
	
	local hpdmg = 100 + statelv * 5 -- переменная, в которой лежит наносимый урон
	AddState ( ATKER , DEFER , STATE_GJJZ , statelv , statetime ) -- тут добавляется эффект как у skill_ayzz, собственно росчерк тени
                         
	local dmg_fin = hpdmg -- просто потому что я захотел много переменных и это дебаг версия :)))
                   
	Hp_Endure_Dmg ( DEFER , dmg_fin ) -- здесь, как я понимаю, вызывается функция Hp_Endure_Dmg 
	AddState ( ATKER , DEFER , STATE_PJ , statelv , statetime )	--добавляется эффект как у скила бронелом


end 

function State_Ks_Ray_Add ( role , statelv ) 
	 
	local defsa_dif = (-1) * ( 10 + 20 * statelv ) -- здесь величина отнимаемого дефа
	local defsa = math.floor (  (DefSa(role) + defsa_dif ) * ATTR_RADIX ) -- собственно переменная с будущим дефом
	SetCharaAttr( defsa , role , ATTR_STATEC_DEF ) 
	ALLExAttrSet(role)  
	Check_Ys_Rem ( ATKER , DEFER )						
	local hpdmg = 100 + statelv * 5	-- по аналогии делал с печатями
	ALLExAttrSet(role)
        RefreshCha(role)

end 

function State_Ks_Ray_Rem ( role , statelv ) -- возврат исходных значений дефа
 
	local defsa_dif = (-1) * ( 10 + 20 * statelv ) 
	local defsa = math.floor (  (DefSa(role) - defsa_dif ) * ATTR_RADIX ) 
	SetCharaAttr( defsa , role , ATTR_STATEC_DEF ) 
	ALLExAttrSet(role) 
end 

Он должен наносить урон активный, отнимать деф, наносить урон пассивный. 

Вопрос вот в чем - деф отнимает, но точно так же как и навык бронелом. Мои предположения - это как-то связано с AddState, но я к сожалению не знаю как. То же самое и с уроном, наносится урон как у дротика. Визуально все эффекты добавляются. 

 

Про AddState - STATE_PJ, STATE_GJJZ - это, как я понимаю, из массива variable.lua и просто добавляют визуальный эффект.

 

Очень хотелось бы, чтобы кто-нибудь помог разобраться как адекватно добавлять нужные эффекты к скилам, а не методом научного тыка

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...