function createBlackCrackPaticle(obj, x, y, z) { if(!obj) return; local particleCreater = obj.getVar().GetparticleCreaterMap("CrackBlackPtl", "PassiveObject/Character/Mage/Particle/ATDarknessMantleCrack.ptl", obj); particleCreater.Restart(0); particleCreater.SetPos(x, y, z); sq_AddParticleObject(obj, particleCreater); } function createCrackPiece(obj, index, x, y, z) { if(!obj) return null; local pooledObj = null; local cx = 0; local cy = 0; local cz = 0; //obj.getVar("crackpos").push_vector(0); //obj.getVar("crackpos").push_vector(0); //obj.getVar("crackpos").push_vector(0); //obj.getVar("crackpos").push_vector(0); //obj.getVar("crackpos").push_vector(0); //obj.getVar("crackpos").push_vector(0); if(index == 0) { //pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge.ani", false, x, y, z); cx = x - 30; cy = y + 2; cz = z + 174; pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz); } else if(index == 1) { //pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_1.ani", false, x, y, z); cx = x + 45; cy = y + 1; cz = z + 118; pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz); } else if(index == 2) { //pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_2.ani", false, x, y, z); cx = x + 8; cy = y + 1; cz = z + 50; pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz); } local vectorIndex = index * 2; obj.getVar("crackpos").set_vector(vectorIndex + 0, cx); obj.getVar("crackpos").set_vector(vectorIndex + 1, cz); return pooledObj; } function createDarkBall(obj, x, y, z) { local pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/darkball/09_darkball_0.ani", false, x, y, z); return pooledObj; } function createFrontFirstDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/05_aura_front_normal_1.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createBackFirstDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/01_aura_back_normal_1.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createFrontFirstSDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/05_aura_front_normal_2.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createBackFirstSDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/01_aura_back_normal_2.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createFrontLoopDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/05_aura_front_normal_1.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createBackLoopDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/01_aura_back_normal_1.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createFrontLoopSDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/05_aura_front_normal_2.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function createBackLoopSDarknessArea(obj, x, y, z, widthRate, heightRate) { local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/01_aura_back_normal_2.ani", false, widthRate, heightRate, x, y, z); return pooledObj; } function destroyCrackObject(obj) { if(!obj) return; local objListSize = obj.getVar("crack").get_obj_vector_size(); print(" crack objListSize:" + objListSize); for(local i =0;i= 1) { local expVectorIndex = i - 1; if(!obj.getVar("crackexp").get_vector(expVectorIndex)) { sq_SetMyShake(obj, 2, 100); local ox = sq_GetXPos(obj); local oy = y + 1; local oz = sq_GetZPos(obj); local crackPooledObj = null; if(expVectorIndex == 0) crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge.ani", false, ox, oy, oz); else if(expVectorIndex == 1) crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_1.ani", false, ox, oy, oz); else if(expVectorIndex == 2) crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_2.ani", false, ox, oy, oz); obj.getVar("crack").push_obj_vector(crackPooledObj); local vectorIndex = (expVectorIndex) * 2; // local cx = obj.getVar("crackpos").get_vector(vectorIndex + 0); local cz = obj.getVar("crackpos").get_vector(vectorIndex + 1); // local particleCreater = obj.getVar().GetparticleCreaterMap("ATDarknessMantlePtl", "PassiveObject/Character/Mage/Particle/Appear.ptl", obj); // particleCreater.Restart(0); particleCreater.SetPos(cx, y + 5, cz); sq_AddParticleObject(obj, particleCreater); // createBlackCrackPaticle(obj, cx, y + 4, cz); // obj.getVar("crackexp").set_vector(expVectorIndex, 1); } } if(frmIndex >= 1 && frmIndex < 4) { vib = true; } } local cx = obj.getVar("darkcircle").get_vector(0); if(vib) { if(x <= cx) { sq_setCurrentAxisPos(circle_obj, 0, cx + 2); setPosXCrackObject(obj, cx + 2); } else { sq_setCurrentAxisPos(circle_obj, 0, cx - 2); setPosXCrackObject(obj, cx - 2); } } else { if(x != cx) { sq_setCurrentAxisPos(circle_obj, 0, cx); setPosXCrackObject(obj, cx); } } } function setCustomData_po_ATDarknessMantle(obj, reciveData) { if(!obj) return; local suckVel = reciveData.readDword(); // 0. 庄横渡晦朝 ? // 0.匐擎晦遴 彰嫔 (<-100%->) 1.裔?奢问溘(%) 2.菩?溯涟 3.菩?虽楼溯涟 local darkCircleRate = reciveData.readDword(); // 横菸怃赝 彰嫔 (100%) local expAtkRate = reciveData.readDword(); // 1.裔?奢问溘(%) local slowLevel = reciveData.readDword(); // 菩? 溯涟 local slowTime = reciveData.readDword(); // 菩? 虽楼卫除 local sizeRate = reciveData.readDword(); // 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%) // 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%) obj.getVar("sizerate").clear_vector(); obj.getVar("sizerate").push_vector(sizeRate); obj.getVar("attack").clear_vector(); obj.getVar("attack").push_vector(suckVel); obj.getVar("attack").push_vector(darkCircleRate); obj.getVar("attack").push_vector(expAtkRate); obj.getVar("attack").push_vector(slowLevel); obj.getVar("attack").push_vector(slowTime); obj.getVar("flag").clear_vector(); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("state").clear_vector(); // state vector obj.getVar("state").push_vector(PASSIVEOBJ_SUB_STATE_0); obj.getVar("state").clear_ct_vector(); obj.getVar("state").push_ct_vector(); obj.getVar("crackexp").clear_vector(); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackpos").clear_vector(); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crack").clear_obj_vector(); obj.getVar("create").clear_vector(); obj.getVar("create").push_vector(1); local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, ""); } function setState_po_ATDarknessMantle(obj, state, datas) { if(!obj) return; local passiveState = state; obj.getVar("flag").clear_vector(); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("crackexp").clear_vector(); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackexp").push_vector(0); obj.getVar("crackpos").clear_vector(); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("crackpos").push_vector(0); obj.getVar("state").set_vector(0, passiveState); local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); local t = obj.getVar("state").get_ct_vector(0); t.Reset(); t.Start(10000,0); //obj.getVar("attack").push_vector(suckVel); //obj.getVar("attack").push_vector(darkCircleRate); //obj.getVar("attack").push_vector(expAtkRate); //obj.getVar("attack").push_vector(slowLevel); //obj.getVar("attack").push_vector(slowTime); //.tointeger() //.tofloat() local area100Rate = obj.getVar("attack").get_vector(VECTOR_FLAG_1); local areaRate = area100Rate.tofloat() / 100.0; if(passiveState == PASSIVEOBJ_SUB_STATE_0) { local po1 = createBackFirstDarknessArea(obj, x, y - 25, 0, areaRate, areaRate); local po2 = createFrontFirstDarknessArea(obj, x, y + 50, 0, areaRate, areaRate); local po3 = createBackFirstSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate); local po4 = createFrontFirstSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate); destroyObject(obj); obj.getVar().push_obj_vector(po1); obj.getVar().push_obj_vector(po2); obj.getVar().push_obj_vector(po3); obj.getVar().push_obj_vector(po4); local currentAni = sq_GetCurrentAnimation(obj); if(currentAni) { //currentAni.setImageRateFromOriginal(areaRate, areaRate); currentAni.applyBoundingBoxRate(areaRate,0,0); // } initGetVarTimer(obj, 1, 30, -1); } else if(passiveState == PASSIVEOBJ_SUB_STATE_1) { //local po1 = createBackLoopDarknessArea(obj, x, y - 25, 0, areaRate, areaRate); //local po2 = createFrontLoopDarknessArea(obj, x, y + 50, 0, areaRate, areaRate); //local po3 = createBackLoopSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate); //local po4 = createFrontLoopSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate); local ani = obj.getCustomAnimation(0); if(ani) obj.setCurrentAnimation(ani); //destroyObject(obj); // //local loopAni = po2.getCurrentAnimation(); //local size = sq_GetAniRealImageSize(loopAni, ENUM_DIRECTION_RIGHT); // //obj.getVar("attack").push_vector(size); // //obj.getVar().push_obj_vector(po1); //obj.getVar().push_obj_vector(po2); //obj.getVar().push_obj_vector(po3); //obj.getVar().push_obj_vector(po4); local currentAni = sq_GetCurrentAnimation(obj); if(currentAni) { currentAni.applyBoundingBoxRate(areaRate,0,0); // } } else if(passiveState == PASSIVEOBJ_SUB_STATE_2) { local po1 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/01_aura_back_normal_1.ani", true, areaRate, areaRate, x, y - 25, 0); local po2 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/05_aura_front_normal_1.ani", true, areaRate, areaRate, x, y + 50, 0); local po3 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/01_aura_back_normal_2.ani", true, areaRate, areaRate, x, y - 22, 0); local po4 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/05_aura_front_normal_2.ani", true, areaRate, areaRate, x, y + 20, 0); destroyObject(obj); local ani = obj.getCustomAnimation(1); if(ani) obj.setCurrentAnimation(ani); local p5 = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Suck/07_absorb_normal_50r.ani", false, x + 3, y + 10, 110); obj.getVar().push_obj_vector(p5); local parentObj = obj.getParent(); // 庄横菟桧朝 横?蛤虽 陛翕 local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, obj, SKILL_DARKNESSMANTLE, false, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut", false); local suckVel = obj.getVar("attack").get_vector(VECTOR_FLAG_0); local range = obj.getVar("attack").get_vector(VECTOR_FLAG_5); if(appendage) { //appendage.sq_SetValidTime(3000); // 罹晦怃 append 蒙机 CNSquirrelAppendage.sq_Append(appendage, parentObj, obj); local auraAppendage = appendage.sq_getAuraMaster("auraMaster"); // if(!auraAppendage) auraAppendage = appendage.sq_AddAuraMaster("auraMaster", parentObj, obj, 1200, 18, 5, 0); if(auraAppendage) { auraAppendage.setAttractionInfo(suckVel, suckVel, range, 100); } // } } else if(passiveState == PASSIVEOBJ_SUB_STATE_3) { local cx = x + 3; local cy = y + 10; local cz = 110; local poBall = createDarkBall(obj, cx, cy, cz); destroyObject(obj); //4183 //6515 obj.getVar().push_obj_vector(poBall); // 0 obj.getVar("darkcircle").clear_vector(); obj.getVar("darkcircle").push_vector(cx); obj.getVar("darkcircle").push_vector(cy); obj.getVar("darkcircle").push_vector(cz); } else if(passiveState == PASSIVEOBJ_SUB_STATE_4) { local cx = x; local cy = y + 12; local cz = 0; local expStartObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/16_exp_start.ani", false, cx, cy, cz); obj.getVar().push_obj_vector(expStartObj); // 4 } local atk = sq_GetCurrentAttackInfo(obj); if(atk) { local slowLevel = obj.getVar("attack").get_vector(VECTOR_FLAG_3); local slowTime = obj.getVar("attack").get_vector(VECTOR_FLAG_4); sq_SetChangeStatusIntoAttackInfo(atk, 0, ACTIVESTATUS_SLOW, 100, slowLevel, slowTime); } } function allDestroy(obj) { if(!obj) return; destroyObject(obj); destroyCrackObject(obj); local parentObj = obj.getParent(); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut"); if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } } function destroy_po_ATDarknessMantle(obj) { destroyObject(obj); destroyCrackObject(obj); local parentObj = obj.getParent(); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut"); } function reset_po_ATDarknessMantle(obj) { } function procAppend_po_ATDarknessMantle(obj) { if(!obj) return; local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); local passiveState = obj.getVar("state").get_vector(0); local objListSize = obj.getVar().get_obj_vector_size(); local pAni = sq_GetCurrentAnimation(obj); local frmIndex = sq_GetAnimationFrameIndex(pAni); //local currentT = sq_GetCurrentTime(pAni); //local currentT = obj.getStateTimer().Get(); local t = obj.getVar("state").get_ct_vector(0); local currentT = 0; if(t) { currentT = t.Get(); } if(passiveState == PASSIVEOBJ_SUB_STATE_0) { if(frmIndex > 1) procParticleCreaterMap(obj, currentT, "PassiveObject/Character/Mage/Particle/mmagic_dark.ptl", x, y, z); } else if(passiveState == PASSIVEOBJ_SUB_STATE_1) { if(objListSize > 0) { local p1 = obj.getVar().get_obj_vector(0); local p2 = obj.getVar().get_obj_vector(1); local p3 = obj.getVar().get_obj_vector(2); local p4 = obj.getVar().get_obj_vector(3); } if(currentT > 1000) { if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_2, pIntVec, STATE_PRIORITY_AUTO, false, ""); } } else { procParticleCreaterMap(obj, currentT, "PassiveObject/Character/Mage/Particle/mmagic_dark.ptl", x, y, z); } } else if(passiveState == PASSIVEOBJ_SUB_STATE_2) { local darkCircleObj = obj.getVar().get_obj_vector(0); // 2 local ani = sq_GetCurrentAnimation(darkCircleObj); if(sq_IsEnd(ani)) { if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_3, pIntVec, STATE_PRIORITY_AUTO, false, ""); } } } else if(passiveState == PASSIVEOBJ_SUB_STATE_3) { if(currentT > 20) { local crack0 = obj.getVar().get_obj_vector(1); local crack1 = obj.getVar().get_obj_vector(2); local crack2 = obj.getVar().get_obj_vector(3); local cy = y + 11; if(!obj.getVar("flag").get_vector(0)) { local p6 = createCrackPiece(obj, 0, x, cy, 0); obj.getVar().push_obj_vector(p6); // 1 obj.getVar("flag").set_vector(0, 1); } if(obj.getVar("flag").get_vector(0) == 1) { if(!obj.getVar("flag").get_vector(1)) { local ani = sq_GetCurrentAnimation(crack0); local frmIndex = sq_GetAnimationFrameIndex(ani); if(frmIndex >= 3) { local p6 = createCrackPiece(obj, 1, x, cy, 0); obj.getVar().push_obj_vector(p6); // 2 obj.getVar("flag").set_vector(1, 1); } } } if(obj.getVar("flag").get_vector(1) == 1) { if(!obj.getVar("flag").get_vector(2)) { local ani = sq_GetCurrentAnimation(crack1); local frmIndex = sq_GetAnimationFrameIndex(ani); if(frmIndex >= 3) { local p6 = createCrackPiece(obj, 2, x, cy, 0); obj.getVar().push_obj_vector(p6); //3 obj.getVar("flag").set_vector(2, 1); } } } if(!obj.getVar("flag").get_vector(3)) { local ani = sq_GetCurrentAnimation(crack2); local frmIndex = sq_GetAnimationFrameIndex(ani); if(frmIndex >= 3) { obj.getVar("flag").set_vector(3, 1); } } procCrackDarknessCircle(obj); local objListSize = obj.getVar().get_obj_vector_size(); if(objListSize >= 4) { local isEndAnimation = true; // 敕翮 拥栖诡桧暮桧 部陬朝虽 羹觼 for(local i =1;i= 2) { local fScreen = sq_flashScreen(obj,0,100,0,200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); obj.getVar("flag").set_vector(1, 1); } } if(isEnd) { print(" exp:" + obj.getVar("flag").get_vector(0)); if(!obj.getVar("flag").get_vector(0)) { destroyCrackObject(obj); if(obj.isMyControlObject()) { local expAtkRate = obj.getVar("attack").get_vector(VECTOR_FLAG_2); sq_BinaryStartWrite(); sq_BinaryWriteDword(expAtkRate); // // 觼煎栖赝 嬴桧蛊 跷陛蒙机 // 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%) local size100Rate = 100; if(obj.getVar("sizerate").get_vector(0) > 0) { size100Rate = obj.getVar("sizerate").get_vector(0); } sq_BinaryWriteDword(size100Rate); // /////////////////////////////////// sq_SendCreatePassiveObjectPacket(obj, 24253, 0, 0, 1, 0, obj.getDirection()); } obj.getVar("flag").set_vector(0, 1); allDestroy(obj); } } } else { allDestroy(obj); } } } function onChangeSkillEffect_po_ATDarknessMantle(obj, skillIndex, reciveData) { if(!obj) return; } function onDestroyObject_po_ATDarknessMantle(obj, object) { if(!obj) return; } function onKeyFrameFlag_po_ATDarknessMantle(obj, flagIndex) { } function onEndCurrentAni_po_ATDarknessMantle(obj) { if(!obj) return; local passiveState = obj.getVar("state").get_vector(0); if(passiveState == PASSIVEOBJ_SUB_STATE_0) { local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); local area100Rate = obj.getVar("attack").get_vector(VECTOR_FLAG_1); local areaRate = area100Rate.tofloat() / 100.0; local po1 = createBackLoopDarknessArea(obj, x, y - 25, 0, areaRate, areaRate); local po2 = createFrontLoopDarknessArea(obj, x, y + 50, 0, areaRate, areaRate); local po3 = createBackLoopSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate); local po4 = createFrontLoopSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate); destroyObject(obj); local loopAni = po2.getCurrentAnimation(); local size = sq_GetAniRealImageSize(loopAni, ENUM_DIRECTION_RIGHT); obj.getVar("attack").push_vector(size); obj.getVar().push_obj_vector(po1); obj.getVar().push_obj_vector(po2); obj.getVar().push_obj_vector(po3); obj.getVar().push_obj_vector(po4); if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, ""); } } else if(passiveState == PASSIVEOBJ_SUB_STATE_2) { } } function onAttack_po_ATDarknessMantle(obj, damager, boundingBox, isStuck) { if(!obj) return 0; local pChr = obj.getTopCharacter(); if(!pChr) return 0; local active_damager = sq_GetCNRDObjectToActiveObject(damager); if(!active_damager) return 0; CNSquirrelAppendage.sq_AppendAppendage(damager, damager, SKILL_DARKNESSMANTLE, false, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_effect.nut", true); return 0; }