485 lines
11 KiB
Plaintext
485 lines
11 KiB
Plaintext
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local pole_attack_rate = reciveData.readDword();
|
|||
|
|
local attack_rate = reciveData.readDword();
|
|||
|
|
local imagePerRate = reciveData.readDword();
|
|||
|
|
local element = reciveData.readDword();
|
|||
|
|
local speedRate = reciveData.readDword();
|
|||
|
|
|
|||
|
|
obj.getVar("imagerate").clear_vector(); // state vector
|
|||
|
|
obj.getVar("imagerate").push_vector(imagePerRate);
|
|||
|
|
|
|||
|
|
obj.getVar("attack").clear_vector(); // state vector
|
|||
|
|
obj.getVar("attack").push_vector(attack_rate);
|
|||
|
|
obj.getVar("attack").push_vector(pole_attack_rate);
|
|||
|
|
|
|||
|
|
|
|||
|
|
obj.getVar("element").clear_vector(); // state vector
|
|||
|
|
obj.getVar("element").push_vector(element);
|
|||
|
|
|
|||
|
|
obj.getVar("speed").clear_vector(); // state vector
|
|||
|
|
obj.getVar("speed").push_vector(speedRate);
|
|||
|
|
|
|||
|
|
obj.getVar("state").clear_vector(); // state vector
|
|||
|
|
obj.getVar("state").push_vector(0);
|
|||
|
|
|
|||
|
|
obj.getVar("flag").clear_vector();
|
|||
|
|
obj.getVar("flag").push_vector(0);
|
|||
|
|
obj.getVar("flag").push_vector(0);
|
|||
|
|
obj.getVar("flag").push_vector(0);
|
|||
|
|
obj.getVar("flag").push_vector(0);
|
|||
|
|
obj.getVar("flag").push_vector(0);
|
|||
|
|
|
|||
|
|
local x = sq_GetXPos(obj);
|
|||
|
|
local y = sq_GetYPos(obj);
|
|||
|
|
local z = sq_GetZPos(obj);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
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, "");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local pChr = obj.getTopCharacter();
|
|||
|
|
|
|||
|
|
local passiveState = state;
|
|||
|
|
|
|||
|
|
obj.getVar("state").set_vector(0, passiveState);
|
|||
|
|
|
|||
|
|
|
|||
|
|
local posX = obj.getXPos();
|
|||
|
|
local posY = obj.getYPos();
|
|||
|
|
local posZ = obj.getZPos();
|
|||
|
|
|
|||
|
|
local imagePerRate = obj.getVar("imagerate").get_vector(0);
|
|||
|
|
local imageRate = imagePerRate.tofloat() / 100.0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
|
|||
|
|
{
|
|||
|
|
local attackInfo = sq_GetCustomAttackInfo(obj, 0);
|
|||
|
|
sq_SetCurrentAttackInfo(obj, attackInfo);
|
|||
|
|
|
|||
|
|
local attack_rate = obj.getVar("attack").get_vector(1);
|
|||
|
|
local pAttack = sq_GetCurrentAttackInfo(obj);
|
|||
|
|
sq_SetCurrentAttackBonusRate(pAttack, attack_rate);
|
|||
|
|
|
|||
|
|
local element = obj.getVar("element").get_vector(0);
|
|||
|
|
if(pAttack)
|
|||
|
|
{
|
|||
|
|
if (element != ENUM_ELEMENT_NONE)
|
|||
|
|
{
|
|||
|
|
pAttack.setElement(ENUM_ELEMENT_NONE);
|
|||
|
|
print(" \n push element:" + element);
|
|||
|
|
pAttack.setElement(element);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
local currentAni = obj.getCurrentAnimation();
|
|||
|
|
currentAni.Proc();
|
|||
|
|
print( " setImageRate:");
|
|||
|
|
currentAni.setImageRateFromOriginal(imageRate, imageRate);
|
|||
|
|
sq_SetAttackBoundingBoxSizeRate(currentAni, imageRate, imageRate, imageRate);
|
|||
|
|
}
|
|||
|
|
else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
//local attackInfo = sq_GetDefaultAttackInfo(obj);
|
|||
|
|
local attackInfo = sq_GetCustomAttackInfo(obj, 1);
|
|||
|
|
sq_SetCurrentAttackInfo(obj, attackInfo);
|
|||
|
|
|
|||
|
|
local attack_rate = obj.getVar("attack").get_vector(0);
|
|||
|
|
|
|||
|
|
local pAttack = sq_GetCurrentAttackInfo(obj);
|
|||
|
|
sq_SetCurrentAttackBonusRate(pAttack, attack_rate);
|
|||
|
|
|
|||
|
|
local element = obj.getVar("element").get_vector(0);
|
|||
|
|
if(pAttack)
|
|||
|
|
{
|
|||
|
|
if(element != ENUM_ELEMENT_NONE)
|
|||
|
|
pAttack.setElement(element);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
sq_SetMyShake(pChr,4,320);
|
|||
|
|
|
|||
|
|
local ani = obj.getCustomAnimation(0);
|
|||
|
|
obj.setCurrentAnimation(ani);
|
|||
|
|
|
|||
|
|
local currentAni = obj.getCurrentAnimation();
|
|||
|
|
currentAni.Proc();
|
|||
|
|
print( " setImageRate:");
|
|||
|
|
currentAni.setImageRateFromOriginal(imageRate, imageRate);
|
|||
|
|
sq_SetAttackBoundingBoxSizeRate(currentAni, imageRate, imageRate, imageRate);
|
|||
|
|
|
|||
|
|
local element = obj.getVar("element").get_vector(0);
|
|||
|
|
|
|||
|
|
if (element == ENUM_ELEMENT_FIRE)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_FIRE");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_WATER)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_WATER");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_DARK)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_DARK");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_LIGHT)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_LIGHT");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_NONE)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_FIRE");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local currentAni = obj.getCurrentAnimation();
|
|||
|
|
|
|||
|
|
if(currentAni)
|
|||
|
|
{
|
|||
|
|
local speedRate = obj.getVar("speed").get_vector(0);
|
|||
|
|
currentAni.setSpeedRate(speedRate.tofloat());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local pChr = obj.getTopCharacter();
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(passiveState == 0)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
local pAni = obj.getCurrentAnimation();
|
|||
|
|
|
|||
|
|
local frameIndex = 0;
|
|||
|
|
|
|||
|
|
if(pAni)
|
|||
|
|
{
|
|||
|
|
frameIndex = pAni.GetCurrentFrameIndex();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if(frameIndex >= 10)
|
|||
|
|
{
|
|||
|
|
if(obj.getVar("flag").get_vector(1) == 0)
|
|||
|
|
{
|
|||
|
|
sq_SetMyShake(pChr,2,150);
|
|||
|
|
obj.getVar("flag").set_vector(1, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(frameIndex >= 11)
|
|||
|
|
{
|
|||
|
|
if(obj.getVar("flag").get_vector(3) == 0)
|
|||
|
|
{
|
|||
|
|
local element = obj.getVar("element").get_vector(0);
|
|||
|
|
|
|||
|
|
if (element == ENUM_ELEMENT_FIRE)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("MCANNON_FIREFALL");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_WATER)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("MCANNON_ATK");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_DARK)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("MCANNON_DARKFALL");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_LIGHT)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("MCANNON_LIGHTFALL");
|
|||
|
|
}
|
|||
|
|
else if(element == ENUM_ELEMENT_NONE)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("MCANNON_FIREFALL");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
obj.getVar("flag").set_vector(3, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(frameIndex >= 14)
|
|||
|
|
{
|
|||
|
|
if(obj.getVar("flag").get_vector(2) == 0)
|
|||
|
|
{
|
|||
|
|
if(pChr)
|
|||
|
|
{
|
|||
|
|
obj.sq_PlaySound("ESTRIKE_READY");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
obj.getVar("flag").set_vector(2, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(frameIndex >= 21)
|
|||
|
|
{
|
|||
|
|
if(obj.getVar("flag").get_vector(0) == 0)
|
|||
|
|
{
|
|||
|
|
local fScreen = sq_flashScreen(obj,0,80,0,80, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
|
|||
|
|
sq_addFlashScreen(fScreen, 0, 320, 320, 180, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
|
|||
|
|
|
|||
|
|
obj.getVar("flag").set_vector(0, 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeFireEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
setCustomData_po_ATElementalStrikeEx(obj, reciveData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeFireEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
setState_po_ATElementalStrikeEx(obj, state, datas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeFireEx(obj)
|
|||
|
|
{
|
|||
|
|
procAppend_po_ATElementalStrikeEx(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATElementalStrikeFireEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
print(" passiveState:" + passiveState);
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
{
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
local pIntVec = sq_GetGlobalIntVector();
|
|||
|
|
|
|||
|
|
sq_IntVectorClear(pIntVec);
|
|||
|
|
sq_IntVectorPush(pIntVec, 0);
|
|||
|
|
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////
|
|||
|
|
// 鼠楼撩
|
|||
|
|
///////////////////////////////////
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeNoneEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
setCustomData_po_ATElementalStrikeEx(obj, reciveData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeNoneEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
setState_po_ATElementalStrikeEx(obj, state, datas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeNoneEx(obj)
|
|||
|
|
{
|
|||
|
|
procAppend_po_ATElementalStrikeEx(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATElementalStrikeNoneEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
print(" passiveState:" + passiveState);
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
{
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
local pIntVec = sq_GetGlobalIntVector();
|
|||
|
|
|
|||
|
|
sq_IntVectorClear(pIntVec);
|
|||
|
|
sq_IntVectorPush(pIntVec, 0);
|
|||
|
|
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
///////////////////////////////////
|
|||
|
|
// 檩楼撩
|
|||
|
|
///////////////////////////////////
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeDarkEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
setCustomData_po_ATElementalStrikeEx(obj, reciveData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeDarkEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
setState_po_ATElementalStrikeEx(obj, state, datas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeDarkEx(obj)
|
|||
|
|
{
|
|||
|
|
procAppend_po_ATElementalStrikeEx(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATElementalStrikeDarkEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
print(" passiveState:" + passiveState);
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
{
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
local pIntVec = sq_GetGlobalIntVector();
|
|||
|
|
|
|||
|
|
sq_IntVectorClear(pIntVec);
|
|||
|
|
sq_IntVectorPush(pIntVec, 0);
|
|||
|
|
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
///////////////////////////////////
|
|||
|
|
// 热楼撩
|
|||
|
|
///////////////////////////////////
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeWaterEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
setCustomData_po_ATElementalStrikeEx(obj, reciveData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeWaterEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
setState_po_ATElementalStrikeEx(obj, state, datas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeWaterEx(obj)
|
|||
|
|
{
|
|||
|
|
procAppend_po_ATElementalStrikeEx(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATElementalStrikeWaterEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
print(" passiveState:" + passiveState);
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
{
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
local pIntVec = sq_GetGlobalIntVector();
|
|||
|
|
|
|||
|
|
sq_IntVectorClear(pIntVec);
|
|||
|
|
sq_IntVectorPush(pIntVec, 0);
|
|||
|
|
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
///////////////////////////////////
|
|||
|
|
// 赀楼撩
|
|||
|
|
///////////////////////////////////
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalStrikeLightEx(obj, reciveData)
|
|||
|
|
{
|
|||
|
|
setCustomData_po_ATElementalStrikeEx(obj, reciveData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalStrikeLightEx(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
setState_po_ATElementalStrikeEx(obj, state, datas);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalStrikeLightEx(obj)
|
|||
|
|
{
|
|||
|
|
procAppend_po_ATElementalStrikeEx(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATElementalStrikeLightEx(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local passiveState = obj.getVar("state").get_vector(0);
|
|||
|
|
|
|||
|
|
print(" passiveState:" + passiveState);
|
|||
|
|
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
|
|||
|
|
{
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
{
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
local pIntVec = sq_GetGlobalIntVector();
|
|||
|
|
|
|||
|
|
sq_IntVectorClear(pIntVec);
|
|||
|
|
sq_IntVectorPush(pIntVec, 0);
|
|||
|
|
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|