Sqr/character/atmage/icechakram/po_aticechakramlarge.nut

236 lines
7.3 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.

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);
}
}