255 lines
5.5 KiB
Plaintext
255 lines
5.5 KiB
Plaintext
|
||
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);
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|