function setCustomData_po_ATFlameCircle(obj, reciveData) { if(!obj) return; local spin_count = reciveData.readWord(); local radius = reciveData.readFloat(); local speed = reciveData.readFloat(); local attack_rate = reciveData.readDword(); local pAni = obj.getCurrentAnimation(); pAni.setImageRate(radius, 1.0); pAni.setSpeedRate(speed); obj.sq_var.clear_vector(); obj.sq_var.push_vector(spin_count); // 0 obj.sq_var.push_vector(0); // 1 obj.sq_var.push_vector(0); // 2 obj.sq_var.push_vector(0); // 3 obj.sq_var.clear_obj_vector(); //local pRopeNormal = obj.sq_createCNRDAnimation("Effect/Animation/Spincutter/throw/4_rope_normal_0.ani"); local ani = sq_CreateAnimation("","PassiveObject/Character/Mage/Animation/ATFlameCircle/04_bspin_dodge.ani"); ani.setImageRate(radius, 1.0); ani.setSpeedRate(speed); local bspin_dodge = sq_CreatePooledObject(ani,false); bspin_dodge.setCurrentPos(obj.getXPos(),obj.getYPos()-2,obj.getZPos()-2); bspin_dodge.setCurrentDirection(obj.getDirection()); sq_AddObject(obj,bspin_dodge,2,false); obj.sq_var.push_obj_vector(bspin_dodge); sq_SetAttackBoundingBoxSizeRate(pAni, radius, radius, radius); local pAttack = sq_GetCurrentAttackInfo(obj); sq_SetCurrentAttackBonusRate(pAttack, attack_rate); } function destroy_po_ATFlameCircle(obj) { local bspin_dodge_obj = obj.sq_var.get_obj_vector(0); print( " destroy_po_ATFlameCircle:" + bspin_dodge_obj); if(bspin_dodge_obj) { bspin_dodge_obj.setValid(false); obj.sq_var.clear_obj_vector(); } } function setState_po_ATFlameCircle(obj, state, datas) { if(!obj) return; } function onAttack_po_ATFlameCircle(obj, damager, boundingBox, isStuck) { if(!obj) return 0; local spin_cnt = obj.sq_var.get_vector(1); local total_spin_cnt = obj.sq_var.get_vector(0); if(spin_cnt >= total_spin_cnt) { sq_AddHitObject(obj, damager); } return 0; } function procAppend_po_ATFlameCircle(obj) { if(!obj) return; local pChr = obj.getTopCharacter(); if(!pChr) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); return; } } if(pChr.getState() != STATE_FLAMECIRCLE) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); return; } } local pAni = obj.getCurrentAnimation(); local frmIndex = sq_GetAnimationFrameIndex(pAni); local bspin_dodge_obj = obj.sq_var.get_obj_vector(0); if(bspin_dodge_obj) { local bspin_dodge_ani = bspin_dodge_obj.getCurrentAnimation(); local bspin_frm_index = sq_GetAnimationFrameIndex(bspin_dodge_ani); sq_SetAnimationCurrentTimeByFrame(pAni, bspin_frm_index, false); } if(frmIndex >= 0 && frmIndex < 3) { if(obj.sq_var.get_vector(2) == 1) { local cnt = obj.sq_var.get_vector(1); cnt = cnt + 1; obj.sq_var.set_vector(1, cnt); // ?夥袜 给嬴除 苹遴?蒂 ?廓 棺萼棻.. obj.sq_var.set_vector(2, 0); obj.resetHitObjectList(); } } if(frmIndex >= 3 && frmIndex <= 4) { if(obj.sq_var.get_vector(2) == 0) { local cnt = obj.sq_var.get_vector(1); obj.sq_var.set_vector(2, 1); } } local spin_cnt = obj.sq_var.get_vector(1); local total_spin_cnt = obj.sq_var.get_vector(0); if(spin_cnt >= (total_spin_cnt - 1)) { if(obj.sq_var.get_vector(3) == 0) { obj.sq_var.set_vector(3, 1); } } //print( " total_spin_cnt:" + total_spin_cnt + " spin_cnt:" + spin_cnt); if(spin_cnt >= total_spin_cnt) { //obj.resetHitObjectList(); if(bspin_dodge_obj) { bspin_dodge_obj.setValid(false); obj.sq_var.clear_obj_vector(); } if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } } } function onDestroyObject_po_ATFlameCircle(obj, object) { if(!obj) return; if(object == obj) { local bspin_dodge_obj = obj.sq_var.get_obj_vector(0); if(bspin_dodge_obj) { bspin_dodge_obj.setValid(false); obj.sq_var.clear_obj_vector(); } } } function onKeyFrameFlag_po_ATFlameCircle(obj, flagIndex) { } function onEndCurrentAni_po_ATFlameCircle(obj) { if(!obj) return; //if(obj.isMyControlObject()) { //sq_SendDestroyPacketPassiveObject(obj); //} }