Exemplo n.º 1
0
    /// <summary>
    /// 서버로부터 전송받은 스킬의 효과를 대상에게 적용하도록 하는 함수
    /// </summary>
    /// <param name="tCampNum">타겟의 캠프 번호</param>
    /// <param name="tIndex">타겟이 되는 로봇의 번호</param>
    /// <param name="statusType">효과가 적용되는 스테이터스 타입</param>
    /// <param name="ccType">효과에 담긴 CC 타입</param>
    /// <param name="amount">변화할 스테이터스의 양</param>
    /// <param name="duration">변화할 시간. 0이면 무제한</param>
    public void ApplySkillEffect(int tCampNum, int tIndex, int statusType, int ccType, int amount, float duration, float chp)
    {
        Robot target;

        if (tCampNum == 1)
        {
            target = robotManager.FirstCampRobot(tIndex);
        }
        else
        {
            target = robotManager.SecondCampRobot(tIndex);
        }

        SkillEffect effect = new SkillEffect((StatusType)statusType, (CCType)ccType, amount, duration);

        if (target == null)
        {
            Debug.Log("해당하는 타겟을 찾을 수 없습니다. 스킬 효과 적용을 무시합니다." + System.Environment.NewLine
                      + "타겟 정보 : " + tCampNum + "P의 " + tIndex + "번째 로봇" + System.Environment.NewLine
                      + "스킬 정보 : " + (StatusType)statusType + "스탯, " + (CCType)ccType + "CC 기, " + amount + "만큼 " + duration + "초 동안 변화");
            return;
        }
        target.Synchronize(chp);
        target.Apply(effect);

        // 상대 로봇에게 가한 damage를 게임매니저에 저장.
        if ((StatusType)statusType == StatusType.CHP && tCampNum != MyCampNum)
        {
            if (amount < 0)
            {
                IncDamageCount(-amount);
            }
        }
    }