Drop
Drop
Drop 은 특정 행동을 했을 때 Loot 가 어떤 식으로 지급될지 결정합니다. 예를 들어 돌을 캤을 때, 몬스터를 잡았을 때 Loot 가 발생하는 것을 뜻합니다.
명령어 또는 api integration 을 통해 Loot 자체를 유저에게 직접 지급하는 경우 SigDrop 의 Drop 시스템을 타지 않습니다. 예를 들어 접속보상이나 퀘스트 보상을 지급하는 경우 Loot 자체를 직접 지급하는 것이기 때문에 SigDrop 의 Drop 시스템을 거치지 않습니다.
Drop 수치에 대한 이해를 위해서는 기본적인 정규분포에 대한 이해가 필요하니, 해당 컨셉에 대해 익숙하지 않으면 익힌 후 진행해 주세요.
General Drop (기본 )
drop.yml
기본 정규분포는 mean=100 sd=10 에서 시작합니다.
Drop 은 먼저 invocation 에 따라 한번 필터를 거치며, 이는 java thread local random 으로 작동합니다.
Drop offset 이 올려주는 것은 sd 이며, mean 은 절대 변하지 않습니다.
즉 sensitivty 가 0.04 이고 drop offset 이 100 인 경우, 정규분포는 mean=100 , sd= 10 + (100*0.04) = 14 인 그래프에서 발동합니다.
ANDESITE:
invocation: 1.8 # invocation 은 해당 trigger 발생시 몇% 로 발생하는지 (Java random)
sensitivity: 0.04 # Drop OffSet 이 미치는 영향
max-increment: 20 # Drop Offset 을 통해 sd 가 최대로 올라갈 수 있는 수치
drop:
20: # mean 100 에 대해서 현재 draw 값의 절대값 차이 , 이 수치 이상일 경우 발동, 즉 이 컨픽에선 20 <=x <30 일 때 발동
loot:
- 'MINING_UNCOMMON_R200' # Loot id ,
- 'MINER_BREAK_UNCOMMON'
- 'MINING_UNCOMMON'
30:
loot:
- 'MINING_RARE_R300'
- 'MINER_BREAK_RARE'
- 'MINING_RARE'
40:
loot:
- 'MINING_EPIC_R400'
- 'MINER_BREAK_EPIC'
- 'MINING_EPIC'
50:
loot:
- 'ADVANCED_DROP_MINER_BREAK'
- 'MINING_LEGENDARY_R500'
- 'MINER_BREAK_LEGENDARY'
아래 확률을 직접 계산해 보며 offset 개념에 대해 제대로 이해했는지 검산해 보세요.
절대값 20 이상이라는 것은 80미만 또는 120 이상인 경우를 뜻합니다.
절대값 40 이상이라는 것은 60미만 또는 140 이상인 경우를 뜻합니다.
위 컨픽에서 mean = 100 , sd = 10 ( 즉 drop offset = 0 ) ,
절대값 20 이상은 0.0455 확률로 발동합니다.
절대값 20이상 30미만은 0.0455 - 0.0027 = 0.0428 로 발동합니다.
위 컨픽에서 mean = 100 , sd = 14 (즉 drop offset = 100) 인 경우,
절대값 20 이상은 0.1531 확률로 발동합니다.
절대값 20이상 30 미만은 0.1531 - 0.0321 = 0.121 로 발동합니다.
LootBag
Drop 에서 한 항목에 있는 Loot 의 콜렉션을 LootBag 이라고 칭합니다.
즉 20에는 3개의 Loot 가 담겨 있는 LootBag 가 존재합니다.
LootBag 안에 있는 Loot 는 모두 발동하는 것이 기본 원칙이나 필요에 의해 일종의 if statement 로 조정 가능합니다 .
loot/life_miner.yml
Loot 설정에서 unique: true 가 걸려 있는 경우 bag 에서 발동하면 하위 항목은 작동하지 않습니다.
단 해당 loot 가 유효하게 지급 될 수 있을 때만 발동합니다. 즉 requirement 에 존재하는 placeholder check 을 통과해야 합니다.
해당 requriement 에 대해서는 SigRequirement 항목을 참조해 주세요 .
즉 위 LootBag 같은 경우 MINER_BREAK_UNCOMMON 지급이 완료된 경우 MINING_UNCOMMON Loot 는 지급되지 않습니다.
MINER_BREAK_UNCOMMON ( 생활직업 광부 전용 드롭 )
MINING_UNCOMMON (그 외 드롭)
이런 식으로 두 종류의 드롭이 함께 작동하지 않아야 하는 경우 unique 을 통해 모양을 조정 할 수 있습니다.
Mob Drop
mobdrop.yml
MobDrop 은 거의 모든 Drop 설정을 상속하므로 거의 설정이 비슷합니다.
단 id 는 MythicMobs id 또는 EntityType 과 정확히 일치해야 합니다.
MobDrop 에서 General Drop 과 유일하게 다른 점은 level-sensitivity 가 존재하며 , drop offset 을 올려준다는 점은 동일합니다.
여기서 level 은 mythicmobs level 을 받아옵니다.