R&R CRDD

From The Jadnix Codex

Revision as of 13:32, 9 February 2026 by Sinvrh (talk | contribs)

/* ============================================================

  R&R CRDD CALCULATOR LOGIC (V2 - Fixed Display)
  ============================================================ */

$(function() {

   // Only run if the calculator exists
   if (!$('#crdd-interface').length) return;
   // 1. UPDATE INDIVIDUAL NUMBERS INSTANTLY
   $('.crdd-range').on('input', function() {
       // Find the "0" next to this slider and update it
       $(this).next('.crdd-value-display').text($(this).val());
   });
   // 2. CALCULATE TOTALS
   function updateCRDD() {
       let totalScore = 0;
       let activeMaxScore = 0;
       let criticalOverride = false;
       
       // --- SECTION 1: SUBJECT ---
       let subjSkip = $('#skip-subject').is(':checked');
       if (!subjSkip) {
           let s1 = parseInt($('#s-strength').val()) || 0;
           let s2 = parseInt($('#s-durability').val()) || 0;
           let s3 = parseInt($('#s-mobility').val()) || 0;
           let s4 = parseInt($('#s-intel').val()) || 0;
           let s5 = parseInt($('#s-stamina').val()) || 0;
           let s6 = parseInt($('#s-threat').val()) || 0;
           let s7 = parseInt($('#s-swarm').val()) || 0;
           
           if (s6 > 24) criticalOverride = true;
           
           let avg = (s1+s2+s3+s4+s5+s6+s7) / 7;
           totalScore += avg;
           activeMaxScore += 33;
           
           let rating = "DOCILE";
           if (avg > 8) rating = "NEUTRAL";
           if (avg > 16) rating = "HOSTILE";
           if (avg > 24) rating = "VILE";
           $('#result-subject').text(avg.toFixed(1) + " (" + rating + ")");
           
           if (avg > 24) criticalOverride = true;
       } else {
            $('#result-subject').text("SKIPPED");
       }
       // --- SECTION 2: ITEM ---
       let itemSkip = $('#skip-item').is(':checked');
       if (!itemSkip) {
           let i1 = parseInt($('#i-entropy').val()) || 0;
           let i2 = parseInt($('#i-instability').val()) || 0;
           let i3 = parseInt($('#i-radiation').val()) || 0;
           let i4 = parseInt($('#i-corrupt').val()) || 0;
           let i5 = parseInt($('#i-volatility').val()) || 0;
           let i6 = parseInt($('#i-unport').val()) || 0;
           let i7 = parseInt($('#i-anomalous').val()) || 0;
           let i8 = parseInt($('#i-qty').val()) || 0;
           if (i7 > 24) criticalOverride = true;
           let avg = (i1+i2+i3+i4+i5+i6+i7+i8) / 8;
           totalScore += avg;
           activeMaxScore += 33;
           
           let rating = "FUNCTIONAL";
           if (avg > 8) rating = "ALTERED";
           if (avg > 16) rating = "UNSTABLE";
           if (avg > 24) rating = "VOID";
           $('#result-item').text(avg.toFixed(1) + " (" + rating + ")");
       } else {
           $('#result-item').text("SKIPPED");
       }
       // --- SECTION 3: SEAM ---
       let seamSkip = $('#skip-seam').is(':checked');
       if (!seamSkip) {
           let m1 = parseInt($('#m-instability').val()) || 0;
           let m2 = parseInt($('#m-leakage').val()) || 0;
           let m3 = parseInt($('#m-geo').val()) || 0;
           let m4 = parseInt($('#m-atmo').val()) || 0;
           let m5 = parseInt($('#m-topo').val()) || 0;
           let m6 = parseInt($('#m-dead').val()) || 0;
           let m7 = parseInt($('#m-laws').val()) || 0;
           if (m3 > 24 || m4 > 24 || m6 > 24 || m7 > 24) criticalOverride = true;
           let avg = (m1+m2+m3+m4+m5+m6+m7) / 7;
           totalScore += avg;
           activeMaxScore += 33;
           
           let rating = "ANCHORED";
           if (avg > 8) rating = "VOLATILE";
           if (avg > 16) rating = "FRACTURED";
           if (avg > 24) rating = "NULL";
           $('#result-seam').text(avg.toFixed(1) + " (" + rating + ")");
           if (avg > 24) criticalOverride = true;
       } else {
           $('#result-seam').text("SKIPPED");
       }
       // --- FINAL RESULT ---
       let finalBox = $('#crdd-final-output');
       let finalLabel = $('#crdd-final-label');
       
       if (activeMaxScore === 0) {
           finalBox.text("ERROR: NO DATA");
           finalBox.css('color', 'red');
           return;
       }
       let percent = (totalScore / activeMaxScore) * 100;
       
       if (criticalOverride) {
           finalLabel.text("CRITICAL THREAT DETECTED");
           finalBox.text("NULL (LEAVE NOW)");
           finalBox.css({
               'color': '#000000',
               'background': '#fff',
               'text-shadow': '0 0 10px red'
           });
       } else {
           let finalRating = "ANCHORED";
           let finalColor = "#00ff9f"; 
           let finalMsg = "YOU ARE SAFE";
           if (percent > 25) { finalRating = "VOLATILE"; finalColor = "#ffd700"; finalMsg = "PROCEED WITH CAUTION"; }
           if (percent > 50) { finalRating = "FRACTURED"; finalColor = "#ff4500"; finalMsg = "YOU ARE IN DANGER"; }
           if (percent > 75) { finalRating = "NULL"; finalColor = "#555"; finalMsg = "LEAVE NOW"; }
           finalLabel.text(finalMsg);
           finalBox.text(finalRating + " (" + percent.toFixed(1) + "%)");
           finalBox.css({
               'color': finalColor,
               'background': 'transparent',
               'text-shadow': '0 0 10px ' + finalColor
           });
       }
   }
   // Trigger update on any change
   $('.crdd-range, input[type=checkbox]').on('input change', updateCRDD);

});