Sqr/character/atmage/turnwindmill/po_atturnwidmill.nut

255 lines
5.5 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function insertWindmillDust(obj, dx, dy, dz)
{
if(!obj)
return;
local x = sq_GetXPos(obj);
local y = sq_GetYPos(obj);
local z = sq_GetZPos(obj);
local particleCreater = obj.getVar().GetparticleCreaterMap("ATTurnWindmillDust", "Character/Mage/Effect/Particle/ATTurnWindmillDust.ptl", obj);
particleCreater.Restart(0);
particleCreater.SetPos(x + dx, y + dy, z + dz);
sq_AddParticleObject(obj, particleCreater);
}
function setCustomData_po_ATTurnWidmill(obj, reciveData)
{
if(!obj) return;
local flip = reciveData.readDword();
local distance = reciveData.readDword();
local attackRate = reciveData.readDword();
local term = reciveData.readDword();
local dirType = reciveData.readDword();
local angle = reciveData.readDword();
local x = sq_GetXPos(obj);
local y = sq_GetYPos(obj);
local z = sq_GetZPos(obj);
obj.getVar("dir").clear_vector();
obj.getVar("dir").push_vector(dirType);
obj.getVar("dir").push_vector(angle);
local disW = distance;
local disH = 0;
if(dirType)
{
local cos_x = distance.tofloat() * sq_CosTable(angle);
local sin_y = distance.tofloat() * sq_SinTable(angle);
disW = sq_Abs( cos_x.tointeger() );
disH = sq_Abs( sin_y.tointeger() );
print(" angle:" + angle + " sin_y:" + sin_y);
}
obj.getVar("dis").clear_vector();
obj.getVar("dis").push_vector(x);
obj.getVar("dis").push_vector(y);
obj.getVar("dis").push_vector(z);
obj.getVar("dis").push_vector(disW); // x桧翕剪葬
obj.getVar("dis").push_vector(disH); // y桧翕剪葬
obj.getVar("flip").clear_vector(); // state vector
obj.getVar("flip").push_vector(flip);
obj.getVar("state").clear_vector(); // state vector
obj.getVar("state").push_vector(PASSIVEOBJ_SUB_STATE_0);
//print(" term:" + term);
initGetVarTimer(obj, 1, term, -1);
obj.getVar("particle").clear_timer_vector();
obj.getVar("particle").push_timer_vector();
local t = obj.getVar("particle").get_timer_vector(0);
t.setParameter(20, -1);
t.resetInstant(0);
local pAttack = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttackBonusRate(pAttack, attackRate);
if(obj.isMyControlObject()) {
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
//ATTurnWindmillDust.ptl
}
function setState_po_ATTurnWidmill(obj, state, datas)
{
if(!obj) return;
local passiveState = state;
obj.getVar("state").set_vector(0, passiveState);
local x = sq_GetXPos(obj);
local y = sq_GetYPos(obj);
local z = sq_GetZPos(obj);
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
{
if(obj.getVar("flip").get_vector(0))
{
local ani = obj.getCustomAnimation(1);
obj.setCurrentAnimation(ani);
}
}
else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
{
if(!obj.getVar("flip").get_vector(0))
{
local ani = obj.getCustomAnimation(0);
obj.setCurrentAnimation(ani);
}
else
{
local ani = obj.getCustomAnimation(2);
obj.setCurrentAnimation(ani);
}
}
}
function procAppend_po_ATTurnWidmill(obj)
{
if(!obj) return;
local passiveState = obj.getVar("state").get_vector(0);
local pAni = obj.getCurrentAnimation();
local currentT = sq_GetCurrentTime(pAni);
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
{
local fireT = 200;
local srcX = obj.getVar("dis").get_vector(0); // 卫蒙x
local srcY = obj.getVar("dis").get_vector(1); // 卫蒙y
local srcZ = obj.getVar("dis").get_vector(2); // 卫蒙z
local distance = obj.getVar("dis").get_vector(3); // 识 桧翕剪葬
local v = sq_GetUniformVelocity(0, distance, currentT, fireT);
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v);
sq_setCurrentAxisPos(obj, 0, dstX);
// 跷陛
if(obj.getVar("dir").get_vector(0))
{
local disH = obj.getVar("dis").get_vector(4); // 撮煎 桧翕剪葬
local vH = sq_GetUniformVelocity(0, disH, currentT, fireT);
//print(" disH:" + disH);
if(obj.getVar("dir").get_vector(0) == 1)
{
vH = -vH;
}
local dstY = srcY + vH;
sq_setCurrentAxisPos(obj, 1, dstY);
}
if(currentT >= fireT)
{
if(obj.isMyControlObject())
{
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
}
// 试虽 ??赝 当撩
local t = obj.getVar("particle").get_timer_vector(0);
if(t.isOnEvent(currentT) == true)
{
local dx = sq_GetDistancePos(0, obj.getDirection(), 10);
insertWindmillDust(obj, dx, 5, -8);
}
local hitT = obj.getVar().get_timer_vector(0);
if(hitT)
{
if(hitT.isOnEvent(currentT) == true)
{
//print(" reset");
obj.resetHitObjectList();
}
}
}
else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
{
}
}
function onChangeSkillEffect_po_ATTurnWidmill(obj, skillIndex, reciveData)
{
if(!obj) return;
}
function onDestroyObject_po_ATTurnWidmill(obj, object)
{
if(!obj) return;
}
function onKeyFrameFlag_po_ATTurnWidmill(obj, flagIndex)
{
}
function onEndCurrentAni_po_ATTurnWidmill(obj)
{
if(!obj) return;
local passiveState = obj.getVar("state").get_vector(0);
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
{
if(obj.isMyControlObject())
{
sq_SendDestroyPacketPassiveObject(obj);
}
}
}