@@ -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, | amount: 5, | ||||
name: 'thieving imp', | name: 'thieving imp', | ||||
level: 5, | level: 5, | ||||
cell: 51, | |||||
id: 'impthief-$', | id: 'impthief-$', | ||||
hpMult: 5, | hpMult: 5, | ||||
dmgMult: 1, | dmgMult: 1, | ||||
@@ -23,6 +24,7 @@ module.exports = [{ | |||||
}, { | }, { | ||||
name: 'imp kingpin', | name: 'imp kingpin', | ||||
level: 8, | level: 8, | ||||
cell: 52, | |||||
hpMult: 10, | hpMult: 10, | ||||
dmgMult: 2 | dmgMult: 2 | ||||
}] | }] | ||||
@@ -1,7 +1,7 @@ | |||||
define([ | define([ | ||||
'../config/eventPhases/phaseTemplate' | |||||
], function( | ], function( | ||||
phaseTemplate | |||||
) { | ) { | ||||
return { | return { | ||||
configs: null, | configs: null, | ||||
@@ -19,7 +19,7 @@ define([ | |||||
return; | return; | ||||
this.configs = extend(true, [], configs); | this.configs = extend(true, [], configs); | ||||
this.configs.forEach(c => (c.ttl = 10)); | |||||
this.configs.forEach(c => (c.ttl = 5)); | |||||
}, | }, | ||||
update: function() { | update: function() { | ||||
@@ -30,8 +30,10 @@ define([ | |||||
var cLen = configs.length; | var cLen = configs.length; | ||||
for (var i = 0; i < cLen; i++) { | for (var i = 0; i < cLen; i++) { | ||||
var c = configs[i]; | var c = configs[i]; | ||||
if (c.event) | |||||
if (c.event) { | |||||
this.updateEvent(c.event); | |||||
continue; | continue; | ||||
} | |||||
else if (c.ttl > 0) { | else if (c.ttl > 0) { | ||||
c.ttl--; | c.ttl--; | ||||
continue; | continue; | ||||
@@ -42,7 +44,54 @@ define([ | |||||
}, | }, | ||||
startEvent: function(config) { | 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 { | return { | ||||
build: function(mob, blueprint, scaleDrops, type) { | build: function(mob, blueprint, scaleDrops, type) { | ||||
var typeDefinition = blueprint[type]; | |||||
var typeDefinition = blueprint[type] || blueprint; | |||||
var drops = typeDefinition.drops; | var drops = typeDefinition.drops; | ||||
@@ -20,15 +20,17 @@ define([ | |||||
mob.nonSelectable = true; | mob.nonSelectable = true; | ||||
mob.addComponent('effects'); | 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', { | mob.addComponent('stats', { | ||||