Leapfrogs
This commit is contained in:
1 parent
7fabcd386d
commit
3c5dd97641
2 files changed
+43
No files matched your search
@@ -29,6 +29,7 @@ export const PLAYER_STARTING_WEAPONS = [
|
|||||||
{type: 'nuke', ammo:1},
|
{type: 'nuke', ammo:1},
|
||||||
{type: 'mirv', ammo:5},
|
{type: 'mirv', ammo:5},
|
||||||
{type: 'xmirv', ammo:3},
|
{type: 'xmirv', ammo:3},
|
||||||
|
{type: 'leapfrog', ammo:3},
|
||||||
{type: 'smallDirt', ammo:5},
|
{type: 'smallDirt', ammo:5},
|
||||||
{type: 'dirt', ammo:3},
|
{type: 'dirt', ammo:3},
|
||||||
{type: 'largeDirt', ammo:1},
|
{type: 'largeDirt', ammo:1},
|
||||||
@@ -44,6 +45,7 @@ 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}},
|
||||||
|
leapfrog: {id:'leapfrog', name:'Leapfrog', projectile:{type:'leapfrog', n:3, s:10}, explosion:{type:'blast', r:35}},
|
||||||
mirv: {id:'mirv', name:'MIRV', projectile:{type:'mirv', n:3, s:8}, explosion:{type:'blast', r:35}},
|
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}},
|
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}},
|
||||||
|
|||||||
@@ -96,4 +96,45 @@ export const PROJECTILE_TYPES = {
|
|||||||
stop() {},
|
stop() {},
|
||||||
update() {},
|
update() {},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
leapfrog: {
|
||||||
|
create(spec, player, weapon, ox, oy, a, p, wind) {
|
||||||
|
const {n, s} = spec;
|
||||||
|
|
||||||
|
return [{
|
||||||
|
type:'leapfrog',
|
||||||
|
n, s, payload:null,
|
||||||
|
player, weapon, ox, oy, a, p, wind,
|
||||||
|
}];
|
||||||
|
},
|
||||||
|
stop() {},
|
||||||
|
update(projectile, terrain, projectiles, trajectories, explosions) {
|
||||||
|
const {player, weapon, ox, oy, a, p, wind, n, s} = projectile;
|
||||||
|
const projectileType = PROJECTILE_TYPES.normal;
|
||||||
|
|
||||||
|
// FIXME: Ugly
|
||||||
|
if (!projectile.payload) {
|
||||||
|
projectile.n--;
|
||||||
|
projectile.payload = projectileType.create(
|
||||||
|
{}, player, weapon, ox, oy, a, p, wind,
|
||||||
|
)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
const alive = projectileType.update(
|
||||||
|
projectile.payload, terrain, projectiles, trajectories, explosions
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!alive) {
|
||||||
|
projectileType.stop(projectile.payload)
|
||||||
|
if (n <= 0) return;
|
||||||
|
|
||||||
|
projectile.n--;
|
||||||
|
projectile.payload = projectileType.create(
|
||||||
|
{}, player, weapon, projectile.payload.x, projectile.payload.y-2, a, p-s*n, wind, // FIXME: Y Hack
|
||||||
|
)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user