上架装备跨界插件
This commit is contained in:
@@ -10,6 +10,8 @@ class CustomizeWeapon_AncientRelic {
|
||||
|
||||
//是否有荒古装备
|
||||
IsAncientRelic = false;
|
||||
//当前荒古装备信息
|
||||
CurrentAncientRelicInfo = null;
|
||||
//当前魔能积攒数值
|
||||
MagicEnergyValue = 0;
|
||||
//当前魔能开启状态
|
||||
@@ -23,6 +25,7 @@ class CustomizeWeapon_AncientRelic {
|
||||
//魔能状态伤害增加率
|
||||
MagicDamageRate = 1.0;
|
||||
|
||||
EffectSetFlag = null;
|
||||
|
||||
constructor() {
|
||||
Info = {};
|
||||
@@ -38,10 +41,12 @@ class CustomizeWeapon_AncientRelic {
|
||||
}
|
||||
local NormalRate = Data.Get();
|
||||
local ExRate = Data.Get();
|
||||
local DefaultMagicEnergyValue = Data.Get();
|
||||
|
||||
Info.rawset(Fbuf, {
|
||||
NormalRate = NormalRate.tofloat() / 100.0 + 1.0,
|
||||
ExRate = ExRate.tofloat() / 100.0 + 1.0
|
||||
ExRate = ExRate.tofloat() / 100.0 + 1.0,
|
||||
DefaultMagicEnergyValue = DefaultMagicEnergyValue.tointeger()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -52,7 +57,7 @@ class CustomizeWeapon_AncientRelic {
|
||||
return MagicEnergyState ? MagicDamageRate : DamageRate;
|
||||
}.bindenv(this));
|
||||
|
||||
DrawAppendCallBackFunc.rawset("AncientRelic", DrawEffect.bindenv(this));
|
||||
// DrawAppendCallBackFunc.rawset("AncientRelic", DrawEffect.bindenv(this));
|
||||
// onAttackParentCallBackFunc.rawset("AncientRelic", OnAttack.bindenv(this));
|
||||
|
||||
// local str = "funcaksdnjkansdknasjdad";
|
||||
@@ -70,6 +75,13 @@ class CustomizeWeapon_AncientRelic {
|
||||
local appendage = CNSquirrelAppendage.sq_GetAppendage(obj, "../etc/rindro/ancientrelic/ancientrelic.nut");
|
||||
if (!appendage) {
|
||||
CNSquirrelAppendage.sq_AppendAppendage(obj, obj, 169, true, "../etc/rindro/ancientrelic/ancientrelic.nut", true);
|
||||
if (CurrentAncientRelicInfo) {
|
||||
DamageRate = CurrentAncientRelicInfo.NormalRate;
|
||||
MagicDamageRate = CurrentAncientRelicInfo.ExRate;
|
||||
MagicEnergyValue = CurrentAncientRelicInfo.DefaultMagicEnergyValue;
|
||||
}
|
||||
//默认魔能值不为0的装备
|
||||
if (MagicEnergyValue != 0) SetEffect();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,7 +89,8 @@ class CustomizeWeapon_AncientRelic {
|
||||
//魔能爆炸
|
||||
function MagicEnergyExplosion(obj) {
|
||||
local OutbreakBool = obj.getMyPassiveObject(48882, 0);
|
||||
if (OutbreakBool && !MagicEnergyState) {
|
||||
if (OutbreakBool && !MagicEnergyState && MagicEnergyValue >= 100) {
|
||||
EffectSetFlag = 7;
|
||||
MagicEnergyState = true;
|
||||
MagicEnergyTimer = Clock();
|
||||
sq_SendDestroyPacketPassiveObject(OutbreakBool);
|
||||
@@ -85,47 +98,83 @@ class CustomizeWeapon_AncientRelic {
|
||||
}
|
||||
|
||||
|
||||
//绘制魔能特效
|
||||
function DrawEffect(args) {
|
||||
if (IsAncientRelic) {
|
||||
//魔能开启状态
|
||||
if (MagicEnergyValue > 0) {
|
||||
if (MagicEnergyState) {
|
||||
if (MagicEnergyStage == 0) {
|
||||
Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/01_red/red_onedodge2.ani");
|
||||
} else if (MagicEnergyStage == 1) {
|
||||
Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/02_yellow/yellow_onedodge2.ani");
|
||||
} else if (MagicEnergyStage == 2) {
|
||||
Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/03_white/white_onedodge2.ani");
|
||||
}
|
||||
}
|
||||
//普通状态
|
||||
else {
|
||||
local Step = ((MagicEnergyValue / 20).tointeger() + 1);
|
||||
if (Step > 5) Step = 5;
|
||||
Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/" + Step + "/particle1.ani");
|
||||
}
|
||||
// //绘制魔能特效
|
||||
// function DrawEffect(args) {
|
||||
// if (IsAncientRelic) {
|
||||
// //魔能开启状态
|
||||
// if (MagicEnergyValue > 0) {
|
||||
// if (MagicEnergyState) {
|
||||
// if (MagicEnergyStage == 0) {
|
||||
// Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/01_red/red_onedodge2.ani");
|
||||
// } else if (MagicEnergyStage == 1) {
|
||||
// Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/02_yellow/yellow_onedodge2.ani");
|
||||
// } else if (MagicEnergyStage == 2) {
|
||||
// Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/open/03_white/white_onedodge2.ani");
|
||||
// }
|
||||
// }
|
||||
// //普通状态
|
||||
// else {
|
||||
// local Step = ((MagicEnergyValue / 20).tointeger() + 1);
|
||||
// if (Step > 5) Step = 5;
|
||||
// Rindro_BaseToolClass.DrawAniEx(args[1], args[2], "etc/rindro/ancientrelic/ani/" + Step + "/particle1.ani");
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
//攻击判定回调
|
||||
function OnAttack() {
|
||||
if (IsAncientRelic) {
|
||||
if (IsAncientRelic && !MagicEnergyState) {
|
||||
MagicEnergyValue++;
|
||||
|
||||
SetEffect();
|
||||
|
||||
if (MagicEnergyValue > 100) MagicEnergyValue = 100;
|
||||
}
|
||||
}
|
||||
|
||||
//设置魔能值与动画关联关系
|
||||
function SetEffect() {
|
||||
if (MagicEnergyValue == 1) EffectSetFlag = 1;
|
||||
if (MagicEnergyValue == 20) EffectSetFlag = 2;
|
||||
if (MagicEnergyValue == 40) EffectSetFlag = 3;
|
||||
if (MagicEnergyValue == 60) EffectSetFlag = 4;
|
||||
if (MagicEnergyValue == 80) EffectSetFlag = 5;
|
||||
if (MagicEnergyValue == 100) EffectSetFlag = 6;
|
||||
}
|
||||
|
||||
function AppendProc(appendage) {
|
||||
if (EffectSetFlag != null && EffectSetFlag <= 6 && !MagicEnergyState) {
|
||||
appendage.sq_DeleteEffectFront();
|
||||
appendage.sq_AddEffectFront("etc/rindro/ancientrelic/ani/" + EffectSetFlag + "/particle1.ani");
|
||||
EffectSetFlag = null;
|
||||
} else if (EffectSetFlag == 7) {
|
||||
appendage.sq_DeleteEffectFront();
|
||||
appendage.sq_AddEffectFront("etc/rindro/ancientrelic/ani/open/01_red/red_onedodge2.ani");
|
||||
EffectSetFlag = null;
|
||||
} else if (EffectSetFlag == 8) {
|
||||
appendage.sq_DeleteEffectFront();
|
||||
appendage.sq_AddEffectFront("etc/rindro/ancientrelic/ani/open/02_yellow/yellow_onedodge2.ani");
|
||||
EffectSetFlag = null;
|
||||
} else if (EffectSetFlag == 9) {
|
||||
appendage.sq_DeleteEffectFront();
|
||||
appendage.sq_AddEffectFront("etc/rindro/ancientrelic/ani/open/03_white/white_onedodge2.ani");
|
||||
EffectSetFlag = null;
|
||||
} else if (EffectSetFlag == 10) {
|
||||
appendage.sq_DeleteEffectFront();
|
||||
EffectSetFlag = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//检测是否穿戴荒古装备
|
||||
function CheckWear() {
|
||||
for (local i = 1; i< 13; ++i) {
|
||||
//编号
|
||||
local Index = L_sq_GetCharacterAttribute(0x1c, i);
|
||||
if (Info.rawin(Index)) {
|
||||
DamageRate = Info[Index].NormalRate;
|
||||
MagicDamageRate = Info[Index].ExRate;
|
||||
CurrentAncientRelicInfo = Info[Index];
|
||||
IsAncientRelic = true;
|
||||
return;
|
||||
}
|
||||
@@ -139,14 +188,16 @@ class CustomizeWeapon_AncientRelic {
|
||||
if (MagicEnergyValue > 0) {
|
||||
if (MagicEnergyState) {
|
||||
//检测魔能变更时间
|
||||
if (Clock() - MagicEnergyTimer >= 7000) {
|
||||
if (Clock() - MagicEnergyTimer >= 1000) {
|
||||
MagicEnergyTimer = Clock();
|
||||
MagicEnergyStage++;
|
||||
EffectSetFlag = 7 + MagicEnergyStage;
|
||||
//爆发结束
|
||||
if (MagicEnergyStage > 2) {
|
||||
MagicEnergyState = false;
|
||||
MagicEnergyStage = 0;
|
||||
MagicEnergyValue = 0;
|
||||
EffectSetFlag = 10;
|
||||
sq_GetCNRDObjectToSQRCharacter(obj).sq_SendCreatePassiveObjectPacket(48883, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -177,6 +228,11 @@ class CustomizeWeapon_AncientRelic {
|
||||
DamageRate = 1.0;
|
||||
//魔能状态伤害增加率
|
||||
MagicDamageRate = 1.0;
|
||||
//移除掉身上的AP
|
||||
local appendage = CNSquirrelAppendage.sq_GetAppendage(obj, "../etc/rindro/ancientrelic/ancientrelic.nut");
|
||||
if (appendage) {
|
||||
CNSquirrelAppendage.sq_RemoveAppendage(obj, "../etc/rindro/ancientrelic/ancientrelic.nut");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -202,4 +258,12 @@ function onAttackParent_appendage_AncientRelic(appendage, realAttacker, damager,
|
||||
}
|
||||
}
|
||||
|
||||
function proc_appendage_ancient(appendage) {
|
||||
if (!appendage) return;
|
||||
local RootTab = getroottable();
|
||||
if (RootTab.rawin("CustomizeWeapon_AncientRelic_Obj")) {
|
||||
RootTab["CustomizeWeapon_AncientRelic_Obj"].AppendProc(appendage);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("AncientRelicFuncN", Lenheart_AncientRelic_Fun);
|
||||
Reference in New Issue
Block a user