> For the complete documentation index, see [llms.txt](https://docs.punkland.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.punkland.io/punkland/punkland-studio/start/damageformula.md).

# 피해량 공식

* 아이템의 포션 종류를 선택하거나 스킬을 선택하면, 피해량 공식을 입력할 수 있습니다.
* 하지만 피해량 공식 대신 다른 것을 입력한다면? (예: 아이템 지급, 스킬 지급, 골드 지급) 작동됩니다!

> `a`는 공격자, `b`는 방어자를 의미합니다.
>
> `a`에서 사용 가능한 변수와 함수는 다음과 같습니다.

* `a`와 `b`는 모두 `ScriptUnit` 객체입니다.
* 아이템의 경우 `b`는 없습니다. `level`로 아이템의 레벨 값을 가져올 수 있습니다.
* 상태의 경우 `a`, `b`만 존재합니다.
* 스킬의 경우 `level`은 해당 스킬의 레벨입니다.

## **변수**

<table><thead><tr><th width="280">변수</th><th>설명</th></tr></thead><tbody><tr><td><strong>a.id</strong></td><td>a의 고유한 숫자 아이디</td></tr><tr><td><strong>a.type</strong></td><td>a의 타입 (0=플레이어, 1=이벤트, 2=몬스터)</td></tr><tr><td><strong>a.name</strong></td><td>a의 이름</td></tr><tr><td><strong>a.x</strong></td><td>a의 좌표 X</td></tr><tr><td><strong>a.y</strong></td><td>a의 좌표 Y</td></tr><tr><td><strong>a.atk</strong></td><td>a의 공격력</td></tr><tr><td><strong>a.def</strong></td><td>a의 방어력</td></tr><tr><td><strong>a.magicAtk</strong></td><td>a의 마법 공격력</td></tr><tr><td><strong>a.magicDef</strong></td><td>a의 마법 방어력</td></tr><tr><td><strong>a.agi</strong></td><td>a의 민첩</td></tr><tr><td><strong>a.luk</strong></td><td>a의 운</td></tr><tr><td><strong>a.maxHP</strong></td><td>a의 최대 체력</td></tr><tr><td><strong>a.maxMP</strong></td><td>a의 최대 마력</td></tr><tr><td><strong>a.hp</strong></td><td>a의 현재 체력</td></tr><tr><td><strong>a.mp</strong></td><td>a의 현재 마력</td></tr></tbody></table>

## **함수**

<table><thead><tr><th width="333">함수</th><th>설명</th></tr></thead><tbody><tr><td><strong>a.SpawnAt(x, y)</strong></td><td>a를 x, y 좌표로 이동한다.</td></tr><tr><td><strong>a.SpawnAtField(mapID, x, y)</strong></td><td>a 를 mapID 의 맵에 x, y 좌표로 이동한다.</td></tr><tr><td><strong>a.RespawnAt(x, y)</strong></td><td>a를 x, y 좌표에 부활한다.</td></tr><tr><td><strong>a.SetVar(id, value)</strong></td><td>a의 id 변수를 value로 바꾼다.</td></tr><tr><td><strong>a.GetVar(id)</strong></td><td>a의 id 변수를 가져온다.</td></tr><tr><td><strong>a.AddSkill(id, level)</strong></td><td>a에게 id 스킬 레벨 level을 추가한다.</td></tr><tr><td><strong>a.AddItem(id, count)</strong></td><td>a에게 id 아이템 count 개수를 추가한다.</td></tr><tr><td><strong>a.AddGameMoney(amount)</strong></td><td>a에게 골드를 추가한다.</td></tr><tr><td><strong>b.RemoveSkill(id)</strong></td><td>b로부터 id 스킬을 제거한다.</td></tr><tr><td><strong>b.RemoveItem(id, count)</strong></td><td>b로부터 count 개수만큼 id 아이템을 소모한다.</td></tr><tr><td><strong>b.UseGameMoney(amount)</strong></td><td>b로부터 골드 amount를 소모한다.</td></tr><tr><td><strong>b.StartGlobalEvent(id)</strong></td><td>공용 이벤트 id를 호출한다.</td></tr><tr><td><strong>b.AddBuff(id)</strong></td><td>b로부터 id 상태를 부여한다.</td></tr><tr><td><strong>b.RemoveBuff(id)</strong></td><td>b로부터 id 상태를 제거한다.</td></tr></tbody></table>

**예) 스킬 공식 1 피해량 = 공격자의 공격력 - 방어자의 방어력**

> a.atk - b.def

**예) 스킬 공식 2 피해량 = 10과 50사이의 랜덤 피해량**

> rand(10, 50)

**예) 스킬 피해량 공식 - 내 스킬이 적중하는 사람의 골드를 10씩 빼앗기**

> b.UseGameMoney(10)

**예) 아이템과 골드를 모두 빼앗을 경우**

> a.RemoveItem(1, 10) or a.UseGameMoney(10)

**예) 치명타에 따른 스킬 피해량 설정 - 치명타가 발생할 경우 (a.attack \*2) 적용, 아닐 경우 (a.attack)적용**

> critical and (a.attack \* 2) or (a.attack)

**예) 해당 스킬의 레벨에 따른 피해량 - a의 마법 공격력 10, b의 마법 방어력 5, 해당 스킬의 레벨이 10이라면 피해량 16 피해량 출력**

> a.magicAtk - b.magicDef + level +1

**예) 아이템 피해량 공식 - a가 어떤 아이템을 사용했을 때 아래와 같은 값을 피해량 공식에 넣는다면 아이템 사용 시 스킬을 배우게 할 수 있습니다.**

> a.AddSkill(0,1) \\-\\- A에게 0번째 스킬 Lv. 1을 추가한다.

**예) 상태 지속 피해량 가하기**

> 종류 HP 피해량 설정 후 공식에 10을 입력하면 시간에 따른 피해량을 가한다. (최소 2초)
