MIRV weapons
This commit is contained in:
1 parent
f3561d8baf
commit
7fabcd386d
3 files changed
+38
-15
No files matched your search
+13
-9
@@ -25,15 +25,17 @@ export const PLAYER_COLORS = [
|
||||
export const PLAYER_STARTING_WEAPONS = [
|
||||
{type: 'babyMissile', ammo:Infinity},
|
||||
{type: 'missile', ammo:5},
|
||||
// {type: 'babyNuke', ammo:3},
|
||||
// {type: 'nuke', ammo:1},
|
||||
// {type: 'smallDirt', ammo:5},
|
||||
// {type: 'dirt', ammo:3},
|
||||
// {type: 'largeDirt', ammo:1},
|
||||
// {type: 'smallDigBomb', ammo:5},
|
||||
// {type: 'digBomb', ammo:3},
|
||||
// {type: 'largeDigBomb', ammo:1},
|
||||
// {type: 'tracer', ammo:Infinity},
|
||||
{type: 'babyNuke', ammo:3},
|
||||
{type: 'nuke', ammo:1},
|
||||
{type: 'mirv', ammo:5},
|
||||
{type: 'xmirv', ammo:3},
|
||||
{type: 'smallDirt', ammo:5},
|
||||
{type: 'dirt', ammo:3},
|
||||
{type: 'largeDirt', ammo:1},
|
||||
{type: 'smallDigBomb', ammo:5},
|
||||
{type: 'digBomb', ammo:3},
|
||||
{type: 'largeDigBomb', ammo:1},
|
||||
{type: 'tracer', ammo:Infinity},
|
||||
]
|
||||
|
||||
export const WEAPON_TYPES = {
|
||||
@@ -42,6 +44,8 @@ export const WEAPON_TYPES = {
|
||||
missile: {id:'missile', name:'Missile', projectile:{type:'normal'}, explosion:{type:'blast', r:20}},
|
||||
babyNuke: {id:'babyNuke', name:'Baby Nuke', projectile:{type:'normal'}, explosion:{type:'blast', r:50}},
|
||||
nuke: {id:'nuke', name:'Nuke', projectile:{type:'normal'}, explosion:{type:'blast', r:100}},
|
||||
mirv: {id:'mirv', name:'MIRV', projectile:{type:'mirv', n:3, s:8}, explosion:{type:'blast', r:35}},
|
||||
xmirv: {id:'xmirv', name:'X-MIRV', projectile:{type:'mirv', n:5, s:8}, explosion:{type:'blast', r:45}},
|
||||
smallDirt: {id:'smallDirt', name:'Small Dirt', projectile:{type:'normal'}, explosion:{type:'dirt', r:25}},
|
||||
dirt: {id:'dirt', name:'Dirt', projectile:{type:'normal'}, explosion:{type:'dirt', r:50}},
|
||||
largeDirt: {id:'largeDirt', name:'Ton of Dirt', projectile:{type:'normal'}, explosion:{type:'dirt', r:75}},
|
||||
|
||||
+2
-3
@@ -140,9 +140,8 @@ function update() {
|
||||
const projectileType = PROJECTILE_TYPES[projectile.type];
|
||||
weapon.ammo -= 1;
|
||||
|
||||
projectiles.push(
|
||||
projectileType.create(projectile, player, weapon, px, py, a, p, wind)
|
||||
);
|
||||
.forEach(x => projectiles.push(x));
|
||||
|
||||
state = 'shoot';
|
||||
}
|
||||
@@ -152,7 +151,7 @@ function update() {
|
||||
for (let i=projectiles.length-1; i>=0; i--) {
|
||||
const projectile = projectiles[i];
|
||||
const projectileType = PROJECTILE_TYPES[projectile.type];
|
||||
if (projectileType.update(projectile, terrain, trajectories, explosions)) continue;
|
||||
if (projectileType.update(projectile, terrain, projectiles, trajectories, explosions)) continue;
|
||||
projectileType.stop(projectile);
|
||||
projectiles.splice(i, 1);
|
||||
}
|
||||
|
||||
+23
-3
@@ -13,17 +13,17 @@ export const PROJECTILE_TYPES = {
|
||||
const osc = createOsc('sine');
|
||||
osc.start();
|
||||
|
||||
return {
|
||||
return [{
|
||||
type: 'normal',
|
||||
player, weapon,
|
||||
x:ox, y:oy, ox, oy, a, p,
|
||||
t: 0, osc, wind,
|
||||
};
|
||||
}];
|
||||
},
|
||||
stop(projectile) {
|
||||
projectile.osc.stop(0);
|
||||
},
|
||||
update(projectile, terrain, trajectories, explosions) {
|
||||
update(projectile, terrain, projectiles, trajectories, explosions) {
|
||||
const prevProjectile = {...projectile};
|
||||
const {weapon, player, wind} = projectile;
|
||||
const weaponType = WEAPON_TYPES[weapon.type];
|
||||
@@ -75,5 +75,25 @@ export const PROJECTILE_TYPES = {
|
||||
|
||||
return !exploded;
|
||||
},
|
||||
},
|
||||
|
||||
mirv: {
|
||||
create(spec, player, weapon, ox, oy, a, p, wind) {
|
||||
const {n, s} = spec;
|
||||
const projectiles = [];
|
||||
const normalType = PROJECTILE_TYPES.normal;
|
||||
|
||||
for (let i=0; i<n; i++) {
|
||||
projectiles.push(
|
||||
normalType.create(
|
||||
{}, player, weapon, ox, oy, a, p, wind-s*i
|
||||
)[0]
|
||||
);
|
||||
}
|
||||
|
||||
return projectiles;
|
||||
},
|
||||
stop() {},
|
||||
update() {},
|
||||
},
|
||||
}
|
||||
Reference in new issue
Block a user