MIRV weapons
This commit is contained in:
1 parent
f3561d8baf
commit
7fabcd386d
3 files changed
+40
-17
No files matched your search
+13
-9
@@ -25,15 +25,17 @@ export const PLAYER_COLORS = [
|
|||||||
export const PLAYER_STARTING_WEAPONS = [
|
export const PLAYER_STARTING_WEAPONS = [
|
||||||
{type: 'babyMissile', ammo:Infinity},
|
{type: 'babyMissile', ammo:Infinity},
|
||||||
{type: 'missile', ammo:5},
|
{type: 'missile', ammo:5},
|
||||||
// {type: 'babyNuke', ammo:3},
|
{type: 'babyNuke', ammo:3},
|
||||||
// {type: 'nuke', ammo:1},
|
{type: 'nuke', ammo:1},
|
||||||
// {type: 'smallDirt', ammo:5},
|
{type: 'mirv', ammo:5},
|
||||||
// {type: 'dirt', ammo:3},
|
{type: 'xmirv', ammo:3},
|
||||||
// {type: 'largeDirt', ammo:1},
|
{type: 'smallDirt', ammo:5},
|
||||||
// {type: 'smallDigBomb', ammo:5},
|
{type: 'dirt', ammo:3},
|
||||||
// {type: 'digBomb', ammo:3},
|
{type: 'largeDirt', ammo:1},
|
||||||
// {type: 'largeDigBomb', ammo:1},
|
{type: 'smallDigBomb', ammo:5},
|
||||||
// {type: 'tracer', ammo:Infinity},
|
{type: 'digBomb', ammo:3},
|
||||||
|
{type: 'largeDigBomb', ammo:1},
|
||||||
|
{type: 'tracer', ammo:Infinity},
|
||||||
]
|
]
|
||||||
|
|
||||||
export const WEAPON_TYPES = {
|
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}},
|
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}},
|
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}},
|
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}},
|
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}},
|
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}},
|
largeDirt: {id:'largeDirt', name:'Ton of Dirt', projectile:{type:'normal'}, explosion:{type:'dirt', r:75}},
|
||||||
|
|||||||
+3
-4
@@ -140,9 +140,8 @@ function update() {
|
|||||||
const projectileType = PROJECTILE_TYPES[projectile.type];
|
const projectileType = PROJECTILE_TYPES[projectile.type];
|
||||||
weapon.ammo -= 1;
|
weapon.ammo -= 1;
|
||||||
|
|
||||||
projectiles.push(
|
projectileType.create(projectile, player, weapon, px, py, a, p, wind)
|
||||||
projectileType.create(projectile, player, weapon, px, py, a, p, wind)
|
.forEach(x => projectiles.push(x));
|
||||||
);
|
|
||||||
|
|
||||||
state = 'shoot';
|
state = 'shoot';
|
||||||
}
|
}
|
||||||
@@ -152,7 +151,7 @@ function update() {
|
|||||||
for (let i=projectiles.length-1; i>=0; i--) {
|
for (let i=projectiles.length-1; i>=0; i--) {
|
||||||
const projectile = projectiles[i];
|
const projectile = projectiles[i];
|
||||||
const projectileType = PROJECTILE_TYPES[projectile.type];
|
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);
|
projectileType.stop(projectile);
|
||||||
projectiles.splice(i, 1);
|
projectiles.splice(i, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-4
@@ -13,17 +13,17 @@ export const PROJECTILE_TYPES = {
|
|||||||
const osc = createOsc('sine');
|
const osc = createOsc('sine');
|
||||||
osc.start();
|
osc.start();
|
||||||
|
|
||||||
return {
|
return [{
|
||||||
type: 'normal',
|
type: 'normal',
|
||||||
player, weapon,
|
player, weapon,
|
||||||
x:ox, y:oy, ox, oy, a, p,
|
x:ox, y:oy, ox, oy, a, p,
|
||||||
t: 0, osc, wind,
|
t: 0, osc, wind,
|
||||||
};
|
}];
|
||||||
},
|
},
|
||||||
stop(projectile) {
|
stop(projectile) {
|
||||||
projectile.osc.stop(0);
|
projectile.osc.stop(0);
|
||||||
},
|
},
|
||||||
update(projectile, terrain, trajectories, explosions) {
|
update(projectile, terrain, projectiles, trajectories, explosions) {
|
||||||
const prevProjectile = {...projectile};
|
const prevProjectile = {...projectile};
|
||||||
const {weapon, player, wind} = projectile;
|
const {weapon, player, wind} = projectile;
|
||||||
const weaponType = WEAPON_TYPES[weapon.type];
|
const weaponType = WEAPON_TYPES[weapon.type];
|
||||||
@@ -75,5 +75,25 @@ export const PROJECTILE_TYPES = {
|
|||||||
|
|
||||||
return !exploded;
|
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