mirror of
https://gitgud.io/BondageProjects/Bondage-College.git
synced 2026-04-28 04:19:50 +00:00
56 lines
2.4 KiB
JavaScript
56 lines
2.4 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* @typedef {{ DildoState?: number, Modifier?: number, Speed?: number, FuckChangeTime?: number, Mode?: VibratorMode, ChangeTime?: number, LastChange?: number } & AnimationPersistentData} FuckMachinePersistentData
|
|
*/
|
|
|
|
/** @type {ExtendedItemScriptHookCallbacks.BeforeDraw<VibratingItemData, FuckMachinePersistentData>} */
|
|
function AssetsItemDevicesFuckMachineBeforeDrawHook(data, originalFunction, drawData) {
|
|
const { PersistentData, L, Y, Property } = drawData;
|
|
const Data = PersistentData();
|
|
if (typeof Data.DildoState !== "number") Data.DildoState = 0;
|
|
if (typeof Data.Modifier !== "number") Data.Modifier = 1;
|
|
|
|
if (L === "Dildo") return { Y: Y + Data.DildoState };
|
|
if (L !== "Pole") return drawData;
|
|
|
|
const Properties = Property || {};
|
|
const Intensity = typeof Properties.Intensity === "number" ? Properties.Intensity : -1;
|
|
|
|
|
|
const FuckLength = 32;
|
|
const AnimationQualityRatio = (Player.GraphicsSettings ? Math.max(Player.GraphicsSettings.AnimationQuality * 0.6, 30) : 30) / 30;
|
|
Data.Speed = (Intensity + 1) * 2;
|
|
if (Data.DildoState >= FuckLength && Intensity > -1) {
|
|
Data.Modifier = -1;
|
|
} else if (Data.DildoState <= -FuckLength) {
|
|
Data.Modifier = 1;
|
|
} else if (Data.DildoState <= FuckLength && Intensity === -1) {
|
|
Data.Modifier = 1;
|
|
Data.Speed = 1;
|
|
}
|
|
|
|
Data.DildoState += Data.Modifier * Data.Speed * AnimationQualityRatio;
|
|
if (AnimationQualityRatio > FuckLength) Data.DildoState = Math.random() * FuckLength;
|
|
|
|
return { Y: Y + Data.DildoState };
|
|
}
|
|
|
|
/** @type {ExtendedItemScriptHookCallbacks.ScriptDraw<VibratingItemData, FuckMachinePersistentData>} */
|
|
function AssetsItemDevicesFuckMachineScriptDrawHook(data, originalFunction, drawData) {
|
|
VibratorModeScriptDraw(data, drawData);
|
|
const Data = drawData.PersistentData();
|
|
const Properties = drawData.Item.Property || {};
|
|
const FrameTime = Player.GraphicsSettings ? Math.max(30, (Player.GraphicsSettings.AnimationQuality * 0.6)) : 30;
|
|
const Intensity = typeof Properties.Intensity === "number" ? Properties.Intensity : -1;
|
|
const FuckLength = 32;
|
|
|
|
if (typeof Data.FuckChangeTime !== "number") Data.FuckChangeTime = CommonTime() + FrameTime;
|
|
if (typeof Data.DildoState !== "number") Data.DildoState = 0;
|
|
|
|
if (Data.FuckChangeTime < CommonTime() && !(Intensity === -1 && FuckLength <= Data.DildoState)) {
|
|
Data.FuckChangeTime = CommonTime() + FrameTime;
|
|
AnimationRequestRefreshRate(drawData.C, FrameTime);
|
|
AnimationRequestDraw(drawData.C);
|
|
}
|
|
}
|