# 스탯

## **플레이어의 스탯** <a href="#undefined" id="undefined"></a>

* 캐릭터, 직업, 아이템 및 스킬의 특성에 의해 결정됩니다.
* 이전에는 특성이 적용되는 순서에 따라 최종 결과 스탯의 값이 달라지는 경우(곱셈 이후 덧셈 또는 덧셈 이후 곱셈)가 발생하였습니다.
* 이와 관련하여 스탯을 계산 및 적용하는 방식을 아래와 같이 일관성 있게 수정하였습니다.

> **직업의 레벨에 따라 주어지는 스탯에 직업의 특성으로 인한 상승분을 계산하여 기본 스탯으로 정합니다.**
>
> **또한, 아이템 및 캐릭터 등의 특성으로 인해 상승하는 스탯은 기본 스탯을 기준으로 아래의 계산 방법에 따라 계산합니다.**

## **기본 스탯** <a href="#undefined" id="undefined"></a>

* 각 직업의 레벨 별 초기 스탯에 직업의 특성에 의한 상승분만을 적용한 스탯입니다.
* 특성으로 인한 상승분의 계산은 아래의 계산 방법과 마찬가지로 곱셈 및 퍼센트 덧셈/곱셈은 레벨별 초깃값을 기준으로 계산합니다.

## **아이템으로 상승하는 스탯**  <a href="#undefined" id="undefined"></a>

* 같은 방식으로 아이템은 기본 스탯을 기준으로 스탯을 상승시켜줍니다.
* 아이템의 특성을 통해 스탯을 상승시키는 방식은 현재 4가지(단순 덧셈, 단순 곱셈, 퍼센트 덧셈, 퍼센트 곱셈)가 제공되고 있는데 이중 단순 곱셈, 퍼센트 덧셈, 퍼센트 곱셈은 계산 방법에 차이가 있을 뿐 아래 예와 같이 통일되어 표현할 수 있습니다.

> #### **+50%=\*150%=\*1.5**
>
> #### **+200%=\*300%=\*3**
>
> #### **+50%, x150%, x1.5**

...등의 표기 방법이 있지만, 스탯 상승분은 모두 동일합니다.

* 아이템 특성을 위와 같이 설정한 경우 아이템 레벨이 0일 때 `{{attackPlus}}`는 **70**으로, `{{attackPercent}}`는 **5**로 출력되고, 아이템 레벨이 1일 때 `{{attackPlus}}`는 **70+100=170**으로 출력되며, `{{attackPercent}}`는 **5+(105-100)=10**으로 출력됩니다.

## **아이템 옵션으로 상승하는 스탯** <a href="#undefined" id="undefined"></a>

* 기존에 옵션을 통해 각 직업의 레벨별 고유 스탯을 상승시킬 수 있었던 것에서 나아가 아이템 고유의 스탯을 상승시켜주는 시스템을 도입하였습니다. 해당 시스템은 캐릭터의 현재 스탯 값에 영향을 받지 않는 `{{스탯명Plus}}`과 같은 단순 덧셈 스탯에만 적용됩니다.
* 만약 `{{attackPlus}}`의 값이 100인 아이템의 경우, 아이템 스탯을 기준 스탯 타입으로 지정했을 때 **+10%**&#xC758; 옵션이 부여되면 해당 아이템으로 상승하는 attack의 값은 **100 + 100\*(10/100) = 110** 이 됩니다. 여기서 옵션으로 인한 상승분 **100\*(10/100) = 10**은 `{{attackPlusOption}}`과 같이 `{{스탯명PlusOption}}`을 통해 출력할 수 있고, 기본 스탯+옵션으로 인한 상승분으로 계산되는 아이템 고유의 합산 스탯인 **110**은 `{{attackPlusTotal}}`과 같이 `{{스탯명PlusTotal}}`로 출력할 수 있습니다. 해당 시스템은 오직 `{{스탯명Plus}}`에만 적용되고 `{{스탯명Percent}}`에는 적용되지 않습니다.

#### 예)

> **아이템에 적용된 기본 특성 2개**
>
> Set Stat attack +100
>
> Set Stat attack +5%

#### 옵션 없을 시

{% code overflow="wrap" lineNumbers="true" %}

```lua
{{attackPlus}}=100
{{attackPlusOption}} = 0
{{attackPlusTotal}} = 100
{{attackPercent}} = 5
```

{% endcode %}

#### 옵션 1개일 경우

{% code overflow="wrap" lineNumbers="true" %}

```lua
Set Item Stat attack 10%
{{attackPlus}}=100
{{attackPlusOption}}=100*(10/100)=10
{{attackPlusTotal}}=110
{{attackPercent}}=5
```

{% endcode %}

#### 옵션 3개일 경우

{% code overflow="wrap" lineNumbers="true" %}

```lua
Set Item Stat attack +10%
Set Item Stat attack +20
Set Item Stat attack +5%
{{attackPlus}} =100
{{attackPlusOption}} =100*(10/100)+20+100*(5/100)=35
{{attackPlusTotal}} =135
{{attackPercent}} =5
```

{% endcode %}

## **계산 방법** <a href="#undefined" id="undefined"></a>

* 기존의 스탯 계산 방법은 각 직업의 레벨별 기본 스탯을 바탕으로 각 특성을 통해 상승된 스탯이 순차적으로 누적되며 적용되었습니다.

#### 예 1)

> 기본 공격: 100
>
> 1번째 특성 공격 +50:100+50=150
>
> 2번째 특성 공격 +50%:150+150\*(50/100)=225

#### 예 2)

> 기본 공격: 100
>
> 1번째 특성 공격 +50%:100+100\*(50/100)=150
>
> 2번째 특성 공격 +50:150+50=200

* 변경된 계산 방법을 통해서는 곱셈의 기준이 되는 스탯이 누적되어 적용된 스탯이 아닌 직업 고유의 스탯으로 고정되어 어떤 순서로 적용되든 같은 양만큼 상승하게 됩니다. 관련하여 기존 예시 1번의 경우 두 번째 특성에서 곱셈의 기준값이 150이 아닌 100이 적용됩니다.

#### 예 3)

> 기본 공격: 100
>
> 1번째 특성 공격 +50:100+50=150
>
> 2번째 특성 공격 +50%:150+100\*(50/100)=200
