함정 설치 버그 수정 및 버튼 재터치 시 터지게, 일정 시간 지나면 터지게

This commit is contained in:
Ino 2025-01-20 06:58:12 +09:00
parent 14b7c32b97
commit 656862c48a
53 changed files with 244 additions and 219 deletions

File diff suppressed because one or more lines are too long

View File

@ -9775,7 +9775,7 @@ Transform:
m_GameObject: {fileID: 2454357183881295607}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: 0.35, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -29404,8 +29404,8 @@ MonoBehaviour:
TrapHitChecker: {fileID: 8525280398112683876}
ExplosionHitChecker: {fileID: 455100633965361467}
go_danger: {fileID: 7461121852154914100}
go_explosion: {fileID: 5139915522768684219}
offset: {x: 0, y: 0.35, z: 0}
m_distance: 5
--- !u!1001 &7462156808509186558
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -12,11 +12,11 @@ public class MagicMissile : ProjectileBase
{
base.Set(_data);
hitmobs.Clear();
hitmobs.Add(m_ProjectTileData.target);
if (m_ProjectTileData.shooter.Get_SelectSkill(eEffect.Select_Bounce))
hitmobs.Add(m_ProjecTileData.target);
if (m_ProjecTileData.shooter.Get_SelectSkill(eEffect.Select_Bounce))
{
BounceCount = 4;
if (m_ProjectTileData.shooter.Get_SelectSkill(eEffect.Select_Bounce2))
if (m_ProjecTileData.shooter.Get_SelectSkill(eEffect.Select_Bounce2))
BounceCount = 7;
//m_ProjectTileData.SkillDamage *= table_selectskill.Ins.Get_Data(eEffect.Select_Bounce).ValueBase;
}
@ -26,7 +26,7 @@ public class MagicMissile : ProjectileBase
void Update()
{
if (m_ProjectTileData.target == null)
if (m_ProjecTileData.target == null)
{
Off();
return;
@ -39,17 +39,17 @@ public class MagicMissile : ProjectileBase
Off(true);
}
var targetpos = m_ProjectTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjectTileData.Speed);
var targetpos = m_ProjecTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjecTileData.Speed);
var dist = Vector3.Distance(transform.position, targetpos);
if (dist < 0.2f)
{
--BounceCount;
hitmobs.Add(m_ProjectTileData.target);
if (m_ProjectTileData.IsSkill())
m_ProjectTileData.target.Get_Damage(Get_DamageInfo());
hitmobs.Add(m_ProjecTileData.target);
if (m_ProjecTileData.IsSkill())
m_ProjecTileData.target.Get_Damage(Get_DamageInfo());
else
m_ProjectTileData.target.Get_Damage(m_ProjectTileData.shooter.Get_DamageInfo(m_ProjectTileData, m_ProjectTileData.HitDamage));
m_ProjecTileData.target.Get_Damage(m_ProjecTileData.shooter.Get_DamageInfo(m_ProjecTileData, m_ProjecTileData.HitDamage));
if (BounceCount > 0)
{
@ -58,8 +58,8 @@ public class MagicMissile : ProjectileBase
{
if (hitmobs.Find(f => f == enemies[i]) == null)
{
m_ProjectTileData.target = enemies[i];
m_LifeTime = m_ProjectTileData.LifeTime;
m_ProjecTileData.target = enemies[i];
m_LifeTime = m_ProjecTileData.LifeTime;
Show_HitEffect(false, enemies[i]);
return;
}

View File

@ -35,6 +35,7 @@ public class ProjectileHitChecker : MonoBehaviour
}
private void ProcessCollider(Collider other)
{
if (DSUtil.CheckNull(m_ProjectileBase)) return;
if (m_ProjectileBase.ProcessCollider(other, !Off_OnlyThisObj_byHit, NoDMG) && Off_OnlyThisObj_byHit)
gameObject.SetActive(false);
}

View File

@ -21,7 +21,7 @@ public class Projectile_JustFoward : ProjectileBase
private void Update()
{
transform.Translate(m_ProjectTileData.Speed * Time.deltaTime * Vector3.forward);
transform.Translate(m_ProjecTileData.Speed * Time.deltaTime * Vector3.forward);
transform.position = new Vector3(transform.position.x, yPos, transform.position.z);
m_LifeTime -= Time.deltaTime;
if (m_LifeTime <= 0f)

View File

@ -14,11 +14,11 @@ public class Projectile_Keepmove : ProjectileBase
IEnumerator Co_Move()
{
while (m_ProjectTileData.LifeTime > 0f)
while (m_ProjecTileData.LifeTime > 0f)
{
transform.Translate(m_ProjectTileData.Speed * Time.deltaTime * Vector3.forward);
transform.Translate(m_ProjecTileData.Speed * Time.deltaTime * Vector3.forward);
yield return null;
m_ProjectTileData.LifeTime -= Time.deltaTime;
m_ProjecTileData.LifeTime -= Time.deltaTime;
}
var anim = GetComponent<Animation>();

View File

@ -6,6 +6,6 @@ public class Projectile_Stop : ProjectileBase
{
base.Set(_data);
transform.eulerAngles = Vector3.zero; // 근접 공격 판정은 회전 x
StartCoroutine(Co_Off(m_ProjectTileData.LifeTime));
StartCoroutine(Co_Off(m_ProjecTileData.LifeTime));
}
}

View File

@ -40,10 +40,10 @@ public class Projectile_Suriken : ProjectileBase
while (m_LifeTime > 0f)
{
if (DSUtil.CheckNull(m_ProjectTileData.shooter)) break;
if (DSUtil.CheckNull(m_ProjecTileData.shooter)) break;
for (int i = 0; i < list_suriken.Count; i++)
list_suriken[i].Translate(m_ProjectTileData.Speed * Time.deltaTime * list_suriken[i].forward);
list_suriken[i].Translate(m_ProjecTileData.Speed * Time.deltaTime * list_suriken[i].forward);
m_LifeTime -= Time.deltaTime;
yield return null;

View File

@ -18,12 +18,12 @@ public class Projectile_WaveMove : ProjectileBase
float totalDistance = Vector3.Distance(start, end);
Vector3 direction = (end - start).normalized; // 목표 지점으로의 방향
while (elapsedTime * m_ProjectTileData.Speed < totalDistance)
while (elapsedTime * m_ProjecTileData.Speed < totalDistance)
{
elapsedTime += Time.deltaTime;
// 현재 직선상의 위치
Vector3 linearPosition = start + direction * (elapsedTime * m_ProjectTileData.Speed);
Vector3 linearPosition = start + direction * (elapsedTime * m_ProjecTileData.Speed);
// 사인파로 X축 좌우 흔들림 추가
float waveOffsetX = Mathf.Sin(elapsedTime * waveFrequency + wavePhase) * waveAmplitude;

View File

@ -92,7 +92,7 @@ public class ProjectileBase : MonoBehaviour
public bool m_Pierce;
public string str_HitEffect;
protected bool bFirstLoad = true;
protected ProjectileData m_ProjectTileData;
protected ProjectileData m_ProjecTileData;
protected float m_LifeTime;
protected Vector3 v3_scale;
protected Action<double> act_returnDmg;
@ -114,38 +114,38 @@ public class ProjectileBase : MonoBehaviour
public virtual void Set(ProjectileData _data)
{
_data.AddDmgPercent = _data.CC_AddTime = _data.CC_AddDmg = _data.CC_AddVal1 = _data.CC_AddVal2 = 0f;
m_ProjectTileData = _data;
m_ProjectTileData.m_ProjectileBase = this;
m_ProjecTileData = _data;
m_ProjecTileData.m_ProjectileBase = this;
m_DamageInfo = Get_NewDamageInfo();
var isNullTarget = DSUtil.CheckNull(m_ProjectTileData.target);
var isNullTarget = DSUtil.CheckNull(m_ProjecTileData.target);
if (m_ProjectTileData.IsSkill())
if (m_ProjecTileData.IsSkill())
{
var skillData = m_ProjectTileData.m_SkillListTableData;
if (m_ProjectTileData.SetSkillExtraType)
m_ProjectTileData.e_SkillExtraType = skillData.e_SkillExtraType;
var skillData = m_ProjecTileData.m_SkillListTableData;
if (m_ProjecTileData.SetSkillExtraType)
m_ProjecTileData.e_SkillExtraType = skillData.e_SkillExtraType;
}
else
{
transform.localScale = v3_scale;
var statinfo = m_ProjectTileData.shooter.Get_StatInfo();
var statinfo = m_ProjecTileData.shooter.Get_StatInfo();
if (!DSUtil.CheckNull(statinfo))
{
m_ProjectTileData.Speed += (float)statinfo.Get_Stat(eStat.ProjectileSpeed_Up);
m_ProjecTileData.Speed += (float)statinfo.Get_Stat(eStat.ProjectileSpeed_Up);
transform.localScale += v3_scale * (float)statinfo.Get_Stat(eStat.ProjectileSize_Up);
}
}
m_ProjectTileData.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(m_ProjectTileData.e_SkillExtraType);
if (!isNullTarget && !DSUtil.CheckNull(m_ProjectTileData.m_skillTypeConfigTable) &&
m_ProjectTileData.m_skillTypeConfigTable.e_SkillExtraTiming == eSkillExtraTiming.Start)
m_ProjectTileData.target.Check_Extra(m_DamageInfo);
m_ProjecTileData.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(m_ProjecTileData.e_SkillExtraType);
if (!isNullTarget && !DSUtil.CheckNull(m_ProjecTileData.m_skillTypeConfigTable) &&
m_ProjecTileData.m_skillTypeConfigTable.e_SkillExtraTiming == eSkillExtraTiming.Start)
m_ProjecTileData.target.Check_Extra(m_DamageInfo);
if (m_ProjectTileData.CheckOptionWhenStart)
if (m_ProjecTileData.CheckOptionWhenStart)
{
m_ProjectTileData.CheckOptionWhenStart = false;
m_ProjectTileData.shooter.Check_EnchantOption(m_DamageInfo, false);
m_ProjecTileData.CheckOptionWhenStart = false;
m_ProjecTileData.shooter.Check_EnchantOption(m_DamageInfo, false);
}
Set_Checkers();
@ -188,7 +188,7 @@ public class ProjectileBase : MonoBehaviour
protected void LookAt_ShooterFoward()
{
transform.rotation = m_ProjectTileData.shooter.transform.rotation;
transform.rotation = m_ProjecTileData.shooter.transform.rotation;
transform.eulerAngles = new Vector3(0f, transform.eulerAngles.y);
}
@ -198,7 +198,7 @@ public class ProjectileBase : MonoBehaviour
protected void Set_ReduceCoolTime_byStep(int step)
{
if (IsStep(step))
m_ProjectTileData.shooter.Set_SkillCoolTime(false, m_ProjectTileData.m_SkillListTableData.n_SkillID,
m_ProjecTileData.shooter.Set_SkillCoolTime(false, m_ProjecTileData.m_SkillListTableData.n_SkillID,
Get_AwakenData(step, 1));
}
@ -207,71 +207,71 @@ public class ProjectileBase : MonoBehaviour
/// </summary>
public void Show_Effect(Actor target, float effectLifeTime = 5f, CCData ccdata = null)
{
InGameInfo.Ins.Show_SkillTypeEffect(m_ProjectTileData, target, effectLifeTime, ccdata);
InGameInfo.Ins.Show_SkillTypeEffect(m_ProjecTileData, target, effectLifeTime, ccdata);
}
public virtual void Set_Shooter(Actor _shoter) { if (m_ProjectTileData != null) m_ProjectTileData.shooter = _shoter; }
public virtual void Set_Shooter(Actor _shoter) { if (m_ProjecTileData != null) m_ProjecTileData.shooter = _shoter; }
protected void Check_TargetBoss()
{
if (m_ProjectTileData != null)
if (m_ProjecTileData != null)
{
if (!m_ProjectTileData.target.IsRole(eRole.Boss) || m_ProjectTileData.target.transform.localScale.x <= 2f)
if (!m_ProjecTileData.target.IsRole(eRole.Boss) || m_ProjecTileData.target.transform.localScale.x <= 2f)
{
var enemies = Get_Enemies(transform, 8f);
var boss = enemies.Find(f => f.IsRole(eRole.Boss) || f.transform.localScale.x > 2f);
if (boss != null)
m_ProjectTileData.target = boss;
m_ProjecTileData.target = boss;
}
}
}
public ProjectileData Get_ProjectTileData() { return m_ProjectTileData; }
public ProjectileData Get_ProjectTileData() { return m_ProjecTileData; }
DamageInfo Get_SkillDamage()
{
var dinfo = m_ProjectTileData.shooter.Get_DamageInfo(m_ProjectTileData, m_ProjectTileData.Get_SkillDamagePercent(),
m_ProjectTileData.CC_AddVal2 > 0 && m_ProjectTileData.m_SkillListTableData.e_Skill == eEffect.Skill_IceBolt &&
m_ProjectTileData.target.IsSkillExtraStatus(eSkillExtraType.Frost));
var dinfo = m_ProjecTileData.shooter.Get_DamageInfo(m_ProjecTileData, m_ProjecTileData.Get_SkillDamagePercent(),
m_ProjecTileData.CC_AddVal2 > 0 && m_ProjecTileData.m_SkillListTableData.e_Skill == eEffect.Skill_IceBolt &&
m_ProjecTileData.target.IsSkillExtraStatus(eSkillExtraType.Frost));
dinfo.act_returnLastDmg = act_returnDmg;
dinfo.act_AfterFreezing = act_afterFreezing;
return dinfo;
}
protected DamageInfo Get_NewDamageInfo()
{
return m_ProjectTileData.IsSkill() ? Get_SkillDamage() : m_ProjectTileData.shooter.Get_DamageInfo(m_ProjectTileData);
return m_ProjecTileData.IsSkill() ? Get_SkillDamage() : m_ProjecTileData.shooter.Get_DamageInfo(m_ProjecTileData);
}
protected DamageInfo Get_DamageInfo(bool extradmg = false, bool calcri = true)
{
m_DamageInfo.Damage = m_DamageInfo.BaseDmg;
m_DamageInfo.bExtraDmg = extradmg;
if (calcri) m_DamageInfo.Cal_Cri(m_ProjectTileData.shooter.m_AttackType, m_ProjectTileData.shooter.Get_StatInfo());
if (calcri) m_DamageInfo.Cal_Cri(m_ProjecTileData.shooter.m_AttackType, m_ProjecTileData.shooter.Get_StatInfo());
return m_DamageInfo;
}
protected bool IsStep(int _step)
{
var sdata = m_ProjectTileData.shooter.Get_ServerData();
var sdata = m_ProjecTileData.shooter.Get_ServerData();
if (!DSUtil.CheckNull(sdata))
{
if (m_ProjectTileData.shooter.IsRole(eRole.PC))
return sdata.Get_SkillAwakenLv(m_ProjectTileData.m_SkillListTableData.n_SkillID) >= _step;
if (m_ProjecTileData.shooter.IsRole(eRole.PC))
return sdata.Get_SkillAwakenLv(m_ProjecTileData.m_SkillListTableData.n_SkillID) >= _step;
else
return sdata.Get_PetSkillAwakenLv(m_ProjectTileData.shooter.Get_ID()) >= _step;
return sdata.Get_PetSkillAwakenLv(m_ProjecTileData.shooter.Get_ID()) >= _step;
}
return false;
}
protected Actor Get_NearstEnemy(float dist = 20f)
{ return ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjectTileData.shooter.IsEnemy(), transform.position, dist); }
{ return ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjecTileData.shooter.IsEnemy(), transform.position, dist); }
protected List<Actor> Get_Enemies()
{ return ActorInfo.Ins.Get_EnemyActors(m_ProjectTileData.shooter.IsEnemy(), transform.position); }
{ return ActorInfo.Ins.Get_EnemyActors(m_ProjecTileData.shooter.IsEnemy(), transform.position); }
protected List<Actor> Get_Enemies(Transform tf, float dist)
{
#if UNITY_EDITOR
if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "StatTest")
return new List<Actor> { MainToStatTest.Ins.actors[1] };
#endif
return ActorInfo.Ins.Get_EnemyActors(m_ProjectTileData.shooter.IsEnemy(), tf.position, dist);
return ActorInfo.Ins.Get_EnemyActors(m_ProjecTileData.shooter.IsEnemy(), tf.position, dist);
}
protected void Show_HitEffect(bool effectbyHit, Actor target)
{
if (!DSUtil.CheckNull(m_ProjectTileData) && !string.IsNullOrEmpty(str_HitEffect))
if (!DSUtil.CheckNull(m_ProjecTileData) && !string.IsNullOrEmpty(str_HitEffect))
InGameInfo.Ins.Show_Effect(str_HitEffect, Get_HitEffectPos(effectbyHit, target));
}
Vector3 Get_HitEffectPos(bool effectbyHit, Actor target)
@ -321,15 +321,15 @@ public class ProjectileBase : MonoBehaviour
}
protected IEnumerator Co_Move_Strait(eProjectileStrait direction)
{
while (m_ProjectTileData.LifeTime > 0f)
while (m_ProjecTileData.LifeTime > 0f)
{
if (DSUtil.CheckNull(m_ProjectTileData.shooter)) break;
if (DSUtil.CheckNull(m_ProjecTileData.shooter)) break;
if (direction == eProjectileStrait.Forward)
transform.Translate(m_ProjectTileData.Speed * Time.deltaTime * Vector3.forward);
transform.Translate(m_ProjecTileData.Speed * Time.deltaTime * Vector3.forward);
else
transform.Translate(m_ProjectTileData.Speed * Time.deltaTime * Vector3.down);
transform.Translate(m_ProjecTileData.Speed * Time.deltaTime * Vector3.down);
m_ProjectTileData.LifeTime -= Time.deltaTime;
m_ProjecTileData.LifeTime -= Time.deltaTime;
yield return null;
}
@ -346,13 +346,13 @@ public class ProjectileBase : MonoBehaviour
case "Pet":
case "Mob":
case "Summon":
if (DSUtil.CheckNull(m_ProjectTileData)) break;
if (DSUtil.CheckNull(m_ProjecTileData)) break;
var hitter = other.GetComponent<Actor>();
if (m_ProjectTileData.shooter.IsEnemy() != hitter.IsEnemy())
if (m_ProjecTileData.shooter.IsEnemy() != hitter.IsEnemy())
{
if (!noDmg) hitter.Get_Damage(Get_DamageInfo());
m_ProjectTileData.Action_OnHit?.Invoke(hitter);
m_ProjecTileData.Action_OnHit?.Invoke(hitter);
Show_HitEffect(true, hitter);
if (Off_byHit) Off(false);
return true;
@ -377,7 +377,7 @@ public class ProjectileBase : MonoBehaviour
protected float Get_AwakenData(int step, int index)
{
var data = table_skillawakenconfig.Ins.Get_Data_orNull(m_ProjectTileData.m_SkillListTableData.n_SkillID, step);
var data = table_skillawakenconfig.Ins.Get_Data_orNull(m_ProjecTileData.m_SkillListTableData.n_SkillID, step);
if (DSUtil.CheckNull(data))
return 0f;
@ -391,17 +391,17 @@ public class ProjectileBase : MonoBehaviour
}
protected int Get_FairyCount(eEffect _effect)
{
return m_ProjectTileData.shooter.Get_SelectSkill(_effect) ? 4 : 1;
return m_ProjecTileData.shooter.Get_SelectSkill(_effect) ? 4 : 1;
}
#if UNITY_EDITOR
protected void Add_AwakendLv(int lv)
{
if (m_ProjectTileData.shooter.IsRole(eRole.PC))
if (m_ProjecTileData.shooter.IsRole(eRole.PC))
for (int i = 0; i < lv; i++)
m_ProjectTileData.shooter.Get_ServerData().Add_SkillAwakenLv(m_ProjectTileData.m_SkillListTableData.n_SkillID);
else if (m_ProjectTileData.shooter.IsRole(eRole.Pet))
m_ProjectTileData.shooter.Get_ServerData().Add_PetLv(m_ProjectTileData.shooter.Get_ID(), lv * 15);
m_ProjecTileData.shooter.Get_ServerData().Add_SkillAwakenLv(m_ProjecTileData.m_SkillListTableData.n_SkillID);
else if (m_ProjecTileData.shooter.IsRole(eRole.Pet))
m_ProjecTileData.shooter.Get_ServerData().Add_PetLv(m_ProjecTileData.shooter.Get_ID(), lv * 15);
}
#endif
}

View File

@ -9,30 +9,30 @@ public class ProjectileTest : ProjectileBase
{
void Update()
{
if (m_ProjectTileData.target == null)
if (m_ProjecTileData.target == null)
{
Off();
return;
}
var targetpos = m_ProjectTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjectTileData.Speed);
var targetpos = m_ProjecTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjecTileData.Speed);
if (Vector3.Distance(transform.position, targetpos) < 0.2f)
{
Off();
if (m_ProjectTileData.DamageArea > 0f)
if (m_ProjecTileData.DamageArea > 0f)
{
var enemies = Get_Enemies(transform, m_ProjectTileData.DamageArea);
var enemies = Get_Enemies(transform, m_ProjecTileData.DamageArea);
for (int i = 0; i < enemies.Count; i++)
{
enemies[i].Get_Damage(Get_DamageInfo());
m_ProjectTileData.Action_OnHit?.Invoke(enemies[i]);
m_ProjecTileData.Action_OnHit?.Invoke(enemies[i]);
}
}
else
{
m_ProjectTileData.target.Get_Damage(Get_DamageInfo());
m_ProjectTileData.Action_OnHit?.Invoke(m_ProjectTileData.target);
m_ProjecTileData.target.Get_Damage(Get_DamageInfo());
m_ProjecTileData.Action_OnHit?.Invoke(m_ProjecTileData.target);
}
}
m_LifeTime -= Time.deltaTime;

View File

@ -21,11 +21,11 @@ public class Bottle : ProjectileBase
{
var enemies = Get_Enemies(transform, 1.0f);
for (int i = 0; i < enemies.Count; i++)
enemies[i].Get_Damage(m_ProjectTileData.shooter.Get_DamageInfo(m_ProjectTileData));
enemies[i].Get_Damage(m_ProjecTileData.shooter.Get_DamageInfo(m_ProjecTileData));
Off();
SoundInfo.Ins.Play_OneShot_byDistance(eSound.s006_BreakBottle, transform.position, 0.15f);
},
m_ProjectTileData.shooter.Get_Center_position(),
m_ProjecTileData.shooter.Get_Center_position(),
_data.v3_StartPos,
Random.Range(1f, 2f),
Random.Range(0.25f, 0.5f)));

View File

@ -17,7 +17,7 @@ public class SelectCirclrBase : ProjectileBase
private void Update()
{
transform.position = m_ProjectTileData.shooter.Get_Center_position();
transform.position = m_ProjecTileData.shooter.Get_Center_position();
transform.localEulerAngles = new Vector3(0f, y);
y += Time.deltaTime * 120f;
if (y > 360f) y = 0f;

View File

@ -50,7 +50,7 @@ public class SelectFairyBase : ProjectileBase
gos[1].SetActive(true);
if (FairyCount == 1)
{
var mob = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjectTileData.shooter.IsEnemy(), transform.position);
var mob = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjecTileData.shooter.IsEnemy(), transform.position);
if (mob != null && !mob.IsDead())
Set_CC(mob);
}

View File

@ -27,7 +27,7 @@ public class Select_BodyonFire : ProjectileBase
DagameTime = 0.2f;
var enemies = Get_Enemies(transform, 2.5f);
for (int i = 0; i < enemies.Count; i++)
enemies[i].Get_Damage(m_ProjectTileData.shooter.Get_DamageInfo(m_ProjectTileData, DamageRate));
enemies[i].Get_Damage(m_ProjecTileData.shooter.Get_DamageInfo(m_ProjecTileData, DamageRate));
}
}
else
@ -41,6 +41,6 @@ public class Select_BodyonFire : ProjectileBase
}
}
transform.position = m_ProjectTileData.shooter.Get_position();
transform.position = m_ProjecTileData.shooter.Get_position();
}
}

View File

@ -22,15 +22,15 @@ public class Select_Bottle : ProjectileBase
while (true)
{
if (m_ProjectTileData.shooter.IsDead()) break;
if (m_ProjecTileData.shooter.IsDead()) break;
yield return new WaitForSeconds(4f);
m_ProjectTileData.target = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjectTileData.shooter.IsEnemy(), m_ProjectTileData.shooter.Get_position());
if (m_ProjectTileData.target)
m_ProjecTileData.target = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjecTileData.shooter.IsEnemy(), m_ProjecTileData.shooter.Get_position());
if (m_ProjecTileData.target)
{
m_ProjectTileData.v3_StartPos = m_ProjectTileData.target.Get_position();
if (Vector3.Distance(m_ProjectTileData.target.Get_position(), m_ProjectTileData.shooter.Get_position()) < 15f)
m_ProjecTileData.v3_StartPos = m_ProjecTileData.target.Get_position();
if (Vector3.Distance(m_ProjecTileData.target.Get_position(), m_ProjecTileData.shooter.Get_position()) < 15f)
for (int i = 0; i < arr_Bottle.Length; i++)
arr_Bottle[i].Set(m_ProjectTileData);
arr_Bottle[i].Set(m_ProjecTileData);
}
}

View File

@ -32,10 +32,10 @@ public class Select_LeafFairy : ProjectileBase
for (int i = 0; i < FairyCount; i++)
{
var pos = randomPos + Random.insideUnitSphere;
transform.position = m_ProjectTileData.shooter.Get_Center_position() + pos;
transform.position = m_ProjecTileData.shooter.Get_Center_position() + pos;
var mobs = ActorInfo.Ins.Get_EnemyActors(m_ProjectTileData.shooter.IsEnemy(),
m_ProjectTileData.shooter.Get_position(), 0f, eAttackType.Physics);
var mobs = ActorInfo.Ins.Get_EnemyActors(m_ProjecTileData.shooter.IsEnemy(),
m_ProjecTileData.shooter.Get_position(), 0f, eAttackType.Physics);
if (mobs.Count > 0)
{
var mob = mobs[Random.Range(0, mobs.Count)];

View File

@ -12,6 +12,6 @@ public class Select_MoveSpeedUp : ProjectileBase
}
private void Update()
{
transform.position = m_ProjectTileData.shooter.Get_position();
transform.position = m_ProjecTileData.shooter.Get_position();
}
}

View File

@ -23,8 +23,8 @@ public class Select_Star : ProjectileBase
var rad = Mathf.Deg2Rad * deg * i;
var x = circleR * Mathf.Sin(rad);
var z = circleR * Mathf.Cos(rad);
var pos = m_ProjectTileData.shooter.Get_Center_position() + new Vector3(x, 2f, z);
ProjectileInfo.Ins.Shoot_Projectile("ProjectileStar", m_ProjectTileData.shooter, null, damagerate.ValueBase, pos);
var pos = m_ProjecTileData.shooter.Get_Center_position() + new Vector3(x, 2f, z);
ProjectileInfo.Ins.Shoot_Projectile("ProjectileStar", m_ProjecTileData.shooter, null, damagerate.ValueBase, pos);
//InGameInfo.Ins.Show_Effect(eEffect.ProjectileStarFlash, pos);
yield return new WaitForSeconds(0.05f);

View File

@ -23,9 +23,9 @@ public class Select_SwordSlash : ProjectileBase
void Shoot(float DamageRate)
{
transform.position = m_ProjectTileData.shooter.Get_Center_position();
var target = m_ProjectTileData.shooter.Get_Target();
if (target == null) target = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjectTileData.shooter.IsEnemy(), m_ProjectTileData.shooter.Get_position());
if (target != null) ProjectileInfo.Ins.Shoot_Projectile("SwordSlash", m_ProjectTileData.shooter, target, DamageRate, null, 0.9f);
transform.position = m_ProjecTileData.shooter.Get_Center_position();
var target = m_ProjecTileData.shooter.Get_Target();
if (target == null) target = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjecTileData.shooter.IsEnemy(), m_ProjecTileData.shooter.Get_position());
if (target != null) ProjectileInfo.Ins.Shoot_Projectile("SwordSlash", m_ProjecTileData.shooter, target, DamageRate, null, 0.9f);
}
}

View File

@ -40,7 +40,7 @@ public class Skill_Bead : ProjectileBase
IEnumerator Co_Bead()
{
// 시작 위치 설정
var startPos = m_ProjectTileData.shooter.Get_Center_position();
var startPos = m_ProjecTileData.shooter.Get_Center_position();
var targetPos = startPos + transform.forward * 5f; // 앞으로 이동할 목표 위치 (5 단위)
float duration = 2f; // 이동 시간

View File

@ -20,20 +20,20 @@ public class Skill_Berserk : ProjectileBase
IEnumerator Co_Update()
{
var time = m_ProjectTileData.Get_SkillDamagePercent();
var time = m_ProjecTileData.Get_SkillDamagePercent();
if (time <= 0f) time = 5f; // TODO 정인호 : 테스트
// 이펙트
InGameInfo.Ins.Show_Effect("Effect_Howling", m_ProjectTileData.target.Get_Center_position());
InGameInfo.Ins.Show_Effect("Effect_Berserk", m_ProjectTileData.target, eEffectLocation.Mid, time);
InGameInfo.Ins.Show_Effect("Effect_Howling", m_ProjecTileData.target.Get_Center_position());
InGameInfo.Ins.Show_Effect("Effect_Berserk", m_ProjecTileData.target, eEffectLocation.Mid, time);
// 커짐
m_ProjectTileData.target.Set_ScaleControl(false);
m_ProjectTileData.target.Buff_or_Debuff(eCC.Cri_Up, time, cri);
m_ProjectTileData.target.Buff_or_Debuff(eCC.ATK_Up, time, attackspeed);
m_ProjectTileData.target.Buff_or_Debuff(eCC.DEF_Down, time, defdown);
m_ProjectTileData.target.Buff_or_Debuff(eCC.M_DEF_Down, time, mdefdown);
m_ProjecTileData.target.Set_ScaleControl(false);
m_ProjecTileData.target.Buff_or_Debuff(eCC.Cri_Up, time, cri);
m_ProjecTileData.target.Buff_or_Debuff(eCC.ATK_Up, time, attackspeed);
m_ProjecTileData.target.Buff_or_Debuff(eCC.DEF_Down, time, defdown);
m_ProjecTileData.target.Buff_or_Debuff(eCC.M_DEF_Down, time, mdefdown);
// Off & 원래대로 돌아오기
yield return new WaitForSeconds(time);
m_ProjectTileData.target.Set_ScaleControl(true);
m_ProjecTileData.target.Set_ScaleControl(true);
Off(true);
}
}

View File

@ -22,7 +22,7 @@ public class Skill_BlackHole : ProjectileBase
m_LifeTime = lifetime;
m_DagmaeGap = damagegap;
var skillid = m_ProjectTileData.m_SkillListTableData.n_SkillID;
var skillid = m_ProjecTileData.m_SkillListTableData.n_SkillID;
if (IsStep(1))
{
range += Get_AwakenData(1, 1);

View File

@ -41,7 +41,7 @@ public class Skill_BrutalSlash : ProjectileBase
yield return null;
Off(true);
m_ProjectTileData.shooter.Stop(false);
m_ProjecTileData.shooter.Stop(false);
}
void Shoot_Projectile(int index, string proj)
@ -50,15 +50,15 @@ public class Skill_BrutalSlash : ProjectileBase
{
Vector3 randomPosition = GetRandomPositionInSector();
pb.m_Pierce = true;
pb.transform.position = m_ProjectTileData.shooter.Get_CenterPositionFoward();
pb.transform.position = m_ProjecTileData.shooter.Get_CenterPositionFoward();
pb.transform.LookAt(
new Vector3(randomPosition.x, m_ProjectTileData.shooter.Get_Center_position().y, randomPosition.z));
new Vector3(randomPosition.x, m_ProjecTileData.shooter.Get_Center_position().y, randomPosition.z));
});
}
Vector3 GetRandomPositionInSector()
{
return (Random.insideUnitSphere * 10f) +
(m_ProjectTileData.shooter.Get_position() + m_ProjectTileData.shooter.transform.forward * 20f);
(m_ProjecTileData.shooter.Get_position() + m_ProjecTileData.shooter.transform.forward * 20f);
}
}

View File

@ -15,13 +15,13 @@ public class Skill_Buff_FastShot : ProjectileBase
void Update()
{
transform.position = m_ProjectTileData.shooter.Get_Center_position();
transform.position = m_ProjecTileData.shooter.Get_Center_position();
}
IEnumerator Co_FastShot()
{
yield return new WaitForSeconds(5f);
m_ProjectTileData.shooter.Set_AttackCoolTime(2f);
m_ProjecTileData.shooter.Set_AttackCoolTime(2f);
Off();
}
}

View File

@ -13,7 +13,7 @@ public class Skill_ChainLightning : ProjectileBase
_data.eStartPos = eProjectileStartPos.ShooterCenter;
transform.localScale = Vector3.one * 1.5f;
base.Set(_data);
m_ProjectTileData.Speed = 40f;
m_ProjecTileData.Speed = 40f;
m_Count = IsStep(1) ? 8 : 4;
m_LifeTime = 0f;
OffTime = 0f;
@ -39,7 +39,7 @@ public class Skill_ChainLightning : ProjectileBase
if (m_LifeTime <= 0f)
{
var targetpos = list_mob[0].Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjectTileData.Speed);
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * m_ProjecTileData.Speed);
if (Vector3.Distance(transform.position, targetpos) < 0.2f)
{
m_LifeTime = 0.3f;

View File

@ -15,7 +15,7 @@ public class Skill_DaggerThrow : ProjectileBase
base.Set(_data);
if (IsStep(1)) Set_ReduceCoolTime_byStep(1);
m_ProjectTileData.e_SkillExtraType = IsStep(2) ? eSkillExtraType.Blood : eSkillExtraType.None;
m_ProjecTileData.e_SkillExtraType = IsStep(2) ? eSkillExtraType.Blood : eSkillExtraType.None;
if (IsStep(3))
{
DSUtil.InActivateGameObjects(gos, 1);
@ -33,14 +33,14 @@ public class Skill_DaggerThrow : ProjectileBase
for (int i = 0; i < tfs_nine.Length; i++)
tfs_nine[i].localPosition = Vector3.zero;
while (m_ProjectTileData.LifeTime > 0f)
while (m_ProjecTileData.LifeTime > 0f)
{
if (DSUtil.CheckNull(m_ProjectTileData.shooter)) break;
if (DSUtil.CheckNull(m_ProjecTileData.shooter)) break;
for (int i = 0; i < tfs_nine.Length; i++)
tfs_nine[i].Translate(m_ProjectTileData.Speed * Time.deltaTime * tfs_nine[i].forward);
tfs_nine[i].Translate(m_ProjecTileData.Speed * Time.deltaTime * tfs_nine[i].forward);
m_ProjectTileData.LifeTime -= Time.deltaTime;
m_ProjecTileData.LifeTime -= Time.deltaTime;
yield return null;
}

View File

@ -18,7 +18,7 @@ public class Skill_DarkAmbush : ProjectileBase
protected override void Off(bool forceoff = false)
{
base.Off(forceoff);
if (!DSUtil.CheckNull(m_ProjectTileData) && !DSUtil.CheckNull(m_ProjectTileData.shooter))
m_ProjectTileData.shooter.Play_Idle();
if (!DSUtil.CheckNull(m_ProjecTileData) && !DSUtil.CheckNull(m_ProjecTileData.shooter))
m_ProjecTileData.shooter.Play_Idle();
}
}

View File

@ -7,8 +7,8 @@ public class Skill_EatSnack : ProjectileBase
base.Set(_data);
var healrate = Get_DamageInfo(false, false).Damage + (IsStep(2) ? Get_AwakenData(2, 1) : 0f);
m_ProjectTileData.target.Heal(healrate);
if (IsStep(1)) m_ProjectTileData.target.Heal_MP(healrate);
m_ProjecTileData.target.Heal(healrate);
if (IsStep(1)) m_ProjecTileData.target.Heal_MP(healrate);
Set_ReduceCoolTime_byStep(3);

View File

@ -53,10 +53,10 @@ public class Skill_EnergyBall : ProjectileBase
// 에너지볼 이동
while (m_LifeTime > 0f)
{
if (DSUtil.CheckNull(m_ProjectTileData.shooter)) break;
if (DSUtil.CheckNull(m_ProjecTileData.shooter)) break;
for (int i = 0; i < count; i++)
list_energyball[i].Translate(m_ProjectTileData.Speed * Time.deltaTime * list_energyball[i].forward);
list_energyball[i].Translate(m_ProjecTileData.Speed * Time.deltaTime * list_energyball[i].forward);
m_LifeTime -= Time.deltaTime;
yield return null;

View File

@ -12,7 +12,7 @@ public class Skill_FireBolt : ProjectileTest
if (_data.eStartPos == eProjectileStartPos.None)
_data.eStartPos = eProjectileStartPos.ShooterCenter;
base.Set(_data);
m_ProjectTileData.e_SkillExtraType = IsStep(3) ? eSkillExtraType.Burn : eSkillExtraType.None;
m_ProjecTileData.e_SkillExtraType = IsStep(3) ? eSkillExtraType.Burn : eSkillExtraType.None;
_data.Action_OnHit = hitter =>
{ // 폭파 데미지

View File

@ -38,7 +38,7 @@ public class Skill_Frozen : ProjectileBase
DSUtil.InActivateGameObjects(gos, 0);
while (true)
{
var targetPos = m_ProjectTileData.target.Get_Center_position();
var targetPos = m_ProjecTileData.target.Get_Center_position();
transform.position = Vector3.MoveTowards(transform.position, targetPos, Time.deltaTime * speed);
if (Vector3.Distance(transform.position, targetPos) < 0.2f)
break;
@ -46,7 +46,7 @@ public class Skill_Frozen : ProjectileBase
}
DSUtil.InActivateGameObjects(gos, 1);
gos[1].transform.position = m_ProjectTileData.target.Get_position();
gos[1].transform.position = m_ProjecTileData.target.Get_position();
yield return new WaitForSeconds(1f);
Off(true);

View File

@ -10,7 +10,7 @@ public class Skill_GroundRay : ProjectileBase
private void Update()
{
if (!DSUtil.CheckNull(m_ProjectTileData.target))
transform.position = m_ProjectTileData.target.Get_position();
if (!DSUtil.CheckNull(m_ProjecTileData.target))
transform.position = m_ProjecTileData.target.Get_position();
}
}

View File

@ -12,11 +12,11 @@ public class Skill_Heal : ProjectileBase
base.Set(_data);
_data.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(eSkillExtraType.Cure);
if (IsStep(1)) Set_ReduceCoolTime_byStep(1);
m_ProjectTileData.e_SkillExtraType = IsStep(3) ? eSkillExtraType.Cure : eSkillExtraType.None;
m_ProjecTileData.e_SkillExtraType = IsStep(3) ? eSkillExtraType.Cure : eSkillExtraType.None;
var healinfo = Get_DamageInfo(false, false);
healinfo.Damage += healinfo.Damage * (IsStep(2) ? Get_AwakenData(2, 1) : 0);
m_ProjectTileData.target.Check_Extra(healinfo);
m_ProjectTileData.target.Heal(healinfo.Damage);
m_ProjecTileData.target.Check_Extra(healinfo);
m_ProjecTileData.target.Heal(healinfo.Damage);
StartCoroutine(Co_Off(1.5f));
}
}

View File

@ -34,10 +34,10 @@ public class Skill_HeavyRain : ProjectileBase
while (count > 0)
{
--count;
var enemies = Get_Enemies(m_ProjectTileData.shooter.transform, area);
var enemies = Get_Enemies(m_ProjecTileData.shooter.transform, area);
if (enemies.Count > 0)
{
mm[count].shooter = m_ProjectTileData.shooter;
mm[count].shooter = m_ProjecTileData.shooter;
mm[count].target = enemies[Random.Range(0, enemies.Count)];
mm[count].eStartPos = eProjectileStartPos.Custom;
mm[count].v3_StartPos = mm[count].target.Get_position();

View File

@ -29,14 +29,14 @@ public class Skill_Hurricane : ProjectileBase
if (IsStep(3)) m_Collider.size = new Vector3(1.70440888f, 3.86459613f, 1.84529209f);
else m_Collider.size = new Vector3(1.37568462f, 3.86459613f, 1.46960735f);
while (m_ProjectTileData.LifeTime > 0f)
while (m_ProjecTileData.LifeTime > 0f)
{
m_Collider.enabled = true;
yield return null;
yield return null;
m_Collider.enabled = false;
yield return new WaitForSeconds(damageGap);
m_ProjectTileData.LifeTime -= damageGap;
m_ProjecTileData.LifeTime -= damageGap;
}
Off(true);
@ -44,9 +44,9 @@ public class Skill_Hurricane : ProjectileBase
private void Update()
{
if (!DSUtil.CheckNull(m_ProjectTileData.target) && !m_ProjectTileData.target.IsDead())
if (!DSUtil.CheckNull(m_ProjecTileData.target) && !m_ProjecTileData.target.IsDead())
{
var targetpos = m_ProjectTileData.target.Get_position();
var targetpos = m_ProjecTileData.target.Get_position();
transform.position = Vector3.MoveTowards(transform.position, targetpos, Time.deltaTime * movespeed);
// Create a new position with the y value you want
@ -56,11 +56,11 @@ public class Skill_Hurricane : ProjectileBase
}
else
{
m_ProjectTileData.target = Get_NearstEnemy();
if (DSUtil.CheckNull(m_ProjectTileData.target))
m_ProjecTileData.target = Get_NearstEnemy();
if (DSUtil.CheckNull(m_ProjecTileData.target))
Off(true);
}
if (m_ProjectTileData.shooter.IsDead()) Off();
if (m_ProjecTileData.shooter.IsDead()) Off();
}
}

View File

@ -42,9 +42,9 @@ public class Skill_IceArrows : ProjectileBase
{
yield return new WaitForSeconds(0.5f);
Show_HitEffect(false, null);
if (!DSUtil.CheckNull(m_ProjectTileData.target))
if (!DSUtil.CheckNull(m_ProjecTileData.target))
{
var enemies = Get_Enemies(m_ProjectTileData.target.transform, range);
var enemies = Get_Enemies(m_ProjecTileData.target.transform, range);
for (int i = 0; i < enemies.Count; i++)
enemies[i].Get_Damage(Get_DamageInfo());
}

View File

@ -7,10 +7,10 @@ public class Skill_IceBolt : ProjectileTest
base.Set(_data);
// 공속이 추가로 감소
m_ProjectTileData.CC_AddVal1 = IsStep(1) ? Get_AwakenData(1, 1) : 0;
m_ProjecTileData.CC_AddVal1 = IsStep(1) ? Get_AwakenData(1, 1) : 0;
// 디버프 시간 증가
m_ProjectTileData.CC_AddTime = IsStep(2) ? Get_AwakenData(2, 1) : 0;
m_ProjecTileData.CC_AddTime = IsStep(2) ? Get_AwakenData(2, 1) : 0;
// 서리 효과 상태인 적을 공격 시 100% 치명타 발생
m_ProjectTileData.CC_AddVal2 = IsStep(3) ? Get_AwakenData(3, 1) : 0;
m_ProjecTileData.CC_AddVal2 = IsStep(3) ? Get_AwakenData(3, 1) : 0;
}
}

View File

@ -32,11 +32,11 @@ public class Skill_MeteoStorm : ProjectileBase
while (count > 0)
{
var enemies = Get_Enemies(m_ProjectTileData.shooter.transform, createArea);
var enemies = Get_Enemies(m_ProjecTileData.shooter.transform, createArea);
if (enemies.Count > 0)
{
m_ProjectTileData.target = enemies[Random.Range(0, enemies.Count)];
ProjectileInfo.Ins.Shoot_Projectile(projectile, m_ProjectTileData, proj => { proj.Set_CheckersSize(addSize); });
m_ProjecTileData.target = enemies[Random.Range(0, enemies.Count)];
ProjectileInfo.Ins.Shoot_Projectile(projectile, m_ProjecTileData, proj => { proj.Set_CheckersSize(addSize); });
}
--count;

View File

@ -16,8 +16,8 @@ public class Skill_MultiShot_Arrow : Projectile_Strait
public void Set(ProjectileData _data, bool _step2, Action<Actor> act)
{
gameObject.SetActive(true);
m_ProjectTileData = _data.Copy();
m_ProjectTileData.Action_OnHit = act;
m_ProjecTileData = _data.Copy();
m_ProjecTileData.Action_OnHit = act;
m_Pierce = _step2;
transform.localPosition = OriginalPos;
transform.localEulerAngles = OriRot;

View File

@ -17,10 +17,10 @@ public class Skill_OneHandCombo1 : ProjectileBase
for (int i = 0; i < list_ShowEffectTime.Count; i++)
{
yield return new WaitForSeconds(list_ShowEffectTime[i]);
m_ProjectTileData.eStartPos = eProjectileStartPos.Custom;
m_ProjectTileData.v3_StartPos = m_ProjectTileData.shooter.Get_CenterPositionFoward();
m_ProjectTileData.LifeTime = Time.deltaTime;
ProjectileInfo.Ins.Shoot_Projectile("Projectile_OneHandCombo1", m_ProjectTileData);
m_ProjecTileData.eStartPos = eProjectileStartPos.Custom;
m_ProjecTileData.v3_StartPos = m_ProjecTileData.shooter.Get_CenterPositionFoward();
m_ProjecTileData.LifeTime = Time.deltaTime;
ProjectileInfo.Ins.Shoot_Projectile("Projectile_OneHandCombo1", m_ProjecTileData);
}
yield return new WaitForSeconds(1f);

View File

@ -24,10 +24,10 @@ public class Skill_PhantomFrenzy : ProjectileBase
{
OptionInfo.Ins.PCMove = false;
var shooter = m_ProjectTileData.shooter;
var shooter = m_ProjecTileData.shooter;
ObscuredInt attackTimes = AttackCount; // 공격 횟수 설정
attackTimes.RandomizeCryptoKey();
Actor target = m_ProjectTileData.target;
Actor target = m_ProjecTileData.target;
float t = 0f;
shooter.AnimationPlay("idle");

View File

@ -8,10 +8,10 @@ public class Skill_ShieldAttack : ProjectileBase
_data.eStartPos = eProjectileStartPos.Custom;
_data.v3_StartPos = _data.shooter.Get_CenterPositionFoward();
base.Set(_data);
if (IsStep(1)) m_ProjectTileData.CC_AddTime = Get_AwakenData(1, 1);
if (IsStep(2)) m_ProjectTileData.CC_AddDmg = Get_AwakenData(2, 1);
if (IsStep(1)) m_ProjecTileData.CC_AddTime = Get_AwakenData(1, 1);
if (IsStep(2)) m_ProjecTileData.CC_AddDmg = Get_AwakenData(2, 1);
Set_ReduceCoolTime_byStep(3);
m_ProjectTileData.target.Get_Damage(Get_DamageInfo(true));
m_ProjecTileData.target.Get_Damage(Get_DamageInfo(true));
StartCoroutine(Co_Update());
}

View File

@ -22,8 +22,8 @@ public class Skill_SpiritBless : ProjectileBase
private void Update()
{
if (!DSUtil.CheckNull(m_ProjectTileData.target))
transform.position = m_ProjectTileData.target.Get_position();
if (!DSUtil.CheckNull(m_ProjecTileData.target))
transform.position = m_ProjecTileData.target.Get_position();
else
Off(true);
}
@ -31,10 +31,10 @@ public class Skill_SpiritBless : ProjectileBase
IEnumerator Co_Update()
{
var t = time + (IsStep(1) ? Get_AwakenData(1, 1) : 0);
var target = m_ProjectTileData.target;
var target = m_ProjecTileData.target;
target.Buff_or_Debuff(eCC.ATK_Up, t, Get_DamageInfo().Damage);
if (IsStep(2)) target.Buff_or_Debuff(eCC.ATKSPD_Up, t, Get_AwakenData(2, 1));
m_ProjectTileData.CC_AddVal1 = IsStep(3) ? Get_AwakenData(3, 1) : 0;
m_ProjecTileData.CC_AddVal1 = IsStep(3) ? Get_AwakenData(3, 1) : 0;
yield return new WaitForSeconds(t);
go_Effect.SetActive(false);

View File

@ -24,7 +24,7 @@ public class Skill_StraightBurst : ProjectileBase
IEnumerator Co_StraightBurst()
{
int count = 2 + (IsStep(1) ? (int)Get_AwakenData(1, 1) : 0) + (IsStep(3) ? (int)Get_AwakenData(3, 1) : 0);
m_ProjectTileData.e_SkillExtraType = IsStep(2) ? eSkillExtraType.Knockback : eSkillExtraType.None;
m_ProjecTileData.e_SkillExtraType = IsStep(2) ? eSkillExtraType.Knockback : eSkillExtraType.None;
for (int i = 0; i < count; i++)
{

View File

@ -14,18 +14,18 @@ public class Skill_SweepAttack : ProjectileBase
IEnumerator Co_Update()
{
m_ProjectTileData.shooter.Set_JoystickStatus(2);
m_ProjecTileData.shooter.Set_JoystickStatus(2);
go_effect.SetActive(false);
yield return new WaitForSeconds(0.1f);
transform.position = m_ProjectTileData.shooter.Get_Center_position();
transform.position = m_ProjecTileData.shooter.Get_Center_position();
go_effect.SetActive(true);
yield return new WaitForSeconds(0.4f);
transform.position = m_ProjectTileData.shooter.Get_Center_position();
transform.position = m_ProjecTileData.shooter.Get_Center_position();
go_effect.SetActive(false);
go_effect.SetActive(true);
yield return new WaitForSeconds(1f);
Off(true);
m_ProjectTileData.shooter.Set_JoystickStatus(3);
m_ProjectTileData.shooter.Play_Idle();
m_ProjecTileData.shooter.Set_JoystickStatus(3);
m_ProjecTileData.shooter.Play_Idle();
}
}

View File

@ -13,9 +13,9 @@ public class Skill_Tornado : ProjectileBase
base.Set(_data);
LookAt_ShooterFoward();
m_ProjectTileData.CC_AddVal1 = IsStep(1) ? Get_AwakenData(1, 1) : 0;
m_ProjectTileData.CC_AddVal2 = IsStep(2) ? Get_AwakenData(2, 1) : 0;
m_ProjectTileData.CC_AddDmg = IsStep(3) ? Get_AwakenData(3, 1) : 0;
m_ProjecTileData.CC_AddVal1 = IsStep(1) ? Get_AwakenData(1, 1) : 0;
m_ProjecTileData.CC_AddVal2 = IsStep(2) ? Get_AwakenData(2, 1) : 0;
m_ProjecTileData.CC_AddDmg = IsStep(3) ? Get_AwakenData(3, 1) : 0;
StartCoroutine(Co_Updata());
}

View File

@ -5,34 +5,49 @@ public class Skill_TrapSetup : Projectile_Curved
{
public ProjectileHitChecker TrapHitChecker, ExplosionHitChecker;
public GameObject go_danger;
[Header("함정 높이 오프셋 (바닥에 맞춰주기 위함")]
public Vector3 offset = new Vector3(0f, 0.35f, 0f);
[Header("함정설치 거리")]
public float m_distance = 5f;
public override void Set(ProjectileData _data)
{
if (_data.shooter.IsRole(eRole.PC))
SkillCard.dic_button.Add(_data.m_SkillListTableData.n_SkillID, Boom);
TrapHitChecker.gameObject.SetActive(true);
TrapHitChecker.Get_Collider().enabled = false;
go_danger.SetActive(false);
ExplosionHitChecker.gameObject.SetActive(false);
_data.Action_OnHit = hitter =>
{
if (!ExplosionHitChecker.gameObject.activeInHierarchy)
StartCoroutine(Co_Update());
};
_data.Action_OnHit = hitter => { Boom(); };
_data.eStartPos = eProjectileStartPos.ShooterCenter;
base.Set(_data);
var end = _data.target.Get_position() + offset;
Launch_Curved(transform.position, end, 1f, 2f, false,
Launch_Curved(transform.position, _data.shooter.Get_PositionFoward(m_distance), 1f, 2f, false,
() =>
{
TrapHitChecker.Get_Collider().enabled = true;
go_danger.SetActive(true);
go_danger.transform.position -= offset;
});
StartCoroutine(Co_BoombyTime());
}
IEnumerator Co_BoombyTime()
{
yield return new WaitForSeconds(m_ProjecTileData.LifeTime - 1f);
Boom();
}
bool Boom()
{
if (TrapHitChecker.Get_Collider().enabled && !ExplosionHitChecker.gameObject.activeInHierarchy)
{
StartCoroutine(Co_Update());
return true;
}
return false;
}
IEnumerator Co_Update()
{
SkillCard.dic_button.Remove(m_ProjecTileData.m_SkillListTableData.n_SkillID);
TrapHitChecker.gameObject.SetActive(false);
go_danger.SetActive(false);
ExplosionHitChecker.Get_Collider().enabled = true;
ExplosionHitChecker.gameObject.SetActive(true);

View File

@ -45,9 +45,9 @@ public class Skill_UnpredictableArrow : ProjectileBase
IEnumerator Co_Update()
{
for (int i = 0; i < list_projectile.Count; i++)
m_ProjectTileData.Copy(list_projectile[i]);
m_ProjecTileData.Copy(list_projectile[i]);
m_ProjectTileData.shooter.AnimationPlay("skill1_loop");
m_ProjecTileData.shooter.AnimationPlay("skill1_loop");
for (int i = 0; i < m_count; i++)
{
yield return new WaitForSeconds(m_delay);
@ -55,13 +55,13 @@ public class Skill_UnpredictableArrow : ProjectileBase
{
pb.m_Pierce = true;
pb.transform.localScale = Vector3.one * 0.5f;
var target = m_ProjectTileData.shooter.Get_CenterPositionFoward(Random.Range(MinDistance, MaxDistance));
var target = m_ProjecTileData.shooter.Get_CenterPositionFoward(Random.Range(MinDistance, MaxDistance));
var Amplitude = Random.Range(MinwaveAmplitude, MaxwaveAmplitude);
var Frequency = Random.Range(MinwaveFrequency, MaxwaveFrequency);
pb.Launch(transform.position, target, Random.value > 0.5f ? 0f : Mathf.PI, Amplitude, Frequency);
});
}
m_ProjectTileData.shooter.Play_Idle();
m_ProjecTileData.shooter.Play_Idle();
Off(true);
}
}

View File

@ -16,20 +16,20 @@ public class Skill_VitalStrike : ProjectileBase
IEnumerator Co_Update()
{
go_effect.SetActive(false);
m_ProjectTileData.Action_OnHit = hitter => { hitter.Stop(false); }; // 흡혈?
m_ProjecTileData.Action_OnHit = hitter => { hitter.Stop(false); }; // 흡혈?
// 내 앞까지 끌어당기기
var targetpos = m_ProjectTileData.shooter.Get_PositionFoward();
var firstpos = m_ProjectTileData.target.Get_position();
m_ProjectTileData.target.Stop(true);
var targetpos = m_ProjecTileData.shooter.Get_PositionFoward();
var firstpos = m_ProjecTileData.target.Get_position();
m_ProjecTileData.target.Stop(true);
float t = 0f;
while (t < 1f)
{
yield return null;
t += Time.deltaTime * 8f;
m_ProjectTileData.target.Set_Warp(Vector3.Lerp(firstpos, targetpos, t));
m_ProjecTileData.target.Set_Warp(Vector3.Lerp(firstpos, targetpos, t));
}
m_ProjectTileData.target.Set_Warp(targetpos);
m_ProjecTileData.target.Set_Warp(targetpos);
yield return new WaitForSeconds(0.5f);

View File

@ -21,21 +21,21 @@ public class Skill_Whirlwind : ProjectileBase
IEnumerator Co_Update()
{
m_ProjectTileData.shooter.Set_JoystickStatus(2);
m_ProjecTileData.shooter.Set_JoystickStatus(2);
m_HitChecker.gameObject.SetActive(false);
while (m_ProjectTileData.LifeTime > 0f)
while (m_ProjecTileData.LifeTime > 0f)
{
yield return new WaitForSeconds(gapTime);
m_ProjectTileData.LifeTime -= gapTime;
transform.position = m_ProjectTileData.shooter.Get_Center_position();
m_ProjecTileData.LifeTime -= gapTime;
transform.position = m_ProjecTileData.shooter.Get_Center_position();
m_HitChecker.gameObject.SetActive(true);
yield return new WaitForSeconds(gapTime);
m_ProjectTileData.LifeTime -= gapTime;
m_ProjecTileData.LifeTime -= gapTime;
m_HitChecker.gameObject.SetActive(false);
}
Off(true);
m_ProjectTileData.shooter.Set_JoystickStatus(3);
m_ProjectTileData.shooter.Play_Idle();
m_ProjecTileData.shooter.Set_JoystickStatus(3);
m_ProjecTileData.shooter.Play_Idle();
}
}

View File

@ -32,12 +32,12 @@ public class DropItem : ProjectileBase
else
{
MagnetUpTime += Time.deltaTime * 2f;
transform.position = Vector3.MoveTowards(transform.position, v3_MagnetUP, Time.deltaTime * m_ProjectTileData.Speed);
transform.position = Vector3.MoveTowards(transform.position, v3_MagnetUP, Time.deltaTime * m_ProjecTileData.Speed);
if (MagnetUpTime >= 1f)
{
MagnetUpTime = 0f;
m_Magnet = 2;
m_ProjectTileData.Speed = 15f;
m_ProjecTileData.Speed = 15f;
}
}
break;
@ -46,8 +46,8 @@ public class DropItem : ProjectileBase
m_Magnet = 0;
else
{
m_ProjectTileData.Speed += Time.deltaTime * 2f;
transform.position = Vector3.MoveTowards(transform.position, MyValue.MyPC.Get_Center_position(), Time.deltaTime * m_ProjectTileData.Speed);
m_ProjecTileData.Speed += Time.deltaTime * 2f;
transform.position = Vector3.MoveTowards(transform.position, MyValue.MyPC.Get_Center_position(), Time.deltaTime * m_ProjecTileData.Speed);
}
break;
}
@ -108,7 +108,7 @@ public class DropItem : ProjectileBase
{
if (gameObject.activeInHierarchy)
{
var data = m_ProjectTileData.shooter.Get_MonsterStatTableData();
var data = m_ProjecTileData.shooter.Get_MonsterStatTableData();
var sdata = ServerInfo.Ins.m_ServerData;
var statdata = MyValue.MyPC.Get_StatInfo();
@ -156,7 +156,7 @@ public class DropItem : ProjectileBase
itemdata.ItemType = m_Item;
itemdata.Set_ID(0);
if (data == null) // 광석
itemdata.Amount = Math.Truncate(m_ProjectTileData.Amount + m_ProjectTileData.Amount * statdata.Get_Stat(Get_StoneStat(m_Item)));
itemdata.Amount = Math.Truncate(m_ProjecTileData.Amount + m_ProjecTileData.Amount * statdata.Get_Stat(Get_StoneStat(m_Item)));
else // 몹
{
//itemdata.Amount = Math.Truncate(data.dic_amount[m_Item] + data.dic_amount[m_Item] * statdata.Get_Stat(Get_StoneStat(m_Item)));

View File

@ -1,9 +1,13 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SkillCard : CardCoolTimeBase
{
public static Dictionary<int, Func<bool>> dic_button = new Dictionary<int, Func<bool>>();
public Image[] images; // 0 아이콘
public GameObject[] gos; // 0 장착중, 1 잠김
@ -88,7 +92,12 @@ public class SkillCard : CardCoolTimeBase
switch (CardType)
{
case eUICardType.Use:
if (m_CoolTime <= 0f)
if (dic_button.ContainsKey(m_Data.n_SkillID))
{
if (dic_button[m_Data.n_SkillID]())
dic_button.Remove(m_Data.n_SkillID);
}
else if (m_CoolTime <= 0f)
{
if (MyValue.MyPC.Use_Skill(m_Data, false, m_Index))
m_CoolTime = m_Data.Get_CoolTime(MyValue.MyPC.Get_StatInfo().Get_Stat(eStat.COOLTIME_Multiplier));