237 lines
7.2 KiB
Plaintext
237 lines
7.2 KiB
Plaintext
|
|
HOLONG_LIGHT_VAR_IS_LEFT <- 0;
|
|||
|
|
HOLONG_LIGHT_VAR_APPENDAGE <- 1;
|
|||
|
|
HOLONG_LIGHT_VAR_HORIZON_ANGLE <- 2;
|
|||
|
|
HOLONG_LIGHT_VAR_VERTICAL_ANGLE <- 3;
|
|||
|
|
HOLONG_LIGHT_VAR_LIFE_TIME <- 4;
|
|||
|
|
HOLONG_LIGHT_VAR_DEFENCE_UP <- 5;
|
|||
|
|
HOLONG_LIGHT_VAR_ATTACK_POWER <- 6;
|
|||
|
|
HOLONG_LIGHT_VAR_SHOOT_TIME <- 7;
|
|||
|
|
HOLONG_LIGHT_VAR_COOL_TIME <- 8;
|
|||
|
|
|
|||
|
|
|
|||
|
|
HOLONG_LIGHT_STATE_BUFF <- 2; // 渠晦 鼻鹧 : 议葛搅缣 帼?蒂 勘横遽棻. : ?卫粽 蝶才桧?朝 2睡搅 卫蒙?棻.
|
|||
|
|
HOLONG_LIGHT_STATE_ATTACK <- 3; // 奢问 : 饵轿肾横 颤啃击 奢问?虽虏 帼?朝 饵塭霞棻.
|
|||
|
|
HOLONG_LIGHT_STATE_DESTROY <- 4; // 薯濠葬怃 饵塭霞棻.
|
|||
|
|
HOLONG_LIGHT_STATE_EXPLOSION <- 5; // ?嫦
|
|||
|
|
|
|||
|
|
|
|||
|
|
HOLONG_LIGHT_CUSTOM_ANI_MOVE <- 0; // 桧翕卫 拥栖
|
|||
|
|
HOLONG_LIGHT_CUSTOM_ANI_DESTROY <- 1; // ?惚卫 拥栖
|
|||
|
|
HOLONG_LIGHT_CUSTOM_ANI_SHOOT <- 2; // 嫦饵卫 陈嬴陛朝 拥栖
|
|||
|
|
HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION <- 3; //?嫦 拥栖
|
|||
|
|
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATHolongLight(obj, receiveData)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local isLeft = receiveData.readBool();
|
|||
|
|
local horizonAngle = receiveData.readFloat();
|
|||
|
|
local verticalAngle = receiveData.readFloat();
|
|||
|
|
local lifeTime = receiveData.readDword();
|
|||
|
|
local defenceUp = receiveData.readDword();
|
|||
|
|
local attackPower = receiveData.readDword();
|
|||
|
|
local shootTime = receiveData.readDword();
|
|||
|
|
local coolTime = receiveData.readDword();
|
|||
|
|
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
|
|||
|
|
var.setBool(HOLONG_LIGHT_VAR_IS_LEFT,isLeft);
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_BUFF);
|
|||
|
|
|
|||
|
|
|
|||
|
|
var.setFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE, horizonAngle);
|
|||
|
|
var.setFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE, verticalAngle);
|
|||
|
|
var.setInt(HOLONG_LIGHT_VAR_LIFE_TIME, lifeTime);
|
|||
|
|
var.setInt(HOLONG_LIGHT_VAR_DEFENCE_UP, defenceUp);
|
|||
|
|
var.setInt(HOLONG_LIGHT_VAR_SHOOT_TIME, shootTime);
|
|||
|
|
var.setInt(HOLONG_LIGHT_VAR_COOL_TIME, coolTime);
|
|||
|
|
|
|||
|
|
sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), attackPower);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onTimeEvent_po_ATHolongLight(obj, timeEventIndex, timeEventCount)
|
|||
|
|
{
|
|||
|
|
if(!obj)
|
|||
|
|
return false;
|
|||
|
|
|
|||
|
|
if(obj.isMyControlObject() && timeEventIndex == 0)
|
|||
|
|
{
|
|||
|
|
if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) {
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
|
|||
|
|
|
|||
|
|
local mage = sq_ObjectToSQRCharacter(obj.getTopCharacter());
|
|||
|
|
if (mage)
|
|||
|
|
mage.sq_RemoveSkillLoad(SKILL_HOLONG_LIGHT);
|
|||
|
|
}
|
|||
|
|
return true; // true贼 属寥 酝钦
|
|||
|
|
}
|
|||
|
|
else if( timeEventIndex == 1 )
|
|||
|
|
{
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onDestroyObject_po_ATHolongLight(obj, destroyObj)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
local parentObj = obj.getParent();
|
|||
|
|
parentObj = sq_ObjectToSQRCharacter(parentObj);
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(!parentObj || isSameObject(parentObj,destroyObj)) { //睡赅 偌羹陛 ?惚肾贼 饵塭飓
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onAttack_po_ATHolongLight(obj, damager, boundingBox, isStuck)
|
|||
|
|
{
|
|||
|
|
if(!obj)
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function setState_po_ATHolongLight(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
|
|||
|
|
// 帼? 赅萄
|
|||
|
|
if (state == HOLONG_LIGHT_STATE_BUFF) {
|
|||
|
|
|
|||
|
|
local lifeTime = var.getInt(HOLONG_LIGHT_VAR_LIFE_TIME);
|
|||
|
|
local defenceUp = var.getInt(HOLONG_LIGHT_VAR_DEFENCE_UP);
|
|||
|
|
|
|||
|
|
var.push_ct_vector(); // 颤桧该 跷陛
|
|||
|
|
local timer = var.get_ct_vector(0);
|
|||
|
|
timer.Reset();
|
|||
|
|
timer.Start(500,0);
|
|||
|
|
obj.setTimeEvent(0,lifeTime,1,false); // 0廓 樯策蝶暧 颤桧该, 5蟾钦嫔 桧渐? 嫦当, 1廓虏, 籀挤缚 褒?寰?.
|
|||
|
|
|
|||
|
|
local parentObj = obj.getParent();
|
|||
|
|
printc("lifeTime " +lifeTime);
|
|||
|
|
printc("defenceUp " +defenceUp);
|
|||
|
|
|
|||
|
|
local appendage = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE, false, defenceUp.tofloat() , lifeTime);
|
|||
|
|
if(appendage && parentObj) {
|
|||
|
|
appendage.sq_AddChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE, false, defenceUp.tofloat());
|
|||
|
|
appendage.sq_Append(parentObj,parentObj);
|
|||
|
|
|
|||
|
|
local var2 = obj.getVar("holong");
|
|||
|
|
|
|||
|
|
printc("var2 " +var2);
|
|||
|
|
var2.setAppendage(HOLONG_LIGHT_VAR_APPENDAGE, appendage);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (state == HOLONG_LIGHT_STATE_ATTACK) {
|
|||
|
|
local var2 = obj.getVar("holong");
|
|||
|
|
local append = var2.getAppendage(HOLONG_LIGHT_VAR_APPENDAGE);
|
|||
|
|
|
|||
|
|
if(append)
|
|||
|
|
append.setValid(false);
|
|||
|
|
|
|||
|
|
local horizonAngle = var.getFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE);
|
|||
|
|
local verticalAngle = var.getFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE);
|
|||
|
|
|
|||
|
|
local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_SHOOT);
|
|||
|
|
obj.setCurrentAnimation(shootAni);
|
|||
|
|
sq_SetfRotateAngle(shootAni, sq_ToRadian(-horizonAngle));
|
|||
|
|
|
|||
|
|
local shootTime = var.getInt(HOLONG_LIGHT_VAR_SHOOT_TIME);
|
|||
|
|
obj.setTimeEvent(1,shootTime,1,false);
|
|||
|
|
|
|||
|
|
obj.sq_SetMoveParticle("Particle/ATHolongLight.ptl", horizonAngle, verticalAngle);
|
|||
|
|
|
|||
|
|
sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATHolongLight/shot_effect_dodge.ani", 0, 0, 0);
|
|||
|
|
|
|||
|
|
obj.sq_PlaySound("LAMPLIGHT_ATK");
|
|||
|
|
}
|
|||
|
|
else if (state == HOLONG_LIGHT_STATE_DESTROY) {
|
|||
|
|
local destroyAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_DESTROY);
|
|||
|
|
obj.setCurrentAnimation(destroyAni);
|
|||
|
|
}
|
|||
|
|
else if (state == HOLONG_LIGHT_STATE_EXPLOSION) {
|
|||
|
|
|
|||
|
|
local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION);
|
|||
|
|
obj.setCurrentAnimation(shootAni);
|
|||
|
|
obj.sq_RemoveMoveParticle();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function procAppend_po_ATHolongLight(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
local xDistance = -26;
|
|||
|
|
local timer = var.get_ct_vector(0);
|
|||
|
|
if(!timer)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
local currentTime = timer.Get();
|
|||
|
|
local zDistance = sq_GetAccel(0, 35, currentTime, 300, true);;
|
|||
|
|
|
|||
|
|
|
|||
|
|
local isLeft = var.getBool(HOLONG_LIGHT_VAR_IS_LEFT);
|
|||
|
|
if(isLeft)
|
|||
|
|
xDistance = -26 + sq_GetAccel(0, 52, currentTime, 300, true);
|
|||
|
|
|
|||
|
|
|
|||
|
|
local parentObj = obj.getParent();
|
|||
|
|
if(obj.sq_GetParentState() == STATE_DIE) // 避戏贼 饵塭飓
|
|||
|
|
obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) { // 桧翕?阳 拥栖 渗唳
|
|||
|
|
|
|||
|
|
local isDash = false;
|
|||
|
|
if(obj.sq_GetParentState() == STATE_DASH){
|
|||
|
|
if(!obj.isCurrentAnimationIndex(HOLONG_LIGHT_CUSTOM_ANI_MOVE))
|
|||
|
|
obj.setCurrentAnimation(obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_MOVE));
|
|||
|
|
isDash = true;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
local defaultAni = obj.getDefaultAnimation();
|
|||
|
|
local currentAni = obj.getCurrentAnimation();
|
|||
|
|
if(!sq_IsSameAni(defaultAni,currentAni))
|
|||
|
|
obj.setCurrentAnimation(defaultAni);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(parentObj) {
|
|||
|
|
local x = sq_GetDistancePos(parentObj.getXPos(),parentObj.getDirection(),xDistance);
|
|||
|
|
local y = parentObj.getYPos() - 1;
|
|||
|
|
local z = parentObj.getZPos() + sq_GetShuttleValue(90, 113,sq_GetObjectTime(obj),500) - zDistance;
|
|||
|
|
obj.setDirection(parentObj.getDirection());
|
|||
|
|
sq_SetCurrentPos(obj, x, y, z);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEndCurrentAni_po_ATHolongLight(obj)
|
|||
|
|
{
|
|||
|
|
if(!obj) return;
|
|||
|
|
|
|||
|
|
if(obj.getState() == HOLONG_LIGHT_STATE_DESTROY) {
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
else if(obj.getState() == HOLONG_LIGHT_STATE_EXPLOSION) {
|
|||
|
|
if(obj.isMyControlObject())
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|