190 lines
4.0 KiB
Plaintext
190 lines
4.0 KiB
Plaintext
|
|
|
||
|
|
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);
|
||
|
|
//}
|
||
|
|
|
||
|
|
}
|