DREADED APES

Welcome to the Shrewdness



THE TEAM

WARNING!!!BOUNTY : HIGH

@JIGS_Actual

TITLE:
C.E.O
SKILLS:
MINDTAKING
SORCERER SUPREME
MILITARY TACTICIAN
RULER OF LATVERIA
DREADNAUT CAPTAIIN

@DREADED_YOGI

TITLE:
C.T.O
SKILLS:
TECHNOVORE
SIGNAL INTELLIGENCE
A.I. NEUROLOGIST
DREADNAUT 1st OFFICER


All Rights Reserved

Streaming now

Music from Pirates of dark matter

🔊 IDGAFx25 Ft. Greydon Square
🔊 In Grodd We Trust
⬇️ Download Track

La Bodega

Coming Soon

🦍 DREADED APES — Apecraft (Lite)
Score: 0
Wave: 1
Weapon: Melee
Controls: WASD/Arrows•Space=melee•Click/Shift=shoot•P=pause.
(function(){ const cvs=document.getElementById('ap_game'); const ctx=cvs.getContext('2d'); const scoreEl=document.getElementById('ap_score'); const hpEl=document.getElementById('ap_hp'); const waveEl=document.getElementById('ap_wave'); const weaponEl=document.getElementById('ap_weapon'); const pauseBtn=document.getElementById('ap_pause'); const clamp=(v,a,b)=>Math.max(a,Math.min(b,v)); const H=cvs.height, W=cvs.width; const dist=(a,b)=>Math.hypot(a.x-b.x,a.y-b.y); const rand=(a,b)=>a+Math.random()*(b-a); const pick=a=>a[(Math.random()*a.length)|0]; class E{constructor(x,y){this.x=x;this.y=y;this.vx=0;this.vy=0;this.dead=false;}} class P extends E{constructor(x,y){super(x,y);this.r=18;this.speed=3.2;this.hp=100;this.cool=0;this.gun=false;this.reload=0;}} class N extends E{constructor(x,y,s=1.6){super(x,y);this.r=14;this.speed=s;this.hp=20;}} class B extends E{constructor(x,y,dx,dy){super(x,y);const n=Math.hypot(dx,dy)||1;this.vx=dx/n*7;this.vy=dy/n*7;this.r=4;this.life=90;}} class C extends E{constructor(x,y,t){super(x,y);this.r=10;this.type=t;this.t=0;}} let player,enemies=[],bullets=[],pickups=[],keys={},mouse={x:W/2,y:H/2,down:false}; let score=0,wave=1,last=0,running=true,shake=0; function reset(){player=new P(W/2,H/2); enemies.length=0; bullets.length=0; pickups.length=0; score=0; wave=1; running=true; for(let i=0;i<6;i++) spawnEnemy(); scoreEl.textContent=score; waveEl.textContent=wave; weaponEl.textContent='Melee'; hpEl.style.width='100%';} function spawnEnemy(){const e=pick(['t','b','l','r']); let x=rand(0,W),y=rand(0,H); if(e==='t')y=-20; if(e==='b')y=H+20; if(e==='l')x=-20; if(e==='r')x=W+20; enemies.push(new N(x,y,rand(1.2,2.0)+wave*0.05));} function drop(x,y){if(Math.random()<0.28) pickups.push(new C(x,y,pick(['blaster','heal'])));} function dmg(d){player.hp=clamp(player.hp-d,0,100); hpEl.style.width=player.hp+'%'; if(player.hp<=0) running=false; shake=Math.min(10,shake+5);} function heal(v){player.hp=clamp(player.hp+v,0,100); hpEl.style.width=player.hp+'%';} function melee(){if(player.cool>0) return; player.cool=16; for(const e of enemies){if(e.dead) continue; if(dist(player,e)0) return; player.reload=10; const dx=mouse.x-player.x,dy=mouse.y-player.y; bullets.push(new B(player.x,player.y,dx,dy));} // inputs window.addEventListener('keydown',e=>{ if(e.code==='KeyP') toggle(); keys[e.code]=true; if(['Space','ArrowUp','ArrowDown','ArrowLeft','ArrowRight'].includes(e.code)) e.preventDefault();}); window.addEventListener('keyup',e=>{ keys[e.code]=false;}); cvs.addEventListener('mousemove',e=>{const r=cvs.getBoundingClientRect(); mouse.x=(e.clientX-r.left)/r.width*W; mouse.y=(e.clientY-r.top)/r.height*H;}); cvs.addEventListener('mousedown',()=>{mouse.down=true;}); window.addEventListener('mouseup',()=>{mouse.down=false;}); pauseBtn.addEventListener('click',toggle); function update(){ if(shake>0) shake*=0.92; let mx=(keys['KeyD']||keys['ArrowRight']?1:0)-(keys['KeyA']||keys['ArrowLeft']?1:0); let my=(keys['KeyS']||keys['ArrowDown']?1:0)-(keys['KeyW']||keys['ArrowUp']?1:0); const m=Math.hypot(mx,my)||1; mx/=m; my/=m; player.x=clamp(player.x+mx*player.speed,player.r,W-player.r); player.y=clamp(player.y+my*player.speed,player.r,H-player.r); if(keys['Space']) melee(); if(mouse.down||keys['ShiftLeft']||keys['ShiftRight']) shoot(); if(player.cool>0) player.cool--; if(player.reload>0) player.reload--; for(const e of enemies){ if(e.dead) continue; const dx=player.x-e.x,dy=player.y-e.y,n=Math.hypot(dx,dy)||1; e.vx=dx/n*e.speed; e.vy=dy/n*e.speed; e.x+=e.vx; e.y+=e.vy; if(dist(e,player)W||b.y<0||b.y>H) b.dead=true; } for(const e of enemies){ if(e.dead) continue; for(const b of bullets){ if(b.dead) continue; if(Math.hypot(e.x-b.x,e.y-b.y)!e.dead); bullets=bullets.filter(b=>!b.dead); pickups=pickups.filter(p=>!p.dead); if(enemies.length===0){ wave++; waveEl.textContent=wave; for(let i=0;i<6+wave;i++) spawnEnemy(); } scoreEl.textContent=score; } function draw(){ const sx=(Math.random()-.5)*shake, sy=(Math.random()-.5)*shake; ctx.setTransform(1,0,0,1,sx,sy); ctx.clearRect(-sx,-sy,W,H); // grid ctx.save(); ctx.strokeStyle='rgba(125,255,92,.12)'; for(let x=0;x12){ctx.strokeStyle='rgba(155,107,255,.55)'; ctx.beginPath(); ctx.arc(0,0,player.r+22,0,6.28); ctx.stroke();} ctx.restore(); // enemies for(const e of enemies){ ctx.save(); ctx.translate(e.x,e.y); ctx.fillStyle='#9b1b7a'; ctx.beginPath(); ctx.arc(0,0,e.r,0,6.28); ctx.fill(); ctx.restore(); } // bullets ctx.fillStyle='#e8f9ff'; for(const b of bullets){ ctx.beginPath(); ctx.arc(b.x,b.y,b.r,0,6.28); ctx.fill(); } ctx.setTransform(1,0,0,1,0,0); } function loop(t){ if(!last) last=t; const dt=t-last; last=t; if(running) { update(dt); draw(); } requestAnimationFrame(loop); } function toggle(){ running=!running; pauseBtn.textContent= running? '⏸️ Pause':'▶️ Resume'; } reset(); requestAnimationFrame(loop); })();