7/15 - 엘리트 몬스터(타입 3~9번) 능력 구현
오늘은 엘리트 몬스터(타입 3~9번)를 구현했다.
1) 타입 3번은 광전사이다. HP가 줄어들 수록 이동 속도가 빨라지고 최대 2배까지 빨라진다. 즉, 기본 이동속도를 의미하는 baseSPD를 해당 사항에 맞게 값을 바꿔주면 되는데, baseSPD = baseMonster.baseSPD * (1.0f + (maxHP - curHP) / maxHP)로 하면 된다. 이러면 baseMonster.baseSPD값이 1.0배에서 2.0배로 점차 빨라진다.
2) 타입 4번은 전령이다. 5초마다 2초동안 이동속도가 2배로 증가한다. 몬스터들이 이런 특수스킬을 쓰는 것을 대비해서 skillUseTime과 skillCoolTime 함수를 두었다. 전자는 스킬을 사용한 시간이고, 후자는 말그대로 쿨타임이다. 전령의 경우, 만일 skillUseTime이 0이 아니면(=스킬 사용중이면) 2초까지 해당 변수를 늘리며 baseSPD는 그 동안 2배로 하도록 했고,
skillUseTime이 0이면(=스킬 사용중이 아니면) skillCoolTime을 5초까지 늘려서 대기하도록 했다. 그리고 이게 5초가 되면 skillUseTime을 0.0001f로 바꿔서 이속이 빨라지도록 한다.
3) 타입 5번은 철벽 거인이다. HP가 20% 미만이 되면 10초동안 받는 모든 피해가 0이 되고 모든 이동 방해효과에 면역을 가진다. 일단 curHP를 확인한 후, 스킬을 써야하는 순간이 되면 skillUseTime을 서서히 늘린다. 이 값이 10.0f가 될 때까지는 immuneDamage와 immuneInterrupt를 true로 바꿔서 데미지/CC기를 안먹도록했다.
4) 타입 6번은 암흑신관이다. 1초마다 주변 적들의 HP를 5%만큼 회복한다. 얘는 지속 스킬이 아니니까 skillUseTime이 필요 없다. 그냥 skillCoolTime이 1초가 될 때마다 나랑 Vector2.Distance()가 3.0f 미만으로 떨어진 모든 몬스터들의 HP를 회복시켜주면 된다. AE_DecreaseHP()가 몬스터의 HP를 감소시키는 것이니까 회복시키려면? 인자를 마이너스로 주면 된다!
5) 타입 7번은 악마 지휘관이다. 1초마다 주변 적들의 이동속도를 1초간 1.2배 증가시킨다. 얘는 지속스킬임에도 skillUseTime을 쓸 필요가 없다. 왜냐하면 쿨타임=지속시간이기 때문..! 그래서 skillCoolTime이 1초가 될 때마다 모든 몬스터를 검사해서, 나랑 Vector2.Distance()가 3.0f 미만으로 떨어졌으면 해당 몬스터의 devilCommanderEffect라는 변수를 true로 만들고, 아니면 false로 만든다. 이 변수가 true인 애들은 이속이 1.2배가 되도록 Update문에서 curSPD를 변경하고 있다.
6) 타입 8번은 정화자이다. 모든 이동 방해효과에 면역이다. 즉 immuneInterrupt를 true로 해주면 된다.
7) 타입 7번은 포식자이다. 5초마다 RP의 1/5를 없앤다. 즉, skillCoolTime이 5초가 될 때마다 BattleManager.ChangePlayerRP()로 RP를 없앤다.
다음으로 할 일은 보스몬스터 구현하기이다. 보스몬스터는 타입 10~16번을 의미한다. 우선 이중에서 10~13번을 구현할 것이다.
- 몬스터 타입 10~13번 구현