gsjsBridge.init(true, function cb() { // hi variants tracker group required for pc login: pers.create(Group, {tsid: 'RIFUKAGPIJC358O', class_tsid: 'hi_variants_tracker'}); var geo = Geo.create({tsid: 'GXYZ', layers: {middleground: { platform_lines: {plat_1: { start: {x: -100, y: 0}, end: {x: 100, y: 0}, platform_item_perm: -1, platform_pc_perm: -1, }}}}}); loc = Location.create(geo); pc = Player.create({ tsid: 'PXYYZ', label: 'Chuck', class_tsid: 'human', skip_newux: true, location: loc, x: 0, y: -100, last_location: {}, }); trant = Item.create('trant_bean'); trant.setContainer(loc, 12, 34); trant.die = function () {}; // prevent dying apple = Item.create('apple'); apple.setContainer(pc, 0); done(); });
Player.create = function create(data) { assert(_.isObject(data), 'minimal player data set required'); assert(utils.isLoc(data.location), 'location required'); data.class_tsid = data.class_tsid || 'human'; var ret = pers.create(Player, data); log.info('%s was imagined!', ret); return ret; };
new RC().run(function () { var p = pers.create(Player, {location: Location.create(Geo.create())}); var i1 = Item.create('tomato'); i1.setContainer(p, 0); var i2 = Item.create('tomato'); i2.setContainer(p, 1); var i3 = Item.create('tomato'); i1.setContainer(p, 1); i2.setContainer(p, 0); p.addItemStack(i3); assert.strictEqual(i2.count, 2); }, done);
new RC().run(function () { var p = pers.create(Player, {location: Location.create(Geo.create())}); p.capacity = 2; var b1 = Bag.create('bag_generic'); b1.setContainer(p, 0); var b2 = Bag.create('bag_generic'); b2.setContainer(p, 1); var i = Item.create('moon'); b1.setContainer(p, 1); b2.setContainer(p, 0); p.addItemStack(i); assert.strictEqual(Object.keys(b2.items).length, 1); }, done);
new RC().run(function () { var p = pers.create(Player, {location: Location.create(Geo.create())}); var remaining = p.createItemFromSource('watering_can', 99, p, true); assert.strictEqual(remaining, 83, '99 cans created, 16 player' + ' inventory slots filled, 83 remaining'); // check that inventory was filled assert.strictEqual(Object.keys(p.items).length, p.capacity); Object.keys(p.items).forEach(function isCan(tsid) { assert.strictEqual(p.items[tsid].class_tsid, 'watering_can'); assert.strictEqual(p.items[tsid].count, 1); }); // make sure nothing was added to SDB in furniture bag var fbag = p.hiddenItems[p.furniture.storage_tsid]; Object.keys(fbag.items).forEach(function check(tsid) { var it = fbag.items[tsid]; if (it.class_tsid === 'bag_furniture_sdb') { assert.strictEqual(Object.keys(it.items).length, 0, 'nothing added to SDB in furniture bag'); } }); }, done);
Location.create = function create(geo, data) { data = data || {}; data.tsid = geo.getLocTsid(); data.class_tsid = data.class_tsid || 'town'; return pers.create(Location, data); };
Quest.create = function create(classTsid, owner) { assert(utils.isLoc(owner) || utils.isPlayer(owner), util.format( 'invalid Quest owner: %s', owner)); var quest = pers.create(Quest, {class_tsid: classTsid, owner: owner}); return quest; };
DataContainer.create = function create(owner) { assert(utils.isLoc(owner) || utils.isItem(owner) || utils.isGroup(owner), util.format('invalid DC owner: %s', owner)); var dc = pers.create(DataContainer, {owner: owner}); return dc; };
Geo.create = function create(data) { return pers.create(Geo, data); };