Sqr/character/priest/dashattack.nut

194 lines
5.2 KiB
Plaintext
Raw Permalink Normal View History

2024-03-18 21:37:40 +08:00
// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻.
function onSetState_DashAttack(obj, state, datas, isResetTimer)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
obj.sq_stopMove();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local v = 450;
local dstX = sq_GetDistancePos(posX, obj.getDirection(), v);
obj.getVar().clear_vector();
obj.getVar().push_vector(posX); // 卫蒙薄 0
obj.getVar().push_vector(dstX); // 紫杂薄 1
obj.getVar().push_vector(posX); // 渠莲部薄 2
obj.getVar().push_vector(0); // 渠莲桧翕 ?楚斜 3 - 桧翕碳陛虽羲击 虏陬击 阳 涡桧鼻 桧翕击 跤?紫烟 ?晦 嫔?殓栖棻..
obj.sq_setShake(obj, 1, 1600);
local sq_var = obj.getVar();
local particle = sq_var.GetparticleCreaterMap("FastMove", "Character/Priest/Effect/Particle/Fastmove.ptl", obj);
// 试虽??赝 颤桧该 撮?
sq_var.clear_timer_vector();
sq_var.push_timer_vector(); // 0廓樯策蝶 试虽??赝 颤桧该
sq_var.push_timer_vector(); // 1廓樯策蝶 棻钦?? 颤桧该
local t = sq_var.get_timer_vector(0);
t.setParameter(60, -1);
t.resetInstant(0);
//棻钦?? 热姜
local dashFrm = 13;
local pAni = obj.sq_getCurrentAni();
local dashT = pAni.getDelaySum(0, dashFrm); //
local hitCnt = obj.sq_getIntData(SKILL_AVENGER_AWAKENING, 2); // 渠卫奢问 棻钦?? 譆渠 ?热
local term = 1;
if(hitCnt > 0) {
term = dashT / hitCnt;
}
local multiT = sq_var.get_timer_vector(1);
multiT.setParameter(term, hitCnt);
multiT.resetInstant(0);
//
}
// prepareDraw ?热 殓栖棻..
function prepareDraw_DashAttack(obj)
{
if(!obj) return;
}
// loop 睡碟殓栖棻 ismycontrol煎 马谆虽 强擎 翱念胀 赅苌 object菟桧 桧够击 剪纂啪腌栖棻.
function onProc_DashAttack(obj)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
local substate = obj.getSkillSubState();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local pAni = obj.sq_getCurrentAni();
local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
local dashFrm = 13;
local dashT = pAni.getDelaySum(0, dashFrm); //
if(frmIndex <= dashFrm) {
local srcX = obj.getVar().get_vector(0); // 卫蒙薄
local dstX = obj.getVar().get_vector(1); // 紫杂薄
//local currentX = sq_GetUniformVelocity(srcX, dstX, currentT, dashT);
local currentX = sq_GetAccel(srcX, dstX, currentT, dashT, true);
if(obj.isMovablePos(currentX, posY) && !obj.getVar().get_vector(3)) {
obj.setCurrentPos(currentX, posY, posZ);
}
else {
obj.getVar().set_vector(3, 1); // 渠莲桧翕 ?楚斜 3 - 桧翕碳陛虽羲击 虏陬击 阳 涡桧鼻 桧翕击 跤?紫烟 ?晦 嫔?殓栖棻..
}
obj.getVar().set_vector(2, posX); // 紫杂薄
}
else {
//local delayT = 240;
//local len = 50;
//local srcX = obj.getVar().get_vector(2); // 卫蒙薄
//
////local v = sq_GetAccel(0, len, currentT - dashT, delayT, true);
//local v = sq_GetUniformVelocity(0, len, currentT - dashT, delayT);
//
//local currentX = sq_GetDistancePos(srcX, obj.getDirection(), v);
//
//if(obj.isMovablePos(currentX, posY)) {
//obj.setCurrentPos(currentX, posY, posZ);
//}
}
// 试虽 ??赝 当撩
local sq_var = obj.getVar();
local t = sq_var.get_timer_vector(0);
//print( "t:" + t);
if(t)
{
if(t.isOnEvent(currentT) == true) {
local particleCreater = sq_var.GetparticleCreaterMap("FastMove", "Character/Priest/Effect/Particle/Fastmove.ptl", obj);
particleCreater.Restart(0);
//particleCreater.SetPos(posX, posY, posZ-1);
local dstX = sq_GetDistancePos(posX, obj.getDirection(), -20);
particleCreater.SetPos(dstX, posY, posZ+28);
sq_AddParticleObject(obj, particleCreater);
}
}
else
{
sq_var.push_timer_vector();
sq_var.push_timer_vector();
local ti = sq_var.get_timer_vector(0)
ti.setParameter(60, -1);
ti.resetInstant(0);
}
// 棻钦?? 扑姜
local multiT = sq_var.get_timer_vector(1);
if (multiT.isOnEvent(currentT) == true)
obj.resetHitObjectList();
}
// loop 睡碟殓栖棻 ismycontrol ?蝶?陛 狱樯桧 object陛 桧够击 菟横骨栖棻. setstate 撮?桧釭 ?卫粽螃粽薛? 当撩 , 蛔蛔 籀葬?栖棻.
function onProcCon_DashAttack(obj)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
local pAni = obj.sq_getCurrentAni();
local bEnd = obj.sq_ani_IsEnd(pAni);
local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
local substate = obj.getSkillSubState();
if(bEnd) {
}
}
function onAfterSetState_DashAttack(obj, state, datas, isResetTimer)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AW_DASHATTACK);
local power = obj.sq_getBonusRateWithPassive(SKILL_AVENGER_AWAKENING, state, SL_DASH_MAGIC_ATK,1.0);
obj.sq_setCurrentAttackBonusRate(power);
}