// 怃粽 蝶才桧?陛 ?蹂 桡棻. SUBSTATE_POWER_OF_DARKNESS_START <- 0; SUBSTATE_POWER_OF_DARKNESS_EXPLOSION <- 1; SUBSTATE_POWER_OF_DARKNESS_LIFT <- 2; SUBSTATE_POWER_OF_DARKNESS_LAST <- 3; SUBSTATE_POWER_OF_DARKNESS_END <- 4; POD_VAR_ARROW_COUNT <- 1; // 饵辨? ?髦 偎热 POD_VAR_CIRCLE_INDEX <- 2; // 当撩胀 掘羹 樯策蝶 POD_VAR_CIRCLE_OBJECT_GROUP <- 3; // 当撩胀 掘羹 斜瑜 POD_VAR_CIRCLE_OBJECT_UID <- 4; // 当撩胀 掘羹 UID POD_VAR_CIRCLE_OBJECT <- 5; // 当撩胀 掘羹 POD_VAR_SUPERARMOR <- 6; // 蓬?嬴该 横?蛤虽 POD_VAR_FLASHSCREEN <- 7; // 当撩胀 掘羹 POD_TIME_EVENT_ARROWGAP <- 1; // 颤歜 桧渐? : ?髦 嫦翕 卫除 除问 POD_TIME_EVENT_LIFTTIME <- 2; // 颤歜 桧渐? : 跨蝶搅 嗥办朝 卫除 POD_TIME_EVENT_LASTDELAY <- 3; // 颤歜 桧渐? : 虞颤梱虽 裁溯桧 POD_TIME_EVENT_LAST <- 4; // 颤歜 桧渐? : 虞颤? 裁溯桧 POD_SOUND_INDEX_LOOP <- 92716; function sendSubState_PowerOfDarkness(obj, subState) { if(!obj) return; if(obj.isMyControlObject()) { local sq_var = obj.getVar(); local circleGroup = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_GROUP); local circleUID = sq_var.getInt(POD_VAR_CIRCLE_OBJECT_UID); obj.sq_IntVectClear(); obj.sq_IntVectPush(subState); // substate撮? obj.sq_IntVectPush(circleGroup); obj.sq_IntVectPush(circleUID); // 掘羹暧 UID 撮? obj.sq_addSetStatePacket(STATE_POWER_OF_DARKNESS, STATE_PRIORITY_IGNORE_FORCE, true); } } //------------------------------------------------------------------------------ // 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻. function checkExecutableSkill_PowerOfDarkness(obj) { if(!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_POWER_OF_DARKNESS); if(b_useskill) { sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_START); return true; } return false; } //------------------------------------------------------------------------------ function isGrabable_PowerOfDarkness(obj) { local sq_var = obj.getVar(); local i=0; local objectsSize = sq_var.get_obj_vector_size(); if(objectsSize == 0) return false; for(;i obj.getXPos() ? darkCircle.getXPos() - obj.getXPos() : obj.getXPos() - darkCircle.getXPos(); local z = darkCircle.getZPos() > obj.getZPos() ? darkCircle.getZPos() - obj.getZPos() : obj.getZPos() - darkCircle.getZPos(); local rate = obj.sq_getBonusRateWithPassive(SKILL_POWER_OF_DARKNESS, STATE_POWER_OF_DARKNESS,2,1.0); obj.sq_binaryData_startWrite(); obj.sq_binaryData_writeFloat(angle.tofloat()); obj.sq_binaryData_writeDword(rate); sq_SendCreatePassiveObjectPacket(obj,24108, 0, x, sq_getRandom(-1,2), z, obj.getDirection()); } } //POD_TIME_EVENT_ARROWGAP <- 1; // 颤歜 桧渐? : ?髦 嫦翕 卫除 除问 //POD_TIME_EVENT_LIFTTIME <- 2; // 颤歜 桧渐? : 跨蝶搅 嗥办朝 卫除 function onTimeEvent_PowerOfDarkness(obj, timeEventIndex, timeEventCount) { local subState = obj.getSkillSubState(); if(timeEventIndex == POD_TIME_EVENT_LIFTTIME) { sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION); } else if(timeEventIndex == POD_TIME_EVENT_ARROWGAP) { local sq_var = obj.getVar(); local current = sq_var.getInt(1); sq_var.setInt(1,current+1); local maxArraw = obj.sq_getLevelData(1); if(current >= maxArraw) // 卫除 裁溯桧蒂 觊涡 舆晦 嫔? { sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_LAST); return true; } else if(current < maxArraw) { createPowerOfDarknessArrow(obj,getArrowCreateAngle(current)); } return false; } else if(timeEventIndex == POD_TIME_EVENT_LASTDELAY) { local lastMaxArrow = obj.sq_getIntData(6); local i = 0; for(i=0;i 0) { if(isGrabable_PowerOfDarkness(obj)) sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_LIFT); else sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION); obj.playSound("DARKPOWER_CATCH_LOOP",POD_SOUND_INDEX_LOOP,0,0,0); } else sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_END); } else if(subState == SUBSTATE_POWER_OF_DARKNESS_END) obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } // onAttack 属寥?热 殓栖棻 function onAttack_PowerOfDarkness(obj, damager, boundingBox) { local sq_var = obj.getVar(); local subState = obj.getSkillSubState(); if(subState == SUBSTATE_POWER_OF_DARKNESS_START) { local masterAppendage = CNSquirrelAppendage.sq_AppendAppendage(damager, obj, SKILL_EXECUTION, false, "Appendage/Character/ap_PowerOfDarkness.nut", true); if(masterAppendage) { if(sq_IsHoldable(obj,damager)) { sq_HoldAndDelayDie(damager, obj, true, true, true, 300, 300, ENUM_DIRECTION_NEUTRAL , masterAppendage); damager.setCurrentDirection(sq_GetOppositeDirection(obj.getDirection())); } local collectingTime = obj.sq_getIntData(0); if(sq_IsGrabable(obj,damager) && sq_IsHoldable(obj,damager) && !sq_IsFixture(damager)) //濩击热 毡朝 鼻鹧 sq_MoveToAppendageForce(damager, obj, obj, 160, 0, 90 - damager.getObjectHeight()/2, collectingTime, true, masterAppendage); else if(sq_IsHoldable(obj,damager) && !sq_IsFixture(obj)) sq_MoveToAppendageForce(damager, obj, obj, 160, 0, damager.getZPos(), collectingTime, true, masterAppendage); obj.sq_PlaySound("DARKPOWER_CATCH"); sq_var.push_obj_vector(damager); } } } function removeAllPoweOfDarknessAppendage(obj) { local sq_var = obj.getVar(); local i=0; local objectsSize = sq_var.get_obj_vector_size(); for(;i 0) sendSubState_PowerOfDarkness(obj,SUBSTATE_POWER_OF_DARKNESS_EXPLOSION); } return true; } function onCreateObject_PowerOfDarkness(obj, createObject) { local sq_var = obj.getVar(); local cuid = sq_GetUniqueId(createObject); local circleIndex = sq_var.getInt(POD_VAR_CIRCLE_INDEX); if(cuid == circleIndex) { local group = sq_GetGroup(createObject); local uid = sq_GetUniqueId(createObject); sq_var.setObject(POD_VAR_CIRCLE_OBJECT, createObject); sq_var.setInt(POD_VAR_CIRCLE_OBJECT_GROUP, group); sq_var.setInt(POD_VAR_CIRCLE_OBJECT_UID, uid); } }