Sqr/character/atmage/turnwindmill/turnwindmill.nut

382 lines
11 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SUB_STATE_TURNWINDMILL_0 <- 0
SUB_STATE_TURNWINDMILL_1 <- 1
SUB_STATE_TURNWINDMILL_2 <- 2
SUB_STATE_TURNWINDMILL_3 <- 3
SUB_STATE_TURNWINDMILL_4 <- 4
function checkExecutableSkill_TurnWindmill(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_TURNWINDMILL);
if(b_useskill) {
obj.getVar("cnt").clear_vector();
obj.getVar("cnt").push_vector(0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_TURNWINDMILL_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_TURNWINDMILL, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_TurnWindmill(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK)
{
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_TURNWINDMILL); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_TURNWINDMILL);
}
return true;
}
function onSetState_TurnWindmill(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.sq_StopMove();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_TURN_WINDMILL);
local pAttack = sq_GetCurrentAttackInfo(obj);
local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_TURNWINDMILL STATE_TURNWINDMILL, 0, 1.0); //0.奢问溘(%)
sq_SetCurrentAttackBonusRate(pAttack, attackRate);
if(substate == SUB_STATE_TURNWINDMILL_0) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_TURNWINDMILL1);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
//local term = obj.sq_GetIntData(SKILL_TURNWINDMILL, 0); // 0. 棻钦?? 除问
local ani = obj.sq_GetCurrentAni();
local term = ani.getDelaySum(false) / 5;
obj.sq_timer_.setParameter(term, -1);
obj.sq_timer_.resetInstant(0);
}
else if(substate == SUB_STATE_TURNWINDMILL_1) {
obj.sq_PlaySound("MW_SPINSPEAR_1ATK");
//if(obj.isMyControlObject())
//{
//// IRDSQRCharacter.pushPassiveObj("Character/ATMage/TurnWindmill/po_ATTurnWidmill.nut", 24251)
//local fireOffsetX = 100;
//local fireOffsetY = 0;
//local fireOffsetZ = 13;
//
//local distance = obj.sq_GetIntData(SKILL_TURNWINDMILL, 1); // 1. 湍螺击阳 釭嬴陛朝 剪葬
//
//local pAttack = sq_GetCurrentAttackInfo(obj);
//local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_TURNWINDMILL STATE_TURNWINDMILL, 0, 1.0); //0.奢问溘(%)
//local term = obj.sq_GetIntData(SKILL_TURNWINDMILL, 0); // 0. 棻钦?? 除问
//
//
//sq_BinaryStartWrite();
//sq_BinaryWriteDword(0); //
//sq_BinaryWriteDword(distance); //
//sq_BinaryWriteDword(attackRate); //
//sq_BinaryWriteDword(term); //
//sq_BinaryWriteDword(0); //
//sq_BinaryWriteDword(0); //
//obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
//
//local dirFiringSwitch = obj.sq_GetIntData(SKILL_TURNWINDMILL, 3);// 3. 觼煎栖觼缣 评艇 陕紫 翕卫嫦饵 on/off蝶嫔纂
//
//if(dirFiringSwitch)
//{
//local dir = obj.sq_GetIntData(SKILL_TURNWINDMILL, 4);// 4. 3廓桧 on橾阳
//
//sq_BinaryStartWrite();
//sq_BinaryWriteDword(0); //
//sq_BinaryWriteDword(distance); //
//sq_BinaryWriteDword(attackRate); //
//sq_BinaryWriteDword(term); //
//sq_BinaryWriteDword(2); //
//sq_BinaryWriteDword(dir); //
//obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
//}
//
//local cnt = obj.getVar("cnt").get_vector(0);
//cnt = cnt + 1;
//obj.getVar("cnt").set_vector(0, cnt);
//}
obj.sq_SetCurrentAnimation(CUSTOM_ANI_TURNWINDMILL2);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
else if(substate == SUB_STATE_TURNWINDMILL_2) {
// SUB_STATE_TURNWINDMILL_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_3) {
// SUB_STATE_TURNWINDMILL_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_4) {
// SUB_STATE_TURNWINDMILL_4 怃粽蝶才桧? 蒙机
}
}
function prepareDraw_TurnWindmill(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TURNWINDMILL_0) {
// SUB_STATE_TURNWINDMILL_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_1) {
// SUB_STATE_TURNWINDMILL_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_2) {
// SUB_STATE_TURNWINDMILL_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_3) {
// SUB_STATE_TURNWINDMILL_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TURNWINDMILL_4) {
// SUB_STATE_TURNWINDMILL_4 怃粽蝶才桧? 蒙机
}
}
function onProc_TurnWindmill(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if (obj.sq_timer_.isOnEvent(currentT) == true)
obj.resetHitObjectList();
}
function onProcCon_TurnWindmill(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if(substate == SUB_STATE_TURNWINDMILL_0) {
}
else if(substate == SUB_STATE_TURNWINDMILL_1) {
if(frmIndex >= 7)
{
if(!obj.getVar().get_vector(0))
{
obj.sq_PlaySound("MW_SPINSPEAR_2ATK");
local fireOffsetX = 100;
local fireOffsetY = 0;
local fireOffsetZ = 13;
local distance = obj.sq_GetIntData(SKILL_TURNWINDMILL, 1); // 1. 湍螺击阳 釭嬴陛朝 剪葬
local pAttack = sq_GetCurrentAttackInfo(obj);
local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_TURNWINDMILL, STATE_TURNWINDMILL, 0, 1.0); //0.奢问溘(%)
local term = obj.sq_GetIntData(SKILL_TURNWINDMILL, 0); // 0. 棻钦?? 除问
if(obj.isMyControlObject())
{
sq_BinaryStartWrite();
sq_BinaryWriteDword(1); //
sq_BinaryWriteDword(distance); //
sq_BinaryWriteDword(attackRate); //
sq_BinaryWriteDword(term); //
sq_BinaryWriteDword(0); //
obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
local dirFiringSwitch = obj.sq_GetIntData(SKILL_TURNWINDMILL, 3);// 3. 觼煎栖觼缣 评艇 陕紫 翕卫嫦饵 on/off蝶嫔纂
if(dirFiringSwitch)
{
local dir = obj.sq_GetIntData(SKILL_TURNWINDMILL, 4);// 4. 3廓桧 on橾阳
sq_BinaryStartWrite();
sq_BinaryWriteDword(0); //
sq_BinaryWriteDword(distance); //
sq_BinaryWriteDword(attackRate); //
sq_BinaryWriteDword(term); //
sq_BinaryWriteDword(1); //
sq_BinaryWriteDword(dir); //
obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
}
local cnt = obj.getVar("cnt").get_vector(0);
cnt = cnt + 1;
obj.getVar("cnt").set_vector(0, cnt);
}
obj.getVar().set_vector(0, 1);
}
}
}
}
function onEndCurrentAni_TurnWindmill(obj)
{
if(!obj) return;
if(!obj.isMyControlObject()) {
return;
}
local substate = obj.getSkillSubState();
local cnt = obj.getVar("cnt").get_vector(0);
local maxCnt = obj.sq_GetIntData(SKILL_TURNWINDMILL, 2); // 2. 湍虽朝 ?离偎热
print(" cnt:" + cnt + " maxCnt:" + maxCnt);
if(cnt >= maxCnt)
{
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
return;
}
if(substate == SUB_STATE_TURNWINDMILL_0) {
// IRDSQRCharacter.pushPassiveObj("Character/ATMage/TurnWindmill/po_ATTurnWidmill.nut", 24251)
local fireOffsetX = 100;
local fireOffsetY = 0;
local fireOffsetZ = 13;
local distance = obj.sq_GetIntData(SKILL_TURNWINDMILL, 1); // 1. 湍螺击阳 釭嬴陛朝 剪葬
local pAttack = sq_GetCurrentAttackInfo(obj);
local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_TURNWINDMILL, STATE_TURNWINDMILL, 0, 1.0); //0.奢问溘(%)
local term = obj.sq_GetIntData(SKILL_TURNWINDMILL, 0); // 0. 棻钦?? 除问
sq_BinaryStartWrite();
sq_BinaryWriteDword(0); //
sq_BinaryWriteDword(distance); //
sq_BinaryWriteDword(attackRate); //
sq_BinaryWriteDword(term); //
sq_BinaryWriteDword(0); //
sq_BinaryWriteDword(0); //
obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
local dirFiringSwitch = obj.sq_GetIntData(SKILL_TURNWINDMILL, 3);// 3. 觼煎栖觼缣 评艇 陕紫 翕卫嫦饵 on/off蝶嫔纂
if(dirFiringSwitch)
{
local dir = obj.sq_GetIntData(SKILL_TURNWINDMILL, 4);// 4. 3廓桧 on橾阳
sq_BinaryStartWrite();
sq_BinaryWriteDword(0); //
sq_BinaryWriteDword(distance); //
sq_BinaryWriteDword(attackRate); //
sq_BinaryWriteDword(term); //
sq_BinaryWriteDword(2); //
sq_BinaryWriteDword(dir); //
obj.sq_SendCreatePassiveObjectPacket(24251, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // po_ATTurnWidmill.nut
}
local cnt = obj.getVar("cnt").get_vector(0);
cnt = cnt + 1;
obj.getVar("cnt").set_vector(0, cnt);
if(cnt >= maxCnt)
{
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
return;
}
else
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_TURNWINDMILL_1); // substate撮?
obj.sq_AddSetStatePacket(STATE_TURNWINDMILL, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
else if(substate == SUB_STATE_TURNWINDMILL_1) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_TURNWINDMILL_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_TURNWINDMILL, STATE_PRIORITY_IGNORE_FORCE, true);
//obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
}
function onKeyFrameFlag_TurnWindmill(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
return false;
}
function onEndState_TurnWindmill(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
}
function onAfterSetState_TurnWindmill(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
}