Sqr/character/atmage/elementalstrikeex/po_atelementalstrikeex.nut

485 lines
11 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 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, "");
}
}
/////////////////////////////////////////////////////////////////////////////////////////