HOLONG_LIGHT_VAR_IS_LEFT <- 0; HOLONG_LIGHT_VAR_APPENDAGE <- 1; HOLONG_LIGHT_VAR_HORIZON_ANGLE <- 2; HOLONG_LIGHT_VAR_VERTICAL_ANGLE <- 3; HOLONG_LIGHT_VAR_LIFE_TIME <- 4; HOLONG_LIGHT_VAR_DEFENCE_UP <- 5; HOLONG_LIGHT_VAR_ATTACK_POWER <- 6; HOLONG_LIGHT_VAR_SHOOT_TIME <- 7; HOLONG_LIGHT_VAR_COOL_TIME <- 8; HOLONG_LIGHT_STATE_BUFF <- 2; // 渠晦 鼻鹧 : 议葛搅缣 帼?蒂 勘横遽棻. : ?卫粽 蝶才桧?朝 2睡搅 卫蒙?棻. HOLONG_LIGHT_STATE_ATTACK <- 3; // 奢问 : 饵轿肾横 颤啃击 奢问?虽虏 帼?朝 饵塭霞棻. HOLONG_LIGHT_STATE_DESTROY <- 4; // 薯濠葬怃 饵塭霞棻. HOLONG_LIGHT_STATE_EXPLOSION <- 5; // ?嫦 HOLONG_LIGHT_CUSTOM_ANI_MOVE <- 0; // 桧翕卫 拥栖 HOLONG_LIGHT_CUSTOM_ANI_DESTROY <- 1; // ?惚卫 拥栖 HOLONG_LIGHT_CUSTOM_ANI_SHOOT <- 2; // 嫦饵卫 陈嬴陛朝 拥栖 HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION <- 3; //?嫦 拥栖 function setCustomData_po_ATHolongLight(obj, receiveData) { if(!obj) return; local isLeft = receiveData.readBool(); local horizonAngle = receiveData.readFloat(); local verticalAngle = receiveData.readFloat(); local lifeTime = receiveData.readDword(); local defenceUp = receiveData.readDword(); local attackPower = receiveData.readDword(); local shootTime = receiveData.readDword(); local coolTime = receiveData.readDword(); local var = obj.getVar(); var.setBool(HOLONG_LIGHT_VAR_IS_LEFT,isLeft); obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_BUFF); var.setFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE, horizonAngle); var.setFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE, verticalAngle); var.setInt(HOLONG_LIGHT_VAR_LIFE_TIME, lifeTime); var.setInt(HOLONG_LIGHT_VAR_DEFENCE_UP, defenceUp); var.setInt(HOLONG_LIGHT_VAR_SHOOT_TIME, shootTime); var.setInt(HOLONG_LIGHT_VAR_COOL_TIME, coolTime); sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), attackPower); } function onTimeEvent_po_ATHolongLight(obj, timeEventIndex, timeEventCount) { if(!obj) return false; if(obj.isMyControlObject() && timeEventIndex == 0) { if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) { obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY); local mage = sq_ObjectToSQRCharacter(obj.getTopCharacter()); if (mage) mage.sq_RemoveSkillLoad(SKILL_HOLONG_LIGHT); } return true; // true贼 属寥 酝钦 } else if( timeEventIndex == 1 ) { obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION); } return false; } function onDestroyObject_po_ATHolongLight(obj, destroyObj) { local parentObj = obj.getParent(); parentObj = sq_ObjectToSQRCharacter(parentObj); if(!parentObj || isSameObject(parentObj,destroyObj)) { //睡赅 偌羹陛 ?惚肾贼 饵塭飓 obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY); } } function onAttack_po_ATHolongLight(obj, damager, boundingBox, isStuck) { if(!obj) return 0; obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION); return 0; } function setState_po_ATHolongLight(obj, state, datas) { if(!obj) return; local var = obj.getVar(); // 帼? 赅萄 if (state == HOLONG_LIGHT_STATE_BUFF) { local lifeTime = var.getInt(HOLONG_LIGHT_VAR_LIFE_TIME); local defenceUp = var.getInt(HOLONG_LIGHT_VAR_DEFENCE_UP); var.push_ct_vector(); // 颤桧该 跷陛 local timer = var.get_ct_vector(0); timer.Reset(); timer.Start(500,0); obj.setTimeEvent(0,lifeTime,1,false); // 0廓 樯策蝶暧 颤桧该, 5蟾钦嫔 桧渐? 嫦当, 1廓虏, 籀挤缚 褒?寰?. local parentObj = obj.getParent(); printc("lifeTime " +lifeTime); printc("defenceUp " +defenceUp); local appendage = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE, false, defenceUp.tofloat() , lifeTime); if(appendage && parentObj) { appendage.sq_AddChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE, false, defenceUp.tofloat()); appendage.sq_Append(parentObj,parentObj); local var2 = obj.getVar("holong"); printc("var2 " +var2); var2.setAppendage(HOLONG_LIGHT_VAR_APPENDAGE, appendage); } } else if (state == HOLONG_LIGHT_STATE_ATTACK) { local var2 = obj.getVar("holong"); local append = var2.getAppendage(HOLONG_LIGHT_VAR_APPENDAGE); if(append) append.setValid(false); local horizonAngle = var.getFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE); local verticalAngle = var.getFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE); local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_SHOOT); obj.setCurrentAnimation(shootAni); sq_SetfRotateAngle(shootAni, sq_ToRadian(-horizonAngle)); local shootTime = var.getInt(HOLONG_LIGHT_VAR_SHOOT_TIME); obj.setTimeEvent(1,shootTime,1,false); obj.sq_SetMoveParticle("Particle/ATHolongLight.ptl", horizonAngle, verticalAngle); sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATHolongLight/shot_effect_dodge.ani", 0, 0, 0); obj.sq_PlaySound("LAMPLIGHT_ATK"); } else if (state == HOLONG_LIGHT_STATE_DESTROY) { local destroyAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_DESTROY); obj.setCurrentAnimation(destroyAni); } else if (state == HOLONG_LIGHT_STATE_EXPLOSION) { local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION); obj.setCurrentAnimation(shootAni); obj.sq_RemoveMoveParticle(); } } function procAppend_po_ATHolongLight(obj) { if(!obj) return; local var = obj.getVar(); local xDistance = -26; local timer = var.get_ct_vector(0); if(!timer) return; local currentTime = timer.Get(); local zDistance = sq_GetAccel(0, 35, currentTime, 300, true);; local isLeft = var.getBool(HOLONG_LIGHT_VAR_IS_LEFT); if(isLeft) xDistance = -26 + sq_GetAccel(0, 52, currentTime, 300, true); local parentObj = obj.getParent(); if(obj.sq_GetParentState() == STATE_DIE) // 避戏贼 饵塭飓 obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY); if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) { // 桧翕?阳 拥栖 渗唳 local isDash = false; if(obj.sq_GetParentState() == STATE_DASH){ if(!obj.isCurrentAnimationIndex(HOLONG_LIGHT_CUSTOM_ANI_MOVE)) obj.setCurrentAnimation(obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_MOVE)); isDash = true; } else { local defaultAni = obj.getDefaultAnimation(); local currentAni = obj.getCurrentAnimation(); if(!sq_IsSameAni(defaultAni,currentAni)) obj.setCurrentAnimation(defaultAni); } if(parentObj) { local x = sq_GetDistancePos(parentObj.getXPos(),parentObj.getDirection(),xDistance); local y = parentObj.getYPos() - 1; local z = parentObj.getZPos() + sq_GetShuttleValue(90, 113,sq_GetObjectTime(obj),500) - zDistance; obj.setDirection(parentObj.getDirection()); sq_SetCurrentPos(obj, x, y, z); } } } function onEndCurrentAni_po_ATHolongLight(obj) { if(!obj) return; if(obj.getState() == HOLONG_LIGHT_STATE_DESTROY) { if(obj.isMyControlObject()) sq_SendDestroyPacketPassiveObject(obj); } else if(obj.getState() == HOLONG_LIGHT_STATE_EXPLOSION) { if(obj.isMyControlObject()) sq_SendDestroyPacketPassiveObject(obj); } }