01단기 쿨다운
음식에 foodCooldown을 설정하면 플레이어가 성공적으로 섭취할 때마다 횟수가 누적되고 maxUses에 도달하면 해당 음식은 쿨다운 상태가 됩니다.
이 필드의 기본 상한은 5회입니다. 이 설정을 켜고 필드를 변경하지 않았을 때의 값이며 모든 음식에 공통된 제한은 아닙니다. 쿨다운 중에도 아이템은 먹을 수 있지만 그 회차에는 정상적인 영양과 효과가 지급되지 않습니다. restoreHunger로 쿨다운 중 허기 최소 회복량을 설정할 수 있고 기본값은 0입니다.
처음 5회는 정상적으로 먹을 때마다 카운트됩니다. 5회째를 먹고 나면 쿨다운에 들어가고 6회째부터 쿨다운 규칙으로 처리됩니다. 쿨다운 중에 다시 먹어도 평생 섭취 횟수는 늘지 않고 다른 음식의 회복 카운트도 진행되지 않습니다. '임계값에 도달했다'를 '5회째는 먹을 수 없다'로 오해하지 마세요.
ItemConfig.FoodCooldownConfig, PlayerNutritionTracker.processEating.02쿨다운 해제 방법
cooldownCount 기본값은 3이며 임계값에 도달하면 초기화됩니다. 예외 목록의 음식은 이 카운트에 포함되지 않습니다.cooldownMinutes가 양수일 때 시간 회복이 활성화됩니다. 기본값 -1은 시간으로 자동 해제하지 않는 설정입니다. 측정은 플레이어의 플레이 시간 기준이며 현실의 오프라인 시간이 아닙니다.두 회복 경로는 실제 설정을 따릅니다. 둘 중 하나를 충족하면 쿨다운이 끝납니다. 쿨다운은 평생 거부감과 별개이며 해제해도 평생 섭취 기록은 삭제되지 않습니다.
대상 음식이 쿨다운에 들어간 뒤 예외가 아닌 다른 음식을 3회 먹으면 해당 음식의 쿨다운이 해제됩니다. 3회가 각각 다른 ID일 필요는 없습니다. fatigue/fatigue_exempt.json으로 카운트하지 않을 음식을 제외할 수 있습니다. cooldownCount=-1로 '다른 음식 먹기' 경로를 끌 수 있지만 그 경우 회복 불가가 되지 않도록 양수 분을 설정해야 합니다.
PlayerNutritionTracker.onOtherFoodEaten, tick, FoodCooldownConfig.03장기 영양 감소와 거부감
foodFatigue를 활성화하면 음식의 평생 섭취 횟수로 영양 획득 배율을 계산할 수 있습니다. lossStart와 aversionCount를 모두 설정한 경우에만 그 사이에서 선형으로 감소합니다.
- 1횟수가
lossStart이하: 영양 획득 계수 100%. - 2두 임계값 사이: 계수가 평생 섭취 횟수에 따라 선형으로 감소하며 해당 음식의 영양 획득, 허기, 포화도 회복도 그에 따라 줄어듭니다.
- 3횟수가
aversionCount에 도달: 계수 0%가 되고 해당 음식은 거부감 상태가 됩니다. 다른 음식을 먹거나 쿨다운을 기다려도 자동 회복되지 않습니다.
예를 들어 평생 기록이 6회, 시작이 5회, 거부감 임계값이 10회라면 배율은 (10 - 6) / (10 - 5) = 80%입니다. 거부감 임계값만 설정하고 감소 시작점을 설정하지 않으면 중간에 선형 감소는 없지만 임계값에 도달하면 거부감이 됩니다. 반대로 시작점만 설정하고 거부감 임계값이 없으면 선형 감소도 시작되지 않습니다. 여기서 횟수는 서버 기록이며 웹 페이지 슬라이더가 플레이어 값을 바꾸는 것이 아닙니다.
lossStart=5, aversionCount=10만 시뮬레이션합니다. 기본 음식 값이 아닙니다.PlayerNutritionTracker.getLifetimeDecayFactor, isAversed.04편집과 관리
관리자가 음식을 들고 /hdui로 아이템 편집기를 열어 '음식 싫증' 페이지에서 단기 횟수, 회복 조건, 평생 임계값을 설정합니다. 일반 플레이어는 아이템 툴팁으로 서버가 공개한 싫증 정보를 확인할 수 있습니다. 표시 세부 사항은 툴팁 레이아웃과 표시 스위치로 결정됩니다.
/headiet clearaversion <플레이어> <아이템ID|hand> (OP2)로 지정 플레이어의 해당 음식 평생 거부감 기록을 삭제할 수 있습니다. hand는 대상 플레이어의 주 손을 의미하며 명령어 실행자의 주 손이 아닙니다. 단기 쿨다운 초기화 명령어가 아닙니다.