S7-03 + S7-04 + S7-05
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using GeometryTD.CustomUtility;
|
||||
using UnityEngine;
|
||||
|
||||
namespace GeometryTD.Definition
|
||||
{
|
||||
@@ -8,6 +9,9 @@ namespace GeometryTD.Definition
|
||||
{
|
||||
public int BaseDamage { get; set; }
|
||||
public AttackPropertyType AttackPropertyType { get; set; }
|
||||
public int SourceEntityId { get; set; }
|
||||
public int ProjectileEntityId { get; set; }
|
||||
public Vector3 OriginPosition { get; set; }
|
||||
public TagRuntimeData[] TagRuntimes { get; set; } = Array.Empty<TagRuntimeData>();
|
||||
|
||||
public AttackPayload Clone()
|
||||
@@ -16,6 +20,9 @@ namespace GeometryTD.Definition
|
||||
{
|
||||
BaseDamage = BaseDamage,
|
||||
AttackPropertyType = AttackPropertyType,
|
||||
SourceEntityId = SourceEntityId,
|
||||
ProjectileEntityId = ProjectileEntityId,
|
||||
OriginPosition = OriginPosition,
|
||||
TagRuntimes = InventoryCloneUtility.CloneTagRuntimes(TagRuntimes)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,26 @@
|
||||
using System;
|
||||
using GeometryTD.Entity;
|
||||
using UnityEngine;
|
||||
|
||||
namespace GeometryTD.Definition
|
||||
{
|
||||
[Serializable]
|
||||
public sealed class HitStatusModifierContext
|
||||
{
|
||||
public float BonusBurnDurationSeconds { get; set; }
|
||||
public float BonusBurnDamagePerSecond { get; set; }
|
||||
public float BonusSlowDurationSeconds { get; set; }
|
||||
public float BonusSlowRatio { get; set; }
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
BonusBurnDurationSeconds = 0f;
|
||||
BonusBurnDamagePerSecond = 0f;
|
||||
BonusSlowDurationSeconds = 0f;
|
||||
BonusSlowRatio = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class HitContext
|
||||
{
|
||||
@@ -9,5 +28,35 @@ namespace GeometryTD.Definition
|
||||
public int FinalDamage { get; set; }
|
||||
public bool IsCriticalHit { get; set; }
|
||||
public bool IsKilled { get; set; }
|
||||
public int TargetEntityId { get; set; }
|
||||
public Vector3 TargetPosition { get; set; }
|
||||
public int TargetCurrentHealthBeforeHit { get; set; }
|
||||
public int TargetCurrentHealthAfterHit { get; set; }
|
||||
public int TargetMaxHealth { get; set; }
|
||||
public float TargetMoveSpeedMultiplierBeforeHit { get; set; } = 1f;
|
||||
public TagType[] TargetStatusTagsBeforeHit { get; set; } = Array.Empty<TagType>();
|
||||
public EnemyTagStatusRuntime TargetStatusRuntime { get; set; }
|
||||
public float? CritRoll { get; set; }
|
||||
public HitStatusModifierContext StatusModifierContext { get; set; } = new HitStatusModifierContext();
|
||||
|
||||
public bool HasTargetStatus(TagType tagType)
|
||||
{
|
||||
if (tagType == TagType.None || TargetStatusTagsBeforeHit == null || TargetStatusTagsBeforeHit.Length <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < TargetStatusTagsBeforeHit.Length; i++)
|
||||
{
|
||||
if (TargetStatusTagsBeforeHit[i] == tagType)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool HasSlowStatusBeforeHit => TargetMoveSpeedMultiplierBeforeHit < 0.999f || HasTargetStatus(TagType.Ice);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user