diff --git a/src/art/webgl/art.js b/src/art/webgl/art.js index eed7bd0bb4dc827f0fc0f83a73200b8d0900f293..cedf59222987981359832f4889067cd11cf56197 100644 --- a/src/art/webgl/art.js +++ b/src/art/webgl/art.js @@ -1834,11 +1834,21 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) { const poseAnimList = ["idle1", "idle2", "idle3"]; const faceAnimList = []; - if (slave.trust < 0) { - faceAnimList.push("expressionsAngerFierce", "expressionsAngerGrumpy", "expressionsAngerSnarl", "expressionsFearAlarm", "expressionsFearAnticipation", "expressionsFearFrightened", "expressionsSadConfused", "expressionsSadOffended", "expressionsSadDejected", "expressionsSadIll"); + if (Math.random() < (slave.trust + 100) / 200) { + // trusting slave - happy animations + faceAnimList.push("expressionsHappy", "expressionsHappyCheerful", "expressionsHappyDelighted", "expressionsHappyFriendly", "expressionsHappySweet"); } else { - faceAnimList.push("expressionsHappyCheerful", "expressionsHappyDelighted", "expressionsHappyFriendly", "expressionsHappySweet", "expressionsSeductiveDesire", "expressionsSeductiveLoving"); + // fearful slave - fear/sad animations + faceAnimList.push("expressionsFear", "expressionsFearAlarm", "expressionsFearAnticipation", "expressionsFearFrightened", "expressionsSadConfused", "expressionsSadOffended", "expressionsSadDejected", "expressionsSadIll"); + } + if (Math.random() < (slave.devotion + 100) / 200) { + // devoted slave - seductive animations + faceAnimList.push("expressionsSeductiveDesire", "expressionsSeductiveLoving"); + } + else { + // hateful slave - angry animations + faceAnimList.push("expressionsAngerFierce", "expressionsAngerGrumpy", "expressionsAngerSnarl"); } const animList = [poseAnimList, faceAnimList]; @@ -1857,8 +1867,8 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) { case 1: // facial exp App.Art.currentAnim[i] = animList[i][Math.floor(Math.random() * animList[i].length)]; App.Art.animLength[i] = (Math.random() * 4) + 1; - App.Art.animDelay[i] = (Math.floor(Math.random() * 55) + 5) * V.animFPS; - App.Art.animPower[i] = (Math.random() * 0.5) + 0.25; + App.Art.animDelay[i] = (Math.floor(Math.random() * 20) + 10) * V.animFPS; + App.Art.animPower[i] = (Math.random() * 0.75) + 0.25; break; case 2: // breathing App.Art.currentAnim[i] = "breathAnim"; @@ -1878,14 +1888,9 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) { App.Art.animLength[4] = (Math.random() * 2) + 0.5; App.Art.animDelay[4] = (Math.floor(Math.random() * 10) + 5) * V.animFPS; App.Art.animPower[4] = Math.random(); - if (Math.random() < (slave.trust + 100) / 200) { - App.Art.currentAnim[5] = "down"; - App.Art.eyeMoveReciprocal = false; - } - else { - App.Art.currentAnim[5] = "up"; - App.Art.eyeMoveReciprocal = true; - } + + App.Art.currentAnim[5] = ((Math.random() < (slave.trust + 100) / 200) ? "down" : "up"); + App.Art.eyeMoveReciprocal = (Math.random() > (slave.trust + 100) / 200); App.Art.animLength[5] = (Math.random() * 2) + 0.5; App.Art.animDelay[5] = (Math.floor(Math.random() * 10) + 5) * V.animFPS; App.Art.animPower[5] = Math.random(); @@ -1984,11 +1989,6 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) { morphs.push(["posesLegsClosed", Math.min(Math.max(slaveLegsClosed, 0), 1)]) break; case 1: // facial exp - if (slave.trust < 0) { - morphs.push(["expressionsFear", Math.min(Math.max((Math.abs(slave.trust)/100) - getAnimState(1.0), 0), 1)]); - } else { - morphs.push(["expressionsHappy", Math.min(Math.max((slave.trust/100) - getAnimState(1.0), 0), 1)]); - } morphs.push([App.Art.currentAnim[i], getAnimState(App.Art.animPower[i])]); break; case 2: // breathing @@ -2054,12 +2054,14 @@ App.Art.getAnimState = function(slave, scene, p, morphs, isAnimTick) { App.Art.animDelay[i] = (Math.floor(Math.random() * 50) + 10) * V.animFPS; break; case 1: // facial exp - case 3: // blink - App.Art.animDelay[i] = 0; + App.Art.animDelay[i] = (Math.floor(Math.random() * 20) + 10) * V.animFPS; break; case 2: // breathing App.Art.animDelay[i] = (Math.floor(Math.random() * 2) + 1) * V.animFPS; break; + case 3: // blink + App.Art.animDelay[i] = 0; + break; case 4: // look X case 5: // look Y App.Art.animDelay[i] = (Math.floor(Math.random() * 10) + 5) * V.animFPS;