2025-02-23 00:29:45 +00:00
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
public class Boss_QueenUndead : BossMobActor
|
|
|
|
|
{
|
2025-06-05 23:53:48 +00:00
|
|
|
public GameObject go_attackeffect;
|
2025-02-23 00:29:45 +00:00
|
|
|
[Header("스킬1 쿨타임")]
|
|
|
|
|
public float Skill1CoolTime = 6f;
|
|
|
|
|
[Header("스킬1 지속 시간")]
|
|
|
|
|
public float Skill1LifeTime = 5f;
|
|
|
|
|
[Header("스킬1 마나번")]
|
|
|
|
|
public float Skill1Manaburn = 0.02f;
|
|
|
|
|
[Header("스킬1 발동거리")]
|
|
|
|
|
public float Skill1Distance = 15f;
|
|
|
|
|
[Header("---------------------------------------")]
|
|
|
|
|
public bool Perforation_Line;
|
|
|
|
|
[Header("스킬2 쿨타임")]
|
|
|
|
|
public float Skill2CoolTime = 18f;
|
|
|
|
|
[Header("스킬2 차징시간")]
|
|
|
|
|
public float Skill2ChargingTime = 2f;
|
|
|
|
|
[Header("스킬2 데미지")]
|
|
|
|
|
public float Skill2Dmg = 3.2f;
|
2025-06-07 23:44:27 +00:00
|
|
|
[Header("스킬2 뒤로 점프하는 거리")]
|
|
|
|
|
public float Skill2BackDist = 7.5f;
|
|
|
|
|
[Header("스킬2 뒤로 점프하는 시간")]
|
|
|
|
|
public float Skill2BackDuration = 1.5f;
|
2025-02-23 00:29:45 +00:00
|
|
|
|
2025-02-23 03:53:51 +00:00
|
|
|
SkillListTableData m_SilenceCurse = new SkillListTableData { e_SkillExtraType = eSkillExtraType.SilenceCurse, f_ExtraValue4 = 1f };
|
|
|
|
|
|
2025-02-27 00:42:29 +00:00
|
|
|
public override void Set(MonsterTableData mobtable, Vector3 pos, Action<int> actDie, int order, float noDmgTime = 0f)
|
2025-02-23 00:29:45 +00:00
|
|
|
{
|
2025-02-27 00:42:29 +00:00
|
|
|
base.Set(mobtable, pos, actDie, order, noDmgTime);
|
2025-02-23 00:29:45 +00:00
|
|
|
|
2025-06-05 23:53:48 +00:00
|
|
|
go_attackeffect.SetActive(false);
|
|
|
|
|
|
2025-06-07 23:44:27 +00:00
|
|
|
Load_Indicator("UndeadQueen_Skill2_Indicator", 0);
|
|
|
|
|
|
2025-02-23 03:53:51 +00:00
|
|
|
m_SilenceCurse.f_ExtraValue1 = Skill1LifeTime;
|
|
|
|
|
m_SilenceCurse.f_ExtraValue2 = Skill1Manaburn;
|
|
|
|
|
|
2025-02-23 00:29:45 +00:00
|
|
|
CoolTime_Skill1 = 1f;
|
|
|
|
|
CoolTime_Skill2 = 2f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Init(bool initSkill1CoolTime, bool initSkill2CoolTime)
|
|
|
|
|
{
|
|
|
|
|
base.Init(initSkill1CoolTime, initSkill2CoolTime);
|
|
|
|
|
if (initSkill1CoolTime) CoolTime_Skill1 = Skill1CoolTime;
|
|
|
|
|
if (initSkill2CoolTime) CoolTime_Skill2 = Skill2CoolTime;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-05 23:53:48 +00:00
|
|
|
public override void Play_Attack(int _attack, float _as, Action actsuccess = null)
|
|
|
|
|
{
|
|
|
|
|
go_attackeffect.SetActive(false);
|
|
|
|
|
base.Play_Attack(_attack, _as, () => { CoroutineMgr.Ins.Set_Coroutine(() => { go_attackeffect.SetActive(true); }, 0.1f); });
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-23 00:29:45 +00:00
|
|
|
protected override void Update()
|
|
|
|
|
{
|
|
|
|
|
base.Update();
|
|
|
|
|
if (IsDead() || IsStop) return;
|
|
|
|
|
|
|
|
|
|
if (UseSkillIndex == 1 && MobStatus != eMobStatus.Skill)
|
|
|
|
|
{
|
|
|
|
|
if (isTarget && Vector3.Distance(m_Target.Get_position(), Get_position()) >= Skill1Distance)
|
|
|
|
|
StartCoroutine(Co_Skill1());
|
|
|
|
|
else
|
|
|
|
|
UseSkillIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
else if (UseSkillIndex == 2 && MobStatus != eMobStatus.Skill)
|
|
|
|
|
StartCoroutine(Co_Skill2());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IEnumerator Co_Skill1()
|
|
|
|
|
{
|
|
|
|
|
Change_MobStatus(eMobStatus.Skill);
|
|
|
|
|
AnimationPlay("boss_skill1");
|
|
|
|
|
|
2025-02-23 04:11:21 +00:00
|
|
|
yield return new WaitForSeconds(1.5f);
|
2025-02-23 00:29:45 +00:00
|
|
|
Check_Battle();
|
|
|
|
|
Init(true, false);
|
|
|
|
|
}
|
2025-02-23 04:11:21 +00:00
|
|
|
protected override void Set_Skill1Projectile(ProjectileBase pb)
|
|
|
|
|
{
|
|
|
|
|
var pd = pb.Get_ProjectTileData();
|
|
|
|
|
pd.e_SkillExtraType = eSkillExtraType.SilenceCurse;
|
|
|
|
|
pd.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(pd.e_SkillExtraType);
|
|
|
|
|
pd.m_SkillListTableData = m_SilenceCurse;
|
|
|
|
|
}
|
2025-04-07 23:18:30 +00:00
|
|
|
protected override Vector3 Get_Skill1Pos() { return m_Target.Get_position(); }
|
2025-02-23 04:11:21 +00:00
|
|
|
|
2025-02-23 00:29:45 +00:00
|
|
|
IEnumerator Co_Skill2()
|
|
|
|
|
{
|
2025-02-23 03:53:51 +00:00
|
|
|
Change_MobStatus(eMobStatus.Skill);
|
|
|
|
|
AnimationPlay("boss_skill2charging");
|
|
|
|
|
InGameInfo.Ins.Show_Effect("Effect_QueenUndeadCharging", this, eEffectLocation.Bottom, Skill2ChargingTime);
|
2025-04-07 23:18:30 +00:00
|
|
|
InGameInfo.Ins.Show_Effect("Effect_QueenUndeadSkill2Start", Get_position());
|
2025-06-07 23:44:27 +00:00
|
|
|
dic_indicator[0].transform.position = Get_position();
|
|
|
|
|
dic_indicator[0].SetActive(true);
|
2025-02-23 04:11:21 +00:00
|
|
|
|
2025-02-23 00:29:45 +00:00
|
|
|
yield return new WaitForSeconds(Skill2ChargingTime);
|
2025-02-23 03:53:51 +00:00
|
|
|
AnimationPlay("boss_skill2attack");
|
2025-06-07 23:44:27 +00:00
|
|
|
dic_indicator[0].SetActive(false);
|
2025-02-23 04:11:21 +00:00
|
|
|
|
2025-06-07 23:44:27 +00:00
|
|
|
//yield return new WaitForSeconds(0.5f);
|
|
|
|
|
//InGameInfo.Ins.Show_Effect("Effect_QueenUndeadSkill2End", Get_position());
|
2025-04-07 23:18:30 +00:00
|
|
|
|
|
|
|
|
yield return new WaitForSeconds(1.0f);
|
2025-02-23 03:53:51 +00:00
|
|
|
Check_Battle();
|
|
|
|
|
Init(false, true);
|
|
|
|
|
}
|
2025-02-23 00:29:45 +00:00
|
|
|
|
2025-02-23 03:53:51 +00:00
|
|
|
protected override float Get_Skill2Dmg() { return Skill2Dmg; }
|
|
|
|
|
protected override void Set_Skill2Projectile(ProjectileBase pb)
|
|
|
|
|
{
|
|
|
|
|
var pd = pb.Get_ProjectTileData();
|
2025-02-24 03:13:15 +00:00
|
|
|
pd.e_SkillExtraType = m_SilenceCurse.e_SkillExtraType;
|
2025-02-23 03:53:51 +00:00
|
|
|
pd.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(pd.e_SkillExtraType);
|
|
|
|
|
pd.m_SkillListTableData = m_SilenceCurse;
|
2025-06-07 23:44:27 +00:00
|
|
|
pd.Action_OnHit = hitter =>
|
|
|
|
|
{
|
|
|
|
|
if (hitter.IsMainPC()) TimeMgr.Ins.Set_TimeScale();
|
|
|
|
|
var pos = (hitter.Get_position() - Get_position()) * Skill2BackDist + hitter.Get_position();
|
|
|
|
|
hitter.JumpToPosition(pos, Skill2BackDuration, 1f, true);
|
|
|
|
|
};
|
2025-02-23 00:29:45 +00:00
|
|
|
}
|
|
|
|
|
}
|