Browse Source

first version of spawnMob phase

tags/v0.1.5^2
Big Bad Waffle 7 years ago
parent
commit
4521f3af1b
6 changed files with 146 additions and 13 deletions
  1. +17
    -0
      src/server/config/eventPhases/phaseLocateMob.js
  2. +46
    -0
      src/server/config/eventPhases/phaseSpawnMob.js
  3. +17
    -0
      src/server/config/eventPhases/phaseTemplate.js
  4. +2
    -0
      src/server/config/maps/tutorial/events.js
  5. +54
    -5
      src/server/events/events.js
  6. +10
    -8
      src/server/world/mobBuilder.js

+ 17
- 0
src/server/config/eventPhases/phaseLocateMob.js View File

@@ -0,0 +1,17 @@
define([
], function(
) {
return {

init: function() {

},

update: function() {

}
};
});

+ 46
- 0
src/server/config/eventPhases/phaseSpawnMob.js View File

@@ -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;
}
};
});

+ 17
- 0
src/server/config/eventPhases/phaseTemplate.js View File

@@ -0,0 +1,17 @@
define([
], function(
) {
return {
end: false,

init: function() {

},
update: function() {
}
};
});

+ 2
- 0
src/server/config/maps/tutorial/events.js View File

@@ -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
}]


+ 54
- 5
src/server/events/events.js View File

@@ -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;
}
}
};
});

+ 10
- 8
src/server/world/mobBuilder.js View File

@@ -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', {


Loading…
Cancel
Save