universaltech:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
universaltech:start [2026/06/22 06:26] jumpstartadminuniversaltech:start [2026/06/22 06:57] (current) jumpstartadmin
Line 335: Line 335:
 const CATS = [ const CATS = [
   { id:'movement', icon:'ti-run', label:'Movement', acc:'movement',   { id:'movement', icon:'ti-run', label:'Movement', acc:'movement',
-    desc:'Core locomotion mechanics — how you movefly, and traverse the map at speed.',+    desc:'Core ground movement — walkingsprinting, crouching, sliding, jumping, and stamina management.',
     wikiId:'universaltech:movement',     wikiId:'universaltech:movement',
     subs:[     subs:[
-      {id:'bunnyhop',    label:'Bunny Hop',    desc:'Speed maintenance between jumps.',              wikiId:'universaltech:movement:bunnyhop'}, +      {id:'walking',   label:'Walking',   desc:'Base movement speed and mechanics.', wikiId:'universaltech:movement:walking'}, 
-      {id:'airstrafing', label:'Air Strafing', desc:'Directional control while airborne.',           wikiId:'universaltech:movement:airstrafing'}, +      {id:'sprinting', label:'Sprinting', desc:'Sprint mechanics and speed thresholds.', wikiId:'universaltech:movement:sprinting'}, 
-      {id:'walljump',    label:'Wall Jump',    desc:'Bouncing off geometry for height or distance.', wikiId:'universaltech:movement:walljump'}, +      {id:'crouching', label:'Crouching', desc:'Crouch movement and hitbox changes.', wikiId:'universaltech:movement:crouching'}, 
-      {id:'slidehop',    label:'Slide Hop',    desc:'Chaining slides and hops for momentum.',        wikiId:'universaltech:movement:slidehop'}, +      {id:'sliding',   label:'Sliding',   desc:'Slide mechanics, speed, and timing.', wikiId:'universaltech:movement:sliding'}, 
-      {id:'zipline',     label:'Zipline Tech', desc:'Advanced entryexit, and speed tricks.',       wikiId:'universaltech:movement:zipline'},+      {id:'stamina',   label:'Stamina',   desc:'Stamina system, regeneration, and management.', wikiId:'universaltech:movement:stamina'}, 
 +      {id:'jumping',   label:'Jumping',   desc:'Jump mechanicsheight, and timing.', wikiId:'universaltech:movement:jumping'},
     ]},     ]},
-  { id:'combat', icon:'ti-crosshair', label:'Combat', acc:'combat', +  { id:'dashing', icon:'ti-player-skip-forward', label:'Dashing', acc:'combat', 
-    desc:'Engagement techniques — positioningtiming, burst windows, and aim mechanics.', +    desc:'Dash techs — directional dashesaerial dash combos, and advanced dash cancels.', 
-    wikiId:'universaltech:combat',+    wikiId:'universaltech:dashing',
     subs:[     subs:[
-      {id:'peekshoot',    label:'Peek Shooting',  desc:'Minimize exposure while landing shots.',   wikiId:'universaltech:combat:peekshoot'}, +      {id:'strafedash', label:'Strafe Dashing',         desc:'Dashing at angles for lateral speed.', wikiId:'universaltech:dashing:strafedash'}, 
-      {id:'jumpshoot',    label:'Jump Shooting',  desc:'Accuracy and timing when airborne.',       wikiId:'universaltech:combat:jumpshoot'}, +      {id:'dashjump',   label:'Dash Jumping',           desc:'Combining a dash into a jump for distance.', wikiId:'universaltech:dashing:dashjump'}, 
-      {id:'slideshoot',   label:'Slide Shooting', desc:'Aim control through slide animations.',    wikiId:'universaltech:combat:slideshoot'}, +      {id:'dashslide',  label:'Dash Sliding',           desc:'Cancelling a dash into a slide.', wikiId:'universaltech:dashing:dashslide'}, 
-      {id:'reloadcancel', label:'Reload Cancel',  desc:'Safely cutting reload animations short.',  wikiId:'universaltech:combat:reloadcancel'},+      {id:'iad',        label:'Instant Air Dash (I.A.D)',desc:'Minimal-height air dash for fast horizontal movement.', wikiId:'universaltech:dashing:iad'}, 
 +      {id:'wallstrafe', label:'Wall Strafe',            desc:'Dashing along walls for momentum.', wikiId:'universaltech:dashing:wallstrafe'},
     ]},     ]},
-  { id:'items', icon:'ti-package', label:'Item Tech', acc:'items', +  { id:'mantling', icon:'ti-arrow-bar-up', label:'Mantling', acc:'map', 
-    desc:'Hidden mechanics and advanced interactions with universal items.', +    desc:'Mantle techs — advanced ledge grabs, super glides, and mantle-based launches.', 
-    wikiId:'universaltech:items',+    wikiId:'universaltech:mantling',
     subs:[     subs:[
-      {id:'warpstone',   label:'Warp Stone',    desc:'Positioning tricks and cancel windows.',  wikiId:'universaltech:items:warpstone'}, +      {id:'mantleslide',  label:'Mantle Slide',      desc:'Sliding immediately out of a mantle.', wikiId:'universaltech:mantling:mantleslide'}, 
-      {id:'coldfront',   label:'Cold Front',    desc:'Slow tech and zone control setups.',      wikiId:'universaltech:items:coldfront'}, +      {id:'superglide',   label:'Super Glide',       desc:'Gaining extra airtime off a mantle.', wikiId:'universaltech:mantling:superglide'}, 
-      {id:'magiccarpet', label:'Magic Carpet',  desc:'Hover positioning and edge-case uses.',   wikiId:'universaltech:items:magiccarpet'}, +      {id:'glidewj',      label:'Glide Wall Jump',   desc:'Wall jumping during a glide for height.', wikiId:'universaltech:mantling:glidewj'}, 
-      {id:'cloakmantle', label:'Cloak + Mantle',desc:'Invisibility with mobility combos.',      wikiId:'universaltech:items:cloakmantle'},+      {id:'mantlestrafe', label:'Mantle Strafe',     desc:'Angling movement during mantle animation.', wikiId:'universaltech:mantling:mantlestrafe'}, 
 +      {id:'fakemantle',   label:'Fake Mantle',       desc:'Cancelling the mantle animation early.', wikiId:'universaltech:mantling:fakemantle'}, 
 +      {id:'mantlelaunch', label:'Mantle Launch',     desc:'Using mantle momentum to launch far.', wikiId:'universaltech:mantling:mantlelaunch'},
     ]},     ]},
-  { id:'map', icon:'ti-map', label:'Map Tech', acc:'map', +  { id:'ziplines', icon:'ti-line-dashed', label:'Ziplines', acc:'items', 
-    desc:'Geometry exploitsmap-specific routes, and positional advantages.', +    desc:'Zipline techs — momentum conservationcancels, jumps, and launch techniques.', 
-    wikiId:'universaltech:map',+    wikiId:'universaltech:ziplines',
     subs:[     subs:[
-      {id:'roofjumps',label:'Roof Jumps',        desc:'Common roof access points across all lanes.',  wikiId:'universaltech:map:roofjumps'}, +      {id:'zmc',     label:'Zipline Momentum Conservation (Z.M.C)', desc:'Keeping speed when leaving a zipline.', wikiId:'universaltech:ziplines:zmc'}, 
-      {id:'shortcuts',label:'Shortcuts',          desc:'Fast-path routes used in high-level play.',   wikiId:'universaltech:map:shortcuts'}, +      {id:'zipcancel',label:'Zip Cancel', desc:'Cancelling off a zipline at the right moment.', wikiId:'universaltech:ziplines:zipcancel'}, 
-      {id:'oob',      label:'Out-of-Bounds Tech', desc:'Legal geometry clips and unintended spots.',  wikiId:'universaltech:map:oob'},+      {id:'zipjump', label:'Zip Jump',   desc:'Jumping from a zipline with extra height.', wikiId:'universaltech:ziplines:zipjump'}, 
 +      {id:'zipdash', label:'Zip Dash',   desc:'Dashing on or off a zipline.', wikiId:'universaltech:ziplines:zipdash'}, 
 +      {id:'ziplaunch',label:'Zip Launch',desc:'Using zipline exit for maximum launch speed.', wikiId:'universaltech:ziplines:ziplaunch'},
     ]},     ]},
-  { id:'mechanics', icon:'ti-settings', label:'Game Mechanics', acc:'mechanics', +  { id:'ropes', icon:'ti-minus-vertical', label:'Ropes', acc:'mechanics', 
-    desc:'Engine and system-level behaviour that affects every hero equally.', +    desc:'Rope techs — cancels, launches, and wall jumps off rope anchors.', 
-    wikiId:'universaltech:mechanics',+    wikiId:'universaltech:ropes',
     subs:[     subs:[
-      {id:'animation',label:'Animation Cancels',    desc:'Breaking animations to act faster.',      wikiId:'universaltech:mechanics:animation'}, +      {id:'ropecancel', label:'Rope Cancel',    desc:'Cancelling rope grab for momentum burst.', wikiId:'universaltech:ropes:ropecancel'}, 
-      {id:'momentum', label:'Momentum Preservation',desc:'How the engine stores and bleeds speed.', wikiId:'universaltech:mechanics:momentum'}, +      {id:'ropelaunch', label:'Rope Launch',    desc:'Using rope to catapult in a direction.', wikiId:'universaltech:ropes:ropelaunch'}, 
-      {id:'phasing',  label:'Phasing Windows',      desc:'Invincibility and i-frame timing.',       wikiId:'universaltech:mechanics:phasing'},+      {id:'ropewj',     label:'Rope Wall Jump', desc:'Wall jumping off a rope attachment point.', wikiId:'universaltech:ropes:ropewj'},
     ]},     ]},
-  { id:'abilities', icon:'ti-bolt', label:'Ability Tech', acc:'abilities', +  { id:'vent', icon:'ti-wind', label:'Vent', acc:'abilities', 
-    desc:'Universal interactions between abilities, items, and game systems.', +    desc:'Vent interactions — boost techs and stun mechanics.', 
-    wikiId:'universaltech:abilities',+    wikiId:'universaltech:vent',
     subs:[     subs:[
-      {id:'quickcast', label:'Quick Cast',   desc:'Instant ability activation setups.',   wikiId:'universaltech:abilities:quickcast'}, +      {id:'ventboost', label:'Vent Boost', desc:'Using vents for extra upward velocity.', wikiId:'universaltech:vent:ventboost'}, 
-      {id:'buffstack', label:'Buff Stacking',desc:'Layering buffs for maximum burst.',    wikiId:'universaltech:abilities:buffstack'}, +      {id:'ventstun',  label:'Vent Stun',  desc:'Vent stun timing and counterplay.', wikiId:'universaltech:vent:ventstun'}, 
-      {id:'canceltech',label:'Cancel Tech',  desc:'Cancelling abilities for free casts.', wikiId:'universaltech:abilities:canceltech'},+    ]}, 
 +  { id:'melee', icon:'ti-sword', label:'Melee', acc:'combat', 
 +    desc:'Melee techs — light, heavy, parry, cancels, and advanced melee interactions.', 
 +    wikiId:'universaltech:melee', 
 +    subs:[ 
 +      {id:'lightmelee', label:'Light Melee',               desc:'Light melee timing and combo use.', wikiId:'universaltech:melee:lightmelee'}, 
 +      {id:'heavymelee', label:'Heavy Melee',               desc:'Heavy melee range, knockback, and setup.', wikiId:'universaltech:melee:heavymelee'}, 
 +      {id:'parry',      label:'Parry',                     desc:'Parry window, animation, and rewards.', wikiId:'universaltech:melee:parry'}, 
 +      {id:'hmc',        label:'Heavy Melee Cancel (H.M.C)',desc:'Cancelling heavy melee for free movement.', wikiId:'universaltech:melee:hmc'}, 
 +      {id:'hiddenmelee',label:'Hidden Melee',              desc:'Concealed melee animations and setups.', wikiId:'universaltech:melee:hiddenmelee'}, 
 +      {id:'feign',      label:'Feign',                     desc:'Feinting melee to bait parry responses.', wikiId:'universaltech:melee:feign'}, 
 +    ]}, 
 +  { id:'walljump', icon:'ti-arrow-bounce', label:'Wall Jumping', acc:'movement', 
 +    desc:'Wall jump techs — directional control, corner and edge boosts, surf, and fatigue management.', 
 +    wikiId:'universaltech:walljump', 
 +    subs:[ 
 +      {id:'wjd',       label:'Wall Jump Direction (W.J.D)', desc:'Controlling angle and direction off walls.', wikiId:'universaltech:walljump:wjd'}, 
 +      {id:'cornerboost',label:'Corner Boost',              desc:'Using corners for extra launch speed.', wikiId:'universaltech:walljump:cornerboost'}, 
 +      {id:'edgeboost',  label:'Edge Boost',                desc:'Boosting off ledge geometry.', wikiId:'universaltech:walljump:edgeboost'}, 
 +      {id:'refundwj',   label:'Refund Window',             desc:'Timing wall jumps to recover stamina.', wikiId:'universaltech:walljump:refundwj'}, 
 +      {id:'wjfatigue',  label:'Wall Jump Fatigue',         desc:'Managing wall jump degradation over time.', wikiId:'universaltech:walljump:wjfatigue'}, 
 +      {id:'wallsurf',   label:'Wall Surf',                 desc:'Riding wall surfaces for sustained speed.', wikiId:'universaltech:walljump:wallsurf'}, 
 +    ]}, 
 +  { id:'strafing', icon:'ti-arrows-left-right', label:'Strafing', acc:'movement', 
 +    desc:'Advanced strafe techs — air strafing, bunnyhopping, and slide bunnyhopping.', 
 +    wikiId:'universaltech:strafing', 
 +    subs:[ 
 +      {id:'airstrafe',   label:'Air Strafing',      desc:'Directional air control for speed and evasion.', wikiId:'universaltech:strafing:airstrafe'}, 
 +      {id:'bunnyhop',    label:'Bunnyhopping',       desc:'Chaining jumps to maintain and build speed.', wikiId:'universaltech:strafing:bunnyhop'}, 
 +      {id:'slidebhop',   label:'Slide Bunnyhopping', desc:'Combining slides and hops for max momentum.', wikiId:'universaltech:strafing:slidebhop'}, 
 +    ]}, 
 +  { id:'itemtech', icon:'ti-package', label:'Item Tech', acc:'items', 
 +    desc:'Universal item interactions and advanced tech with purchasable items.', 
 +    wikiId:'universaltech:itemtech', 
 +    subs:[ 
 +      {id:'majesticleap',  label:'Majestic Leap',    desc:'Launch techs and landing timing.', wikiId:'universaltech:itemtech:majesticleap'}, 
 +      {id:'warpstone',     label:'Warp Stone',        desc:'Positioning tricks and cancel windows.', wikiId:'universaltech:itemtech:warpstone'}, 
 +      {id:'rescuebeam',    label:'Rescue Beam',       desc:'Beam pull interactions and edge cases.', wikiId:'universaltech:itemtech:rescuebeam'}, 
 +      {id:'magiccarpet',   label:'Magic Carpet',      desc:'Hover positioning and advanced uses.', wikiId:'universaltech:itemtech:magiccarpet'}, 
 +      {id:'slowinghex',    label:'Slowing Hex',       desc:'Slow application timing and combos.', wikiId:'universaltech:itemtech:slowinghex'}, 
 +      {id:'staminamaster', label:'Stamina Mastery',   desc:'Maximising stamina regen and usage.', wikiId:'universaltech:itemtech:staminamaster'}, 
 +      {id:'capacitor',     label:'Capacitor',         desc:'Charge timing and burst application.', wikiId:'universaltech:itemtech:capacitor'},
     ]},     ]},
 ]; ];
Line 591: Line 638:
 } }
  
 +// Spring scroll — sets velocity toward target naturally instead of teleporting
 function animateScroll(target) { function animateScroll(target) {
-  cancelAnimationFrame(rafId)+  // Stop any current momentum and spring toward target 
-  const start scrollY+  momentumRunning = false
-  const dist  target - start+  velocity 0
-  const dur   = 340+  const SPRING 0.12 // attraction strength per frame 
-  const t0    performance.now()+  const DAMP   = 0.72 // damping to prevent overshoot 
-  function step(now) { +  let springRunning true; 
-    const p    = Math.min((now - t0) / dur, 1); +  let sv = 0;           // spring velocity separate from main velocity 
-    const ease < 0.5 ? 2*p*p : -1+(4-2*p)*p+  function step() { 
-    scrollY start dist * ease;+    if (!springRunningreturn
 +    const diff target - scrollY; 
 +    if (Math.abs(diff) < 0.5 && Math.abs(sv< 0.5) { 
 +      scrollY = target; 
 +      render(); 
 +      springRunning = false; 
 +      return; 
 +    } 
 +    sv += diff SPRING
 +    sv *DAMP; 
 +    scrollY += sv;
     render();     render();
-    if (p < 1) rafId = requestAnimationFrame(step);+    requestAnimationFrame(step);
   }   }
-  rafId = requestAnimationFrame(step);+  requestAnimationFrame(step);
 } }
  
Line 628: Line 686:
   splash.classList.add('hidden');   splash.classList.add('hidden');
   content.classList.remove('hidden');   content.classList.remove('hidden');
-  document.getElementById('ut-breadcrumb').textContent   = 'Universal Tech › ' + cat.label;+  document.getElementById('ut-breadcrumb').textContent    = 'Universal Tech › ' + cat.label;
   document.getElementById('ut-content-title').textContent = sub.label;   document.getElementById('ut-content-title').textContent = sub.label;
   document.getElementById('ut-content-desc').textContent  = sub.desc;   document.getElementById('ut-content-desc').textContent  = sub.desc;
-  const grid = document.getElementById('ut-card-grid')+  document.getElementById('ut-card-grid').innerHTML = '';
-  grid.innerHTML = ''+
-  ['Overview','Basic Setup','Intermediate','Advanced','Video Examples','Common Mistakes'].forEach(s => { +
-    const a = document.createElement('a'); +
-    a.className = 'ut-guide-card'; +
-    a.href = '/wiki/doku.php?id=' + sub.wikiId; +
-    a.innerHTML = `<div class="ut-guide-card-name">${s}</div><div class="ut-guide-card-meta">Guide section</div>`; +
-    grid.appendChild(a); +
-  });+
   document.getElementById('ut-open-btn').href = '/wiki/doku.php?id=' + sub.wikiId;   document.getElementById('ut-open-btn').href = '/wiki/doku.php?id=' + sub.wikiId;
   document.getElementById('ut-btn-label').textContent = 'Open ' + sub.label + ' page';   document.getElementById('ut-btn-label').textContent = 'Open ' + sub.label + ' page';
Line 647: Line 697:
 const wrap = document.getElementById('ut-carousel-wrap'); const wrap = document.getElementById('ut-carousel-wrap');
 let momentumRunning = false; let momentumRunning = false;
 +
 +// Wheel sensitivity: low so small scrolls move little, fast scrolls build up
 +const WHEEL_ACCEL   = 0.18;   // fraction of deltaY added to velocity each event
 +const FRICTION      = 0.82;   // velocity multiplied each frame (lower = stops sooner)
 +const VEL_CAP       = 380;    // max px/frame velocity
 +const VEL_STOP      = 0.6;    // below this velocity, stop the loop
  
 function startMomentum() { function startMomentum() {
Line 652: Line 708:
   momentumRunning = true;   momentumRunning = true;
   function step() {   function step() {
-    if (Math.abs(velocity) < 0.5) {+    velocity *= FRICTION; 
 +    if (Math.abs(velocity) < VEL_STOP) {
       velocity = 0;       velocity = 0;
       momentumRunning = false;       momentumRunning = false;
       return;       return;
     }     }
-    scrollY  += velocity+    scrollY += velocity;
-    velocity *= 0.875;+
     render();     render();
     requestAnimationFrame(step);     requestAnimationFrame(step);
Line 665: Line 721:
 } }
  
-// WHEEL — primary scroll method, accumulates velocity for smooth coast+// WHEEL — accumulate velocity proportional to scroll speed
 wrap.addEventListener('wheel', e => { wrap.addEventListener('wheel', e => {
   e.preventDefault();   e.preventDefault();
-  const scale = e.deltaMode === 1 ? 30 : e.deltaMode === 2 ? 500 : 1; +  const scale = e.deltaMode === 1 ? 20 : e.deltaMode === 2 ? 300 : 1; 
-  velocity += e.deltaY * scale * 0.65+  const delta = e.deltaY * scale; 
-  // cap velocity so it doesn't fly off screen +  // Add a fraction of delta to velocity — proportional feel 
-  velocity = Math.max(-1200, Math.min(1200, velocity));+  velocity += delta * WHEEL_ACCEL; 
 +  velocity = Math.max(-VEL_CAP, Math.min(VEL_CAP, velocity));
   startMomentum();   startMomentum();
 }, { passive: false }); }, { passive: false });
Line 688: Line 745:
   const dy  = e.clientY - lastDragY;   const dy  = e.clientY - lastDragY;
   const dt  = Math.max(now - lastDragT, 1);   const dt  = Math.max(now - lastDragT, 1);
-  velocity  = (-dy / dt) * 12;+  velocity  = (-dy / dt) * 8;
   scrollY  -= dy;   scrollY  -= dy;
   lastDragY = e.clientY; lastDragT = now;   lastDragY = e.clientY; lastDragT = now;
Line 709: Line 766:
   const now = performance.now();   const now = performance.now();
   const dy  = e.touches[0].clientY - lastDragY;   const dy  = e.touches[0].clientY - lastDragY;
-  velocity  = (-dy / Math.max(now - lastDragT, 1)) * 12;+  velocity  = (-dy / Math.max(now - lastDragT, 1)) * 8;
   scrollY  -= dy;   scrollY  -= dy;
   lastDragY = e.touches[0].clientY; lastDragT = now;   lastDragY = e.touches[0].clientY; lastDragT = now;
  • universaltech/start.1782109567.txt.gz
  • Last modified: 2026/06/22 06:26
  • by jumpstartadmin