Sqr/character/atmage/icechakram/po_aticechakramlarge.nut

236 lines
7.3 KiB
Plaintext
Raw Normal View History

2024-03-18 21:37:40 +08:00
ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT <- 0;
ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END <- 1;
ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN <- 2;
ENUM_PIC_SUB_STATE_FLYING <-10; //PIC == PO_ICE_CHAKRAM
ENUM_PIC_SUB_STATE_SPIN <-11;
ENUM_PIC_SUB_STATE_READY_EXPLOSION <-12; // ?嫦遽绿 : ?拥飓
ENUM_PIC_SUB_STATE_EXPLOSION <-13; // 夥煎 ?嫦卫
ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT <- -1;
ENUM_PIC_CUSTOM_ATTACK_INFO_SPIN <- 0;
ENUM_PIC_CUSTOM_ATTACK_INFO_EXPLOSION <- 1;
ENUM_PIC_CUSTOM_ANI_READY <- 0;
ENUM_PIC_CUSTOM_ANI_EXPLOSION <- 1;
function setAttackInfo_po_ATIceChakramLarge(obj, attackInfoIndex)
{
if(attackInfoIndex != ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT)
sq_SetCurrentAttackInfoFromCustomIndex(obj, attackInfoIndex);
local parentObj = obj.getTopCharacter();
if(parentObj) { // 棻钦??蒂 嫔? 颤桧该.
// 赎坚葬 棻钦 ?? 奢问溘 扑姜
local sqrParent = sq_ObjectToSQRCharacter(parentObj);
if(sqrParent) {
local power = sqrParent.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM , STATE_ICECHAKRAM, 1, 1.0);
local attackInfo = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttackBonusRate(attackInfo, power);
sq_SetCurrentAttackeHitStunTime(attackInfo, 0); // 奢问 唳霜卫除 桡拥晦.
}
}
}
function setCustomData_po_ATIceChakramLarge(obj, reciveData)
{
if(!obj) return;
local parentObj = obj.getTopCharacter();
if(parentObj) { // 棻钦??蒂 嫔? 颤桧该.
local multiHitTimeGab = sq_GetLevelData(parentObj, SKILL_ICECHAKRAM, 5, sq_GetSkillLevel(parentObj, SKILL_ICECHAKRAM));
obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT, multiHitTimeGab, 0, true); // 0桧贼 鼠?渠
// 赎坚葬 棻钦 ?? 奢问溘 扑姜
setAttackInfo_po_ATIceChakramLarge(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_DEFAULT);
}
local horizonAngle = reciveData.readFloat();
local verticalAngle = reciveData.readFloat();
local moveSpeed = reciveData.readDword();
local maxDistance = reciveData.readDword();
local group = reciveData.readDword(); // 颤啃 斜瑜
local uid = reciveData.readDword(); // 颤啃 Uid
local target = sq_GetObject(obj, group, uid);
local var = obj.getVar();
var.setObject(0,target);
obj.sq_SetMoveParticle("Particle/ATIceChakramLarge.ptl", horizonAngle, verticalAngle);
sq_SetSpeedToMoveParticle(obj,0,moveSpeed);
//卫除 = 剪葬/楼紫
local flyTiime = maxDistance.tofloat()/moveSpeed.tofloat() * 1000.0;
// 桧翕 姜卫? 卫除.
obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END, flyTiime.tointeger(), 1, false); // 0桧贼 鼠?渠
obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_FLYING); // 晦狱 蝶才桧?朝 陈嬴陛朝 鼻鹧.
sq_CreateParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl",obj,0,0,-40,true,50,flyTiime.tointeger(),100);
obj.sq_PlaySound("RAGEBLAST_THROW_LOOP",2711);
}
function destroy_po_ATIceChakramLarge(obj)
{
sq_RemoveParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl", obj);
obj.stopSound(2711);
}
function onTimeEvent_po_ATIceChakramLarge(obj, timeEventIndex, timeEventCount)
{
if(!obj)
return true;
if(timeEventIndex == ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT)
{
obj.resetHitObjectList(); //棻钦??蒂嫔? ??螃粽薛? 葬蝶?蒂 葬掸.
return false; // false贼 啗楼 属寥 (timeEventCount苹遴?陛 嵘?桧塭贼 timeEventCount 虏踯 属寥)
}
else if(timeEventIndex == ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MOVE_END)
{
//桧翕 部桧贼 薯濠葬 ?瞪.
obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_SPIN);
printc("ENUM_PIC_SUB_STATE_SPIN");
return true;
}
else if(timeEventIndex == ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN)
{
// ?嫦
obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_READY_EXPLOSION);
}
return true;
}
function setState_po_ATIceChakramLarge(obj, state, datas)
{
if(!obj) return;
if(state == ENUM_PIC_SUB_STATE_SPIN)
{
// 试虽 ??赝 薯剪.
sq_RemoveParticle("PassiveObject/Character/Mage/Particle/ATIceChakramDust.ptl", obj);
setAttackInfo_po_ATIceChakramLarge(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_SPIN);
// 薯濠葬缣怃 蝶?. 颤啃桧 桡棻贼 夥煎 ?嫦
obj.sq_RemoveMoveParticle();
local var = obj.getVar();
local target = var.getObject(0);
if (target) {
obj.setTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_SPIN, 500, 1, false); // 0桧贼 鼠?渠
}
else {
obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_EXPLOSION);
}
}
else if(state == ENUM_PIC_SUB_STATE_READY_EXPLOSION)
{
setCurrentAnimationFromCutomIndex(obj, ENUM_PIC_CUSTOM_ANI_READY);
}
else if(state == ENUM_PIC_SUB_STATE_EXPLOSION)
{
obj.stopSound(2711);
// 棻钦??暧 颤桧该蒂 酝钦.
obj.stopTimeEvent(ENUM_PO_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT);
setCurrentAnimationFromCutomIndex(obj, ENUM_PIC_CUSTOM_ANI_EXPLOSION);
sq_SetCurrentAttackInfoFromCustomIndex(obj, ENUM_PIC_CUSTOM_ATTACK_INFO_EXPLOSION);
local parentObj = obj.getTopCharacter();
if(parentObj) {
// ?嫦 ?? 奢问溘 扑姜
local sqrParent = sq_ObjectToSQRCharacter(parentObj);
if(sqrParent) {
local power = sqrParent.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM , STATE_ICECHAKRAM, 2, 1.0);
local attackInfo = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttackBonusRate(attackInfo, power);
sq_SetCurrentAttackeHitStunTime(attackInfo, 0); // 奢问 唳霜卫除 桡拥晦.
}
}
local flashScreen = sq_flashScreen(obj, 0, 80, 0, 120, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_addFlashScreen(flashScreen, 0, 960, 320, 120, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
sq_SetMyShake(obj,4,340);
}
}
function onAttack_po_ATIceChakramLarge(obj, damager, boundingBox, isStuck)
{ // ?颤 鼠楼撩
if (!obj)
return 0;
if (isStuck)
return 0;
local var = obj.getVar();
var.push_obj_vector(damager);
local target = var.getObject(0);
if(target && isSameObject(target,damager))//颤啃击 奢问?棻贼.
{
// 颤啃桧 桧翕陛栋? 偌羹塭贼 鬼薯煎 桧翕. //蜃晦 桧雌 嫔纂煎.
if(!sq_IsFixture(damager) && sq_IsGrabable(obj,target)) {
sq_SetCurrentPos(damager, sq_GetDistancePos(obj.getXPos(), obj.getDirection(), 100), obj.getYPos(), damager.getZPos());
}
}
return 0;
}
function getCustomHitEffectFileName_po_ATIceChakramLarge(obj, isAttachOnDamager)
{
// 伞鼠 号戏贼 滓 嵘嫦. 奢问?朝 偎热陛 号击 热烟 瞳啪 ?卫
local var = obj.getVar();
local maxN = var.get_obj_vector_size();
if(maxN > 3)
maxN = 3;
if(sq_getRandom(0,maxN) == 0)
return "PassiveObject/Character/Mage/Animation/ATIceChakram/fire/08_chakrahit_dodge.ani";
else
return "";
}
function procAppend_po_ATIceChakramLarge(obj)
{
//obj.sendDestroyPacket(true);
}
function onKeyFrameFlag_po_ATIceChakramLarge(obj, flagIndex)
{
if(!obj) return true;
if(flagIndex == 1) {
}
return true;
}
function onEndCurrentAni_po_ATIceChakramLarge(obj)
{
if(!obj) return;
if(obj.getState() == ENUM_PIC_SUB_STATE_READY_EXPLOSION)
{
obj.sendStateOnlyPacket(ENUM_PIC_SUB_STATE_EXPLOSION);
}
else if(obj.getState() == ENUM_PIC_SUB_STATE_EXPLOSION)
{
obj.sendDestroyPacket(true);
}
}