This commit is contained in:
Ino 2025-02-14 07:49:30 +09:00
parent bcd2206d4e
commit eaf25bd499
5 changed files with 33 additions and 5 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -65,8 +65,8 @@ public class Actor : MyCoroutine
protected Renderer[] arr_Renderer; protected Renderer[] arr_Renderer;
protected TurnOff_GO[] arr_Effects; protected TurnOff_GO[] arr_Effects;
protected Dictionary<eSkillExtraType, bool> dic_skillextra = new Dictionary<eSkillExtraType, bool>(); // 부가 효과 적용 여부 protected Dictionary<eSkillExtraType, bool> dic_skillextra = new Dictionary<eSkillExtraType, bool>(); // 부가 효과 적용 여부
//protected Dictionary<eSkillExtraType, int> dic_skillextraCount = new Dictionary<eSkillExtraType, int>(); // 부가 효과 적용 여부
protected Dictionary<eCC, CCData> dic_ccData = new Dictionary<eCC, CCData>(); protected Dictionary<eCC, CCData> dic_ccData = new Dictionary<eCC, CCData>();
protected Dictionary<eCC, float> dic_ccValue = new Dictionary<eCC, float>();
protected Dictionary<eCC, Dictionary<Actor, double>> dic_ccAddRate = new Dictionary<eCC, Dictionary<Actor, double>>(); 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 Dictionary<eCC, TurnOff_GO> dic_CCEffect = new Dictionary<eCC, TurnOff_GO>();
protected ObscuredInt _Reincarnation; protected ObscuredInt _Reincarnation;
@ -84,6 +84,8 @@ public class Actor : MyCoroutine
dic_ccData.Add(i, new CCData()); dic_ccData.Add(i, new CCData());
foreach (var item in dic_ccData) foreach (var item in dic_ccData)
item.Value.Init(); item.Value.Init();
foreach (var key in dic_ccValue.Keys.ToList())
dic_ccValue[key] = 0f;
dic_ccAddRate.Clear(); dic_ccAddRate.Clear();
foreach (var key in dic_skillextra.Keys.ToList()) foreach (var key in dic_skillextra.Keys.ToList())
dic_skillextra[key] = false; dic_skillextra[key] = false;
@ -1604,6 +1606,8 @@ public class Actor : MyCoroutine
var speed = m_NavSpeed; var speed = m_NavSpeed;
if (dic_ccData[eCC.MOVSPD_Up].CCTime > 0) if (dic_ccData[eCC.MOVSPD_Up].CCTime > 0)
speed += speed * (float)dic_ccData[eCC.MOVSPD_Up].CCDmg; speed += speed * (float)dic_ccData[eCC.MOVSPD_Up].CCDmg;
if (dic_ccValue.ContainsKey(eCC.MOVSPD_Up))
speed += speed * dic_ccValue[eCC.MOVSPD_Up];
if (dic_ccData[eCC.MOVSPD_Down].CCTime > 0) if (dic_ccData[eCC.MOVSPD_Down].CCTime > 0)
speed -= speed * (float)dic_ccData[eCC.MOVSPD_Down].CCDmg; speed -= speed * (float)dic_ccData[eCC.MOVSPD_Down].CCDmg;
return speed; return speed;
@ -1694,9 +1698,11 @@ public class Actor : MyCoroutine
var aniname = MyValue.Get_AnimName(eAnim.Attack + _attack); var aniname = MyValue.Get_AnimName(eAnim.Attack + _attack);
m_animation.speed = _as <= 0f ? 1f : _as; m_animation.speed = _as <= 0f ? 1f : _as;
if (dic_ccData.ContainsKey(eCC.ATKSPD_Up) && dic_ccData[eCC.ATKSPD_Up].CCTime > 0) if (dic_ccData.ContainsKey(eCC.ATKSPD_Up))
m_animation.speed += m_animation.speed * (float)dic_ccData[eCC.ATKSPD_Up].CCDmg; m_animation.speed += m_animation.speed * (float)dic_ccData[eCC.ATKSPD_Up].CCDmg;
if (dic_ccData.ContainsKey(eCC.ATKSPD_Down) && dic_ccData[eCC.ATKSPD_Down].CCTime > 0f) if (dic_ccValue.ContainsKey(eCC.ATKSPD_Up))
m_animation.speed += m_animation.speed * dic_ccValue[eCC.ATKSPD_Up];
if (dic_ccData.ContainsKey(eCC.ATKSPD_Down))
m_animation.speed -= m_animation.speed * (float)dic_ccData[eCC.ATKSPD_Down].CCDmg; m_animation.speed -= m_animation.speed * (float)dic_ccData[eCC.ATKSPD_Down].CCDmg;
AnimationPlay(aniname); AnimationPlay(aniname);

View File

@ -584,6 +584,28 @@ public class MobActor : Actor
Check_Battle(); Check_Battle();
} }
break; break;
case eSkillExtraType.PerHPBuff_SPD:
{
if (!dic_ccValue.ContainsKey(eCC.ATKSPD_Up))
dic_ccValue.Add(eCC.ATKSPD_Up, 0f);
if (!dic_ccValue.ContainsKey(eCC.MOVSPD_Up))
dic_ccValue.Add(eCC.MOVSPD_Up, 0f);
var maxHP = Get_MaxHP();
var currentHP = Get_HP();
float hpLostPercentage = (float)((maxHP - currentHP) / maxHP); // 체력 감소 비율 (0.0 ~ 1.0)
int perval1 = (int)(hpLostPercentage / temp.f_ExtraValue1);
// 체력 val1 감소당 val2 증가
if (temp.f_ExtraValue1 > 0) // val1이 0이 아니어야 함 (0으로 나누는 오류 방지)
{
dic_ccValue[eCC.ATKSPD_Up] = perval1 * temp.f_ExtraValue2;
dic_ccValue[eCC.MOVSPD_Up] = perval1 * temp.f_ExtraValue3;
}
}
break;
} }
} }
} }

View File

@ -7,7 +7,7 @@ public enum eSkillType { Active, Passive, JobPassive, MobPassive }
public enum eSkillTarget { Enemy, Self, SelfEnemy, Team, Pet } public enum eSkillTarget { Enemy, Self, SelfEnemy, Team, Pet }
public enum eSkillExtraType { None, Frost, Cure, Freezing, Blood, Poison, Burn, Stun, Slow, StatUp, ManaShield, SwordShield, 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, Barrier, Reincarnation, Blind } SilenceCurse, Barrier, Reincarnation, Blind, PerHPBuff_SPD, }
public class SkillListTableData : TableDataBase public class SkillListTableData : TableDataBase
{ {