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.
		
		
		
		
		
			
		
			
	
	
		
			103 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
| 
											2 years ago
										 | 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(), | ||
|  |                 HitPos = target.Pos(), | ||
|  |                 HitDir = Vector3.up, | ||
|  |                 IsRight = true, | ||
|  |                 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; | ||
|  |         } | ||
|  |     } | ||
|  | } |