Mummy_King, Aspethis_D, 침묵의 저주 추가, 이펙트 재활용 추가 등

This commit is contained in:
Ino 2025-02-12 13:39:37 +09:00
parent 8939e8a5f7
commit b4b77875c2
22 changed files with 611 additions and 95 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,139 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1492480108385186
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4606183881633982}
- component: {fileID: 1204406177442424303}
m_Layer: 0
m_Name: Effect_SilenceCurse
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4606183881633982
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1492480108385186}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1656992045335666006}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1204406177442424303
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1492480108385186}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 456d2bd1c5c2e5e4b8b948836c4975a4, type: 3}
m_Name:
m_EditorClassIdentifier:
NoUseParticleTime: 0
OffTime: 5
e_EffectLocation: 0
--- !u!1001 &1250104942782828853
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4606183881633982}
m_Modifications:
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalScale.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2094423123476748889, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
propertyPath: m_Name
value: FX_ICON_02
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f9d691602512c014b8ca899a84c4be96, type: 3}
--- !u!4 &1656992045335666006 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 551570755522301027, guid: f9d691602512c014b8ca899a84c4be96,
type: 3}
m_PrefabInstance: {fileID: 1250104942782828853}
m_PrefabAsset: {fileID: 0}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a11c668fbf17057468de71943629820e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -692,7 +692,7 @@ NavMeshAgent:
m_GameObject: {fileID: 7285158831599483235}
m_Enabled: 1
m_AgentTypeID: 0
m_Radius: 0.25
m_Radius: 0.15
m_Speed: 4.5
m_Acceleration: 140
avoidancePriority: 51

View File

@ -1072,7 +1072,7 @@ NavMeshAgent:
m_GameObject: {fileID: 4057424465790578577}
m_Enabled: 1
m_AgentTypeID: 0
m_Radius: 0.25
m_Radius: 0.17
m_Speed: 4.5
m_Acceleration: 140
avoidancePriority: 51

View File

@ -0,0 +1,155 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &359492963229537179
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3212436743952790601}
- component: {fileID: 2864512912963179641}
- component: {fileID: 5611405915983910845}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &3212436743952790601
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359492963229537179}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 3, y: 3, z: 3}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 223961062764596305}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2864512912963179641
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359492963229537179}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &5611405915983910845
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 359492963229537179}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &907428178798376589
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 223961062764596305}
- component: {fileID: 6311613290837446200}
- component: {fileID: 6782093134866277011}
m_Layer: 0
m_Name: P_Aspethis_D
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &223961062764596305
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 907428178798376589}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3212436743952790601}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6311613290837446200
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 907428178798376589}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e5d2fd9d460da6a4d87b4be83a4cdc32, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Pierce: 0
str_HitEffect: PoisonHit
m_ShowTimeOverEffect: 0
--- !u!65 &6782093134866277011
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 907428178798376589}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 3, y: 3, z: 3}
m_Center: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2e8f3cc51b83e7b418b86c26b4247a1a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,147 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1079946990457772
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4494156932542222}
- component: {fileID: 4995618328429827743}
- component: {fileID: 8527147724218912786}
m_Layer: 0
m_Name: P_Mummy_King
m_TagString: Projectile
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4494156932542222
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1079946990457772}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3818737058906301661}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4995618328429827743
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1079946990457772}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b3062df6743c3a048910d52c2f80e25b, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Pierce: 0
str_HitEffect: Effect_Hit_Electronic
m_ShowTimeOverEffect: 1
m_Direction: 0
--- !u!65 &8527147724218912786
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1079946990457772}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1001 &6830086858653494240
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4494156932542222}
m_Modifications:
- target: {fileID: 7653787099927154482, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_Name
value: Projectiles_electric
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: db5486219ba247746b2df5fe8cfb8119, type: 3}
--- !u!4 &3818737058906301661 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7653787099927154493, guid: db5486219ba247746b2df5fe8cfb8119,
type: 3}
m_PrefabInstance: {fileID: 6830086858653494240}
m_PrefabAsset: {fileID: 0}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 13f204201e8958643bcd200e1eba21ec
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -66,6 +66,7 @@ public class Actor : MyCoroutine
protected Dictionary<eSkillExtraType, bool> dic_skillextra = new Dictionary<eSkillExtraType, bool>();
protected Dictionary<eCC, CCData> dic_ccData = new Dictionary<eCC, CCData>();
protected Dictionary<eCC, Dictionary<Actor, double>> dic_ccAddRate = new Dictionary<eCC, Dictionary<Actor, double>>();
protected Dictionary<eCC, TurnOff_GO> dic_CCEffect = new Dictionary<eCC, TurnOff_GO>();
protected void Init_CC()
{
@ -77,6 +78,8 @@ public class Actor : MyCoroutine
dic_ccAddRate.Clear();
foreach (var key in dic_skillextra.Keys.ToList())
dic_skillextra[key] = false;
foreach (var key in dic_CCEffect.Keys.ToList())
dic_CCEffect[key].Off_Imm();
}
protected void Check_CCAddRate(eCC cc, Actor actor, double v = 0)
{
@ -147,6 +150,7 @@ public class Actor : MyCoroutine
protected virtual void OnEnable()
{
if (gos_Effect != null) DSUtil.InActivateGameObjects(gos_Effect);
StartCoroutine(Co_Update_ETC());
}
protected virtual void OnDestroy()
@ -154,33 +158,46 @@ public class Actor : MyCoroutine
if (m_HUDUI) m_HUDUI.Off();
}
virtual protected void Update()
{
Update_ETC();
}
virtual protected void Update() { }
protected void Update_ETC()
IEnumerator Co_Update_ETC()
{
foreach (var item in dic_ccData)
while (true)
{
if (item.Value.CCReduceTime > 0f)
{
item.Value.CCReduceTime -= 0.0001f;
if (item.Value.CCReduceTime < 0f)
item.Value.CCReduceTime = 0f;
}
yield return null;
if (item.Value.TimeUpdate && item.Value.CCTime > 0)
foreach (var item in dic_ccData)
{
item.Value.CCTime -= Time.deltaTime;
if (item.Value.CCTime <= 0)
if (item.Value.CCReduceTime > 0f)
{
switch (item.Key)
item.Value.CCReduceTime -= 0.0001f;
if (item.Value.CCReduceTime < 0f)
item.Value.CCReduceTime = 0f;
}
if (item.Value.TimeUpdate && item.Value.CCTime > 0)
{
item.Value.CCTime -= Time.deltaTime;
if (item.Key == eCC.SilenceCurse)
{
case eCC.STR_Mul_Up: Off_StatUpBuff(eStat.STR); break;
case eCC.DEX_Mul_Up: Off_StatUpBuff(eStat.DEX); break;
case eCC.INT_Mul_Up: Off_StatUpBuff(eStat.INT); break;
case eCC.LUK_Mul_Up: Off_StatUpBuff(eStat.LUK); break;
item.Value.CC1Sec += Time.deltaTime;
if (item.Value.CC1Sec >= 1f)
{
item.Value.CC1Sec = 0f;
Heal_MP(-(Get_MaxMP() * item.Value.CCDmg));
}
}
if (item.Value.CCTime <= 0)
{
switch (item.Key)
{
case eCC.STR_Mul_Up: Off_StatUpBuff(eStat.STR); break;
case eCC.DEX_Mul_Up: Off_StatUpBuff(eStat.DEX); break;
case eCC.INT_Mul_Up: Off_StatUpBuff(eStat.INT); break;
case eCC.LUK_Mul_Up: Off_StatUpBuff(eStat.LUK); break;
}
}
}
}
@ -413,7 +430,7 @@ public class Actor : MyCoroutine
if (m_Stat.Get_Stat(eStat.MP) <= 0)
{
dic_ccData[eCC.ManaShield].CCTime = 0d;
dic_ccData[eCC.ManaShield].Off_Effect();
dic_CCEffect[eCC.ManaShield].Off_Imm();
}
}
@ -466,7 +483,7 @@ public class Actor : MyCoroutine
{
other.DotDamage(eCC.Burn, pd.shooter.Get_DamageInfo(pd), ccData.CCTime,
pd.m_SkillListTableData.f_ExtraValue2 + pd.CC_AddVal1, pd.m_SkillListTableData.f_ExtraValue3);
pd.m_ProjectileBase.Show_Effect(other, (float)ccData.CCTime, ccData);
pd.m_ProjectileBase.Show_Effect(other, (float)ccData.CCTime);
}
}
}
@ -576,6 +593,10 @@ public class Actor : MyCoroutine
if (skilldata.n_SkillClassID > 0 && skilldata.n_SkillClassID != m_ID)
return false;
// 침묵의 저주에 걸린 경우 스킬 사용 불가
var SilenceCurseData = Get_CCData(eCC.SilenceCurse);
if (SilenceCurseData.CCTime > 0f) return false;
m_Magic = dic_MagicData[index];
if (IsDead() || IsCC() || CurAnim >= eAnim.Skill)
@ -1003,13 +1024,19 @@ public class Actor : MyCoroutine
SkillTypeConfigTableData skillExtraData = _dinfo.Beater_pd.m_skillTypeConfigTable;
ActorStatInfo statinfo = _dinfo.Beater.Get_StatInfo();
CCData ccdata = null;
eCC curCC = eCC.Max;
float LifeTime = val1 + pd.CC_AddTime;
switch (skillExtraData.e_SkillExtraType)
{
// 적에게
case eSkillExtraType.Frost:
curCC = eCC.ATKSPD_Down;
Buff_or_Debuff(eCC.ATKSPD_Down, LifeTime, val2 + pd.CC_AddVal1);
Buff_or_Debuff(eCC.MOVSPD_Down, LifeTime, val3 + pd.CC_AddVal2);
if (_dinfo.bExtraDmg) Cal_Damage(_dinfo); // 추가 데미지
break;
case eSkillExtraType.Slow:
curCC = eCC.MOVSPD_Down;
Buff_or_Debuff(eCC.ATKSPD_Down, LifeTime, val2 + pd.CC_AddVal1);
Buff_or_Debuff(eCC.MOVSPD_Down, LifeTime, val3 + pd.CC_AddVal2);
if (_dinfo.bExtraDmg) Cal_Damage(_dinfo); // 추가 데미지
@ -1019,15 +1046,19 @@ public class Actor : MyCoroutine
if (_dinfo.bExtraDmg) Cal_Damage(_dinfo); // 추가 데미지
break;
case eSkillExtraType.Burn:
curCC = eCC.Burn;
DotDamage(eCC.Burn, _dinfo.Copy(), LifeTime, val2 + pd.CC_AddVal1, val3);
break;
case eSkillExtraType.Blood:
curCC = eCC.Blooding;
DotDamage(eCC.Blooding, _dinfo.Copy(), LifeTime, val2, val3);
break;
case eSkillExtraType.Poison:
curCC = eCC.Poison;
DotDamage(eCC.Poison, _dinfo.Copy(), LifeTime, val2, val3);
break;
case eSkillExtraType.Stun:
curCC = eCC.Stun;
Stun(LifeTime);
if (_dinfo.bExtraDmg)
{
@ -1036,6 +1067,7 @@ public class Actor : MyCoroutine
}
break;
case eSkillExtraType.DefenceDecrease:
curCC = eCC.DEF_Down;
Buff_or_Debuff(eCC.DEF_Down, LifeTime, val2);
Buff_or_Debuff(eCC.M_DEF_Down, LifeTime, val3);
if (_dinfo.bExtraDmg) Cal_Damage(_dinfo); // 추가 데미지
@ -1052,13 +1084,14 @@ public class Actor : MyCoroutine
}
break;
case eSkillExtraType.ManaShield:
curCC = eCC.ManaShield;
LifeTime += LifeTime * pd.Get_SkillDamagePercent();
Buff_or_Debuff(eCC.ManaShield, LifeTime, val3, 0, val2);
ccdata = dic_ccData[eCC.ManaShield];
Buff_or_Debuff(curCC, LifeTime, val3, 0, val2);
break;
case eSkillExtraType.SwordShield:
break;
case eSkillExtraType.SpeedUp:
curCC = eCC.ATKSPD_Up;
Buff_or_Debuff(eCC.ATKSPD_Up, LifeTime, val2);
Buff_or_Debuff(eCC.MOVSPD_Up, LifeTime, val3);
break;
@ -1071,6 +1104,7 @@ public class Actor : MyCoroutine
_dinfo.Beater.Heal_MP(val3);
break;
case eSkillExtraType.Cure:
curCC = eCC.Cure;
_dinfo.Beater.DotHeal(LifeTime, val2, _dinfo.Beater.Get_MaxHP() * val3, _dinfo.Beater.Get_MaxMP() * val3);
break;
case eSkillExtraType.Knockback:
@ -1091,6 +1125,10 @@ public class Actor : MyCoroutine
Heal(-hpburn);
LifeTime = 1f;
break;
case eSkillExtraType.SilenceCurse: // 스킬 사용 불가 및 최대 마나 감소
curCC = eCC.SilenceCurse;
Buff_or_Debuff(curCC, LifeTime, val2);
break;
}
if (!dic_skillextra.ContainsKey(skillExtraData.e_SkillExtraType))
@ -1102,7 +1140,20 @@ public class Actor : MyCoroutine
dic_skillextra[skillExtraData.e_SkillExtraType] = false;
}, LifeTime);
pd.m_ProjectileBase.Show_Effect(this, LifeTime, ccdata);
// 기존 이펙트가 있으면 재활용
if (curCC != eCC.Max && dic_CCEffect.ContainsKey(curCC) && dic_CCEffect[curCC].IsMyEffect(this) &&
dic_CCEffect[curCC].gameObject.activeInHierarchy)
dic_CCEffect[curCC].Reset_Time(LifeTime);
else
pd.m_ProjectileBase.Show_Effect(this, LifeTime, ccffect =>
{
if (curCC != eCC.Max)
{
if (!dic_CCEffect.ContainsKey(curCC))
dic_CCEffect.Add(curCC, null);
dic_CCEffect[curCC] = ccffect;
}
});
}
public void Check_EnchantOption(DamageInfo _dinfo, bool whenhit = true)
{

View File

@ -233,9 +233,9 @@ public class ProjectileBase : MonoBehaviour
/// <summary>
/// active 스킬 실행 여부
/// </summary>
public void Show_Effect(Actor target, float effectLifeTime = 5f, CCData ccdata = null)
public void Show_Effect(Actor target, float effectLifeTime = 5f, Action<TurnOff_GO> cceffect = null)
{
InGameInfo.Ins.Show_SkillTypeEffect(m_ProjecTileData, target, effectLifeTime, ccdata);
InGameInfo.Ins.Show_SkillTypeEffect(m_ProjecTileData, target, effectLifeTime, cceffect);
}
public virtual void Set_Shooter(Actor _shoter) { if (isProjectiledata) m_ProjecTileData.shooter = _shoter; }
protected void Check_TargetBoss()

View File

@ -232,7 +232,7 @@ public partial class InGameInfo : MyCoroutine
}
}
public void Show_SkillTypeEffect(ProjectileData pd, Actor target, float lifeTime, CCData ccdata = null)
public void Show_SkillTypeEffect(ProjectileData pd, Actor target, float lifeTime, Action<TurnOff_GO> cceffect = null)
{
var stcData = pd.m_skillTypeConfigTable;
if (!DSUtil.CheckNull(stcData) && !stcData.e_SkillEffect.Equals("None"))
@ -241,15 +241,15 @@ public partial class InGameInfo : MyCoroutine
{
Get_Effect(stcData.e_SkillEffect, temp =>
{
temp.GetComponent<TurnOff_GO>().Set(target, pd, lifeTime);
var effect = temp.GetComponent<TurnOff_GO>();
effect.Set(target, pd, lifeTime);
temp.transform.localScale = Vector3.one * stcData.n_EffectScale;
if (!DSUtil.CheckNull(ccdata))
ccdata.EffectObj = temp;
var chekers = temp.GetComponentsInChildren<ProjectileHitChecker>(true);
for (int i = 0; i < chekers.Length; i++)
chekers[i].Set(pd.m_ProjectileBase);
cceffect?.Invoke(effect);
});
}
}

View File

@ -6,7 +6,8 @@ using UnityEngine;
public enum eSkillType { Active, Passive, JobPassive, MobPassive }
public enum eSkillTarget { Enemy, Self, SelfEnemy, Team, Pet }
public enum eSkillExtraType { None, Frost, Cure, Freezing, Blood, Poison, Burn, Stun, Slow, StatUp, ManaShield, SwordShield,
SpeedUp, DefenceDecrease, Aggro, VampirHeal, Knockback, Airborne, Curse, ManaBurn, HPBurn, }
SpeedUp, DefenceDecrease, Aggro, VampirHeal, Knockback, Airborne, Curse, ManaBurn, HPBurn,
SilenceCurse, }
public class SkillListTableData : TableDataBase
{

View File

@ -220,7 +220,6 @@ public class DamageInfo
public class CCData
{
public bool TimeUpdate;
public GameObject EffectObj;
public ObscuredInt _CCVal;
//ObscuredDouble _CCTime, _CCDelay, _CCDmg, _CCReduceTime;
@ -228,14 +227,15 @@ public class CCData
{
CCVal = 0;
CCTime = CCDelay = CCDmg = CCReduceTime = 0d;
CC1Sec = 0f;
}
public void Off_Effect() { if (!DSUtil.CheckNull(EffectObj)) EffectObj.SetActive(false); }
public int CCVal { get { return _CCVal; } set { _CCVal = value; _CCVal.RandomizeCryptoKey(); } }
public double CCTime;// { get { return _CCTime; } set { _CCTime = value; _CCTime.RandomizeCryptoKey(); } }
public double CCDelay;// { get { return _CCDelay; } set { _CCDelay = value; _CCDelay.RandomizeCryptoKey(); } }
public double CCDmg;// { get { return _CCDmg; } set { _CCDmg = value; _CCDmg.RandomizeCryptoKey(); } }
public double CCReduceTime;// { get { return _CCReduceTime; } set { _CCReduceTime = value; _CCReduceTime.RandomizeCryptoKey(); } }
public float CC1Sec;
}
public class CountLevelData

View File

@ -9,7 +9,7 @@ public enum eSpawnerType { Random, Order, Phase, PhaseAllKill }
public enum eAnim { Idle, Run, Die, Hit, Dodge, Attack, Attack2, Attack3, Attack4, Skill }
public enum eCC { BossDamage, MobDamage, PiercingBuff, ATK_Up, ATKSPD_Up, MOVSPD_Up, ATKSPD_Down, MOVSPD_Down, DEF_Down, M_DEF_Down, // 움직임 자유
STR_Mul_Up, DEX_Mul_Up, INT_Mul_Up, LUK_Mul_Up, Burn, Blooding, Poison, ManaShield, MPRecoverTime, // 움직임 자유
Cri_Up, MultiShot, ATK_Down, // 움직임 자유
Cri_Up, MultiShot, ATK_Down, SilenceCurse, Aggro, Cure, // 움직임 자유
Freeze, Attract, KnockedAirborne, KnockBack, Stun, // 움직임 제한

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using UnityEngine;
public class TurnOff_GO : MyCoroutine
@ -9,89 +8,90 @@ public class TurnOff_GO : MyCoroutine
public eEffectLocation e_EffectLocation;
public Action act_End;
private Actor m_target;
private ProjectileData m_ProjectileData;
private bool followTarget;
Actor m_target, m_target2;
ProjectileData m_ProjectileData;
bool followTarget;
private static readonly Dictionary<eEffectLocation, Func<Actor, Vector3>> EffectLocationMap = new()
{
{ eEffectLocation.Top, target => target.Get_Top_postion() },
{ eEffectLocation.Mid, target => target.Get_Center_position() },
{ eEffectLocation.Bottom, target => target.Get_position() }
};
public void Set() => ToggleActive(true);
public void Set(Actor target, ProjectileData pd, float lifeTime)
public void Set() { gameObject.SetActive(false); gameObject.SetActive(true); }
public void Set(Actor target, ProjectileData pd, float LifeTime)
{
followTarget = true;
m_target = target;
m_ProjectileData = pd;
NoUseParticleTime = true;
OffTime = lifeTime;
OffTime = LifeTime;
transform.position = m_ProjectileData.Get_EffectPos(target);
transform.position = pd.Get_EffectPos(target);
ToggleActive(true);
gameObject.SetActive(true);
Set_Off();
}
public void Set(Actor target, eEffectLocation loca, float lifeTime)
public void Set(Actor target, eEffectLocation loca, float lifetime)
{
m_target2 = target;
e_EffectLocation = loca;
OffTime = lifeTime;
m_target = target;
OffTime = lifetime;
ToggleActive(true);
gameObject.SetActive(true);
Set_Off();
}
public void Set_PrefabInfo(Actor target)
{
m_target = target;
UpdateLocation();
ToggleActive(true);
Set_Location(target);
gameObject.SetActive(true);
Set_Off();
}
private void ToggleActive(bool state)
public void Reset_Time(float time)
{
gameObject.SetActive(false);
gameObject.SetActive(state);
OffTime = time;
Set_Off();
}
private void OnEnable() => Set_Off();
private void Set_Off()
public bool IsMyEffect(Actor actor)
{
Set_Coroutine_withCancel(() =>
{
gameObject.SetActive(false);
act_End?.Invoke();
}, NoUseParticleTime ? OffTime : GetComponent<ParticleSystem>().main.duration);
if (followTarget && m_target2 == actor)
return true;
return false;
}
private void Update()
void Set_Off()
{
Set_Coroutine_withCancel(Off_Imm, NoUseParticleTime ? OffTime : GetComponent<ParticleSystem>().main.duration);
}
private void OnEnable()
{
Set_Off();
}
void Update()
{
if (followTarget)
{
if (m_target == null)
if (m_target)
transform.position = m_ProjectileData.Get_EffectPos(m_target);
else
{
transform.position = Vector3.right * 1000000f;
gameObject.SetActive(false);
}
else
{
transform.position = m_ProjectileData.Get_EffectPos(m_target);
}
}
else
else if (m_target2)
Set_Location(m_target2);
}
void Set_Location(Actor target)
{
Vector3 effectPos;
switch (e_EffectLocation)
{
UpdateLocation();
case eEffectLocation.Top: effectPos = target.Get_Top_postion(); break;
default: effectPos = target.Get_Center_position(); break;
case eEffectLocation.Bottom: effectPos = target.Get_position(); break;
}
transform.position = effectPos;
}
private void UpdateLocation()
public void Off_Imm()
{
if (m_target != null && EffectLocationMap.TryGetValue(e_EffectLocation, out var positionFunc))
{
transform.position = positionFunc(m_target);
}
gameObject.SetActive(false);
act_End?.Invoke();
}
}