Cute_OctopusCc
This commit is contained in:
parent
1960c748e6
commit
838e22011d
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.
|
|
@ -0,0 +1,139 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3688278240300928816
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3791624769364244468}
|
||||
- component: {fileID: 6673251188135490187}
|
||||
m_Layer: 0
|
||||
m_Name: Effect_Reincarnation
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3791624769364244468
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3688278240300928816}
|
||||
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: 5779525916069411976}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6673251188135490187
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3688278240300928816}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 456d2bd1c5c2e5e4b8b948836c4975a4, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
NoUseParticleTime: 1
|
||||
OffTime: 5
|
||||
e_EffectLocation: 2
|
||||
--- !u!1001 &2561240930099581834
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 3791624769364244468}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1156336430657372121, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: FX_Turnback Time
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 0.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 0.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 0.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 84fa12b09c6fbec499a075026248c20d, type: 3}
|
||||
--- !u!4 &5779525916069411976 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8340203878624390914, guid: 84fa12b09c6fbec499a075026248c20d,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2561240930099581834}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cedb83d970c6e3446a8d28f6aa9237b0
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
using CodeStage.AntiCheat.ObscuredTypes;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -64,10 +65,17 @@ public class Actor : MyCoroutine
|
|||
protected Renderer[] arr_Renderer;
|
||||
protected TurnOff_GO[] arr_Effects;
|
||||
protected Dictionary<eSkillExtraType, bool> dic_skillextra = new Dictionary<eSkillExtraType, bool>(); // 부가 효과 적용 여부
|
||||
protected Dictionary<eSkillExtraType, int> dic_skillextraCount = new Dictionary<eSkillExtraType, int>(); // 부가 효과 적용 여부
|
||||
//protected Dictionary<eSkillExtraType, int> dic_skillextraCount = new Dictionary<eSkillExtraType, int>(); // 부가 효과 적용 여부
|
||||
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 ObscuredInt _Reincarnation;
|
||||
public int n_Reincarnation
|
||||
{
|
||||
get { return _Reincarnation; }
|
||||
set { _Reincarnation = value; _Reincarnation.RandomizeCryptoKey(); }
|
||||
}
|
||||
|
||||
|
||||
protected void Init_CC()
|
||||
{
|
||||
|
|
@ -439,7 +447,7 @@ public class Actor : MyCoroutine
|
|||
|
||||
Cal_Damage(_dinfo);
|
||||
Check_CC_byAttack(_dinfo);
|
||||
Check_Extra();
|
||||
Check_Extra(eSkillExtraTiming.GetHit);
|
||||
|
||||
#if UNITY_EDITOR
|
||||
if (SceneManager.GetActiveScene().name == "StatTest")
|
||||
|
|
@ -544,6 +552,9 @@ public class Actor : MyCoroutine
|
|||
}
|
||||
protected virtual void After_Die()
|
||||
{
|
||||
Check_Extra(eSkillExtraTiming.AfterDie);
|
||||
if (!IsDead()) return; // 부활한 경우
|
||||
|
||||
#if UNITY_EDITOR
|
||||
if (SceneManager.GetActiveScene().name == "StatTest")
|
||||
{
|
||||
|
|
@ -1008,7 +1019,7 @@ public class Actor : MyCoroutine
|
|||
}
|
||||
}
|
||||
}
|
||||
protected virtual void Check_Extra() { }
|
||||
protected virtual void Check_Extra(eSkillExtraTiming timing) { }
|
||||
public void Check_Extra(DamageInfo _dinfo)
|
||||
{
|
||||
var pd = _dinfo.Beater_pd;
|
||||
|
|
@ -1943,14 +1954,14 @@ public class Actor : MyCoroutine
|
|||
public virtual void Check_10_4() { }
|
||||
public virtual MonsterAppearData Get_MonsterStatTableData() { return null; }
|
||||
public virtual bool isNoseeMob() { return false; }
|
||||
public virtual void On_Regen()
|
||||
public virtual void On_Regen(bool reincarnation = false, float healrate = 1f)
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
|
||||
DeadStatus = false;
|
||||
m_Stat.Clear_BuffDebuff();
|
||||
m_Stat.Set_Stat(eStat.HP, 0);
|
||||
Heal(1f, false);
|
||||
Heal(healrate, false);
|
||||
Init_CC();
|
||||
m_animation.speed = 1f;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UIElements;
|
||||
using static UILabel;
|
||||
|
||||
public enum eMobStatus { None, PatrolWait, PatrolRot, Patroling, Battle, BattleStop, Attack, Chase }
|
||||
|
||||
|
|
@ -65,7 +62,6 @@ public class MobActor : Actor
|
|||
bool IsBoss = IsSubRole(eSubRol.Boss);
|
||||
m_MonsterTableData = mobtable;
|
||||
transform.localScale = m_MonsterTableData.f_DefaultScale * Vector3.one;
|
||||
Reset_Extra();
|
||||
|
||||
m_AttackType = m_MonsterTableData.e_AttackType;
|
||||
b_IsFirstAttack = m_MonsterTableData.b_IsFirstAttack;
|
||||
|
|
@ -105,13 +101,18 @@ public class MobActor : Actor
|
|||
f_BaseChaseRange *= chaseRange;
|
||||
m_Stat.Set_Wave(iteration);
|
||||
}
|
||||
public override void On_Regen()
|
||||
public override void On_Regen(bool reincarnation = false, float healrate = 1f)
|
||||
{
|
||||
base.On_Regen();
|
||||
Set_Warp(OriginalPos);
|
||||
base.On_Regen(reincarnation, healrate);
|
||||
Change_MobStatus(eMobStatus.PatrolWait);
|
||||
InGameInfo.Ins.Show_Effect("Effect_MonsterSpawn", Get_position());
|
||||
Reset_Extra();
|
||||
if (m_BoxCollider) m_BoxCollider.enabled = true;
|
||||
m_NavMeshAgent.enabled = true;
|
||||
if (!reincarnation)
|
||||
{
|
||||
Set_Warp(OriginalPos);
|
||||
InGameInfo.Ins.Show_Effect("Effect_MonsterSpawn", Get_position());
|
||||
Reset_Extra();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
|
|
@ -386,10 +387,13 @@ public class MobActor : Actor
|
|||
return;
|
||||
#endif
|
||||
var sdata = ServerInfo.Ins.m_ServerData;
|
||||
m_actDie?.Invoke(m_MonsterTableData.n_MonsterID);
|
||||
DungeonInfo.Ins.Add_WaveScore(1); // TODO 정인호 : 웨이브 점수
|
||||
DungeonInfo.Ins.Add_WaveGold(10); // TODO 정인호 : 웨이브 골드
|
||||
sdata.Add_CollectionMobKill(m_MonsterTableData.n_MonsterID);
|
||||
if (n_Reincarnation <= 0)
|
||||
{
|
||||
m_actDie?.Invoke(m_MonsterTableData.n_MonsterID);
|
||||
DungeonInfo.Ins.Add_WaveScore(1); // TODO 정인호 : 웨이브 점수
|
||||
DungeonInfo.Ins.Add_WaveGold(10); // TODO 정인호 : 웨이브 골드
|
||||
sdata.Add_CollectionMobKill(m_MonsterTableData.n_MonsterID);
|
||||
}
|
||||
base.Set_Die();
|
||||
m_DieTime = m_MonsterAppearData.f_SpawnerDelay;
|
||||
//m_MonsterAppearData.Cal_DropItems(this);
|
||||
|
|
@ -403,11 +407,6 @@ public class MobActor : Actor
|
|||
}, 0.4f);
|
||||
sdata.Add_MissionCount(MyValue.arr_Mission[0], 3);
|
||||
sdata.Add_MissionCount(MyValue.arr_Mission[1], 2);
|
||||
|
||||
if (dic_ccData[eCC.Freeze].CCTime > 0) sdata.Add_TitleCondition(57); // 칭호 : 얼음땡
|
||||
if (dic_ccData[eCC.KnockedAirborne].CCTime > 0) sdata.Add_TitleCondition(58); // 칭호 : 비행기 태우는
|
||||
|
||||
//GameUI.Ins.IngameUI.m_ChapterQuest.Add_PurposeCount(new ChapterQuestAddData { purpose = ePurpose.BossKill, mobid = m_MonsterTableData.n_MonsterID });
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -416,8 +415,6 @@ public class MobActor : Actor
|
|||
#endif
|
||||
sdata.Add_MissionCount(MyValue.arr_Mission[0], 2);
|
||||
sdata.Add_MissionCount(MyValue.arr_Mission[1], 1);
|
||||
|
||||
//GameUI.Ins.IngameUI.m_ChapterQuest.Add_PurposeCount(new ChapterQuestAddData { purpose = ePurpose.MobKill, mobid = m_MonsterTableData.n_MonsterID });
|
||||
}
|
||||
}
|
||||
public override void Shoot_Skill()
|
||||
|
|
@ -544,9 +541,9 @@ public class MobActor : Actor
|
|||
m_MonsterTableData.f_ProjectileLifeTime1);
|
||||
}
|
||||
|
||||
protected override void Check_Extra()
|
||||
protected override void Check_Extra(eSkillExtraTiming timing)
|
||||
{
|
||||
base.Check_Extra();
|
||||
base.Check_Extra(timing);
|
||||
|
||||
// Dictionary의 Key를 배열로 가져오기 (복사본을 사용하여 수정 방지)
|
||||
var keys = new List<SkillListTableData>(dic_skill.Keys);
|
||||
|
|
@ -555,17 +552,17 @@ public class MobActor : Actor
|
|||
{
|
||||
var temp = keys[i];
|
||||
var skilltype = table_skilltypeconfig.Ins.Get_Data_orNull(temp.e_SkillExtraType);
|
||||
if (skilltype.e_SkillExtraTiming == eSkillExtraTiming.GetHit)
|
||||
if (skilltype.e_SkillExtraTiming == timing)
|
||||
{
|
||||
switch (skilltype.e_SkillExtraType)
|
||||
{
|
||||
case eSkillExtraType.Barrier: // 배리어 On
|
||||
if (dic_skill[temp] > 0) // Dictionary 직접 접근
|
||||
if (dic_skill[temp] > 0)
|
||||
{
|
||||
var conditionHP = Get_MaxHP() * temp.f_ExtraValue1;
|
||||
if (conditionHP >= Get_HP())
|
||||
{
|
||||
dic_skill[temp] = 0; // Dictionary 수정 가능
|
||||
dic_skill[temp] = 0;
|
||||
dic_skillextra[skilltype.e_SkillExtraType] = true;
|
||||
InGameInfo.Ins.Show_Effect(skilltype.e_SkillEffect, this, skilltype.e_EffectLocation, 10000,
|
||||
effect =>
|
||||
|
|
@ -578,6 +575,15 @@ public class MobActor : Actor
|
|||
}
|
||||
}
|
||||
break;
|
||||
case eSkillExtraType.Reincarnation: // 부활 체크
|
||||
if (n_Reincarnation > 0 && IsDead())
|
||||
{
|
||||
--n_Reincarnation;
|
||||
On_Regen(true, temp.f_ExtraValue2);
|
||||
InGameInfo.Ins.Show_Effect(skilltype.e_SkillEffect, Get_position());
|
||||
Check_Battle();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -594,19 +600,26 @@ public class MobActor : Actor
|
|||
// 2. dic_skill에 추가할 때 예외 방지
|
||||
if (!dic_skill.ContainsKey(pSkill))
|
||||
dic_skill[pSkill] = 0;
|
||||
n_Reincarnation = 0;
|
||||
|
||||
// 3. 배리어 스킬이면 값 초기화
|
||||
if (pSkill.e_SkillExtraType == eSkillExtraType.Barrier)
|
||||
switch (pSkill.e_SkillExtraType)
|
||||
{
|
||||
dic_skill[pSkill] = 1;
|
||||
case eSkillExtraType.Barrier:
|
||||
dic_skill[pSkill] = 1;
|
||||
dic_skillextra[pSkill.e_SkillExtraType] = false;
|
||||
|
||||
// dic_ccData[eCC.Barrier]가 존재하는지 확인 후 초기화
|
||||
if (dic_ccData.ContainsKey(eCC.Barrier))
|
||||
dic_ccData[eCC.Barrier].CCDmg = 0;
|
||||
// dic_ccData[eCC.Barrier]가 존재하는지 확인 후 초기화
|
||||
if (dic_ccData.ContainsKey(eCC.Barrier))
|
||||
dic_ccData[eCC.Barrier].CCDmg = 0;
|
||||
|
||||
// dic_CCEffect[eCC.Barrier]가 존재하는지 확인 후 제거
|
||||
if (dic_CCEffect.ContainsKey(eCC.Barrier) && dic_CCEffect[eCC.Barrier].IsMyEffect(this))
|
||||
dic_CCEffect[eCC.Barrier].Off_Imm();
|
||||
// dic_CCEffect[eCC.Barrier]가 존재하는지 확인 후 제거
|
||||
if (dic_CCEffect.ContainsKey(eCC.Barrier) && dic_CCEffect[eCC.Barrier].IsMyEffect(this))
|
||||
dic_CCEffect[eCC.Barrier].Off_Imm();
|
||||
break;
|
||||
case eSkillExtraType.Reincarnation:
|
||||
n_Reincarnation = (int)pSkill.f_ExtraValue1; // 부활 횟수
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -176,9 +176,9 @@ public class MyActor : Actor
|
|||
AnimationPlay(aniname);
|
||||
}
|
||||
|
||||
public override void On_Regen()
|
||||
public override void On_Regen(bool reincarnation = false, float healrate = 1f)
|
||||
{
|
||||
base.On_Regen();
|
||||
base.On_Regen(reincarnation, healrate);
|
||||
Set_Warp(LoadMapMgr.Ins.Get_ReincanationPos(MyValue.MyChoiceMapData));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -186,9 +186,9 @@ public class PCActor : MyActor
|
|||
LoadMapMgr.Ins.Get_PortalPos(MyValue.MyChoiceMapData, Set_Warp); // TODO 정인호 : PvP 일 경우 적 위치 잡기
|
||||
}
|
||||
|
||||
public override void On_Regen()
|
||||
public override void On_Regen(bool reincarnation = false, float healrate = 1f)
|
||||
{
|
||||
base.On_Regen();
|
||||
base.On_Regen(reincarnation, healrate);
|
||||
Del_Target(true);
|
||||
Del_Magic();
|
||||
Play_Idle();
|
||||
|
|
|
|||
|
|
@ -125,9 +125,9 @@ public class PetActor : MyActor
|
|||
m_Stat.Reset();
|
||||
}
|
||||
|
||||
public override void On_Regen()
|
||||
public override void On_Regen(bool reincarnation = false, float healrate = 1f)
|
||||
{
|
||||
base.On_Regen();
|
||||
base.On_Regen(reincarnation, healrate);
|
||||
Del_Target();
|
||||
Play_Idle();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,6 @@ public class FieldBossData : MyCoroutine
|
|||
|
||||
private void AfterDie(int obj)
|
||||
{
|
||||
Set_Coroutine(m_FieldBoss.On_Regen, 10f);
|
||||
Set_Coroutine(()=> { m_FieldBoss.On_Regen(); }, 10f);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ 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,
|
||||
SilenceCurse, Barrier, }
|
||||
SilenceCurse, Barrier, Reincarnation }
|
||||
|
||||
public class SkillListTableData : TableDataBase
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ using Newtonsoft.Json;
|
|||
|
||||
public enum eEffectLocation { Top, Mid, Bottom }
|
||||
/// <summary>
|
||||
/// Start 시전 시, Hit 때릴 때, GetHit 맞을 때, Skill ?
|
||||
/// Start 시전 시, Hit 때릴 때, GetHit 맞을 때, Skill ?, AfterDie 죽은 뒤
|
||||
/// </summary>
|
||||
public enum eSkillExtraTiming { Start, Hit, GetHit, Skill }
|
||||
public enum eSkillExtraTiming { Start, Hit, GetHit, Skill, AfterDie }
|
||||
|
||||
public class SkillTypeConfigTableData : TableDataBase
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue