@@ -0,0 +1,17 @@ | |||
define([ | |||
], function( | |||
) { | |||
return { | |||
init: function() { | |||
}, | |||
update: function() { | |||
} | |||
}; | |||
}); |
@@ -0,0 +1,46 @@ | |||
define([ | |||
'../../world/mobBuilder' | |||
], function( | |||
mobBuilder | |||
) { | |||
return { | |||
spawnRect: null, | |||
mob: null, | |||
init: function() { | |||
var objects = this.instance.objects; | |||
var spawnRect = this.spawnRect; | |||
if (!this.mob.push) | |||
this.mob = [ this.mob ]; | |||
this.mob.forEach(function(l) { | |||
var amount = l.amount || 1; | |||
delete l.amount; | |||
l.walkDistance = 0; | |||
for (var i = 0; i < amount; i++) { | |||
var x = spawnRect.x + ~~(Math.random() * spawnRect.w); | |||
var y = spawnRect.y + ~~(Math.random() * spawnRect.h); | |||
var mob = objects.buildObjects([{ | |||
x: x, | |||
y: y, | |||
sheetName: 'mobs', | |||
cell: l.cell, | |||
name: l.name | |||
}]); | |||
mobBuilder.build(mob, l); | |||
if (l.id) { | |||
var id = l.id.split('$').join(i); | |||
mob.id = id; | |||
} | |||
} | |||
}); | |||
this.end = true; | |||
} | |||
}; | |||
}); |
@@ -0,0 +1,17 @@ | |||
define([ | |||
], function( | |||
) { | |||
return { | |||
end: false, | |||
init: function() { | |||
}, | |||
update: function() { | |||
} | |||
}; | |||
}); |
@@ -14,6 +14,7 @@ module.exports = [{ | |||
amount: 5, | |||
name: 'thieving imp', | |||
level: 5, | |||
cell: 51, | |||
id: 'impthief-$', | |||
hpMult: 5, | |||
dmgMult: 1, | |||
@@ -23,6 +24,7 @@ module.exports = [{ | |||
}, { | |||
name: 'imp kingpin', | |||
level: 8, | |||
cell: 52, | |||
hpMult: 10, | |||
dmgMult: 2 | |||
}] | |||
@@ -1,7 +1,7 @@ | |||
define([ | |||
'../config/eventPhases/phaseTemplate' | |||
], function( | |||
phaseTemplate | |||
) { | |||
return { | |||
configs: null, | |||
@@ -19,7 +19,7 @@ define([ | |||
return; | |||
this.configs = extend(true, [], configs); | |||
this.configs.forEach(c => (c.ttl = 10)); | |||
this.configs.forEach(c => (c.ttl = 5)); | |||
}, | |||
update: function() { | |||
@@ -30,8 +30,10 @@ define([ | |||
var cLen = configs.length; | |||
for (var i = 0; i < cLen; i++) { | |||
var c = configs[i]; | |||
if (c.event) | |||
if (c.event) { | |||
this.updateEvent(c.event); | |||
continue; | |||
} | |||
else if (c.ttl > 0) { | |||
c.ttl--; | |||
continue; | |||
@@ -42,7 +44,54 @@ define([ | |||
}, | |||
startEvent: function(config) { | |||
return {}; | |||
var event = { | |||
config: config, | |||
phases: [], | |||
nextPhase: 0 | |||
}; | |||
return event; | |||
}, | |||
updateEvent: function(event) { | |||
var currentPhases = event.phases; | |||
var cLen = currentPhases.length; | |||
var stillBusy = false; | |||
for (var i = 0; i < cLen; i++) { | |||
var phase = currentPhases[i]; | |||
if (phase.end) | |||
continue | |||
else { | |||
stillBusy = true; | |||
phase.update(); | |||
} | |||
} | |||
if (stillBusy) | |||
return; | |||
var config = event.config; | |||
var phases = config.phases; | |||
var pLen = phases.length; | |||
for (var i = event.nextPhase; i < pLen; i++) { | |||
var p = phases[i]; | |||
var phaseFile = 'phase' + p.type[0].toUpperCase() + p.type.substr(1); | |||
var typeTemplate = require('config/eventPhases/' + phaseFile); | |||
var phase = extend(true, { | |||
instance: this.instance | |||
}, phaseTemplate, typeTemplate, p); | |||
event.phases.push(phase); | |||
phase.init(); | |||
event.nextPhase = i + 1; | |||
if (!p.auto) | |||
break; | |||
} | |||
} | |||
}; | |||
}); |
@@ -9,7 +9,7 @@ define([ | |||
) { | |||
return { | |||
build: function(mob, blueprint, scaleDrops, type) { | |||
var typeDefinition = blueprint[type]; | |||
var typeDefinition = blueprint[type] || blueprint; | |||
var drops = typeDefinition.drops; | |||
@@ -20,15 +20,17 @@ define([ | |||
mob.nonSelectable = true; | |||
mob.addComponent('effects'); | |||
if (type != 'regular') { | |||
mob.effects.addEffect({ | |||
type: type | |||
}); | |||
if (type) { | |||
if (type != 'regular') { | |||
mob.effects.addEffect({ | |||
type: type | |||
}); | |||
mob['is' + type[0].toUpperCase() + type.substr(1)] = true; | |||
mob['is' + type[0].toUpperCase() + type.substr(1)] = true; | |||
mob.baseName = mob.name; | |||
mob.name = typeDefinition.name || mob.baseName; | |||
mob.baseName = mob.name; | |||
mob.name = typeDefinition.name || mob.baseName; | |||
} | |||
} | |||
mob.addComponent('stats', { | |||