vary room theme weights — sculk rare, inferno/ice uncommon
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package com.tiedup.remake.state;
|
||||
|
||||
import com.tiedup.remake.core.ModSounds;
|
||||
import com.tiedup.remake.core.TiedUpMod;
|
||||
import com.tiedup.remake.entities.LeashProxyEntity;
|
||||
import com.tiedup.remake.items.base.ILockable;
|
||||
import com.tiedup.remake.v2.bondage.CollarHelper;
|
||||
import com.tiedup.remake.network.sync.SyncManager;
|
||||
import com.tiedup.remake.state.components.PlayerCaptivity;
|
||||
import com.tiedup.remake.state.components.PlayerClothesPermission;
|
||||
@@ -19,16 +17,10 @@ import com.tiedup.remake.state.components.PlayerStateQuery;
|
||||
import com.tiedup.remake.state.components.PlayerStruggle;
|
||||
import com.tiedup.remake.state.components.PlayerTaskManagement;
|
||||
import com.tiedup.remake.state.hosts.IPlayerBindStateHost;
|
||||
import com.tiedup.remake.state.struggle.StruggleBinds;
|
||||
import com.tiedup.remake.tasks.PlayerStateTask;
|
||||
import com.tiedup.remake.tasks.TimedInteractTask;
|
||||
import com.tiedup.remake.tasks.TyingTask;
|
||||
import com.tiedup.remake.tasks.UntyingTask;
|
||||
import com.tiedup.remake.util.RestraintEffectUtils;
|
||||
import com.tiedup.remake.util.teleport.Position;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
import com.tiedup.remake.v2.bondage.capability.V2EquipmentHelper;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -156,6 +148,16 @@ public class PlayerBindState implements IRestrainable, IPlayerBindStateHost {
|
||||
return movement;
|
||||
}
|
||||
|
||||
/** Access task management component (tying, untying, feeding tasks). */
|
||||
public PlayerTaskManagement tasks() {
|
||||
return taskManagement;
|
||||
}
|
||||
|
||||
/** Access struggle component (struggle, tighten, cooldowns). */
|
||||
public PlayerStruggle getStruggle() {
|
||||
return struggle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets all movement style state to defaults.
|
||||
* Called on death, logout, and dimension change to ensure clean re-activation.
|
||||
@@ -385,112 +387,15 @@ public class PlayerBindState implements IRestrainable, IPlayerBindStateHost {
|
||||
// Note: getCaptor(), getCaptorManager(), setStruggling(), setStrugglingClient(),
|
||||
// isStruggling(), getStruggleStartTick() are implemented elsewhere in the class
|
||||
|
||||
// ========== Tying/Untying Task Methods ==========
|
||||
// Delegated to PlayerTaskManagement component
|
||||
|
||||
public TyingTask getCurrentTyingTask() {
|
||||
return taskManagement.getCurrentTyingTask();
|
||||
}
|
||||
|
||||
public void setCurrentTyingTask(TyingTask task) {
|
||||
taskManagement.setCurrentTyingTask(task);
|
||||
}
|
||||
|
||||
public UntyingTask getCurrentUntyingTask() {
|
||||
return taskManagement.getCurrentUntyingTask();
|
||||
}
|
||||
|
||||
public void setCurrentUntyingTask(UntyingTask task) {
|
||||
taskManagement.setCurrentUntyingTask(task);
|
||||
}
|
||||
|
||||
public PlayerStateTask getClientTyingTask() {
|
||||
return taskManagement.getClientTyingTask();
|
||||
}
|
||||
|
||||
public void setClientTyingTask(PlayerStateTask task) {
|
||||
taskManagement.setClientTyingTask(task);
|
||||
}
|
||||
|
||||
public PlayerStateTask getClientUntyingTask() {
|
||||
return taskManagement.getClientUntyingTask();
|
||||
}
|
||||
|
||||
public void setClientUntyingTask(PlayerStateTask task) {
|
||||
taskManagement.setClientUntyingTask(task);
|
||||
}
|
||||
|
||||
public TimedInteractTask getCurrentFeedingTask() {
|
||||
return taskManagement.getCurrentFeedingTask();
|
||||
}
|
||||
|
||||
public void setCurrentFeedingTask(TimedInteractTask task) {
|
||||
taskManagement.setCurrentFeedingTask(task);
|
||||
}
|
||||
|
||||
public PlayerStateTask getClientFeedingTask() {
|
||||
return taskManagement.getClientFeedingTask();
|
||||
}
|
||||
|
||||
public void setClientFeedingTask(PlayerStateTask task) {
|
||||
taskManagement.setClientFeedingTask(task);
|
||||
}
|
||||
|
||||
public PlayerStateTask getRestrainedState() {
|
||||
return taskManagement.getRestrainedState();
|
||||
}
|
||||
|
||||
public void setRestrainedState(PlayerStateTask state) {
|
||||
taskManagement.setRestrainedState(state);
|
||||
}
|
||||
|
||||
// ========== Struggle & Resistance Methods ==========
|
||||
// Delegated to PlayerStruggle component
|
||||
|
||||
/**
|
||||
* Entry point for the Struggle logic (Key R).
|
||||
* Distributes effort between Binds and Collar.
|
||||
*/
|
||||
public void struggle() {
|
||||
struggle.struggle();
|
||||
}
|
||||
// Non-delegation methods only — delegation removed, use getStruggle() accessor.
|
||||
// tighten(Player) is interface-mandated by ICoercible — cannot be removed.
|
||||
|
||||
/** Restores resistance to base values when a master tightens the ties. */
|
||||
public void tighten(Player tightener) {
|
||||
struggle.tighten(tightener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the StruggleBinds instance for external access (mini-game system).
|
||||
*/
|
||||
public StruggleBinds getStruggleBinds() {
|
||||
return struggle.getStruggleBinds();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a cooldown on struggle attempts (used after mini-game exhaustion).
|
||||
* @param seconds Cooldown duration in seconds
|
||||
*/
|
||||
public void setStruggleCooldown(int seconds) {
|
||||
struggle.setStruggleCooldown(seconds);
|
||||
}
|
||||
|
||||
/**
|
||||
* v2.5: Check if struggle cooldown is active.
|
||||
* @return true if cooldown is active (cannot struggle yet)
|
||||
*/
|
||||
public boolean isStruggleCooldownActive() {
|
||||
return struggle.isStruggleCooldownActive();
|
||||
}
|
||||
|
||||
/**
|
||||
* v2.5: Get remaining struggle cooldown in seconds.
|
||||
* @return Remaining seconds, or 0 if no cooldown
|
||||
*/
|
||||
public int getStruggleCooldownRemaining() {
|
||||
return struggle.getStruggleCooldownRemaining();
|
||||
}
|
||||
|
||||
// ========== v2.5: Knife Cut Target Methods ==========
|
||||
// Delegated to PlayerSpecialActions component
|
||||
|
||||
@@ -560,16 +465,6 @@ public class PlayerBindState implements IRestrainable, IPlayerBindStateHost {
|
||||
this.struggleState = new StruggleSnapshot(struggling, current.startTick());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if struggle animation should stop (duration expired).
|
||||
* Delegated to PlayerStruggle component.
|
||||
* @param currentTick Current game time tick
|
||||
* @return True if animation has been playing for >= 80 ticks
|
||||
*/
|
||||
public boolean shouldStopStruggling(long currentTick) {
|
||||
return struggle.shouldStopStruggling(currentTick);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delegated to PlayerEquipment component
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user