This commit is contained in:
2024-03-18 21:37:40 +08:00
commit c4aef8f3a3
313 changed files with 74071 additions and 0 deletions

View File

@@ -0,0 +1,388 @@
SUB_STATE_FIREPILLAR_0 <- 0
SUB_STATE_FIREPILLAR_1 <- 1
SUB_STATE_FIREPILLAR_2 <- 2
SUB_STATE_FIREPILLAR_3 <- 3
SUB_STATE_FIREPILLAR_4 <- 4
function checkExecutableSkill_FirePillar(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_FIREPILLAR);
if(b_useskill)
{
obj.sq_IsEnterSkillLastKeyUnits(SKILL_FIREPILLAR);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FirePillar(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK)
{
return obj.sq_IsCommandEnable(SKILL_FIREPILLAR); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW);
}
return true;
}
function onSetState_FirePillar(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.getVar("firepillar").clear_vector();
obj.getVar("firepillar").push_vector(0);
obj.getVar("firepillar").push_vector(0);
obj.getVar("firepillar").push_vector(0);
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.getVar().push_vector(0);
if(substate == SUB_STATE_FIREPILLAR_0)
{
obj.sq_PlaySound("MW_FPILLAR_READY");
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR1);
addElementalChain_ATMage(obj, ENUM_ELEMENT_FIRE);
}
else if(substate == SUB_STATE_FIREPILLAR_1)
{
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR2);
}
else if(substate == SUB_STATE_FIREPILLAR_2)
{
obj.sq_PlaySound("MW_FPILLAR");
if(obj.isMyControlObject())
{
local skillLevel = obj.sq_GetSkillLevel(SKILL_FIREPILLAR);
local arriveTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 0); // 0. 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾)
local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_FIREPILLAR, STATE_FIREPILLAR, 2, 1.0); // 2. 颤问 奢问溘(%)
local distance = obj.sq_GetLevelData(SKILL_FIREPILLAR, 1, skillLevel); // 1.釭陛朝 剪葬
local term = obj.sq_GetIntData(SKILL_FIREPILLAR, 2); // 2. 棻钦?? 除问
sq_BinaryStartWrite();
sq_BinaryWriteDword(attackRate); // 横鸥奢问溘
sq_BinaryWriteDword(distance); // 釭陛朝 剪葬
sq_BinaryWriteDword(arriveTime); // 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾)
sq_BinaryWriteDword(term); // 棻钦?? 除问
obj.sq_SendCreatePassiveObjectPacket(24254, 0, 0, 1, 0); //
}
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR3);
}
else if(substate == SUB_STATE_FIREPILLAR_3)
{
}
else if(substate == SUB_STATE_FIREPILLAR_4)
{
}
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
// SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function prepareDraw_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onProc_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
//print(" substate:" + substate);
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onProcCon_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1)
{
local bDownKey = obj.isDownSkillLastKey();
local stateTimer = obj.sq_GetStateTimer();
local grabMaxTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 1); // 1. 模辨给桧 濩坚 毡朝 譆渠卫除
// 蹂羶饵?
// 谏醱 ?缣 谏醱卫除虏踯 ?脑贼 濠翕戏煎 剩横骨栖棻..
if(!bDownKey || stateTimer >= grabMaxTime)// 桨击 嗥历棻朝匙擎..
//if(!bDownKey)// 桨击 嗥历棻朝匙擎..
{ // 桨击 嗥历棻朝匙擎..
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_2); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_USER, true);
return;
}
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_FirePillar(obj)
{
if(!obj) return;
if(!obj.isMyControlObject()) {
return;
}
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
print( " onend:" + substate);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_1); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onKeyFrameFlag_FirePillar(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_FirePillar(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onAfterSetState_FirePillar(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onBeforeDamage_FirePillar(obj, attacker, boundingBox, isStuck)
//function onBeforeDamage_FirePillar(obj, attacker, boundingBox)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_1)
{
// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻.
local isMeleeAttack = attacker.isMeleeAttack();
local isMissileObj = attacker.isMissileObject();
if((isMeleeAttack == false) || (isMissileObj == true))
{
local direction = sq_GetOppositeDirection(obj. sq_GetDirection(obj));
if(direction == sq_GetDirection(attacker))
{
local attackerInfo = sq_GetCurrentAttackInfo(attacker);
print( " isMeleeAttack:" + isMeleeAttack);
print( " isMissileObj:" + isMissileObj);
if(attackerInfo)
{
local rateDamager = sq_GetAttackInfoHitDelayRateDamager(attackerInfo);
local backupRate = rateDamager * 100.0;
obj.getVar("firepillar").set_vector(VECTOR_FLAG_0, backupRate.tointeger());
sq_SetAttackInfoHitDelayRateDamager(attackerInfo, 0.0); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻..
obj.getVar("firepillar").set_vector(VECTOR_FLAG_1, sq_GetCurrentAttackeDamageAct(attackerInfo));
print( " DAMAGEACT_NONE");
sq_SetCurrentAttackeDamageAct(attackerInfo, DAMAGEACT_NONE);
obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 1);
}
}
}
}
}
function onAfterDamage_FirePillar(obj, attacker, boundingBox)
{
if(!obj) return;
local substate = obj.getSkillSubState();
// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻.
if(substate == SUB_STATE_FIREPILLAR_1)
{
if(obj.getVar("firepillar").get_vector(VECTOR_FLAG_2))
{
local attackerInfo = sq_GetCurrentAttackInfo(attacker);
if(attackerInfo)
{
local backupRate = obj.getVar("firepillar").get_vector(VECTOR_FLAG_0);
local damageAct = obj.getVar("firepillar").get_vector(VECTOR_FLAG_1);
local rateDamager = backupRate.tofloat() / 100.0;
sq_SetAttackInfoHitDelayRateDamager(attackerInfo, rateDamager); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻..
sq_SetCurrentAttackeDamageAct(attackerInfo, damageAct);
}
obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 0);
}
}
}

View File

@@ -0,0 +1,241 @@
function setCustomData_po_ATFirePillar(obj, reciveData)
{
if(!obj) return;
local attackRate = reciveData.readDword(); // 横鸥奢问溘
local distance = reciveData.readDword(); // 釭陛朝 剪葬
local arriveTime = reciveData.readDword(); // 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾)
local term = reciveData.readDword();
initGetVarTimer(obj, 1, term, -1);
obj.getVar("state").clear_vector(); // state vector
obj.getVar("state").push_vector(0);
obj.getVar("flag").clear_vector();
obj.getVar("flag").push_vector(0);
obj.getVar("flag").push_vector(0);
obj.getVar("flag").push_vector(0);
obj.getVar("flag").push_vector(0);
obj.getVar("flag").push_vector(0);
local x = sq_GetXPos(obj);
local y = sq_GetYPos(obj);
local z = sq_GetZPos(obj);
obj.getVar("dis").clear_vector();
obj.getVar("dis").push_vector(x);
obj.getVar("dis").push_vector(y);
obj.getVar("dis").push_vector(z);
obj.getVar("dis").push_vector(distance);
obj.getVar("arriveTime").clear_vector();
obj.getVar("arriveTime").push_vector(arriveTime);
obj.getVar("frmIndex").clear_vector();
obj.getVar("frmIndex").push_vector(0);
obj.getVar("frmIndex").push_vector(0);
obj.getVar("frmIndex").push_vector(0);
local pAttack = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttackBonusRate(pAttack, attackRate);
if(obj.isMyControlObject()) {
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
}
function setState_po_ATFirePillar(obj, state, datas)
{
if(!obj) return;
local passiveState = state;
obj.getVar("state").set_vector(0, passiveState);
obj.getVar("flag").set_vector(VECTOR_FLAG_0, 0);
//initGetVarTimer(obj, 1, 400, 10);
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
{
}
else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
{
local ani = obj.getCustomAnimation(0);
obj.setCurrentAnimation(ani);
}
else if(passiveState == PASSIVEOBJ_SUB_STATE_2)
{
}
}
function procAppend_po_ATFirePillar(obj)
{
if(!obj) return;
local state = obj.getVar("state").get_vector(0);
local passiveState = state;
local pAni = obj.getCurrentAnimation();
local frmIndex = sq_GetAnimationFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
local objX = sq_GetXPos(obj);
local objY = sq_GetYPos(obj);
local parentObj = obj.getParent();
if(!parentObj)
{
if(obj.isMyControlObject())
{
sq_SendDestroyPacketPassiveObject(obj);
return;
}
}
if(parentObj.getState() != STATE_FIREPILLAR)
{
//if(passiveState == PASSIVEOBJ_SUB_STATE_0)
//{
//if(obj.isMyControlObject())
//{
//local pIntVec = sq_GetGlobalIntVector();
//
//sq_IntVectorClear(pIntVec);
//sq_IntVectorPush(pIntVec, 0);
//
//obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
//return;
//}
//}
}
if(passiveState == PASSIVEOBJ_SUB_STATE_0)
{
local fireT = obj.getVar("arriveTime").get_vector(0);
local srcX = obj.getVar("dis").get_vector(0); // 卫蒙x
local srcY = obj.getVar("dis").get_vector(1); // 卫蒙y
local srcZ = obj.getVar("dis").get_vector(2); // 卫蒙z
local distance = obj.getVar("dis").get_vector(3); // 识 桧翕剪葬
local v = sq_GetUniformVelocity(0, distance, currentT, fireT);
print(" distance:" + distance);
local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v);
local dstY = srcY;
sq_setCurrentAxisPos(obj, 0, dstX);
if(currentT >= fireT)
{
if(obj.isMyControlObject())
{
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
}
local hitT = obj.getVar().get_timer_vector(0);
if(hitT)
{
if(hitT.isOnEvent(currentT) == true)
{
print(" reset");
obj.resetHitObjectList();
}
}
}
local oldFrmIndex = obj.getVar("frmIndex").get_vector(VECTOR_FLAG_0);
if(frmIndex != oldFrmIndex)
{
obj.getVar("frmIndex").set_vector(VECTOR_FLAG_0, frmIndex);
local x = objX;
local y = objY;
local cnt = obj.getVar("frmIndex").get_vector(VECTOR_FLAG_1);
local size = 3;
local iKeyList =[];
iKeyList.resize(size);
iKeyList[0] = 0;
iKeyList[1] = 15;
iKeyList[2] = -15;
local yList =[];
yList.resize(size);
yList[0] = -1;
yList[1] = 1;
yList[2] = -2;
local pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATFirePillar/3_firetail_dodge.ani", true, x, y + yList[cnt], iKeyList[cnt]);
pooledObj.setCurrentDirection(obj.getDirection());
cnt = cnt + 1;
if(cnt > (size - 1))
{
cnt = 0;
}
obj.getVar("frmIndex").set_vector(VECTOR_FLAG_1, cnt);
}
}
function onChangeSkillEffect_po_ATFirePillar(obj, skillIndex, reciveData)
{
if(!obj) return;
}
function onDestroyObject_po_ATFirePillar(obj, object)
{
if(!obj) return;
}
function onKeyFrameFlag_po_ATFirePillar(obj, flagIndex)
{
}
function onEndCurrentAni_po_ATFirePillar(obj)
{
if(!obj) return;
local state = obj.getVar("state").get_vector(0);
local passiveState = state;
if(passiveState == PASSIVEOBJ_SUB_STATE_1)
{
if(obj.isMyControlObject())
{
sq_SendDestroyPacketPassiveObject(obj);
}
}
}