Sqr/character/priest/avengerattack.nut

434 lines
14 KiB
Plaintext
Raw Permalink 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.

// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻.
function onSetState_AvengerAttack(obj, state, datas, isResetTimer)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
obj.getVar().clear_vector();
obj.getVar().push_vector(0); // 0廓樯策蝶
obj.getVar().push_vector(0); // 1廓樯策蝶
obj.getVar().push_vector(0);// 2廓樯策蝶
obj.getVar().push_vector(0);// 3廓樯策蝶
obj.getVar().push_vector(0);// 4廓樯策蝶
if(obj.getAttackIndex() == 0)
{
obj.setAttackXVelocity(100);
obj.setAttackXAccel(-300);
obj.setAttackXVelocityFast(200);
obj.setAttackXAccelFast(-300);
}
if(obj.getAttackIndex() == 1) { //
obj.setAttackXVelocity(50);
obj.setAttackXAccel(-300);
obj.setAttackXVelocityFast(50);
obj.setAttackXAccelFast(-300);
}
if(obj.getAttackIndex() == 2) { //
obj.setAttackXVelocity(20);
obj.setAttackXAccel(-300);
obj.setAttackXVelocityFast(50);
obj.setAttackXAccelFast(-30);
}
if(obj.getAttackIndex() == 3)
{ //
}
return;
}
obj.sq_stopMove();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local dir = sq_GetDirection(obj);
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
obj.setAttackXVelocity(0);
obj.setAttackXAccel(0);
obj.setAttackXVelocityFast(0);
obj.setAttackXAccelFast(0);
}
function onAfterSetState_AvengerAttack(obj, state, datas, isResetTimer)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
print(" onAfterSetState_AvengerAttack obj.getAttackIndex():" + obj.getAttackIndex());
// Awakening.skl 蝶鉴溯涟 才桧绾
//SL_PERFECT_CHANGE_HP <- 0 // (0) 谏瞪 渗褐羹 HP
//SL_CHANGE_TIME <- 1 // (1) 虽楼卫除
//SL_DEF_INC <- 2 // (2) 寞横溘隶陛(+)
//SL_ATK_SPD <- 3 // (3) 奢问楼紫(+)
//SL_MOV_SPD <- 4 // (4) 桧翕楼紫(+)
//SL_1_HIT_MAGIC_ATK <- 5 // (5) 1颤 葆彻奢问溘(+)
//SL_2_HIT_MAGIC_ATK <- 6 // (6) 2颤 葆彻奢问溘(+)
//SL_3_HIT_MAGIC_ATK <- 7 // (7) 3颤 葆彻奢问溘(+)
//SL_DASH_MAGIC_ATK <- 8 // (8) 渠卫 葆彻奢问溘(+)
//SL_JUMP_MAGIC_ATK <- 9 // (9) C(薄?) 葆彻奢问溘(+)
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local dir = sq_GetDirection(obj);
local power = 0;
if(obj.getAttackIndex() == 0) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
local v = 5;
local dstX = sq_GetDistancePos(posX, obj.getDirection(), v);
if(obj.isMovablePos(dstX, posY)) {
obj.setCurrentPos(dstX, posY, posZ);
}
obj.setAttackXVelocity(50);
obj.setAttackXAccel(-300);
obj.setAttackXVelocityFast(100);
obj.setAttackXAccelFast(-300);
//print(" sqr_CreatePooledObject 4_dust_normal.ani");
sqr_CreatePooledObject(obj, "Effect/Animation/Awakening/attack/attack1/4_dust_normal.ani", posX, posY + 1, posZ, dir);
}
if(obj.getAttackIndex() == 1) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
//print(" sqr_CreatePooledObject 4_dust_normal_0.ani");
//print(" sqr_CreatePooledObject 4_dust_normal_1.ani");
sqr_CreatePooledObject(obj, "Effect/Animation/Awakening/attack/attack2/4_dust_normal_0.ani", posX, posY + 1, posZ, dir);
sqr_CreatePooledObject(obj, "Effect/Animation/Awakening/attack/attack2/4_dust_normal_1.ani", posX, posY + 1, posZ, dir);
}
if(obj.getAttackIndex() == 2) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
}
if(obj.getAttackIndex() == 3) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
obj.getVar().push_vector(0);
obj.getVar().push_vector(0); // 2廓 ?楚斜 醱瞪酝樯虽 嬴棋虽 ?钦?朝 ?楚斜
obj.getVar().push_vector(0);
}
if(obj.getAttackIndex() == 4) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
obj.getVar().push_vector(0);
obj.getVar().push_vector(0); // 2廓 ?楚斜 醱瞪酝樯虽 嬴棋虽 ?钦?朝 ?楚斜
obj.getVar().push_vector(0);
}
// 陕撩?卫粽 : 学跦(48溯涟)
// 1. 陕撩 渗褐 翕寰 陕撩晦 奢问溘桧 隶陛?
// 2. 等网 蝶?塭桧醴暧 学葆 啪桧虽 离朝榆 隶陛.
// 陕撩?卫粽 学跦击 乾坚 毡朝虽 羹觼?坚 乾坚 毡棻贼 学葆 啪桧虽 离朝榆击 隶陛卫面怃 葬欐?栖棻..
if(obj.getAttackIndex() < 3) {
obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AW_ATTACK1 + obj.getAttackIndex());
//
local rate = obj.sq_getPassiveAttackRate(0, state, 1.0);
//print("sq_getPassiveAttackRate:" + rate.tofloat());
power = obj.sq_getBonusRateWithPassive(SKILL_AVENGER_AWAKENING, state, SL_1_HIT_MAGIC_ATK + obj.getAttackIndex(),1.0);
//local before_power = obj.sq_getSkillPower(SKILL_AVENGER_AWAKENING, SL_1_HIT_MAGIC_ATK + obj.getAttackIndex());
//print("before CUSTOM_ATTACKINFO_AW_ATTACK1:" + before_power);
//print("CUSTOM_ATTACKINFO_AW_ATTACK1:" + power);
}
if(obj.getAttackIndex() >= 4)
{ // 横渐荡 - 菸蝶陛蛤树 虞颤 奢问溘 醱瞪缣 评塭 离桧蒂 尔殓栖棻..
obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AW_ATTACK4);
//power = obj.sq_getSkillPower(SKILL_AVENGER_AWAKENING, SL_JUMP_MAGIC_ATK);
//power = obj.sq_getPowerWithPassive(SKILL_AVENGER_AWAKENING,SL_1_HIT_MAGIC_ATK + obj.getAttackIndex(),-1,1.0);
//print("CUSTOM_ATTACKINFO_AW_ATTACK4:" + power);
///////////////////////////////////
local chargeTime = sq_GetIntData(obj, SKILL_AVENGER_AWAKENING, 0); //薄? 葆彻 奢问 譆渠 醱瞪卫除
//local level = sq_GetSkillLevel(obj, SKILL_AVENGER_AWAKENING);
//local AtkAdd = sq_GetLevelData(obj, SKILL_AVENGER_AWAKENING, SL_JUMP_MAGIC_ATK, level);
//local fullchargeAtkAdd = sq_GetLevelData(obj, SKILL_AVENGER_AWAKENING, SL_JUMP_FULLCHARGE_MAGIC_ATK, level);
//local offset = fullchargeAtkAdd - AtkAdd; // ?醱瞪 奢问溘娄 晦狱 奢问溘 饵桧暧 offset高击 掘?鱼棻..
//local stateTimer = obj.getStateTimer();
local basePower = obj.sq_getBonusRateWithPassive(SKILL_AVENGER_AWAKENING, state, SL_JUMP_MAGIC_ATK,1.0);
local maxPower = obj.sq_getBonusRateWithPassive(SKILL_AVENGER_AWAKENING, state, SL_JUMP_FULLCHARGE_MAGIC_ATK,1.0);
local stateTimer = obj.sq_getVectorData(datas, 1); // 罗廓箪 substate殓栖棻..
local resultPower = sq_GetUniformVelocity(basePower, maxPower, stateTimer, chargeTime); // 醱瞪高
// ?姜溯涟 桧鼻橾唳办 鼠亵勒 裟蝶 ?表
if(obj.isOverSkillLevel(SKILL_AVENGER_AWAKENING, 3))
resultPower = maxPower;
power = resultPower;
//print("stateTimer:" + stateTimer + " chargeTime:" + chargeTime);
print("basePower:" + basePower + " maxPower:" + maxPower + " resultPower:" + resultPower + " timer:" + stateTimer);
//////////////////////////////////
local awakening_var = obj.getVar("awakening");
awakening_var.get_ct_vector(0).Reset();
awakening_var.get_ct_vector(0).Start(0,0);
local cooltime = getLoadSkillEnableTime(obj, SKILL_AVENGER_AWAKENING, 1); // 蛤?? 藤颤歜
awakening_var.set_vector(0, cooltime); // 藤颤歜撮?
}
obj.sq_setCurrentAttackBonusRate(power);
}
// prepareDraw ?热 殓栖棻..
function prepareDraw_AvengerAttack(obj)
{
}
// loop 睡碟殓栖棻 ismycontrol煎 马谆虽 强擎 翱念胀 赅苌 object菟桧 桧够击 剪纂啪腌栖棻.
function onProc_AvengerAttack(obj)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
return;
}
local substate = obj.getSkillSubState();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local pAni = obj.sq_getCurrentAni();
local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if(obj.getAttackIndex() == 2) {
// 撮廓箪 ?纂朝 楼紫蒂 觊 绪脑啪
if(!obj.getVar().get_vector(0)) {
if(frmIndex >= 0 && frmIndex < 5) {
local pA = obj.sq_getCurrentAni();
obj.sq_setAnimationSpeedRate(pA, 160.0);
obj.getVar().set_vector(0, 1);
}
}
if(!obj.getVar().get_vector(1)) {
if(frmIndex >= 5) {
local pA = obj.sq_getCurrentAni();
obj.sq_setAnimationSpeedRate(pA, 100.0);
obj.getVar().set_vector(1, 1);
}
}
if(frmIndex >= 6) {
local dustFlag = obj.getVar().get_vector(3);
if(!dustFlag) {
obj.getVar().set_vector(3, 1);
//print("size_vector:" + obj.getVar().size_vector());
//local dustN = obj.getVar().GetAnimationMap("15_dust_normal","Character/Priest/Effect/Animation/Awakening/attack/attack3/15_dust_normal.ani");
//pAni.addLayerAnimation(1, dustN, false);
// 奢问 试虽 当撩
local dust_n_Ani = obj.sq_createCNRDAnimation("Effect/Animation/Awakening/attack/attack3/15_dust_normal.ani");
local dustObj = obj.sq_createCNRDPooledObject(dust_n_Ani, true);
dustObj.setCurrentDirection(obj.getDirection());
dustObj.setCurrentPos(posX, posY + 2, 0);
obj.sq_AddObject(dustObj);
//print("dustFlag:" + dustFlag);
}
}
}
if(obj.getAttackIndex() == 3) { // 葆虽虞 顶溥镒晦 醱瞪 酝
// 撮廓箪 ?纂朝 楼紫蒂 觊 绪脑啪
local chargeTime = sq_GetIntData(obj, SKILL_AVENGER_AWAKENING, 0); //薄? 葆彻 奢问 譆渠 醱瞪卫除
local stateTimer = obj.sq_getStateTimer();
if(chargeTime <= stateTimer && !obj.getVar().get_vector(0)) {
print("\n fullCharge");
local pfullChargeAni = obj.getVar().GetAnimationMap("Attack4_2", "Character/Priest/Animation/AvengerAwakening/Attack4_2.ani");
if(pfullChargeAni) {
obj.setCurrentAnimation(pfullChargeAni);
}
obj.getVar().set_vector(0, 1);
}
}
if(obj.getAttackIndex() == 4) { // 葆虽虞 顶溥镒晦 奢问
// 撮廓箪 ?纂朝 楼紫蒂 觊 绪脑啪
if(!obj.getVar().get_vector(1)) {
local pA = obj.sq_getCurrentAni();
obj.sq_setAnimationSpeedRate(pA, 100.0);
obj.getVar().set_vector(1, 1);
}
}
}
// loop 睡碟殓栖棻 ismycontrol ?蝶?陛 狱樯桧 object陛 桧够击 菟横骨栖棻. setstate 撮?桧釭 ?卫粽螃粽薛? 当撩 , 蛔蛔 籀葬?栖棻.
function onProcCon_AvengerAttack(obj)
{
if(!obj) return;
if(isAvengerAwakenning(obj) == false) {
local pAni = obj.sq_getCurrentAni();
local bEnd = obj.sq_ani_IsEnd(pAni);
local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
if(obj.getAttackIndex() == 2) // 虏擒 3颤 箪塭贼..
{
// (梦姜谏噢 ?棚)
if(frmIndex >= 5) // 6廓 ?溯歜 桧鼻桧塭贼.
{
if(obj.getVar().get_vector(2) == 0)
{ // 2廓 ?楚斜陛 0桧塭贼
obj.getVar().set_vector(2, 1); // 2廓?楚斜蒂 1煎 夥羞棻 谒傍?贼 词 ?廓虏 桧寰戏煎 菟横谛捡?晦阳侥缣..
//print("CUSTOM_ATTACKINFO_AVENGER_ATTACK_3_2:" + CUSTOM_ATTACKINFO_AVENGER_ATTACK_3_2);
obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AVENGER_ATTACK_3_2); // 镒晦 奢问击 嫔?
}
}
}
// 锰?朝匙击 礼棻..
if(obj.getAttackIndex() == 3) // 虏擒 4颤 箪塭贼..
{
if(frmIndex >= 7) {
if(obj.getVar().get_vector(3) == 0)
{ // 3廓 ?楚斜陛 0桧塭贼
// 横渐荡 ?虞颤 2廓箪 atk?橾击 撮??晦 嫔?桧棻.. 镒晦奢问戏煎 夥绂晦 嫔?怃殓栖棻..
//print("obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AVENGER_ATTACK_4_2);");
obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_AVENGER_ATTACK_4_2);
obj.getVar().set_vector(3, 1); // 2廓?楚斜蒂 1煎 夥羞棻 谒傍?贼 词 ?廓虏 桧寰戏煎 菟横谛捡?晦阳侥缣..
}
}
if(frmIndex >= 8) // 8廓 ?溯歜 桧鼻桧塭贼.
{
if(obj.getVar().get_vector(2) == 0)
{ // 2廓 ?楚斜陛 0桧塭贼
obj.sq_setShake(obj, 1, 200); // 虽霞击 橾戏监棻..
obj.getVar().set_vector(2, 1); // 2廓?楚斜蒂 1煎 夥羞棻 谒傍?贼 词 ?廓虏 桧寰戏煎 菟横谛捡?晦阳侥缣..
}
}
}
return;
}
local pAni = obj.sq_getCurrentAni();
local bEnd = obj.sq_ani_IsEnd(pAni);
local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni);
local substate = obj.getSkillSubState();
//if (obj.getAttackIndex() < obj.sq_getAttackCancelStartFrameSize() &&
//frmIndex >= obj.sq_getAttackCancelStartFrame(obj.getAttackIndex()) &&
//sq_IsEnterCommand(obj, 1)
//)
if(obj.getAttackIndex() == 2) { // 陕撩 渗褐鼻鹧 晦狱 奢问 葆虽虞桧塭贼..
if(frmIndex >= 5) {
if(obj.getVar().get_vector(2) == 0) {
obj.getVar().set_vector(2, 1);
obj.sq_setShake(obj, 2, 500);
}
}
}
if(obj.getAttackIndex() < 3) {
sq_SetKeyxEnable(obj, 1, true);
local bCommand = sq_IsEnterCommand(obj, 1);
if (bCommand)
{
local var_awakening = obj.getVar("awakening");
local t = var_awakening.get_ct_vector(0).Get();
//print("var_awakening.get_ct_vector(0).Get():" + t + "var_awakening.get_vector(0):" + var_awakening.get_vector(0));
if(var_awakening.get_ct_vector(0).Get() > var_awakening.get_vector(0)) { // 濠羹 藤颤歜 羹觼
obj.sq_IntVectClear();
obj.sq_IntVectPush(3); // substate撮?
obj.sq_addSetStatePacket(STATE_ATTACK, STATE_PRIORITY_USER, true);
}
else { // 藤颤歜桧 测 腑棻..
obj.startCantUseSkillWarning();
if (obj.isMessage()) {
sq_AddMessage(414); // 414>藤颤歜殓栖棻.
}
}
return;
}
}
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
if(obj.getAttackIndex() == 3) {
local bDownKey = sq_IsDownKey(obj, 1, false);
local chargeTime = sq_GetIntData(obj, SKILL_AVENGER_AWAKENING, 0) * 2; //薄? 葆彻 奢问 譆渠 醱瞪卫除
local stateTimer = obj.sq_getStateTimer();
print("\n chargeTime:" + chargeTime + " stateTimer:" + stateTimer);
// 蹂羶饵?
// 谏醱 ?缣 谏醱卫除虏踯 ?脑贼 濠翕戏煎 剩横骨栖棻..
if(!bDownKey || stateTimer >= chargeTime) { // 桨击 嗥历棻朝匙擎..
obj.sq_IntVectClear();
obj.sq_IntVectPush(4); // substate撮?
obj.sq_IntVectPush(stateTimer); // 晦狱缣怃 跷陛 奢问溘
obj.sq_addSetStatePacket(STATE_ATTACK, STATE_PRIORITY_USER, true);
return;
}
}
}