274 lines
5.8 KiB
Plaintext
274 lines
5.8 KiB
Plaintext
|
||
S_PO_ATCLT_0 <- 10
|
||
S_PO_ATCLT_1 <- 11
|
||
|
||
function setCustomData_po_ATChainLightningTarget(obj, reciveData)
|
||
{
|
||
|
||
if(!obj) return;
|
||
|
||
local id = reciveData.readDword();
|
||
|
||
local attack_time = reciveData.readDword();
|
||
local attack_rate = reciveData.readDword();
|
||
local multi_hit_num = reciveData.readDword();
|
||
//local multi_hit_term = reciveData.readDword();
|
||
|
||
local hitCnt = multi_hit_num;
|
||
|
||
print( " hitCnt :" + hitCnt);
|
||
|
||
local object = sq_GetObjectByObjectId(obj, id);
|
||
obj.sq_var.clear_obj_vector();
|
||
obj.sq_var.push_obj_vector(object);
|
||
|
||
|
||
local pAni = obj.getCurrentAnimation();
|
||
local initDelay = 0;
|
||
|
||
local term = attack_time / hitCnt;
|
||
|
||
obj.timer_.setParameter(term, -1);
|
||
obj.timer_.resetInstant(initDelay);
|
||
|
||
|
||
obj.getVar("state").clear_vector(); // state vector
|
||
obj.getVar("state").push_vector(0);
|
||
|
||
obj.getVar("hitCnt").clear_vector();
|
||
obj.getVar("hitCnt").push_vector(hitCnt);
|
||
obj.getVar("hitCnt").push_vector(1);
|
||
|
||
obj.getVar("end").clear_vector();
|
||
obj.getVar("end").push_vector(0);
|
||
|
||
local pAttack = sq_GetCurrentAttackInfo(obj);
|
||
sq_SetCurrentAttackBonusRate(pAttack, attack_rate);
|
||
|
||
|
||
obj.getVar("state").clear_ct_vector();
|
||
|
||
obj.getVar("state").push_ct_vector();
|
||
local t = obj.getVar("state").get_ct_vector(0);
|
||
t.Reset();
|
||
t.Start(100000,0);
|
||
|
||
if(obj.isMyControlObject())
|
||
{
|
||
sq_SendHitObjectPacket(obj,object,0,0,(sq_GetObjectHeight(object) / 2));
|
||
}
|
||
|
||
local currentT = 0;
|
||
|
||
local isMyControl = obj.isMyControlObject();
|
||
|
||
|
||
|
||
if(isMyControl) {
|
||
local pIntVec = sq_GetGlobalIntVector();
|
||
|
||
sq_IntVectorClear(pIntVec);
|
||
sq_IntVectorPush(pIntVec, 0);
|
||
|
||
obj.addSetStatePacket(S_PO_ATCLT_0, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
||
}
|
||
|
||
|
||
}
|
||
|
||
function setState_po_ATChainLightningTarget(obj, state, datas)
|
||
{
|
||
|
||
if(!obj) return;
|
||
|
||
local passiveState = state;
|
||
|
||
obj.getVar("state").set_vector(0, passiveState);
|
||
|
||
if(passiveState == S_PO_ATCLT_0) {
|
||
|
||
}
|
||
else if(passiveState == S_PO_ATCLT_1) {
|
||
local pA = obj.getCustomAnimation(0);
|
||
obj.setCurrentAnimation(pA);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function procAppend_po_ATChainLightningTarget(obj)
|
||
{
|
||
if(!obj)
|
||
return;
|
||
|
||
local pChr = obj.getTopCharacter();
|
||
|
||
|
||
local state = obj.getVar("state").get_vector(0);
|
||
|
||
//if(state != S_PO_ATCLT_0 ) {
|
||
//return;
|
||
//}
|
||
|
||
if(state != S_PO_ATCLT_0 && state != S_PO_ATCLT_1)
|
||
return;
|
||
|
||
|
||
|
||
if(!pChr || obj.sq_var.get_obj_vector_size() != 1)
|
||
{
|
||
if(obj.isMyControlObject()) {
|
||
if(state != S_PO_ATCLT_1)
|
||
{
|
||
local pIntVec = sq_GetGlobalIntVector();
|
||
|
||
sq_IntVectorClear(pIntVec);
|
||
sq_IntVectorPush(pIntVec, 0);
|
||
|
||
obj.addSetStatePacket(S_PO_ATCLT_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
if(!pChr)
|
||
{
|
||
if(obj.isMyControlObject())
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
|
||
return;
|
||
}
|
||
|
||
local pTargetChr = obj.sq_var.get_obj_vector(0);
|
||
|
||
|
||
if(pChr.getState() != STATE_CHAINLIGHTNING || !pTargetChr) {
|
||
if(obj.isMyControlObject()) {
|
||
if(state != S_PO_ATCLT_1)
|
||
{
|
||
local pIntVec = sq_GetGlobalIntVector();
|
||
|
||
sq_IntVectorClear(pIntVec);
|
||
sq_IntVectorPush(pIntVec, 0);
|
||
|
||
obj.addSetStatePacket(S_PO_ATCLT_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if(pTargetChr)
|
||
{
|
||
local posX = pTargetChr.getXPos();
|
||
local posY = pTargetChr.getYPos();
|
||
local posZ = pTargetChr.getZPos() + (sq_GetObjectHeight(pTargetChr) / 2) - 25;
|
||
|
||
sq_SetCurrentPos(obj, posX, posY, posZ);
|
||
}
|
||
|
||
|
||
local pObjAni = obj.getCurrentAnimation();
|
||
|
||
/////////////////////////////////////////////////
|
||
//
|
||
local substate = pChr.getSkillSubState();
|
||
|
||
if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
|
||
if(state == S_PO_ATCLT_0) {
|
||
if(obj.isMyControlObject()) {
|
||
local pIntVec = sq_GetGlobalIntVector();
|
||
|
||
sq_IntVectorClear(pIntVec);
|
||
sq_IntVectorPush(pIntVec, 0);
|
||
|
||
obj.addSetStatePacket(S_PO_ATCLT_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
|
||
|
||
//print(" obj.addSetStatePacket(S_PO_ATCL_1 ");
|
||
}
|
||
return;
|
||
}
|
||
}
|
||
////////////////////////////////////////////
|
||
|
||
if(pTargetChr)
|
||
{
|
||
local multiHitCnt = obj.getVar("hitCnt").get_vector(VECTOR_FLAG_0);
|
||
local cnt = obj.getVar("hitCnt").get_vector(VECTOR_FLAG_1);
|
||
|
||
|
||
if(cnt < multiHitCnt)
|
||
{
|
||
local t = obj.getVar("state").get_ct_vector(0);
|
||
local time = 0;
|
||
|
||
if(t)
|
||
time = t.Get();
|
||
|
||
print( " multiHitCnt:" + multiHitCnt + " cnt:" + cnt);
|
||
if (obj.timer_.isOnEvent(time) == true)
|
||
{
|
||
local value = obj.getVar("hitCnt").get_vector(VECTOR_FLAG_1);
|
||
value = value + 1;
|
||
obj.getVar("hitCnt").set_vector(VECTOR_FLAG_1, value);
|
||
if(obj.isMyControlObject())
|
||
{
|
||
sq_SendHitObjectPacket(obj,pTargetChr,0,0,(sq_GetObjectHeight(pTargetChr) / 2));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if(state == S_PO_ATCLT_1)
|
||
{
|
||
if(obj.isMyControlObject())
|
||
{
|
||
local isend = obj.getVar("end").get_vector(0);
|
||
if(obj.getVar("end").get_vector(0))
|
||
{
|
||
local multiHitCnt = obj.getVar("hitCnt").get_vector(VECTOR_FLAG_0);
|
||
local cnt = obj.getVar("hitCnt").get_vector(VECTOR_FLAG_1);
|
||
//print(" multiHitCnt:" + multiHitCnt + " cnt:" + cnt);
|
||
|
||
if(multiHitCnt <= cnt || obj.sq_var.get_obj_vector_size(0) == 0)
|
||
{
|
||
print(" destroy lightning target");
|
||
if(obj.isMyControlObject())
|
||
{
|
||
sq_SendDestroyPacketPassiveObject(obj);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
function onDestroyObject_po_ATChainLightningTarget(obj, object)
|
||
{
|
||
|
||
if(!obj) return;
|
||
|
||
obj.sq_var.remove_obj_vector(object);
|
||
|
||
}
|
||
|
||
function onKeyFrameFlag_po_ATChainLightningTarget(obj, flagIndex)
|
||
{
|
||
|
||
}
|
||
|
||
function onEndCurrentAni_po_ATChainLightningTarget(obj)
|
||
{
|
||
if(!obj) return;
|
||
|
||
local state = obj.getVar("state").get_vector(0);
|
||
|
||
if(state == S_PO_ATCLT_1) {
|
||
obj.getVar("end").set_vector(0, 1);
|
||
}
|
||
}
|
||
|