You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.9 KiB
C#
101 lines
3.9 KiB
C#
using UnityEngine;
|
|
using Articy.Touhou;
|
|
|
|
namespace Game
|
|
{
|
|
public static partial class UtilBuff
|
|
{
|
|
private static void BuffEffect(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
switch (obj)
|
|
{
|
|
case IObjectWithFeatureBuffEffectAttack _:
|
|
BuffEffectAttack(data, buffData);
|
|
break;
|
|
case IObjectWithFeatureBuffEffectProperty _:
|
|
BuffEffectProperty(data, buffData);
|
|
break;
|
|
case IObjectWithFeatureBuffEffectAddBuff _:
|
|
BuffEffectAddBuff(data, buffData);
|
|
break;
|
|
case IObjectWithFeatureBuffEffectClearLevel _:
|
|
BuffEffectClearLevel(data, buffData);
|
|
break;
|
|
case IObjectWithFeatureBuffEffectSetSpeed _:
|
|
BuffEffectSetSpeed(data, buffData);
|
|
break;
|
|
}
|
|
}
|
|
private static void BuffEffectAttack(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
var buffAttack = ((IObjectWithFeatureBuffEffectAttack)obj).GetFeatureBuffEffectAttack();
|
|
|
|
var owner = buffData.Entity;
|
|
var target = buffData.Target;
|
|
target.skill.HitInfo.Add(new SkillHitInfo()
|
|
{
|
|
SkillParam = new AttackBehaviour()
|
|
{
|
|
isFlow = buffAttack.IsFlow,
|
|
damageRate = buffAttack.NumberValue * (1 + buffAttack.NumberValueLevel * data.Level.Value),
|
|
hitId = 0,
|
|
},
|
|
OwnerEntity = owner.ID(),
|
|
HitEntity = target.ID(),
|
|
HitDir = Vector3.up,
|
|
IsDealed = false,
|
|
SkillId = "",
|
|
Performance = (uint)0,
|
|
IsBreak = buffAttack.IsStun,
|
|
});
|
|
}
|
|
private static void BuffEffectProperty(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
var buffProperty = ((IObjectWithFeatureBuffEffectProperty)obj).GetFeatureBuffEffectProperty();
|
|
|
|
var target = buffData.Target;
|
|
var property = target.property.Property[(EProperty)buffProperty.Property];
|
|
|
|
if ((EPropertyChangeType)buffProperty.PropertyChangeType == EPropertyChangeType.Value)
|
|
{
|
|
property.Value += (int)buffProperty.NumberValue;
|
|
}
|
|
else
|
|
{
|
|
property.Percent += (int)buffProperty.NumberValue;
|
|
}
|
|
|
|
}
|
|
private static void BuffEffectAddBuff(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
var buffAddBuff = ((IObjectWithFeatureBuffEffectAddBuff)obj).GetFeatureBuffEffectAddBuff();
|
|
|
|
var owner = buffData.Entity;
|
|
var target = buffData.Target;
|
|
Util.AddBuff(owner.ID(), target.ID(), buffAddBuff.Buff.TechnicalName, 0, buffAddBuff.BuffLevel * (1 + data.Level.Value));
|
|
}
|
|
private static void BuffEffectClearLevel(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
var buffClearLevel = ((IObjectWithFeatureBuffEffectClearLevel)obj).GetFeatureBuffEffectClearLevel();
|
|
|
|
var owner = buffData.Entity;
|
|
var target = buffData.Target;
|
|
Util.RemoveBuff(target.ID(), data.BuffId);
|
|
}
|
|
private static void BuffEffectSetSpeed(BuffData data, BuffEffectData buffData)
|
|
{
|
|
var obj = buffData.BuffObj;
|
|
var buffSetSpeed = ((IObjectWithFeatureBuffEffectSetSpeed)obj).GetFeatureBuffEffectSetSpeed();
|
|
|
|
var owner = buffData.Entity;
|
|
var target = buffData.Target;
|
|
|
|
target.move.Velocity = target.hp.LastDamageDir;
|
|
}
|
|
}
|
|
} |