//男机械 function onSourceKeyFrameFlag_appendage_kak_rx78(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: local sizeRate = sq_GetIntData(sqrChr, 27, 1); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 27, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: // local sizeRate = sq_GetIntData(sqrChr, 27, 1); // local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 27, 29, 1, 1.0) + 100; //createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, true); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } } function proc_appendage_kak_rx78(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local skill_level = sq_GetSkillLevel(sqrChr, 27); local valuetime = sqrChr.sq_GetLevelData(27, 2, skill_level); local useTime = appendage.getTimer().Get(); local ani1 = parentObj.getCurrentAnimation(); if(useTime > valuetime - 1000 && appendage.getVar().getBool(0) == false){ appendage.getVar().clear_timer_vector(); appendage.getVar().push_timer_vector(); local t = appendage.getVar().get_timer_vector(0); t.setParameter(100, 10); appendage.getVar().setBool(0,true) } local t = appendage.getVar().get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t && t.isOnEvent(currentT) == true){ if(appendage.getVar().getBool(1) == true){ ani1.setRGBA(255, 255, 255, 255); appendage.getVar().setBool(1,false); } else{ ani1.setRGBA(255, 150, 50, 255); appendage.getVar().setBool(1,true); } } if(useTime >= valuetime && sqrChr.getVar("holdandgo").getBool(0) == false){ local sizeRate = sq_GetIntData(sqrChr, 27, 1); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 27, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); if(attackIndex == 1){ if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } } break; } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_ez8(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj) { appendage.setValid(false); return true; } switch(flagIndex){ case 1: local skill_level = sq_GetSkillLevel(sqrChr, 28); local sizeRate = sqrChr.sq_GetLevelData(28, 3, skill_level); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 28, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 4); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: // local skill_level = sq_GetSkillLevel(sqrChr, 28); // local sizeRate = sqrChr.sq_GetLevelData(28, 3, skill_level); // local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 28, 29, 1, 1.0) + 100; //createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, true); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } parentObj.setValid(false); break; } } function proc_appendage_kak_ez8(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); // printp(" ,parentObj_state:"+parentObj.getState().tostring()+",attackindex:"+parentObj.getAttackIndex().tostring()); // if(parentObj.getAttackIndex() == 3) printp(",FrameIndex:"+sq_GetCurrentFrameIndex(parentObj).tostring()); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local skill_level = sq_GetSkillLevel(sqrChr, 28); local valuetime = sqrChr.sq_GetLevelData(28, 2, skill_level); local useTime = appendage.getTimer().Get(); local ani1 = parentObj.getCurrentAnimation(); if(useTime > valuetime - 1000 && appendage.getVar().getBool(0) == false){ appendage.getVar().clear_timer_vector(); appendage.getVar().push_timer_vector(); local t = appendage.getVar().get_timer_vector(0); t.setParameter(100, 10); appendage.getVar().setBool(0,true) } local t = appendage.getVar().get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t && t.isOnEvent(currentT) == true){ if(appendage.getVar().getBool(1) == true){ ani1.setRGBA(255, 255, 255, 255); appendage.getVar().setBool(1,false); } else{ ani1.setRGBA(255, 150, 50, 255); appendage.getVar().setBool(1,true); } } if(useTime >= valuetime && sqrChr.getVar("holdandgo").getBool(0) == false){ local skill_level = sq_GetSkillLevel(sqrChr, 28); local sizeRate = sqrChr.sq_GetLevelData(28, 3, skill_level); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 28, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 2); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); if(attackIndex == 2){ if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } } break; } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_ez8ex(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj) { appendage.setValid(false); return true; } switch(flagIndex){ case 1: break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 4); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: // if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ // local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); // dieHardAppendage.getVar().setBool(0,true); // CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); // } local skill_level = sq_GetSkillLevel(sqrChr, 105); local number = sqrChr.sq_GetLevelData(105, 6, skill_level); local level = sqrChr.sq_GetLevelData(105, 0, skill_level); local destX_01 = parentObj.getXPos() - sqrChr.getXPos(); local destY_01 = parentObj.getYPos() - sqrChr.getYPos(); if(sqrChr.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = sqrChr.getXPos() - parentObj.getXPos(); for(local i = 0; i < number; i++){ summonmonster_mechanic(sqrChr,destX_01+sq_getRandom(-10,10),destY_01+sq_getRandom(-10,10),0,0,77620,20000,level,0); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/ez8_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 2); parentObj.setValid(false); break; } } function proc_appendage_kak_ez8ex(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); // printp(" ,parentObj_state:"+parentObj.getState().tostring()+",attackindex:"+parentObj.getAttackIndex().tostring()); // if(parentObj.getAttackIndex() == 3) printp(",FrameIndex:"+sq_GetCurrentFrameIndex(parentObj).tostring()); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local valuetime = parentObj.getVar().get_vector(0); local useTime = appendage.getTimer().Get(); if(useTime >= valuetime && sqrChr.getVar("holdandgo").getBool(0) == false){ local skill_level = sq_GetSkillLevel(sqrChr, 105); local sizeRate = sqrChr.sq_GetLevelData(105, 3, skill_level); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 105, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/ez8_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 2); local number = sqrChr.sq_GetLevelData(105, 6, skill_level); local level = sqrChr.sq_GetLevelData(105, 0, skill_level); local destX_01 = parentObj.getXPos() - sqrChr.getXPos(); local destY_01 = parentObj.getYPos() - sqrChr.getYPos(); if(sqrChr.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = sqrChr.getXPos() - parentObj.getXPos(); for(local i = 0; i < number; i++){ summonmonster_mechanic(sqrChr,destX_01+sq_getRandom(-10,10),destY_01+sq_getRandom(-10,10),0,0,77620,600000,level,0); } parentObj.setValid(false); } switch(parentObj.getState()){ case STATE_STAND: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 2); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); if(attackIndex == 2){ if(!CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ parentObj.sendStateOnlyPacket(STATE_STAND); return; } } break; } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function proc_appendage_kak_oldrobot(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local sqr_state = sqrChr.getState(); local bDownKey = sqrChr.isDownSkillLastKey(); local distance = sq_GetDistance(parentObj.getXPos(), parentObj.getYPos(), sqrChr.getXPos(), sqrChr.getYPos(), true); local robotsexplosion_level = sq_GetSkillLevel(sqrChr, 93); local skill_distance = sqrChr.sq_GetLevelData(93, 0, robotsexplosion_level) / 2; local stateTime = sqrChr.sq_GetStateTimer(); if((sqr_state == 93 && !bDownKey && distance <= skill_distance) || (bDownKey && stateTime >= 1200)){ local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); if(moveX > 0){ sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); } local skill_level = sq_GetSkillLevel(sqrChr, 28); local sizeRate = sqrChr.sq_GetLevelData(28, 3, skill_level); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 28, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, true); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } parentObj.setValid(false); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_exs(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: break; case 11: local moveX = parentObj.getVar("move").get_vector(0); local moveY = parentObj.getVar("move").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); sq_SetCurrentDirection(parentObj, sqrChr.getDirection()); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: parentObj.sendStateOnlyPacket(STATE_STAND); break; } //printp("flagIndex="+flagIndex.tostring()+"\n"); } function proc_appendage_kak_exs(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); // printp(" ,parentObj_state:"+parentObj.getState().tostring()+",attackindex:"+parentObj.getAttackIndex().tostring()); // if(parentObj.getAttackIndex() == 3) printp(",FrameIndex:"+sq_GetCurrentFrameIndex(parentObj).tostring()); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local valuetime = appendage.getVar().get_vector(0)*0+7000; local useTime = appendage.getTimer().Get(); if(useTime >= valuetime){ parentObj.setValid(false); } } function onStart_appendage_kak_exs(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); local skill_level = sq_GetSkillLevel(sqrChr, 29); local valuetime = sqrChr.sq_GetLevelData(29, 3, skill_level); appendage.getVar().clear_vector(); appendage.getVar().push_vector(valuetime); appendage.getVar().setBool(0,true); appendage.getVar().setBool(1,true); appendage.getVar().setBool(2,true); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_tempester(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); if(!parentObj || parentObj.getState() == STATE_DIE){ appendage.setValid(false); return true; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); switch(flagIndex){ case 1: break; case 10: local currentAni = parentObj.getCurrentAnimation(); currentAni.addLayerAnimation(-1,sq_CreateAnimation("","monster/character/gunner/robot_by_kk/tempesterani/effectboostattack.ani"),true); local targetObj = parentObj.getVar("targetObj").get_obj_vector(0); if(!targetObj || targetObj.getState() == STATE_DIE) parentObj.sendStateOnlyPacket(STATE_STAND); local hitnumber = appendage.getVar("custom").get_vector(1); local hittime = appendage.getVar("custom").get_vector(2); // appendage.getVar("skill_bullet").clear_timer_vector(); // appendage.getVar("skill_bullet").push_timer_vector(); // local t = appendage.getVar("skill_bullet").get_timer_vector(0); // t.setParameter(hittime, hitnumber); local x1 = parentObj.getVar("skill_bullet").get_vector(0); local z1 = parentObj.getVar("skill_bullet").get_vector(1); local angle = sq_ToDegree(sq_Atan2(x1.tofloat(), z1.tofloat())); local offset = [[55, 0, 78],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[55, 0, 63],[50, 0, 48],[48, 0, 38],[38, 0, 31],[27, 0, 17],[10, 0, 9]]; local attackIndex = parentObj.getAttackIndex(); local pooledObj = sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/gunner/robot_by_kk/tempesterani/effectgunshoot.ani", offset[attackIndex][0], offset[attackIndex][1], offset[attackIndex][2]); local pAni = pooledObj.getCurrentAnimation(); sq_SetfRotateAngle(pAni, sq_ToRadian(angle - 90)); local totalDamage = appendage.getVar("custom").get_vector(5); if(!sqrChr) sqrChr = sq_getMyCharacter(); createSkillPassiveObj_nanjixie(sqrChr, targetObj, 63, 3, totalDamage, hitnumber, 0, 0, 0, 0); break; case 11: // sq_SendCreatePassiveObjectPacket(parentObj, 776104, 0, 0, 0, 0, parentObj.getDirection()); // print("test"); break; case 20: parentObj.sq_PlaySound("TEMPESTER_MISSILE"); break; case 21: local hitnumber = appendage.getVar("custom").get_vector(3); local hittime = appendage.getVar("custom").get_vector(4); if(hitnumber % 2 == 0){ hitnumber = hitnumber / 2; } else if(hitnumber % 2 == 1){ hitnumber = (hitnumber / 2).tointeger() + 1; } // sqrChr.getVar("Debug_SubState").set_vector(4,hitnumber); appendage.getVar("skill_missile").clear_timer_vector(); appendage.getVar("skill_missile").push_timer_vector(); local t = appendage.getVar("skill_missile").get_timer_vector(0); t.setParameter(hittime, hitnumber); // print(parentObj.getHp() + " && " + parentObj.getHpMax()); break; case 101: local moveX = parentObj.getVar("move").get_vector(0); local moveY = parentObj.getVar("move").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); if(parentObj.getVar("move").getBool(0) == true){ sq_setCurrentAxisPos(parentObj, 2, 20); } sq_SetCurrentDirection(parentObj, sqrChr.getDirection()); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 4); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 102: if(parentObj.getVar("move").getBool(0) == true) parentObj.setValid(false); else parentObj.sendStateOnlyPacket(STATE_STAND); break; } return true; } function proc_appendage_kak_tempester(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); if(!parentObj || parentObj.getState() == STATE_DIE){ appendage.setValid(false); return; } local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); local currentT = appendage.getTimer().Get(); switch(parentObj.getState()){ case STATE_STAND: local chr = sq_getMyCharacter(); if(isSameObject(sqrChr,chr)){ if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 2); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } } if(appendage.getVar().getBool(0) == false) appendage.getVar().setBool(0, true); if(appendage.getVar().getBool(1) == false) appendage.getVar().setBool(1, true); if(appendage.getVar().getBool(2) == false) appendage.getVar().setBool(2, true); local targetObj = sq_FindTarget( parentObj, 0, 400, 300, 300); if(targetObj){ local targetObjx = targetObj.getXPos(); local targetObjy = targetObj.getYPos(); local targetObjz = targetObj.getZPos(); local x1 = sq_Abs(targetObjx - parentObj.getXPos()); local z1 = sq_Abs(targetObjz - parentObj.getZPos()); if(t_02 && t_02.isOnEvent(currentT) == true){ local activeObj = sq_GetCNRDObjectToActiveObject(targetObj); local group = sq_GetGroup(activeObj); local uniqueId = sq_GetUniqueId(activeObj); parentObj.getVar("skill_missile").clear_vector(); parentObj.getVar("skill_missile").push_vector(group); parentObj.getVar("skill_missile").push_vector(uniqueId); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); // sqrChr.getVar("Debug_SubState").set_vector(9,1000); return; } else if(t_01 && t_01.isOnEvent(currentT) == true && sq_Abs(targetObj.getYPos() - parentObj.getYPos()) <= 30){ parentObj.getVar("skill_bullet").clear_vector(); parentObj.getVar("skill_bullet").push_vector(x1); parentObj.getVar("skill_bullet").push_vector(z1); parentObj.getVar("targetObj").clear_obj_vector(); parentObj.getVar("targetObj").push_obj_vector(targetObj); local angle = sq_ToDegree(sq_Atan2(x1.tofloat(), z1.tofloat())); local attackIndex; if(angle.tointeger() > 90){ attackIndex = 0; } else if(angle.tointeger() == 90){ attackIndex = 6; } else if(angle.tointeger() < 90 && angle.tointeger() > 45){ attackIndex = 7; } else if(angle.tointeger() == 45){ attackIndex = 8; } else if(angle.tointeger() < 45 && angle.tointeger() > 30){ attackIndex = 9; } else if(angle.tointeger() <= 30 && angle.tointeger() > 10){ attackIndex = 10; } else if(angle.tointeger() <= 10){ attackIndex = 11; } local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, attackIndex); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 1: if(appendage.getVar().getBool(0) == true){ local currentAni = parentObj.getCurrentAnimation(); currentAni.addLayerAnimation(-1,sq_CreateAnimation("","monster/character/gunner/robot_by_kk/tempesterani/effectboostattack.ani"),true); appendage.getVar().setBool(0, false); return; } local t12 = appendage.getVar("skill_missile").get_timer_vector(0); local currentT = appendage.getTimer().Get(); if(t12 && t12.isOnEvent(currentT) == true){ local group = parentObj.getVar("skill_missile").get_vector(0); local uniqueId = parentObj.getVar("skill_missile").get_vector(1); local totalDamage = appendage.getVar("custom").get_vector(6); if(!sqrChr) sqrChr = sq_getMyCharacter(); createSkillPassiveObj_nanjixie(sqrChr, parentObj, 63, 2, totalDamage, group, uniqueId, -15, 0, 70); createSkillPassiveObj_nanjixie(sqrChr, parentObj, 63, 2, totalDamage, group, uniqueId, 30, 0, 70); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/gunner/robot_by_kk/tempesterani/effectmissile1.ani",-25,1,71); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/gunner/robot_by_kk/tempesterani/effectmissile2.ani",-25,0,70); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/gunner/robot_by_kk/tempesterani/effectmissile1.ani",20,1,71); sq_AddDrawOnlyAniFromParent(parentObj,"monster/character/gunner/robot_by_kk/tempesterani/effectmissile2.ani",20,0,70); } local pAni = parentObj.getCurrentAnimation(); local currentT = sq_GetCurrentTime(pAni); if(currentT >= 900 && t12.isEnd()){ local coolt_02 = appendage.getVar("custom").get_vector(7); if(t_02 && t_02.getEventTerm() != coolt_02){ t_02.setEventTerm(coolt_02.tointeger()); } parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; case 2: local chr = sq_getMyCharacter(); if(isSameObject(sqrChr,chr)){ if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } } break; } break; } } function onStart_appendage_kak_tempester(appendage) { if (!appendage) return; appendage.getVar().setBool(0,true); appendage.getVar().setBool(1,true); appendage.getVar().setBool(2,true); appendage.getVar().setBool(3,true); local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); parentObj.sq_PlaySound("TEMPESTER_APPEAR"); } function proc_appendage_kk_tempester_buff(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); if(!parentObj || parentObj.getState() == STATE_DIE){ appendage.setValid(false); return; } } function onStart_appendage_kk_tempester_buff(appendage) { if (!appendage) return; } function onEnd_appendage_kk_tempester_buff(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(parentObj){ local activeObj = sq_GetCNRDObjectToActiveObject(parentObj); local normalAppendage = CNSquirrelAppendage.sq_GetAppendage(activeObj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_tempester.nut"); local totalDamage = normalAppendage.getVar("custom").get_vector(5); local totalDamage2 = normalAppendage.getVar("custom").get_vector(6); normalAppendage.getVar("custom").set_vector(5, totalDamage / 150 * 100); normalAppendage.getVar("custom").set_vector(6, totalDamage2 / 150 * 100); local t_01 = normalAppendage.getVar("skill_1").get_timer_vector(0); local t_02 = normalAppendage.getVar("skill_2").get_timer_vector(0); local bullet = t_01.getEventTerm(); local missile = t_02.getEventTerm(); print(bullet); print(missile); t_01.setEventTerm(bullet * 2); t_02.setEventTerm(missile * 2); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_ateam(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: local sizeRate = 0; local totalDamage = 0; switch(parentObj.getCollisionObjectIndex()){ case 77625: sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ATEAM, 6) * 2; totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ATEAM, 29, 4, 1.0) + 100; break; case 77626: sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ATEAM, 7) * 2; totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ATEAM, 29, 5, 1.0) + 100; break; case 77627: sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ATEAM, 8) * 2; totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ATEAM, 29, 6, 1.0) + 100; break; case 77628: sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ATEAM, 9) * 2; totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ATEAM, 29, 2, 1.0) + 100; break; case 77629: sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ATEAM, 10) * 2; totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ATEAM, 29, 3, 1.0) + 100; break; } createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 20, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_ateam(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); if(attackIndex == 1){ if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } } break; } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_rx60(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: if(parentObj.getVar().getBool(0) == true){ parentObj.getVar().setBool(0,false); local skill_level = sq_GetSkillLevel(sqrChr, SKILL_GUNNER_ROBOTRX60); local range = sqrChr.sq_GetLevelData(SKILL_GUNNER_ROBOTRX60, 4, skill_level); sq_BinaryStartWrite(); sq_BinaryWriteDword(SKILL_GUNNER_ROBOTRX60);//skillIndex sq_BinaryWriteDword(1);//subtype sq_BinaryWriteDword(range); sq_SendCreatePassiveObjectPacket(parentObj, NUM_BYKK_PASSIVEOBJECT , 0, 0, 0, 0, parentObj.getDirection()); } break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_rx60(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local skill_level = sq_GetSkillLevel(sqrChr, SKILL_GUNNER_ROBOTRX60); local valuetime = sqrChr.sq_GetLevelData(SKILL_GUNNER_ROBOTRX60, 3, skill_level); local useTime = appendage.getTimer().Get(); if(useTime >= valuetime){ local sizeRate = sq_GetIntData(sqrChr, SKILL_GUNNER_ROBOTRX60, 2); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, SKILL_GUNNER_ROBOTRX60, 29, 1, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 0: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } break; case 1: if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; } break; } } function onEnd_appendage_kak_rx60(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onStart_appendage_kak_rx60(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); parentObj.getVar().setBool(0,true); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_mechadrop1(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: if(parentObj.getVar().getBool(1) == true){ sqrChr.sq_SendSetHpPacket(sqrChr.getHp() + sqrChr.getHpMax() * 8 / 100, true, parentObj); } else{ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); } if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_mechadrop1(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } local valuetime = 10000; local useTime = appendage.getTimer().Get(); if(parentObj.getZPos() >= 300 && parentObj.getVar().getBool(10) == true){ parentObj.getVar("move").clear_vector(); parentObj.getVar("move").push_vector(parentObj.getXPos()); parentObj.getVar("move").push_vector(parentObj.getZPos()); parentObj.getVar("move").push_vector(200); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } if(useTime > 1000){ local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 0: break; case 1: if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; case 3: local pAni = parentObj.getCurrentAnimation();//得到ani local currentT = sq_GetCurrentTime(pAni);//当前时间 local fireT = pAni.getDelaySum(0, 5);//总时间 local srcX = parentObj.getVar("move").get_vector(0);//初始x坐标 local srcZ = parentObj.getVar("move").get_vector(1);//初始z坐标 local MoveX = parentObj.getVar("move").get_vector(2);//移动多少x距离 local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), vx);//根据方向运算当前数值 if(parentObj.isMovablePos(dstX, parentObj.getYPos())) sq_setCurrentAxisPos(parentObj, 0, dstX);//设置当前x坐标 else{ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(2,0); } sq_setCurrentAxisPos(parentObj, 2, vz);//设置当前z坐标 break; } break; } if(useTime >= valuetime){ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } } function onEnd_appendage_kak_mechadrop1(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onStart_appendage_kak_mechadrop1(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); parentObj.getVar().setBool(0,true); parentObj.getVar().setBool(10,true); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_mechadrop2(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: if(parentObj.getVar().getBool(1) == true){ sqrChr.sq_SendSetMpPacket(sqrChr.getMp() + sqrChr.getMpMax() * 8 / 100, true, parentObj); } else{ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); } if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_mechadrop2(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local valuetime = 10000; local useTime = appendage.getTimer().Get(); if(parentObj.getZPos() >= 300 && parentObj.getVar().getBool(10) == true){ parentObj.getVar("move").clear_vector(); parentObj.getVar("move").push_vector(parentObj.getXPos()); parentObj.getVar("move").push_vector(parentObj.getZPos()); parentObj.getVar("move").push_vector(200); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } if(useTime > 1000){ local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 0: break; case 1: if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; case 3: local pAni = parentObj.getCurrentAnimation();//得到ani local currentT = sq_GetCurrentTime(pAni);//当前时间 local fireT = pAni.getDelaySum(0, 5);//总时间 local srcX = parentObj.getVar("move").get_vector(0);//初始x坐标 local srcZ = parentObj.getVar("move").get_vector(1);//初始z坐标 local MoveX = parentObj.getVar("move").get_vector(2);//移动多少x距离 local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), vx);//根据方向运算当前数值 if(parentObj.isMovablePos(dstX, parentObj.getYPos())) sq_setCurrentAxisPos(parentObj, 0, dstX);//设置当前x坐标 else{ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(2,0); } sq_setCurrentAxisPos(parentObj, 2, vz);//设置当前z坐标 break; } break; } if(useTime >= valuetime){ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } } function onEnd_appendage_kak_mechadrop2(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onStart_appendage_kak_mechadrop2(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); parentObj.getVar().setBool(0,true); parentObj.getVar().setBool(10,true); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_mechadrop3(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_mechadrop3(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local valuetime = 10000; local useTime = appendage.getTimer().Get(); if(parentObj.getZPos() >= 300 && parentObj.getVar().getBool(10) == true){ parentObj.getVar("move").clear_vector(); parentObj.getVar("move").push_vector(parentObj.getXPos()); parentObj.getVar("move").push_vector(parentObj.getZPos()); parentObj.getVar("move").push_vector(200); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } if(useTime > 1000){ local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 0: break; case 1: if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; case 3: local pAni = parentObj.getCurrentAnimation();//得到ani local currentT = sq_GetCurrentTime(pAni);//当前时间 local fireT = pAni.getDelaySum(0, 5);//总时间 local srcX = parentObj.getVar("move").get_vector(0);//初始x坐标 local srcZ = parentObj.getVar("move").get_vector(1);//初始z坐标 local MoveX = parentObj.getVar("move").get_vector(2);//移动多少x距离 local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), vx);//根据方向运算当前数值 if(parentObj.isMovablePos(dstX, parentObj.getYPos())) sq_setCurrentAxisPos(parentObj, 0, dstX);//设置当前x坐标 else{ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(2,0); } sq_setCurrentAxisPos(parentObj, 2, vz);//设置当前z坐标 break; } break; } if(useTime >= valuetime){ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } } function onEnd_appendage_kak_mechadrop3(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onStart_appendage_kak_mechadrop3(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); parentObj.getVar().setBool(0,true); parentObj.getVar().setBool(10,true); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onSourceKeyFrameFlag_appendage_kak_mechadrop4(appendage,flagIndex) { if(!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return true; } switch(flagIndex){ case 1: local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 9, 1.0) + 100; createFireExplosion_nanjixie(sqrChr, parentObj, sizeRate, totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); break; case 11: local moveX = sqrChr.getVar("robotsexplosion").get_vector(0); local moveY = sqrChr.getVar("robotsexplosion").get_vector(1); sq_setCurrentAxisPos(parentObj, 0, moveX); sq_setCurrentAxisPos(parentObj, 1, moveY); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 5); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); break; case 12: if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 1, true, 30, 0, 1); parentObj.setValid(false); break; } return true; } function proc_appendage_kak_mechadrop4(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); if(!parentObj){ appendage.setValid(false); return; } if(!sqrChr || sqrChr.getState() == STATE_DIE) { appendage.setValid(false); return; } if(!sq_IsMyControlObject(sqrChr)) return; local valuetime = 10000; local useTime = appendage.getTimer().Get(); if(parentObj.getZPos() >= 300 && parentObj.getVar().getBool(10) == true){ parentObj.getVar("move").clear_vector(); parentObj.getVar("move").push_vector(parentObj.getXPos()); parentObj.getVar("move").push_vector(parentObj.getZPos()); parentObj.getVar("move").push_vector(200); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } switch(parentObj.getState()){ case STATE_STAND: if(sqrChr.getVar("holdandgo").getBool(0)){ CNSquirrelAppendage.sq_AppendAppendage(parentObj, sqrChr, SKILL_GUNNER_HOLDANDGO, false, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut", true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 1); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); return; } if(useTime > 1000){ local targetObj = sq_FindTarget(parentObj, -100, 900, 900, 900); if(targetObj){ local distanceX = sq_Abs(targetObj.getXPos() - parentObj.getXPos()); local distanceY = sq_Abs(targetObj.getYPos() - parentObj.getYPos()); local distanceZ = sq_Abs(targetObj.getZPos() - parentObj.getZPos()); if(distanceX <= 20 && distanceY <= 15 && distanceZ <= 50){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(parentObj, 8, pIntVec, STATE_PRIORITY_USER); } } } break; case STATE_ATTACK: local attackIndex = parentObj.getAttackIndex(); switch(attackIndex){ case 0: break; case 1: if(sqrChr.getVar("holdandgo").getBool(0) == false){ CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); parentObj.sendStateOnlyPacket(STATE_STAND); return; } break; case 3: local pAni = parentObj.getCurrentAnimation();//得到ani local currentT = sq_GetCurrentTime(pAni);//当前时间 local fireT = pAni.getDelaySum(0, 5);//总时间 local srcX = parentObj.getVar("move").get_vector(0);//初始x坐标 local srcZ = parentObj.getVar("move").get_vector(1);//初始z坐标 local MoveX = parentObj.getVar("move").get_vector(2);//移动多少x距离 local vx = sq_GetUniformVelocity(0, MoveX, currentT, fireT); local vz = sq_GetUniformVelocity(srcZ, 0, currentT, fireT); local dstX = sq_GetDistancePos(srcX, parentObj.getDirection(), vx);//根据方向运算当前数值 if(parentObj.isMovablePos(dstX, parentObj.getYPos())) sq_setCurrentAxisPos(parentObj, 0, dstX);//设置当前x坐标 else{ parentObj.getVar("move").set_vector(0,parentObj.getXPos()); parentObj.getVar("move").set_vector(2,0); } sq_setCurrentAxisPos(parentObj, 2, vz);//设置当前z坐标 break; } break; } if(useTime >= valuetime){ local sizeRate = sq_GetIntData(sqrChr, 59, 12); local totalDamage = sq_GetBonusRateWithPassive(sqrChr, 59, 29, 7, 1.0) + 100; createFireExplosion_nanjixie(sqrChr,parentObj,sizeRate,totalDamage, 0, false); if(CNSquirrelAppendage.sq_IsAppendAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", parentObj, 0, 1, 0, true, 30, 0, 1); parentObj.setValid(false); } } function onEnd_appendage_kak_mechadrop4(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); if(!parentObj) return; parentObj.sendDestroyPacket(true); } function onStart_appendage_kak_mechadrop4(appendage) { if (!appendage) return; local parentObj = sq_GetCNRDObjectToActiveObject(appendage.getParent()); local sqrChr = sq_GetCNRDObjectToSQRCharacter(appendage.getVar("sqrChr").get_obj_vector(0)); parentObj.getVar().setBool(0,true); parentObj.getVar().setBool(10,true); } function onStart_appendage_holdandgotorb_kk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); sq_SetCustomDamageType(parentObj, true, 2); } function onEnd_appendage_holdandgotorb_kk(appendage) { if (!appendage) return; local parentObj = appendage.getParent(); sq_SetCustomDamageType(parentObj, true, 0); // local pooledObj = sq_AddDrawOnlyAniFromParent(parentObj,"character/gunner/effect/animation/holdandgo/hold_go_play_normal.ani", 0, 0, 0); // sq_SetCurrentDirection(pooledObj, ENUM_DIRECTION_RIGHT); } function drawAppend_appendage_holdandgotorb_kk(appendage, isOver, x, y, isFlip) { if (!appendage){ return; } local parentObj = appendage.getParent(); if (!parentObj){ appendage.setValid(false); return; } local var = appendage.getVar(); local Ani = var.GetAnimationMap("exclamation", "character/gunner/effect/animation/holdandgo/hold_go_pause_normal.ani"); // if(Ani && isOver){ // sq_AnimationProc(Ani); // sq_drawCurrentFrame(Ani, x, y, isFlip); // } } //机械助手 function Gunner_HS1_BYKK(obj) { local chr = sq_getMyCharacter(); if (sq_GetSkillLevel(obj, SKILL_GUNNER_HS1) > 0 && isSameObject(obj,chr)){ if(obj.getVar("hs1_obj").get_obj_vector_size() < 2 && obj.getState() != STATE_DIE){ if(sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA) > 0){ sq_BinaryStartWrite(); sq_BinaryWriteDword(3);//type sq_BinaryWriteDword(1);//substate sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_HS1, 0, 60, -5, 90, obj.getDirection()); sq_BinaryStartWrite(); sq_BinaryWriteDword(4);//type sq_BinaryWriteDword(1);//substate sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_HS1, 0, -60, 5, 90, obj.getDirection()); } else{ sq_BinaryStartWrite(); sq_BinaryWriteDword(1);//type sq_BinaryWriteDword(1);//substate sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_HS1, 0, 60, -5, 90, obj.getDirection()); sq_BinaryStartWrite(); sq_BinaryWriteDword(2);//type sq_BinaryWriteDword(1);//substate sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_HS1, 0, -60, 5, 90, obj.getDirection()); } } if(obj.getVar("FGTObj").get_obj_vector_size() < 1 && obj.getState() != STATE_DIE && obj.getVar("fgt").getBool(0) == false && sq_GetSkillLevel(obj,68) > 0){ obj.getVar("fgt").setBool(0,true); sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_PASSIVEOBJECT3, 0, 0, 0, 0, obj.getDirection()); } else if(obj.getVar("FGTObj").get_obj_vector_size() > 0){ if(obj.getVar("FGTObj").get_obj_vector(0).getState() == STATE_DIE) obj.getVar("fgt").setBool(0,false); } return; } } //设置技能效果 function changeskilleffect_bykk(obj, skillIndex, reciveData) { local subtype = reciveData.readDword(); switch(subtype){ case 1: local id = reciveData.readDword(); local monster_obj = sq_GetCNRDObjectToActiveObject(sq_GetObject(obj, reciveData.readDword(), reciveData.readDword())); local chr = sq_getMyCharacter(); if(!isSameObject(obj,chr)){ //print("no same object"); // sq_SendCreatePassiveObjectPacket(chr, 30555, 0, 0, 0, 50, chr.getDirection()); monster_obj.setMapFollowParent(chr); monster_obj.setMapFollowType(1); } else{ //print("same object"); monster_obj.setMapFollowParent(obj); monster_obj.setMapFollowType(1); } //printp("id="+id.tostring()+"\n"); switch(id){ case 77620://77620 setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_rx78.nut", "RX78Obj", 27); break; case 77621://77620 setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ez8.nut", "EZ8Obj", 28); break; case 77622: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_exs.nut", "EXSObj", 29); break; case 77623: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_tempester.nut", "TEMPObj", 63); break; case 77624: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_sparrowboom.nut", "SPAObj", 83); break; case 77625: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ateam.nut", "AteamD1Obj", SKILL_GUNNER_ATEAM); break; case 77626: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ateam.nut", "AteamG1Obj", SKILL_GUNNER_ATEAM); break; case 77627: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ateam.nut", "AteamH1Obj", SKILL_GUNNER_ATEAM); break; case 77628: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ateam.nut", "AteamS1Obj", SKILL_GUNNER_ATEAM); break; case 77629: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ateam.nut", "AteamT1Obj", SKILL_GUNNER_ATEAM); break; case 77630: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_rx60.nut", "RX60Obj", SKILL_GUNNER_ROBOTRX60); break; case 77631: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_mechadrop1.nut", "MCDrop1Obj", 59); break; case 77632: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_mechadrop2.nut", "MCDrop1Obj", 59); break; case 77633: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_mechadrop3.nut", "MCDrop1Obj", 59); break; case 77634: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_mechadrop4.nut", "MCDrop2Obj", 59); break; case 77635: setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_ez8ex.nut", "EZ8exObj", 105); break; case 60002://77620 case 60003://77620 case 60061://77620 setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, "character/gunner/madeby_kak_mechanic/ap/ap_kk_oldrobot.nut", "OldRobotObj", 27); break; case 60019: local monsternum = obj.getVar("FGTObj").get_obj_vector_size(); if(monsternum > 0){ obj.getVar("FGTObj").push_obj_vector(monster_obj); } else{ obj.getVar("FGTObj").clear_obj_vector(); obj.getVar("FGTObj").push_obj_vector(monster_obj); } break; } break; } } function setMonsterAppendage_Nanjixie_byKK(obj, monster_obj, appendagepath, monstername, skill_index) { if(!obj) return; if(!monster_obj) return; if(appendagepath == null || monstername == null || skill_index == null) return; appendagepath = appendagepath.tostring(); monstername = monstername.tostring(); local monster_obj = sq_GetCNRDObjectToActiveObject(monster_obj); if(!CNSquirrelAppendage.sq_IsAppendAppendage(monster_obj, appendagepath)){ local AddAppendage = CNSquirrelAppendage.sq_AppendAppendage(monster_obj, monster_obj, skill_index, false, appendagepath, true); AddAppendage.getVar("sqrChr").clear_obj_vector(); AddAppendage.getVar("sqrChr").push_obj_vector(obj); setMonsterInfo_Nanjixie_byKK(obj, monster_obj, skill_index, AddAppendage); local monsternum = obj.getVar(monstername).get_obj_vector_size(); if(monsternum > 0){ obj.getVar(monstername).push_obj_vector(monster_obj); } else{ obj.getVar(monstername).clear_obj_vector(); obj.getVar(monstername).push_obj_vector(monster_obj); } } } //设置怪物信息 function setMonsterInfo_Nanjixie_byKK(obj, monster_obj, skill_index, appendage) { if(!obj) return; local monster_id = monster_obj.getCollisionObjectIndex(); print(monster_obj.getHpMax()) local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj); if(CNSquirrelAppendage.sq_IsAppendAppendage(sqrChr, "character/gunner/madeby_kak_mechanic/ap2/ap_robotics.nut")){ local skillLevel = sqrChr.sq_GetSkillLevel(46); local value1 = sq_GetLevelData(sqrChr, 46, 4, skillLevel); local movespeed = sq_GetLevelData(sqrChr, 46, 4, skillLevel); if(skill_index == 63) movespeed = movespeed / 4; local hpmax = sq_GetLevelData(sqrChr, 46, 1, skillLevel); local ap = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_MOVE_SPEED, true, (movespeed * 0.03).tofloat(), 0); local ap2 = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_HP_MAX, true, (hpmax).tofloat(), 0); if(ap) ap.sq_Append(monster_obj, monster_obj); if(ap2) ap2.sq_Append(monster_obj, monster_obj); // print(monster_obj.getHpMax()) } switch(monster_id){ case 77622: local skill_level = sq_GetSkillLevel(obj, skill_index); local resttime = obj.sq_GetIntData(skill_index, 2); local time = resttime + 1000; appendage.getVar("skill").clear_timer_vector(); appendage.getVar("skill").push_timer_vector(); local t_01 = appendage.getVar("skill").get_timer_vector(0); t_01.setParameter(time, -1); t_01.resetInstant(0); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); sq_AddSetStatePacketActiveObject(monster_obj, 8, pIntVec, STATE_PRIORITY_USER); break; case 77623: //local skill_level = sq_GetSkillLevel(obj, skill_index); local coolt_01 = 1000;//obj.sq_GetIntData(skill_index, 5).tofloat() / 100 * 1000; local coolt_02 = obj.sq_GetIntData(skill_index, 5).tofloat() / 100 * 2500; appendage.getVar("skill_1").clear_timer_vector(); appendage.getVar("skill_1").push_timer_vector(); local t_01 = appendage.getVar("skill_1").get_timer_vector(0); t_01.setParameter(coolt_01.tointeger(), -1); t_01.resetInstant(0); appendage.getVar("skill_2").clear_timer_vector(); appendage.getVar("skill_2").push_timer_vector(); local t_02 = appendage.getVar("skill_2").get_timer_vector(0); t_02.setParameter(coolt_02.tointeger(), -1); t_02.resetInstant(0); local skill_level = sq_GetSkillLevel(obj, skill_index); local valuetime = obj.sq_GetLevelData(skill_index, 5, skill_level); local hitnumber1 = sq_GetIntData(obj,skill_index,1); local hittime1 = sq_GetIntData(obj,skill_index,0); local hitnumber2 = sq_GetIntData(obj,skill_index,3); local hittime2 = sq_GetIntData(obj,skill_index,2); local totalDamage = sq_GetBonusRateWithPassive(obj, skill_index, skill_index, 1, 1.0) + 100; local totalDamage2 = sq_GetBonusRateWithPassive(obj, skill_index, skill_index, 2, 1.0) + 100; local coolt_02 = sq_GetIntData(obj,skill_index, 5).tofloat() / 100.0 * 2500; local sizeRate = sq_GetIntData(obj,skill_index,6); local totalDamage3 = sq_GetBonusRateWithPassive(obj, skill_index, skill_index, 4, 1.0) + 100; appendage.getVar("custom").clear_vector(); appendage.getVar("custom").push_vector(valuetime); appendage.getVar("custom").push_vector(hitnumber1); appendage.getVar("custom").push_vector(hittime1); appendage.getVar("custom").push_vector(hitnumber2); appendage.getVar("custom").push_vector(hittime2); appendage.getVar("custom").push_vector(totalDamage); appendage.getVar("custom").push_vector(totalDamage2); appendage.getVar("custom").push_vector(coolt_02.tointeger()); appendage.getVar("custom").push_vector(sizeRate); appendage.getVar("custom").push_vector(totalDamage3); break; case 77635: local skill_level = sq_GetSkillLevel(obj, 105); local valuetime = obj.sq_GetLevelData(105, 2, skill_level); //printp("valuetimetest= "+valuetime.tostring()+"\n"); monster_obj.getVar().clear_vector(); monster_obj.getVar().push_vector(valuetime); break; } } //人物复活 function reset_mechanic_bykk(obj) { obj.getVar("fgt").setBool(0,false); } //机械助手发送状态 function sendSkillPacket_hs1(obj,skillIndex) { if(!sq_IsMyControlObject(obj)) return; local hs1_obj01 = sq_GetCNRDObjectToCollisionObject(obj.getVar("hs1_obj").get_obj_vector(0)); local hs1_obj02 = sq_GetCNRDObjectToCollisionObject(obj.getVar("hs1_obj").get_obj_vector(1)); if(sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA) > 0){ if(hs1_obj01 && hs1_obj01.getState() < 27){ hs1_obj01.getVar("skillIndex").setInt(10, skillIndex); hs1_obj01.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(0,true); } else if(hs1_obj02 && hs1_obj02.getState() < 27){ hs1_obj02.getVar("skillIndex").setInt(10, skillIndex); hs1_obj02.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(1,true); } else if(hs1_obj01 && hs1_obj01.getState() == 27 && obj.getVar("hs1").getBool(0) == true && skillIndex != SKILL_GUNNER_VIRTUALRUSH){ hs1_obj01.getVar("skillIndex").setInt(10, skillIndex); hs1_obj01.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(0,false); } else if(hs1_obj02 && hs1_obj02.getState() == 27 && obj.getVar("hs1").getBool(1) == true && skillIndex != SKILL_GUNNER_VIRTUALRUSH){ hs1_obj02.getVar("skillIndex").setInt(10, skillIndex); hs1_obj02.addSetStatePacket(27, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(1,false); } else{ obj.sq_PlaySound("GN_SOPHIA_COOLTIME"); return false; } } else{ if(hs1_obj01 && hs1_obj01.getState() < 26){ hs1_obj01.getVar("skillIndex").setInt(10, skillIndex); hs1_obj01.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(0, true); } else if(hs1_obj02 && hs1_obj02.getState() < 26){ hs1_obj02.getVar("skillIndex").setInt(10, skillIndex); hs1_obj02.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(1, true); } else if(hs1_obj01 && hs1_obj01.getState() == 26 && obj.getVar("hs1").getBool(0) == true){ hs1_obj01.getVar("skillIndex").setInt(10, skillIndex); hs1_obj01.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(0, false); } else if(hs1_obj02 && hs1_obj02.getState() == 26 && obj.getVar("hs1").getBool(1) == true){ hs1_obj02.getVar("skillIndex").setInt(10, skillIndex); hs1_obj02.addSetStatePacket(26, null, STATE_PRIORITY_AUTO, false, ""); obj.getVar("hs1").setBool(1, false); } else{ return false; } } if(skillIndex != SKILL_GUNNER_VIRTUALRUSH){ if(obj.getState() == 14){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(14, STATE_PRIORITY_IGNORE_FORCE, true); } else if(obj.getState() == 0){ obj.sq_IntVectClear(); obj.sq_AddSetStatePacket(0, STATE_PRIORITY_IGNORE_FORCE, true); } } } //机器人发送状态 function sendrobotstate_byKK(obj,type) { switch(type){ case 1://直接引爆 local robot = ["RX78Obj","EZ8Obj","AteamD1Obj","AteamG1Obj","AteamH1Obj","AteamS1Obj","AteamT1Obj","RX60Obj","MCDrop1Obj","MCDrop2Obj","EZ8exObj"]; local skillIndex = [27,28,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ROBOTRX60,59,59,105]; local bonusrateIndex = [1,1,4,5,6,2,3,1,7,9,1]; local robotobj = ["SPARROWOBJ"]; local attackstate = [24]; for(local i = 0; i < robot.len(); i++){ local size = obj.getVar(robot[i]).get_obj_vector_size(); for(local ui = 0; ui < size; ui++){ local robot_obj = sq_GetCNRDObjectToActiveObject(obj.getVar(robot[i]).get_obj_vector(ui)); if(robot_obj){ local sizeRate = 100; //获取爆炸大小 switch(i){ case 0: sizeRate = sq_GetIntData(obj, 27, 1); break; case 1: sizeRate = obj.sq_GetLevelData(28, 3, sq_GetSkillLevel(obj, 28)); break; case 2: case 3: case 4: case 5: case 6: sizeRate = sq_GetIntData(obj, SKILL_GUNNER_ATEAM, 4 + i) * 2; break; case 7: sizeRate = sq_GetIntData(obj, SKILL_GUNNER_ROBOTRX60, 2); break; case 8: case 9: sizeRate = sq_GetIntData(obj, 59, 12); break; case 10: sizeRate = obj.sq_GetLevelData(105, 3, sq_GetSkillLevel(obj, 105)); break; } local totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex[i], 29, bonusrateIndex[i], 1.0) + 100; if(skillIndex[i] == 59 && sq_GetLevelData(obj, 59, 15, sq_GetSkillLevel(obj, 59)) > 0){ totalDamage = sq_GetBonusRateWithPassive(obj, 27, -1, 1, 1.0) + 100; print("KT-totaldamage = "+totalDamage); } //printp("totalDamage="+totalDamage.tostring()+"\n"); createFireExplosion_nanjixie(obj,robot_obj,sizeRate,totalDamage, 20, true); if(CNSquirrelAppendage.sq_IsAppendAppendage(robot_obj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut")){ local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(robot_obj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); dieHardAppendage.getVar().setBool(0,true); CNSquirrelAppendage.sq_RemoveAppendage(robot_obj, "character/gunner/madeby_kak_mechanic/ap2/ap_holdandgotorb.nut"); } switch(i){ case 0: case 2: case 3: case 4: case 5: case 6: case 7: sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/rx78_boom.ptl", robot_obj, 0, 1, 0, true, 30, 0, 1); break; case 1: sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/ez8_boom.ptl", robot_obj, 0, 1, 0, true, 30, 0, 1); break; case 10: sq_CreateParticle("monster/character/gunner/robot_by_kk/particle/ez8_boom.ptl", robot_obj, 0, 1, 0, true, 30, 0, 2); local number = obj.sq_GetLevelData(105, 6, sq_GetSkillLevel(obj, 105)); local level = obj.sq_GetLevelData(105, 0, sq_GetSkillLevel(obj, 105)); local destX_01 = robot_obj.getXPos() - obj.getXPos(); local destY_01 = robot_obj.getYPos() - obj.getYPos(); if(obj.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = obj.getXPos() - robot_obj.getXPos(); for(local i = 0; i < number; i++){ summonmonster_mechanic(obj,destX_01+sq_getRandom(-10,10),destY_01+sq_getRandom(-10,10),0,0,77620,20000,level,0); } break; } robot_obj.setValid(false); } } } for(local oi = 0; oi < robotobj.len(); oi++){ local size = obj.getVar(robotobj[oi]).get_obj_vector_size(); for(local yi = 0; yi < size; yi++){ local robot_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar(robotobj[oi]).get_obj_vector(yi)); if(robot_obj) robot_obj.addSetStatePacket(attackstate[oi], null, STATE_PRIORITY_AUTO, false, ""); } } break; case 2://指定引爆 local robot = ["RX78Obj","EZ8Obj","AteamD1Obj","AteamG1Obj","AteamH1Obj","AteamS1Obj","AteamT1Obj","RX60Obj","MCDrop1Obj","MCDrop2Obj","EZ8exObj"]; local attackIndex = [4,3,4,4,4,4,4,4,4,4,3]; local robotobj = ["SPARROWOBJ"]; local attackstate = [22]; for(local i = 0; i < robot.len(); i++){ local size = obj.getVar(robot[i]).get_obj_vector_size(); for(local ui = 0; ui < size; ui++){ local robot_obj = sq_GetCNRDObjectToActiveObject(obj.getVar(robot[i]).get_obj_vector(ui)); if(robot_obj){ local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, attackIndex[i]); sq_AddSetStatePacketActiveObject(robot_obj, 8, pIntVec, STATE_PRIORITY_USER); } } } for(local oi = 0; oi < robotobj.len(); oi++){ local size = obj.getVar(robotobj[oi]).get_obj_vector_size(); for(local yi = 0; yi < size; yi++){ local robot_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar(robotobj[oi]).get_obj_vector(yi)); if(robot_obj) robot_obj.addSetStatePacket(attackstate[oi], null, STATE_PRIORITY_AUTO, false, ""); } } local skill = sq_GetSkill(obj, 63); if(!skill.isSealFunction()){ local size = obj.getVar("TEMPObj").get_obj_vector_size(); local moveX = obj.getVar("robotsexplosion").get_vector(0); local moveY = obj.getVar("robotsexplosion").get_vector(1); for(local i = 0; i < size; i++){ local activeObj = sq_GetCNRDObjectToActiveObject(obj.getVar("TEMPObj").get_obj_vector(0)); if(activeObj){ activeObj.getVar("move").clear_vector(); activeObj.getVar("move").push_vector(moveX); activeObj.getVar("move").push_vector(moveY); activeObj.getVar("move").setBool(0,true); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 3); sq_AddSetStatePacketActiveObject(activeObj, 8, pIntVec, STATE_PRIORITY_USER); } } } local skill2 = sq_GetSkill(obj, 29); if(!skill2.isSealFunction()){ local size2 = obj.getVar("ExsS_OBJ").get_obj_vector_size(); for(local ui = 0; ui < size2; ui++){ local activeObj = sq_GetCNRDObjectToCollisionObject(obj.getVar("ExsS_OBJ").get_obj_vector(ui)); if(activeObj) activeObj.addSetStatePacket(24, null, STATE_PRIORITY_AUTO, false, ""); } } break; case 3://全息机械助手直接引爆 local effect_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB1").get_obj_vector(0)); effect_obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); local size = obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector_size(); for(local i = 0; i < size; i++){ local effect2_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector(i)); effect2_obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); } break; case 4://全息机械助手指定引爆 local aimPosX = obj.getVar("virtualrush").get_vector(0); local aimPosY = obj.getVar("virtualrush").get_vector(1); local effect_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB1").get_obj_vector(0)); sq_setCurrentAxisPos(effect_obj, 0, aimPosX); sq_setCurrentAxisPos(effect_obj, 1, aimPosY); effect_obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); local size = obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector_size(); for(local i = 0; i < size; i++){ local effect2_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector(i)); effect2_obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); } break; case 5://全息机械助手指定引爆 local aimPosX = obj.getVar("robotsexplosion").get_vector(0); local aimPosY = obj.getVar("robotsexplosion").get_vector(1); obj.getVar("virtualrush").clear_vector(); obj.getVar("virtualrush").push_vector(aimPosX); obj.getVar("virtualrush").push_vector(aimPosY); local effect_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB1").get_obj_vector(0)); sq_setCurrentAxisPos(effect_obj, 0, aimPosX); sq_setCurrentAxisPos(effect_obj, 1, aimPosY); effect_obj.addSetStatePacket(22, null, STATE_PRIORITY_AUTO, false, ""); local size = obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector_size(); for(local i = 0; i < size; i++){ local effect2_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector(i)); effect2_obj.addSetStatePacket(23, null, STATE_PRIORITY_AUTO, false, ""); } break; } } //融合爆炸为单HIT function createPointFireExplosion_byKK(obj,type) { if(!sq_IsMyControlObject(obj)) return; switch(type){ case 1: local aimPosX = obj.getVar("robotsexplosion").get_vector(0); local aimPosY = obj.getVar("robotsexplosion").get_vector(1); if(aimPosX > 0){ local robotsexplosion_level = sq_GetSkillLevel(obj, 93); local bonusrate = obj.sq_GetLevelData(93, 1, robotsexplosion_level).tofloat() / 100; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner//madeby_kak_mechanic/ap2/ap_robotics.nut")){ local skillLevel = obj.sq_GetSkillLevel(46); local value1 = sq_GetLevelData(obj, 46, 5, skillLevel); bonusrate = bonusrate + value1.tofloat() / 1000; } if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_lastfightingspirit.nut")){ local skillLevel = obj.sq_GetSkillLevel(68); local value1 = sq_GetLevelData(obj, 68, 6, skillLevel); bonusrate = bonusrate + value1.tofloat() / 1000; } if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_arkreactor.nut")){ local skillLevel = obj.sq_GetSkillLevel(127); local value1 = sq_GetLevelData(obj, 127, 0, skillLevel); bonusrate = bonusrate + value1.tofloat() / 1000; } //printp("bonusrate = "+bonusrate.tostring()+"\n"); local sizeRate = 100; local size_all = 0; local totalDamage_all = 0; local number = 0; local robot = ["RX78Obj","EZ8Obj","SPARROWOBJ","AteamD1Obj","AteamG1Obj","AteamH1Obj","AteamS1Obj","AteamT1Obj","RX60Obj","MCDrop1Obj","MCDrop2Obj","EZ8exObj"]; local skillIndex = [27,28,83,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ATEAM,SKILL_GUNNER_ROBOTRX60,59,59,105]; local damageIndex = [1,1,4,4,5,6,2,3,1,7,9,1]; for(local i = 0; i < robot.len(); i++){ local size = obj.getVar(robot[i]).get_obj_vector_size(); local totaldamage = sq_GetBonusRateWithPassive(obj, skillIndex[i], -1, damageIndex[i], bonusrate) + 100; if(skillIndex[i] == 59 && sq_GetLevelData(obj, 59, 15, sq_GetSkillLevel(obj, 59)) > 0){ totaldamage = sq_GetBonusRateWithPassive(obj, 27, -1, 1, bonusrate) + 100; // print("KT-totaldamage = "+totaldamage); } local sizeRate2 = 0; switch (i) { case 0: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 1); break; case 1: sizeRate2 = sq_GetLevelData(obj, skillIndex[i], 3, sq_GetSkillLevel(obj, skillIndex[i])); break; case 2: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 7); break; case 3: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 6); break; case 4: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 7); break; case 5: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 8); break; case 6: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 9); break; case 7: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 10); break; case 8: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 2); break; case 9: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 14); break; case 10: sizeRate2 = sq_GetIntData(obj, skillIndex[i], 14); break; case 11: sizeRate2 = sq_GetLevelData(obj, skillIndex[i], 3, sq_GetSkillLevel(obj, skillIndex[i])); break; } // print(sizeRate2 + " && " + sizeRate); if(size > 0 && sizeRate2 > sizeRate) sizeRate = sizeRate2; size_all = size + size_all; totalDamage_all = size * totaldamage + totalDamage_all; number = number + size; } local activeObj = sq_GetCNRDObjectToActiveObject(obj.getVar("TEMPObj").get_obj_vector(0)); local skill = sq_GetSkill(obj, 63); if(activeObj && !skill.isSealFunction()){ local totalDamage = sq_GetBonusRateWithPassive(obj, 63, 29, 4, 1.0) + 100; totalDamage_all = totalDamage_all + totalDamage; number = number + 1; } local skill = sq_GetSkill(obj, 29); if(!skill.isSealFunction()){ local size2 = obj.getVar("ExsS_OBJ").get_obj_vector_size(); local totalDamage = sq_GetBonusRateWithPassive(obj, 29, 29, 2, 1.0) + 100; totalDamage_all = totalDamage_all + totalDamage * size2; number = number + size2; //printp("size2="+size2.tostring()+"totalDamage_all="+totalDamage_all.tostring()+"\n"); } if(totalDamage_all > 0){ if(size_all > 10) sizeRate = sizeRate + 50 + (size_all - 10)* 1; else sizeRate = sizeRate + size_all * 5; // print(sizeRate); // print("totalDamage_all="+totalDamage_all.tostring()+"\n"); sq_BinaryStartWrite(); sq_BinaryWriteDword(200);//skillIndex sq_BinaryWriteDword(2);//subtype sq_BinaryWriteDword(sizeRate); sq_BinaryWriteDword(totalDamage_all); sq_SendCreatePassiveObjectPacketPos(obj, NUM_BYKK_PASSIVEOBJECT , 0, aimPosX, aimPosY + 1, 30); // if(number > 0){ // for(local i = 0; i < number - 1; i++){ // sq_BinaryStartWrite(); // sq_BinaryWriteDword(201);//skillIndex // sq_BinaryWriteDword(1);//subtype // sq_BinaryWriteDword(sizeRate); // sq_BinaryWriteDword(0); // sq_SendCreatePassiveObjectPacketPos(obj, NUM_BYKK_PASSIVEOBJECT , 0, aimPosX, aimPosY + 1, 30); // } // } } } break; case 2: case 3: local aimPosX = obj.getVar("virtualrush").get_vector(0); local aimPosY = obj.getVar("virtualrush").get_vector(1); if(type == 3){ aimPosX = obj.getVar("robotsexplosion").get_vector(0); aimPosY = obj.getVar("robotsexplosion").get_vector(1); } if(aimPosX > 0){ local sizeRate = 100, sizeRate2 = 0; local totalDamage_all = 0; local number = 0; local size = obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector_size(); for(local i = 0; i < size; i++){ local effect_obj = sq_GetCNRDObjectToCollisionObject(obj.getVar("VIRTUALRUSH_SUB2").get_obj_vector(i)); local skillIndex_sub1 = effect_obj.getVar("skillIndex_sub1").get_vector(0); local skillIndex_sub2 = effect_obj.getVar("skillIndex_sub2").get_vector(0); local totalDamage = 0; local robotsexplosion_level = sq_GetSkillLevel(obj, 93); local bonusrate = obj.sq_GetLevelData(93, 1, robotsexplosion_level).tofloat() / 100; if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_robotics.nut")){ local skillLevel = obj.sq_GetSkillLevel(46); local value1 = sq_GetLevelData(obj, 46, 5, skillLevel); bonusrate = bonusrate * (1000 + value1).tofloat() / 1000; } if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_lastfightingspirit.nut")){ local skillLevel = obj.sq_GetSkillLevel(68); local value1 = sq_GetLevelData(obj, 68, 6, skillLevel); bonusrate = bonusrate * (1000 + value1).tofloat() / 1000; } if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_arkreactor.nut")){ local skillLevel = obj.sq_GetSkillLevel(127); local value1 = sq_GetLevelData(obj, 127, 0, skillLevel); bonusrate = bonusrate * (1000 + value1).tofloat() / 1000; } if(sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA) > 0){ bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,SKILL_GUNNER_SOPHIA, 0, sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA))) / 1000; } switch(skillIndex_sub1){ case SKILL_GUNNER_ATEAM: switch(skillIndex_sub2){ case 1: totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex_sub1, 29, 4, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, skillIndex_sub1, 6); break; case 2: totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex_sub1, 29, 5, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, skillIndex_sub1, 7); break; case 3: totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex_sub1, 29, 6, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, skillIndex_sub1, 8); break; case 4: totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex_sub1, 29, 3, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, skillIndex_sub1, 9); break; case 5: totalDamage = sq_GetBonusRateWithPassive(obj, skillIndex_sub1, 29, 2, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, skillIndex_sub1, 10); break; } break; case SKILL_GUNNER_ROBOTRX60: totalDamage = sq_GetBonusRateWithPassive(obj, SKILL_GUNNER_ROBOTRX60, 29, 1, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, SKILL_GUNNER_ROBOTRX60, 2); break; case 27: totalDamage = sq_GetBonusRateWithPassive(obj, 27, 29, 1, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, 27, 1); break; case 28: totalDamage = sq_GetBonusRateWithPassive(obj, 28, 29, 1, bonusrate) + 100; sizeRate2 = sq_GetLevelData(obj, 28, 3, sq_GetSkillLevel(obj, 28)); break; case 59: switch(skillIndex_sub2){ case 1: case 2: totalDamage = sq_GetBonusRateWithPassive(obj, 59, 29, 7, bonusrate) + 100; if(sq_GetLevelData(obj, 59, 15, sq_GetSkillLevel(obj, 59)) > 0){ totaldamage = sq_GetBonusRateWithPassive(obj, 27, -1, 1, bonusrate) + 100; print("KT-totaldamage = "+totaldamage); } break; case 3: totalDamage = sq_GetBonusRateWithPassive(obj, 59, 29, 9, bonusrate) + 100; if(sq_GetLevelData(obj, 59, 15, sq_GetSkillLevel(obj, 59)) > 0){ totaldamage = sq_GetBonusRateWithPassive(obj, 27, -1, 1, bonusrate) + 100; print("KT-totaldamage = "+totaldamage); } break; } sizeRate2 = sq_GetIntData(obj, 59, 14); break; case 83: totalDamage = sq_GetBonusRateWithPassive(obj, 83, 29, 4, bonusrate) + 100; sizeRate2 = sq_GetIntData(obj, 83, 7); break; case 105: totalDamage = sq_GetBonusRateWithPassive(obj, 105, 29, 1, bonusrate) + 100; sizeRate2 = sq_GetLevelData(obj, 105, 3, sq_GetSkillLevel(obj, 105)); break; } // print(sizeRate2 + " && " + sizeRate); if(sizeRate2 > sizeRate) sizeRate = sizeRate2; totalDamage_all = totalDamage_all + totalDamage; number = number + 1; } if(size > 10) sizeRate = sizeRate + 50 + (size - 10)* 1; else sizeRate = sizeRate + size * 5; if(totalDamage_all > 0){ sq_BinaryStartWrite(); sq_BinaryWriteDword(200);//skillIndex sq_BinaryWriteDword(2);//subtype sq_BinaryWriteDword(sizeRate); sq_BinaryWriteDword(totalDamage_all); sq_SendCreatePassiveObjectPacketPos(obj, NUM_BYKK_PASSIVEOBJECT , 0, aimPosX, aimPosY + 1, 30); // if(number > 0){ // for(local i = 0; i < number - 1; i++){ // sq_BinaryStartWrite(); // sq_BinaryWriteDword(201);//skillIndex // sq_BinaryWriteDword(1);//subtype // sq_BinaryWriteDword(sizeRate); // sq_BinaryWriteDword(0); // sq_SendCreatePassiveObjectPacketPos(obj, NUM_BYKK_PASSIVEOBJECT , 0, aimPosX, aimPosY + 1, 30); // } // } } } break; } } //生成爆炸OBJ function createFireExplosion_nanjixie(obj,passiveobject,sizeRate,totalDamage,zpos,isTrue) { obj = sq_GetCNRDObjectToSQRCharacter(obj) local bonusrate = 1.0;// + obj.getVar("mechanics_bonusRate").get_vector(0).tofloat() / 1000.0; // print("createFireExplosion_nanjixie: bonusrate = "+bonusrate); if(isTrue == true){ local robotsexplosion_level = sq_GetSkillLevel(obj, 93); local bonus = obj.sq_GetLevelData(93, 1, robotsexplosion_level).tofloat() / 100; bonusrate = bonusrate * bonus; } // print("createFireExplosion_nanjixie: bonusrate2 = "+bonusrate); //printp("totalDamage="+totalDamage.tostring()+"\n"); totalDamage = (totalDamage.tofloat() * bonusrate).tointeger(); //printp("bonusrate="+bonusrate.tostring()+"totalDamage="+totalDamage.tostring()+"\n"); sq_BinaryStartWrite(); sq_BinaryWriteDword(200);//skillIndex sq_BinaryWriteDword(1);//subtype sq_BinaryWriteDword(sizeRate); sq_BinaryWriteDword(totalDamage); // printp("sizeRate="+sizeRate.tostring()+" ,totalDamage="+totalDamage.tostring()+"\n"); local destX_01 = 0; local destY_01 = 0; if(passiveobject.getDirection() == ENUM_DIRECTION_RIGHT) { destX_01 = passiveobject.getXPos() - obj.getXPos(); destY_01 = passiveobject.getYPos() - obj.getYPos(); } else if(passiveobject.getDirection() == ENUM_DIRECTION_LEFT) { destX_01 = obj.getXPos() - passiveobject.getXPos(); destY_01 = passiveobject.getYPos() - obj.getYPos(); } sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_PASSIVEOBJECT , 0, destX_01, destY_01, zpos - obj.getZPos(), passiveobject.getDirection()); } //生成技能OBJ function createSkillPassiveObj_nanjixie(obj,passiveobject,skillIndex,subtype,totalDamage,etc_num1,etc_num2,x,y,z) { obj = sq_GetCNRDObjectToSQRCharacter(obj); local bonusrate = 1.0;//obj.getVar("mechanics_bonusRate").get_vector(0).tofloat() / 1000.0; // if(bonusrate <= 1) bonusrate = 1.0; // print("bonusrate2 = "+bonusrate+" ,,totalDamage = "+totalDamage); // print("createSkillPassiveObj_nanjixie: bonusrate = "+bonusrate); totalDamage = (totalDamage.tofloat() * bonusrate).tointeger(); sq_BinaryStartWrite(); sq_BinaryWriteDword(skillIndex);//skillIndex sq_BinaryWriteDword(subtype);//subtype sq_BinaryWriteDword(totalDamage); if(etc_num1 > 0) sq_BinaryWriteDword(etc_num1); if(etc_num2 > 0) sq_BinaryWriteDword(etc_num2); local destX_01 = 0; local destY_01 = 0; if(!isSameObject(obj,passiveobject)){ if(passiveobject.getDirection() == ENUM_DIRECTION_RIGHT){ destX_01 = passiveobject.getXPos() - obj.getXPos(); destY_01 = passiveobject.getYPos() - obj.getYPos(); } else if(passiveobject.getDirection() == ENUM_DIRECTION_LEFT){ destX_01 = obj.getXPos() - passiveobject.getXPos(); destY_01 = passiveobject.getYPos() - obj.getYPos(); } } if(skillIndex == 63) z = z + 150; sq_SendCreatePassiveObjectPacket(obj, NUM_BYKK_PASSIVEOBJECT , 0, destX_01 + x, destY_01 + y, z - obj.getZPos(), passiveobject.getDirection()); } function summonmonster_mechanic(obj,x,y,z,substate,monsterId,summontime,level,team) { if(obj.getVar("Summonnum").size_vector() == 0) { obj.getVar("Summonnum").clear_vector(); obj.getVar("Summonnum").push_vector(0); } sq_BinaryStartWrite(); sq_BinaryWriteByte(substate); sq_BinaryWriteDword(monsterId); sq_BinaryWriteWord(team); sq_BinaryWriteWord(level); sq_BinaryWriteWord(obj.getVar("Summonnum").get_vector(0)); sq_BinaryWriteDword(0); sq_BinaryWriteDword(summontime); sq_BinaryWriteWord(1); sq_BinaryWriteWord(1); sq_BinaryWriteWord(1); sq_SendCreatePassiveObjectPacket(obj, 48024, 0, x, y, z, obj.getDirection()); obj.getVar("Summonnum").set_vector(0,obj.getVar("Summonnum").get_vector(0) + 1); } function mechanic_kkmade(obj) { local bonusRate = 1000; if(sq_GetSkillLevel(obj, SKILL_GUNNER_ARKREACTOR) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,SKILL_GUNNER_ARKREACTOR, 0, sq_GetSkillLevel(obj, SKILL_GUNNER_ARKREACTOR))) / 1000; print("bonusRate1 = "+bonusRate); if(sq_GetSkillLevel(obj, SKILL_GUNNER_LASTFIGHTINGSPIRIT) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,SKILL_GUNNER_LASTFIGHTINGSPIRIT, 6, sq_GetSkillLevel(obj, SKILL_GUNNER_LASTFIGHTINGSPIRIT))) / 1000; print("bonusRate2 = "+bonusRate); if(sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA) > 0) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj,SKILL_GUNNER_SOPHIA, 0, sq_GetSkillLevel(obj, SKILL_GUNNER_SOPHIA))) / 1000; print("bonusRate3 = "+bonusRate); if(CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/gunner/madeby_kak_mechanic/ap2/ap_robotics.nut")) bonusRate = bonusRate * (1000 + sq_GetLevelData(obj, SKILL_GUNNER_ROBOTICS, 5, sq_GetSkillLevel(obj, SKILL_GUNNER_ROBOTICS))) / 1000; print("bonusRate4 = "+bonusRate); obj.getVar("setSkillBonusRate").setInt(0, bonusRate.tointeger()); // obj.getVar("mechanics_bonusRate").clear_vector(); // obj.getVar("mechanics_bonusRate").push_vector(bonusRate); // print("bonusRate = "+bonusRate); } function startSkillCoolTime_gunner_bykk(obj, skillIndex, skillLevel, currentCoolTime) { switch(skillIndex){ case SKILL_GUNNER_G1: case SKILL_GUNNER_G2: case SKILL_GUNNER_G3: local newCoolTime = sq_GetIntData(obj, SKILL_GUNNER_G1, 3); return newCoolTime; break; } if (isAtSOWalkerOnBody(obj)){ switch (skillIndex){ case SKILL_AIMSHOOT: case SKILL_BURSTBOMB: case SKILL_NEODYMIUMFUSEE: case SKILL_TRIPLEGUNSHOT: case SKILL_MCPICE: case SKILL_DIRECTFEEDBACK: local reduceCoolTime = obj.sq_GetIntData(SKILL_AT_SOWALKER, 46); reduceCoolTime = currentCoolTime * (reduceCoolTime.tofloat() / 100.0); newCoolTime = currentCoolTime - reduceCoolTime; break; } } return currentCoolTime; } function createOnlyDrawObject_mechanic_bykk(obj,aniPath,isTrue,direction,x,y,z,drawlayer) { local ani = sq_CreateAnimation("",aniPath);//创建ani local pooledObj = sq_CreatePooledObject(ani,isTrue);//创建绘画对象 参数2:应该是ani结束时true 就销毁反之false不销毁 sq_SetCurrentDirection(pooledObj, direction);//设置方向 pooledObj.setCurrentPos(x,y,z);//设置pos pooledObj = sq_SetEnumDrawLayer(pooledObj, drawlayer);//设置图层 sq_AddObject(obj, pooledObj, OBJECTTYPE_DRAWONLY, false);//增加对象 return pooledObj; } function setCustomData_po_hs1_bykk(obj, receiveData) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local hs1_number = sqrChr.getVar("hs1_obj").get_obj_vector_size(); if(hs1_number > 0) sqrChr.getVar("hs1_obj").push_obj_vector(obj); else{ sqrChr.getVar("hs1_obj").clear_obj_vector(); sqrChr.getVar("hs1_obj").push_obj_vector(obj); } print("test"); obj.setMapFollowParent(sqrChr); obj.setMapFollowType(1); local type = receiveData.readDword(); local substate = receiveData.readDword(); obj.getVar("type").setInt(0, type); obj.getVar("substate").setInt(0, substate); switch(type){ case 3: case 4: if(sq_getRandom(0,100) > 50) obj.sq_PlaySound("GN_SOPHIA_ENTER_01"); else obj.sq_PlaySound("GN_SOPHIA_ENTER_02"); case 1: case 2: obj.addSetStatePacket(20, null, STATE_PRIORITY_AUTO, false, ""); break; } } function setState_po_hs1_bykk(obj, state, datas) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local type = obj.getVar("type").getInt(0); local substate = obj.getVar("substate").getInt(0); obj.getVar("state").setInt(0,state);//把state存入数组 local aniPath = "passiveobject/mechanic_bykk/animation/hs1/"; local aniSet = ["hs-1_body02_1.ani","hs-1_body02_2.ani","hs-1_body02_3.ani","hs-1_body02_4.ani","hs-1_body02_5.ani","hs-1_body02_6.ani","hs-1_body02_7.ani"]; if(type > 2){ aniPath = "passiveobject/mechanic_bykk/animation/hs1/lv95passive/"; aniSet = ["hs-1_3rd_01_stand_body.ani","hs-1_3rd_02_sad_body.ani","hs-1_3rd_04_happy_body.ani","hs-1_3rd_06_message_body.ani","hs-1_3rd_07_voice_body.ani","hs-1_3rd_08_hologram_body.ani","hs-1_3rd_03_twinkle_body.ani","hs-1_3rd_05_danger_body.ani"]; } local ani = sq_CreateAnimation("", aniPath + aniSet[state - 20]); obj.setCurrentAnimation(ani); local setState = 26; if(type > 2) setState = 27; if(state < setState){ if(!obj.isExistTimeEvent(10)) obj.setTimeEvent(10, 15, -1, true); } else{ obj.removeAllTimeEvent(); obj.getVar("move").setInt(10, sq_GetXPos(obj)); obj.getVar("move").setInt(11, sq_GetYPos(obj)); obj.getVar("move").setInt(12, sq_GetZPos(obj)); obj.getVar("move").setInt(13, sq_GetDistancePos(sq_GetXPos(sqrChr), sqrChr.getDirection(), 80)); obj.getVar("move").setInt(14, sq_GetYPos(sqrChr)); local moveZ = sq_GetZPos(sqrChr) + 170; local skillIndex = obj.getVar("skillIndex").getInt(10) if(skillIndex == 63) moveZ = moveZ + 170; else if(skillIndex == SKILL_GUNNER_ATEAM) moveZ = moveZ + 195; else if(skillIndex == SKILL_GUNNER_VIRTUALRUSH) moveZ = moveZ + 105; obj.getVar("move").setInt(15, moveZ); obj.setTimeEvent(20, 5, 30, true); } } function onEndCurrentAni_po_hs1_bykk(obj) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local type = obj.getVar("type").getInt(0); local substate = obj.getVar("substate").getInt(0); local state = obj.getVar("state").getInt(0); switch(type){ case 1: case 2: local emo_num = sq_getRandom(20,25).tointeger(); obj.addSetStatePacket(emo_num, null, STATE_PRIORITY_AUTO, false, ""); break; case 3: case 4: local emo_num = sq_getRandom(20,26).tointeger(); obj.addSetStatePacket(emo_num, null, STATE_PRIORITY_AUTO, false, ""); break; } } function onAttack_po_hs1_bykk(obj, damager, boundingBox, isStuck) { if(!obj) return; } function procAppend_po_hs1_bykk(obj) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); if(!sqrChr || sqrChr.getState() == STATE_DIE){ if(type == 4) obj.sq_PlaySound("GN_SOPHIA_DIE"); sq_SendDestroyPacketPassiveObject(obj); } local chr = sq_GetMyMasterCharacter(); if(!isSameObject(sqrChr, chr)){ sq_SendDestroyPacketPassiveObject(obj); } } function onKeyFrameFlag_po_hs1_bykk(obj, flagIndex) { if(!obj) return; } function onTimeEvent_po_hs1_bykk(obj, timeEventIndex, timeEventCount) { if(!obj) return; local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj.getTopCharacter()); local type = obj.getVar("type").getInt(0); local substate = obj.getVar("substate").getInt(0); local soundEffect = ["HS_1_01","HS_1_02","HS_1_03","HS_1_04","HS_1_CAST"]; switch(timeEventIndex){ case 1: local skillIndex = obj.getVar("skillIndex").getInt(10); obj.getVar("skillIndex").setInt(10, 0); local pooledObj01,pooledObj02,pooledObj03,pooledObj04,pooledObj05,pooledObj06; local destX_01 = 0; local destY_01 = obj.getYPos() - sqrChr.getYPos(); if(sqrChr.getDirection() == ENUM_DIRECTION_RIGHT) destX_01 = obj.getXPos() - sqrChr.getXPos(); else if(sqrChr.getDirection() == ENUM_DIRECTION_LEFT) destX_01 = sqrChr.getXPos() - obj.getXPos(); local skill_level = sq_GetSkillLevel(sqrChr, skillIndex); local level = sqrChr.sq_GetLevelData(skillIndex, 0, skill_level); switch(skillIndex){ case 63: pooledObj01 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/callrobot_01.ani", 0, -1, 150 - obj.getZPos()); break; case SKILL_GUNNER_ATEAM: pooledObj01 = pooledObj01 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/a-team/callrobot_01.ani", 0, -1, 0 - obj.getZPos()); break; case SKILL_GUNNER_VIRTUALRUSH: obj.sq_PlaySound("GN_SOPHIA_VIRTUALRUSH"); createSkillPassiveObj_nanjixie(sqrChr,obj,SKILL_GUNNER_VIRTUALRUSH,1,0,0,0,0,-1,0); break; default: pooledObj01 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/callrobot_01.ani", 0, -1, -20 - obj.getZPos()); break; } switch(skillIndex){ case 27: local skill_level = sq_GetSkillLevel(sqrChr, 42); if(skill_level > 0){ pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/rx78_02.ani", 0, -10, 0 - obj.getZPos()); pooledObj03 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/rx78_02.ani", 0, 20, 0 - obj.getZPos()); } else pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/rx78_02.ani", 0, -1, 0 - obj.getZPos()); local skill_level02 = sq_GetSkillLevel(sqrChr, 42); if(skill_level02 > 0){ summonmonster_mechanic(sqrChr,destX_01, destY_01 - 10, 0, 0, 77620, 600000, level, 0);//60002 summonmonster_mechanic(sqrChr,destX_01, destY_01 + 20, 0, 0, 77620, 600000, level, 0); } else summonmonster_mechanic(sqrChr,destX_01,destY_01,0,0,77620,600000,level,0); sqrChr.sq_PlaySound("GN_LADNRUNNER"); break; case 28: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/rx78_02.ani", 0, -1, 0 - obj.getZPos()); summonmonster_mechanic(sqrChr,destX_01,destY_01,0,0,77621,60000,level,0);//60003 if(sq_GetLevelData(sqrChr, 28, 6, skill_level) > 0) summonmonster_mechanic(sqrChr,destX_01 + 5,destY_01 - 5,0,0,77621,60000,level,0); sqrChr.sq_PlaySound("R_GN_COUNTDOWN"); break; case 29: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/exs_05.ani", 0, -1, 0 - obj.getZPos()); local bonusrate = sq_GetBonusRateWithPassive(sqrChr, 29, 29, 1, 1.0) + 100; local lifetime = sqrChr.sq_GetLevelData(29, 3, skill_level); local resttime = sqrChr.sq_GetIntData(skillIndex, 2); local bullet_number = sqrChr.sq_GetIntData(skillIndex, 1); sq_BinaryStartWrite(); sq_BinaryWriteDword(29);//skillIndex sq_BinaryWriteDword(3);//subtype sq_BinaryWriteDword(bonusrate); sq_BinaryWriteDword(lifetime); sq_BinaryWriteDword(resttime); sq_BinaryWriteDword(bullet_number); sq_SendCreatePassiveObjectPacket(sqrChr, NUM_BYKK_PASSIVEOBJECT , 0, destX_01, destY_01, 0, obj.getDirection()); sqrChr.sq_PlaySound("GN_VIPER"); break; case 63: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/tempester_02.ani", 0, -1, 150 - obj.getZPos()); local number = sqrChr.sq_GetLevelData(skillIndex, 6, skill_level); local time = sqrChr.sq_GetLevelData(skillIndex, 5, skill_level); for(local i = 0; i < number; i++){ summonmonster_mechanic(sqrChr,destX_01,destY_01,150,0,77623,time,level,0);//GN_TRMPESTER 60018 } sqrChr.sq_PlaySound("GN_TRMPESTER"); break; case 83: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/sparrowfactory_02.ani", 0, -1, 0 - obj.getZPos()); sq_BinaryStartWrite(); sq_BinaryWriteDword(83); sq_BinaryWriteDword(1); sq_SendCreatePassiveObjectPacket(sqrChr, NUM_BYKK_PASSIVEOBJECT , 0, destX_01, destY_01 - 1, 0, sqrChr.getDirection()); sqrChr.sq_PlaySound("GN_SPARROW_FACTORY"); break; case 105: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/ez8ex_01.ani", 0, -1, 0 - obj.getZPos()); summonmonster_mechanic(sqrChr,destX_01,destY_01,0,0,77635,20000,level,0); sqrChr.sq_PlaySound("R_GN_COUNTDOWN"); break; case 106: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/exs_05.ani", 0, -1, 0 - obj.getZPos()); local bonusrate = sq_GetBonusRateWithPassive(sqrChr, skillIndex, 29, 1, 1.0) + 100; local bonusrate2 = sq_GetBonusRateWithPassive(sqrChr, skillIndex, 29, 4, 1.0) + 100; local lifetime = sqrChr.sq_GetLevelData(skillIndex, 3, skill_level); local resttime = sqrChr.sq_GetIntData(skillIndex, 2); local bullet_number = sqrChr.sq_GetIntData(skillIndex, 1); sq_BinaryStartWrite(); sq_BinaryWriteDword(29);//skillIndex sq_BinaryWriteDword(5);//subtype sq_BinaryWriteDword(bonusrate); sq_BinaryWriteDword(lifetime); sq_BinaryWriteDword(resttime); sq_BinaryWriteDword(bullet_number); sq_BinaryWriteDword(bonusrate2); if(sq_GetLevelData(sqrChr, skillIndex, 6, skill_level) > 0){ sq_SendCreatePassiveObjectPacket(sqrChr, NUM_BYKK_PASSIVEOBJECT , 0, destX_01+sq_getRandom(-10, 10), destY_01-10, 0, obj.getDirection()); sq_SendCreatePassiveObjectPacket(sqrChr, NUM_BYKK_PASSIVEOBJECT , 0, destX_01, destY_01+10, 0, obj.getDirection()); print("te11111st") } else sq_SendCreatePassiveObjectPacket(sqrChr, NUM_BYKK_PASSIVEOBJECT , 0, destX_01, destY_01, 0, obj.getDirection()); sqrChr.sq_PlaySound("GN_VIPER"); break; case SKILL_GUNNER_ROBOTRX60: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"passiveobject/mechanic_bykk/animation/hs1/rx-60_02.ani", 0, -1, 0 - obj.getZPos()); summonmonster_mechanic(sqrChr,destX_01,destY_01,0,0,77630,600000,level,0); break; case SKILL_GUNNER_ATEAM: pooledObj02 = sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/virtualrush/teleport/teleportd1end_00.ani", 0, -25, 0 - obj.getZPos()); pooledObj03 = sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/virtualrush/teleport/teleportg1end_00.ani", 0, 25, 0 - obj.getZPos()); pooledObj04 = sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/virtualrush/teleport/teleporth1end_00.ani", 60, -1, 0 - obj.getZPos()); pooledObj05 = sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/virtualrush/teleport/teleports1end_00.ani", -50, -50, 0 - obj.getZPos()); pooledObj06 = sq_AddDrawOnlyAniFromParent(obj,"character/gunner/effect/animation/virtualrush/teleport/teleportt1end_00.ani", -50, 50, 0 - obj.getZPos()); summonmonster_mechanic(sqrChr,destX_01, destY_01 - 25, 0, 0, 77625, 600000, level, 0); summonmonster_mechanic(sqrChr,destX_01, destY_01 + 25, 0, 0, 77626, 600000, level, 0); summonmonster_mechanic(sqrChr,destX_01 + 60, destY_01, 0, 0, 77627, 600000, level, 0); summonmonster_mechanic(sqrChr,destX_01 - 50, destY_01 - 50, 0, 0, 77628, 600000, level, 0); summonmonster_mechanic(sqrChr,destX_01 - 50, destY_01 + 50, 0, 0, 77629, 600000, level, 0); break; } if(skillIndex != SKILL_GUNNER_VIRTUALRUSH) obj.sq_PlaySound(soundEffect[sq_getRandom(0,4).tointeger()]); local pooledObjSum = [pooledObj01,pooledObj02,pooledObj03,pooledObj04,pooledObj05,pooledObj06]; for(local i = 0; i < pooledObjSum.len(); i++){ if(pooledObjSum[i] && pooledObjSum[i].isObjectType(OBJECTTYPE_DRAWONLY)){ local pAni = pooledObjSum[i].getCurrentAnimation(); pAni.setSpeedRate(200.0); print("test"); } } if(skillIndex != SKILL_GUNNER_VIRTUALRUSH) obj.setTimeEvent(12,300,1,false); else obj.setTimeEvent(12,11600,1,false); break; case 3: local anipath = ["character/gunner/effect/animation/virtualrush/hologramloopfront_00.ani","character/gunner/effect/animation/virtualrush/hologramloopbottom_00.ani","character/gunner/effect/animation/virtualrush/hologramloopback_00.ani"]; for(local i = 0; i < 3; i++){ local pooledObj = CreateAni_HS1_bykk(obj, anipath[i], ENUM_DRAWLAYER_NORMAL, obj.getXPos(), obj.getYPos() - 1, 0, true); obj.getVar("Face").push_obj_vector(pooledObj); } break; case 10://判斷距離 local base_X = 55,base_Y = -10; if(type == 2 || type == 4){base_X = -55,base_Y = 10;} local disX = sq_Abs(sq_GetXPos(obj) - sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),base_X)); local disY = sq_Abs(sq_GetYPos(obj) - sq_GetYPos(sqrChr) - base_Y); local disZ = sq_Abs(sq_GetZPos(obj) - sq_GetZPos(sqrChr) - 90); local direction = sqrChr.getDirection(); if(obj.getDirection() != direction) obj.setDirection(direction); if(disX > 10){ local baseM = 30; local moveX = disX / baseM + 2; if(sq_GetXPos(obj) > sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),base_X)) sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) - moveX); else sq_setCurrentAxisPos(obj, 0, sq_GetXPos(obj) + moveX); } if(disY > 10){ local baseM = 30; local moveY = disY / baseM + 1; if(sq_GetYPos(obj) > sq_GetYPos(sqrChr) + base_Y) sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) - moveY); else sq_setCurrentAxisPos(obj, 1, sq_GetYPos(obj) + moveY); } if(disZ > 5){ local baseM = 30; local moveZ = disZ / baseM + 1; if(sq_GetZPos(obj) - 90 > sq_GetZPos(sqrChr)) sq_setCurrentAxisPos(obj, 2, sq_GetZPos(obj) - moveZ); else sq_setCurrentAxisPos(obj, 2, sq_GetZPos(obj) + moveZ); } if(disX <= 10 && disY <= 10 && disZ <= 5){ obj.stopTimeEvent(10); obj.setTimeEvent(11,300,-1,false); } break; case 11://移動 local base_X = 55,base_Y = -10; if(type == 2 || type == 4){base_X = -55,base_Y = 10;} local disX = sq_Abs(sq_GetXPos(obj) - sq_GetDistancePos(sq_GetXPos(sqrChr),sqrChr.getDirection(),base_X)); local disY = sq_Abs(sq_GetYPos(obj) - sq_GetYPos(sqrChr) - base_Y); local disZ = sq_Abs(sq_GetZPos(obj) - sq_GetZPos(sqrChr) - 30); if(disX > 10 || disY > 10 || disZ > 5){ obj.stopTimeEvent(11); obj.setTimeEvent(10,15,-1,false); } break; case 12: if(type > 2) obj.addSetStatePacket(sq_getRandom(20,26), null, STATE_PRIORITY_AUTO, false, ""); obj.setTimeEvent(10,15,-1,false); break; case 20: local vx = sq_GetUniformVelocity(obj.getVar("move").getInt(10), obj.getVar("move").getInt(13), timeEventCount, 30); local vy = sq_GetUniformVelocity(obj.getVar("move").getInt(11), obj.getVar("move").getInt(14), timeEventCount, 30); local vz = sq_GetUniformVelocity(obj.getVar("move").getInt(12), obj.getVar("move").getInt(15), timeEventCount, 30); sq_setCurrentAxisPos(obj, 0, vx); sq_setCurrentAxisPos(obj, 1, vy); sq_setCurrentAxisPos(obj, 2, vz); if(timeEventCount >= 30) obj.setTimeEvent(1,1000,1,true); break; } } function RemoveAllAni_HS1_bykk(obj,Var) { if(!Var){ Var = "aniobj"; } local sq_var = obj.getVar(Var); local size = sq_var.get_obj_vector_size(); for(local i = 0; i < size; i++){ local pObj = sq_var.get_obj_vector(i); if(pObj) pObj.setValid(false); } obj.getVar(Var).clear_obj_vector(); } function CreateAni_HS1_bykk(obj,AniRoute,DrawLayer,XPos,YPos,ZPos,IsMove) { local anipath = sq_CreateAnimation("", AniRoute); local pooledobj = sq_CreatePooledObject(anipath, true); pooledobj = sq_SetEnumDrawLayer(pooledobj, DrawLayer); sq_SetCurrentDirection(pooledobj, obj.getDirection()); pooledobj.setCurrentPos(XPos, YPos, ZPos); if(IsMove){ sq_moveWithParent(obj, pooledobj); } sq_AddObject(obj, pooledobj, OBJECTTYPE_DRAWONLY, false); return pooledobj; }