UNPKG

csgo-fade-percentage-calculator

Version:

Calculate the Fade percentage of a CS2 skin using its paint seed.

1 lines 3.99 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).FadeCalculator={})}(this,(function(t){"use strict";class e{constructor(){this.mIdum=0,this.mIy=0,this.mIv=[],this.NTAB=32,this.IA=16807,this.IM=2147483647,this.IQ=127773,this.IR=2836,this.NDIV=1+(this.IM-1)/this.NTAB,this.AM=1/this.IM,this.RNMX=1-12e-8}setSeed(t){this.mIdum=t,t>=0&&(this.mIdum=-t),this.mIy=0}generateRandomNumber(){let t,e;if(this.mIdum<=0||0===this.mIy){for(-this.mIdum<1?this.mIdum=1:this.mIdum=-this.mIdum,e=this.NTAB+7;e>=0;e-=1)t=Math.floor(this.mIdum/this.IQ),this.mIdum=Math.floor(this.IA*(this.mIdum-t*this.IQ)-this.IR*t),this.mIdum<0&&(this.mIdum+=this.IM),e<this.NTAB&&(this.mIv[e]=this.mIdum);[this.mIy]=this.mIv}return t=Math.floor(this.mIdum/this.IQ),this.mIdum=Math.floor(this.IA*(this.mIdum-t*this.IQ)-this.IR*t),this.mIdum<0&&(this.mIdum+=this.IM),e=Math.floor(this.mIy/this.NDIV),this.mIy=Math.floor(this.mIv[e]),this.mIv[e]=this.mIdum,this.mIy}randomFloat(t,e){let s=this.AM*this.generateRandomNumber();return s>this.RNMX&&(s=this.RNMX),s*(e-t)+t}}class s{constructor(){this.minPercentage=80}getSupportedWeapons(){return this.weapons}getFadePercentage(t,e){return this.getFadePercentages(t)[e]}getAllFadePercentages(){return this.weapons.map((t=>({weapon:t,percentages:this.getFadePercentages(t)})))}getFadePercentages(t){if(!this.weapons.includes(t))throw new Error(`The weapon "${t}" is currently not supported.`);const s=this.configs[t]||this.configs.default,a=[],n=this.tradeUpWeapons.includes(t)?1e3:999;for(let t=0;t<=n;t+=1){const n=new e;n.setSeed(t);const r=n.randomFloat(s.pattern_offset_x_start,s.pattern_offset_x_end);n.randomFloat(s.pattern_offset_y_start,s.pattern_offset_y_end);const i=n.randomFloat(s.pattern_rotate_start,s.pattern_rotate_end);let o;o=s.pattern_offset_x_start!==s.pattern_offset_x_end?i*r:i,a.push(Math.abs(o))}let r,i;this.reversedWeapons.includes(t)?(r=Math.max(...a),i=Math.min(...a)):(r=Math.min(...a),i=Math.max(...a));const o=i-r,h=a.map((t=>(i-t)/o)),f=[...h].sort(((t,e)=>t-e));return h.map(((t,e)=>({seed:e,percentage:this.minPercentage+t*(100-this.minPercentage),ranking:Math.min(f.indexOf(t)+1,f.length-f.indexOf(t))})))}}const a=new class extends s{constructor(){super(...arguments),this.weapons=["AWP","Bayonet","Bowie Knife","Butterfly Knife","Classic Knife","Falchion Knife","Flip Knife","Glock-18","Gut Knife","Huntsman Knife","Karambit","Kukri Knife","M9 Bayonet","MAC-10","MP7","Navaja Knife","Nomad Knife","Paracord Knife","R8 Revolver","Shadow Daggers","Skeleton Knife","Stiletto Knife","Survival Knife","Talon Knife","UMP-45","Ursus Knife"],this.reversedWeapons=["AWP","Karambit","Talon Knife"],this.tradeUpWeapons=["AWP","Glock-18","MAC-10","MP7","R8 Revolver","UMP-45"],this.configs={default:{pattern_offset_x_start:-.7,pattern_offset_x_end:-.7,pattern_offset_y_start:-.7,pattern_offset_y_end:-.7,pattern_rotate_start:-55,pattern_rotate_end:-65},MP7:{pattern_offset_x_start:-.9,pattern_offset_x_end:-.3,pattern_offset_y_start:-.7,pattern_offset_y_end:-.5,pattern_rotate_start:-55,pattern_rotate_end:-65}}}},n=new class extends s{constructor(){super(...arguments),this.weapons=["AUG","Galil AR","MAC-10","P2000","R8 Revolver","Sawed-Off"],this.reversedWeapons=[],this.tradeUpWeapons=["AUG","Galil AR","MAC-10","P2000","R8 Revolver","Sawed-Off"],this.configs={default:{pattern_offset_x_start:-.7,pattern_offset_x_end:-.7,pattern_offset_y_start:-.7,pattern_offset_y_end:-.7,pattern_rotate_start:-55,pattern_rotate_end:-65}}}},r=new class extends s{constructor(){super(...arguments),this.weapons=["SSG 08"],this.reversedWeapons=[],this.tradeUpWeapons=["SSG 08"],this.configs={default:{pattern_offset_x_start:-2.4,pattern_offset_x_end:-2.1,pattern_offset_y_start:0,pattern_offset_y_end:0,pattern_rotate_start:-55,pattern_rotate_end:-65}}}};t.AcidFadeCalculator=r,t.AmberFadeCalculator=n,t.FadeCalculator=a}));