This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View file

@ -0,0 +1,29 @@
{
"frameGrid" : {
"size" : [10, 14],
"dimensions" : [12, 1],
"names" : [
[ "default.0", "default.1", "default.2", "default.3", "default.4", "default.11", "default.12", "default.13", "default.14", "default.18", "default.19", "default.26"]
]
},
"aliases" : {
"default.default" : "default.0",
"default.5" : "default.4",
"default.6" : "default.4",
"default.7" : "default.4",
"default.8" : "default.4",
"default.9" : "default.4",
"default.10" : "default.4",
"default.15" : "default.14",
"default.16" : "default.14",
"default.17" : "default.14",
"default.20" : "default.19",
"default.21" : "default.19",
"default.22" : "default.19",
"default.23" : "default.19",
"default.24" : "default.19",
"default.25" : "default.19"
}
}

View file

@ -0,0 +1,33 @@
{
"objectName" : "moondancer",
"colonyTags" : ["nature"],
"rarity" : "Common",
"price" : 50,
"printable" : false,
"description" : "The patterns on this bioliumescent bug's back will continously change throughout its life.",
"shortdescription" : "moondancer",
"race" : "generic",
"category" : "bug",
"collectablesOnPickup" : { "bugs" : "moondancer" },
"itemTags" : [ "bug" ],
"lightColor" : [50, 72, 77],
"flickerDistance" : 0.1,
"flickerStrength" : 0.05,
"flickerTiming" : 4,
"largeImage" : "moondancericon.png",
"inventoryIcon" : "moondancericon.png",
"orientations" : [
{
"imageLayers" : [ { "image" : "moondancer.png:<color>.<frame>", "fullbright" : true }, { "image" : "moondancerlit.png:<color>.<frame>" } ],
"imagePosition" : [-1, 0],
"frames" : 27,
"animationCycle" : 2.3,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,29 @@
{
"frameGrid" : {
"size" : [10, 14],
"dimensions" : [12, 1],
"names" : [
[ "default.0", "default.1", "default.2", "default.3", "default.4", "default.11", "default.12", "default.13", "default.14", "default.18", "default.19", "default.26"]
]
},
"aliases" : {
"default.default" : "default.0",
"default.5" : "default.4",
"default.6" : "default.4",
"default.7" : "default.4",
"default.8" : "default.4",
"default.9" : "default.4",
"default.10" : "default.4",
"default.15" : "default.14",
"default.16" : "default.14",
"default.17" : "default.14",
"default.20" : "default.19",
"default.21" : "default.19",
"default.22" : "default.19",
"default.23" : "default.19",
"default.24" : "default.19",
"default.25" : "default.19"
}
}

View file

@ -0,0 +1,37 @@
{
"objectName" : "chattestbug",
"category" : "other",
"colonyTags" : [],
"rarity" : "Common",
"price" : 50,
"printable" : false,
"description" : "A steaming cup of Earl Grey.",
"shortdescription" : "Chat Test Bug",
"race" : "generic",
"inventoryIcon" : "chattestbugicon.png",
"orientations" : [
{
"dualImage" : "chattestbug.png:<color>.<frame>",
"imagePosition" : [-1, 0],
"frames" : 27,
"animationCycle" : 2.3,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [ "/scripts/chattest.lua" ],
"scriptDelta" : 10,
"chatOptions" : [
"Short",
"This should be approximately one full line of chat",
"Yo dawg, I heard you liked long chat messages so I put 'this is a long chat message' in your long chat message so your chat messages can be long while you chat your long messages"
],
"portraitChatOptions" : [
["Hey, listen!", "/interface/chatbubbles/portraittest.png"],
["Now this is a story all about how my life got flip turned upside down and I'd like to take a minute ^green;just sit right there^white; I'll tell you how I became the prince of a town called ^orange;Bel Aire^white;.", "/interface/chatbubbles/portraittest.png"]
],
"mouthPosition" : [0, 0]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

View file

@ -0,0 +1,9 @@
{
"frameGrid" : {
"size" : [24, 24],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,16 @@
function init()
local materialSpaces = {}
for x = -1, 1 do
for y = -1, 1 do
if x ~= 0 or y ~= 0 then
table.insert(materialSpaces, {{x, y}, "metamaterial:objectsolid"})
end
end
end
object.setMaterialSpaces(materialSpaces)
end
function update(dt)
object.setMaterialSpaces({})
object.smash()
end

View file

@ -0,0 +1,24 @@
{
"objectName" : "collisionripper",
"colonyTags" : [],
"rarity" : "Common",
"category" : "other",
"price" : 0,
"description" : "Clobbers nearby collision spaces to get rid of junk collisions.",
"shortdescription" : "Collision Ripper",
"race" : "generic",
"inventoryIcon" : "collisionrippericon.png",
"orientations" : [
{
"image" : "collisionripper.png",
"imagePosition" : [-8, -8],
"spaces" : [[0, 0]],
"anchors" : [ ]
}
],
"scripts" : [ "collisionripper.lua" ]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

View file

@ -0,0 +1,11 @@
{
"frameGrid" : {
"size" : [32, 32],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,34 @@
{
"objectName" : "dpstestdummy",
"colonyTags" : [],
"rarity" : "Common",
"description" : "This straw dummy is filled with advanced sensors to measure incoming damage.",
"shortdescription" : "DPS Test Dummy",
"race" : "glitch",
"category" : "decorative",
"price" : 70,
"inventoryIcon" : "dpstestdummyicon.png",
"orientations" : [
{
"dualImage" : "dpstestdummy.png:<color>",
"imagePosition" : [-16, -0],
"frames" : 1,
"animationCycle" : 1.0,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"smashable" : true,
"smashDropOptions" : [[["dpstestdummy"]]],
"health" : 10000,
"damageTeam" : {
"type" : "indiscriminate"
},
"scripts" : ["recount.lua"],
"scriptDelta" : 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

View file

@ -0,0 +1,55 @@
function init()
self.maxHealth = config.getParameter("health")
self.autoResetTime = config.getParameter("autoResetTime", 7)
self.autoResetTimer = 0
reset()
object.setInteractive(true)
end
function update(dt)
local currentHealth = object.health()
self.autoResetTimer = math.max(0, self.autoResetTimer - dt)
if self.autoResetTimer == 0 then
reset()
end
if currentHealth < self.maxHealth then
self.meterActive = true
self.autoResetTimer = self.autoResetTime
end
if self.meterActive then
self.meterTimer = self.meterTimer + dt
self.totalDamage = self.totalDamage + (self.maxHealth - currentHealth)
object.setHealth(self.maxHealth)
end
drawOutput()
end
function onInteraction(args)
if self.meterActive then
reset()
else
object.smash()
end
end
function reset()
self.meterActive = false
self.meterTimer = 0
self.totalDamage = 0
object.setHealth(self.maxHealth)
end
function drawOutput()
local pos = entity.position()
pos = {pos[1] - 1.5, pos[2] + 4}
local dps = self.meterTimer > 0 and (self.totalDamage / self.meterTimer) or 0
local outputString = string.format("%.1f damage over\n%.1f seconds\n%.1f DPS", self.totalDamage, self.meterTimer, dps)
world.debugText(outputString, pos, "white")
end

View file

@ -0,0 +1,64 @@
{
"animatedParts" : {
"stateTypes" : {
"switchState" : {
"default" : "off",
"states" : {
"off" : {},
"on" : {
"frames" : 3,
"cycle" : 0.5,
"mode" : "loop"
}
}
}
},
"parts" : {
"bg" : {
"properties" : {
"centered" : false
},
"partStates" : {
"switchState" : {
"off" : {
"properties" : {
"image" : "<partImage>:<color>.off"
}
},
"on" : {
"properties" : {
"image" : "<partImage>:<color>.<frame>",
"fullbright" : true
}
}
}
}
},
"fg" : {
"properties" : {
"centered" : false,
"zLevel" : 1
},
"partStates" : {
"switchState" : {
"off" : {
"properties" : {
"image" : "<partImage>:<color>.off"
}
},
"on" : {
"properties" : {
"image" : "<partImage>:<color>.<frame>"
}
}
}
}
}
}
}
}

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [160, 32],
"dimensions" : [1, 4],
"names" : [
[ "default.1" ],
[ "default.2" ],
[ "default.3" ],
[ "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

View file

@ -0,0 +1,71 @@
{
"objectName" : "referencegenerator",
"colonyTags" : [],
"rarity" : "Legendary",
"description" : "-todo-",
"shortdescription" : "Reference Generator",
"race" : "generic",
"price" : 1000,
"lightColor" : [78, 111, 128],
"category" : "wire",
"printable" : false,
"apexDescription" : "-todo-",
"avianDescription" : "-todo-",
"floranDescription" : "-todo-",
"glitchDescription" : "-todo-",
"humanDescription" : "-todo-",
"hylotlDescription" : "-todo-",
"inventoryIcon" : "referencegeneratoricon.png",
"orientations" : [
{
"image" : "referencegenerator.png:<color>.<frame>",
"flipImages" : true,
"direction" : "left",
"imagePosition" : [-80, 0],
"frames" : 1,
"animationCycle" : 1.0,
"lightPosition" : [-2, 2],
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
},
{
"image" : "referencegenerator.png:<color>.<frame>",
"direction" : "right",
"imagePosition" : [-80, 0],
"frames" : 1,
"animationCycle" : 1.0,
"lightPosition" : [1, 2],
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [ "/objects/wired/switch/switch.lua" ],
"scriptDelta" : 5,
"animation" : "referencegenerator.animation",
"animationCustom" : {
"sounds" : {
"on" : [ "/sfx/objects/apexconsole2switch.ogg" ],
"off" : [ "/sfx/objects/apexconsole2switch.ogg" ]
}
},
"animationParts" : {
"bg" : "referencegenerator.png",
"fg" : "referencegeneratorlit.png"
},
"animationPosition" : [-80, 0],
"outputNodes" : [ [0, 0] ],
"inputNodes" : [ [0, 2] ]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [160, 32],
"dimensions" : [1, 4],
"names" : [
[ "default.1" ],
[ "default.2" ],
[ "default.3" ],
[ "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,23 @@
{
"objectName" : "giantbackgroundobject",
"category" : "other",
"colonyTags" : [],
"rarity" : "Common",
"description" : "What a mess.",
"shortdescription" : "Giant Background Object",
"scannable" : false,
"printable" : false,
"race" : "human",
"inventoryIcon" : "icon.png",
"orientations" : [
{
"dualImage" : "giantbackgroundobject.png",
"imagePosition" : [-1024, -1024],
"renderLayer" : "BackgroundOverlay",
"metaBoundBox" : [-128, -128, 128, 128],
"anchors" : [ ]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [8, 12],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,22 @@
require "/scripts/util.lua"
function die(smash)
local pos = entity.position()
local spreadRange = config.getParameter("spreadRange", 2)
local candidateSpaces = {}
for x = pos[1] - spreadRange, pos[1] + spreadRange do
for y = pos[2] - spreadRange, pos[2] + spreadRange do
table.insert(candidateSpaces, {x, y})
end
end
shuffle(candidateSpaces)
local toPlace = config.getParameter("spreadFactor", 2)
while #candidateSpaces > 0 and toPlace > 0 do
if world.placeObject("greycapsule", candidateSpaces[1], 1, {}) then
toPlace = toPlace - 1
end
table.remove(candidateSpaces, 1)
end
end

View file

@ -0,0 +1,33 @@
{
"objectName" : "greycapsule",
"colonyTags" : ["misc"],
"rarity" : "Common",
"category" : "breakable",
"price" : 35,
"description" : "You are responsible for unleashing this horror.",
"shortdescription" : "Grey Capsule",
"race" : "generic",
"inventoryIcon" : "greycapsuleicon.png",
"orientations" : [
{
"image" : "greycapsule.png:<color>",
"imagePosition" : [0, 0],
"frames" : 1,
"animationCycle" : 0.5,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"smashable" : true,
"smashSounds" : [ "/sfx/objects/capsule_break1.ogg", "/sfx/objects/capsule_break2.ogg", "/sfx/objects/capsule_break3.ogg" ],
"smashParticles" : [ { "count" : 3, "particle" : "capsuleshard1" } ],
"smashDropPool" : "empty",
"scripts" : [ "greycapsule.lua" ],
"spreadFactor" : 2,
"spreadRange" : 6
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

View file

@ -0,0 +1,30 @@
{
"frameGrid" : {
"size" : [16, 32],
"dimensions" : [5, 9],
"names" : [
[ "default.0", "default.1", "default.2", "default.3", "default.off" ],
[ "red.0", "red.1", "red.2", "red.3", "red.off" ],
[ "blue.0", "blue.1", "blue.2", "blue.3", "blue.off" ],
[ "green.0", "green.1", "green.2", "green.3", "green.off" ],
[ "yellow.0", "yellow.1", "yellow.2", "yellow.3", "yellow.off" ],
[ "orange.0", "orange.1", "orange.2", "orange.3", "orange.off" ],
[ "pink.0", "pink.1", "pink.2", "pink.3", "pink.off" ],
[ "black.0", "black.1", "black.2", "black.3", "black.off" ],
[ "white.0", "white.1", "white.2", "white.3", "white.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"red.default" : "red.off",
"blue.default" : "blue.off",
"green.default" : "green.off",
"yellow.default" : "yellow.off",
"orange.default" : "orange.off",
"pink.default" : "pink.off",
"black.default" : "black.off",
"white.default" : "white.off"
}
}

View file

@ -0,0 +1,7 @@
function init()
end
function update(dt)
world.containerTakeAll(entity.id())
end

View file

@ -0,0 +1,39 @@
{
"objectName" : "incinerator",
"colonyTags" : [],
"rarity" : "Common",
"objectType" : "container",
"tooltipKind" : "container",
"description" : "There was a label on here once, but it burnt off.'",
"shortdescription" : "Incinerator",
"race" : "human",
"statusEffects" : [ ],
"category" : "light",
"price" : 50,
"printable" : false,
"lightColor" : [204, 189, 173],
"inventoryIcon" : "incineratoricon.png",
"orientations" : [
{
"dualImage" : "incinerator.png:<color>.<frame>",
"imagePosition" : [-8, 0],
"frames" : 4,
"animationCycle" : 0.5,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [ "/objects/incinerator/incinerator.lua" ],
"scriptDelta" : 10,
"openSounds" : [ "/sfx/objects/campfire_use.ogg" ],
"slotCount" : 9,
"uiConfig" : "/interface/chests/chest<slots>.config",
"frameCooldown" : 5,
"autoCloseCooldown" : 3600
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,9 @@
{
"frameGrid" : {
"size" : [32, 64],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,37 @@
{
"objectName" : "missionteleporter",
"colonyTags" : [],
"objectType" : "teleporter",
"rarity" : "Legendary",
"description" : "Teleports to a variety of missions for easy testing.",
"shortdescription" : "Mission Teleporter",
"price" : 500,
"printable" : false,
"category" : "teleporter",
"lightColor" : [40, 80, 100],
"lightPosition" : [0, 1],
"interactAction" : "OpenTeleportDialog",
"interactData" : "/interface/warping/missionteleporter.config",
"inventoryIcon" : "missionteleportericon.png",
"orientations" : [
{
"imageLayers" : [ { "image" : "missionteleporter.png:<color>", "fullbright" : true }, { "image" : "missionteleporterlit.png:<color>" } ],
"imagePosition" : [-16, 0],
"frames" : 1,
"animationCycle" : 0.5,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ],
"collision" : "solid",
"collisionSpaces" : [ [-2, 0], [-1, 0], [0, 0], [1, 0] ]
}
],
"health" : 5,
"teleporterFootPosition" : [0, 1]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

View file

@ -0,0 +1,48 @@
{
"animatedParts" : {
"stateTypes" : {
"moving" : {
"default" : "off",
"states" : {
"off" : {},
"on" : {
"properties" : {
"persistentSound" : "/sfx/tech/forcefield_loop.ogg"
}
}
}
}
},
"parts" : {
"base" : {
"properties" : {
"offset" : [0, -1],
"centered" : false,
"image" : "<partImage>"
}
},
"platform" : {
"properties" : {
"centered" : true,
"transformationGroups" : ["platform"],
"image" : "<partImage>",
"zLevel" : 1
}
}
}
},
"transformationGroups" : {
"platform" : {
"interpolated" : true
}
},
"sounds" : {
"changeDir" : {
"pool" : [ "/sfx/blocks/footstep_lightmetal.ogg" ]
}
}
}

View file

@ -0,0 +1,61 @@
{
"objectName" : "longhorizontalrightmovingplatform",
"objectType" : "physics",
"colonyTags" : ["wired"],
"printable" : false,
"rarity" : "Rare",
"category" : "wire",
"price" : 100,
"description" : "A moving platform.",
"shortdescription" : "Moving Platform",
"race" : "generic",
"apexDescription" : "A moving platform.",
"avianDescription" : "A moving platform.",
"floranDescription" : "A moving platform.",
"glitchDescription" : "A moving platform.",
"humanDescription" : "A moving platform.",
"hylotlDescription" : "A moving platform.",
"inventoryIcon" : "platform.png",
"orientations" : [
{
"direction" : "right",
"image" : "longhorizontalrightstand.png",
"imagePosition" : [0, -8],
"spaceScan" : 0.1,
"anchors" : [ "left" ]
}
],
"scripts" : [ "movingplatform.lua" ],
"scriptDelta" : 1,
"animation" : "horizontalmovingplatform.animation",
"animationParts" : {
"base" : "longhorizontalrightstand.png",
"platform" : "platform.png"
},
"inputNodes" : [[0, 0]],
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.35],
[2, -0.35],
[2, 0.35],
[-2, 0.35]
],
"collisionKind" : "platform",
"position" : [2, 0]
}
},
"platformStart" : [2, 0],
"platformEnd" : [16, 0],
"platformMoveTime" : 2
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,72 @@
require "/scripts/vec2.lua"
require "/scripts/poly.lua"
function init()
self.cycle = 0
self.dir = 0
self.platformStart = config.getParameter("platformStart")
self.platformEnd = config.getParameter("platformEnd")
self.platformMoveTime = config.getParameter("platformMoveTime")
end
function getMode()
if not object.isInputNodeConnected(0) then
return "bounce"
elseif object.getInputNodeLevel(0) then
return "toend"
else
return "tostart"
end
end
function update()
local mode = getMode()
local cycle = self.cycle
local dir = self.dir
if mode == "tostart" then
if cycle > 0.0 then
dir = -1
else
dir = 0
end
elseif mode == "toend" then
if cycle < 1.0 then
dir = 1
else
dir = 0
end
else
if dir == 0 then
dir = 1
end
if cycle == 1.0 then
dir = -1
elseif cycle == 0.0 then
dir = 1
end
end
cycle = cycle + script.updateDt() / self.platformMoveTime * self.dir
cycle = math.min(math.max(cycle, 0.0), 1.0)
if dir == 0 then
animator.setAnimationState("moving", "off")
else
animator.setAnimationState("moving", "on")
end
local pos = vec2.add(vec2.mul(self.platformStart, 1.0 - cycle), vec2.mul(self.platformEnd, cycle))
physics.setCollisionPosition("platform", pos)
animator.resetTransformationGroup("platform")
animator.translateTransformationGroup("platform", pos)
if dir ~= self.dir then
animator.playSound("changeDir")
end
self.cycle = cycle
self.dir = dir
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,59 @@
{
"objectName" : "shorthorizontalrightmovingplatform",
"objectType" : "physics",
"colonyTags" : ["wired"],
"printable" : false,
"rarity" : "Rare",
"category" : "wire",
"price" : 100,
"description" : "A moving platform.",
"shortdescription" : "Moving Platform",
"race" : "generic",
"apexDescription" : "A moving platform.",
"avianDescription" : "A moving platform.",
"floranDescription" : "A moving platform.",
"glitchDescription" : "A moving platform.",
"humanDescription" : "A moving platform.",
"hylotlDescription" : "A moving platform.",
"inventoryIcon" : "platform.png",
"orientations" : [
{
"direction" : "right",
"image" : "shorthorizontalrightstand.png",
"imagePosition" : [0, -8],
"spaceScan" : 0.1,
"anchors" : [ "left" ]
}
],
"scripts" : [ "movingplatform.lua" ],
"scriptDelta" : 1,
"animation" : "horizontalmovingplatform.animation",
"animationParts" : {
"base" : "shorthorizontalrightstand.png",
"platform" : "platform.png"
},
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.35],
[2, -0.35],
[2, 0.35],
[-2, 0.35]
],
"collisionKind" : "platform",
"position" : [2, 0]
}
},
"platformStart" : [2, 0],
"platformEnd" : [8, 0],
"platformMoveTime" : 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,61 @@
{
"objectName" : "shortverticalmovingplatform",
"objectType" : "physics",
"colonyTags" : ["wired"],
"printable" : false,
"rarity" : "Rare",
"category" : "wire",
"price" : 100,
"description" : "A moving platform.",
"shortdescription" : "Moving Platform",
"race" : "generic",
"apexDescription" : "A moving platform.",
"avianDescription" : "A moving platform.",
"floranDescription" : "A moving platform.",
"glitchDescription" : "A moving platform.",
"humanDescription" : "A moving platform.",
"hylotlDescription" : "A moving platform.",
"inventoryIcon" : "platform.png",
"orientations" : [
{
"direction" : "right",
"image" : "shortverticalstand.png",
"imagePosition" : [-8, 0],
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [ "movingplatform.lua" ],
"scriptDelta" : 1,
"animation" : "verticalmovingplatform.animation",
"animationParts" : {
"base" : "shortverticalstand.png",
"platform" : "platform.png"
},
"inputNodes" : [[0, 0]],
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.35],
[2, -0.35],
[2, 0.35],
[-2, 0.35]
],
"collisionKind" : "platform",
"position" : [0, 1]
}
},
"platformStart" : [0, 0.5],
"platformEnd" : [0, 8],
"platformMoveTime" : 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,61 @@
{
"objectName" : "tallverticalmovingplatform",
"objectType" : "physics",
"colonyTags" : ["wired"],
"printable" : false,
"rarity" : "Rare",
"category" : "wire",
"price" : 100,
"description" : "A moving platform.",
"shortdescription" : "Moving Platform",
"race" : "generic",
"apexDescription" : "A moving platform.",
"avianDescription" : "A moving platform.",
"floranDescription" : "A moving platform.",
"glitchDescription" : "A moving platform.",
"humanDescription" : "A moving platform.",
"hylotlDescription" : "A moving platform.",
"inventoryIcon" : "platform.png",
"orientations" : [
{
"direction" : "right",
"image" : "tallverticalstand.png",
"imagePosition" : [-8, 0],
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [ "movingplatform.lua" ],
"scriptDelta" : 1,
"animation" : "verticalmovingplatform.animation",
"animationParts" : {
"base" : "tallverticalstand.png",
"platform" : "platform.png"
},
"inputNodes" : [[0, 0]],
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.35],
[2, -0.35],
[2, 0.35],
[-2, 0.35]
],
"collisionKind" : "platform",
"position" : [0, 1]
}
},
"platformStart" : [0, 0.5],
"platformEnd" : [0, 16],
"platformMoveTime" : 2
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,48 @@
{
"animatedParts" : {
"stateTypes" : {
"moving" : {
"default" : "off",
"states" : {
"off" : {},
"on" : {
"properties" : {
"persistentSound" : "/sfx/tech/forcefield_loop.ogg"
}
}
}
}
},
"parts" : {
"base" : {
"properties" : {
"offset" : [-1, 0],
"centered" : false,
"image" : "<partImage>"
}
},
"platform" : {
"properties" : {
"centered" : true,
"transformationGroups" : ["platform"],
"image" : "<partImage>",
"zLevel" : 1
}
}
}
},
"transformationGroups" : {
"platform" : {
"interpolated" : true
}
},
"sounds" : {
"changeDir" : {
"pool" : [ "/sfx/blocks/footstep_lightmetal.ogg" ]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

View file

@ -0,0 +1,43 @@
{
"objectName" : "multichair",
"colonyTags" : ["odd"],
"printable" : false,
"rarity" : "Common",
"description" : "A space saving chair for you and three friends",
"shortdescription" : "Multi-Chair",
"race" : "generic",
"category" : "furniture",
"price" : 300,
"apexDescription" : "A ridiculous chair.",
"avianDescription" : "A ridiculous chair.",
"floranDescription" : "A ridiculous chair.",
"glitchDescription" : "A ridiculous chair.",
"humanDescription" : "A ridiculous chair.",
"hylotlDescription" : "A ridiculous chair.",
"novakidDescription" : "A ridiculous chair.",
"inventoryIcon" : "icon.png",
"orientations" : [
{
"dualImage" : "multichair.png",
"imagePosition" : [-8, 0],
"frames" : 1,
"animationCycle" : 1.0,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"objectType" : "loungeable",
"sitFlipDirection" : false,
"sitPositions" : [
[2, 25],
[2, 47],
[2, 69],
[2, 91]
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [16, 16],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,32 @@
{
"objectName" : "penguinplush",
"colonyTags" : ["penguin","pretty"],
"rarity" : "Common",
"category" : "decorative",
"price" : 50,
"description" : "A cuddly penguin plushy. Awwwww.",
"shortdescription" : "Penguin Plushie",
"race" : "generic",
"apexDescription" : "An adorable cuddly penguin.",
"avianDescription" : "How cute, a cuddly toy penguin.",
"floranDescription" : "Floran not even want ssstab cuddly penguin.",
"glitchDescription" : "Melting. This delightful penguin is almost too much!",
"humanDescription" : "I just wanna cuddle this penguin forever.",
"hylotlDescription" : "Shriek! A wonderful penguin plushie. I need this one!",
"inventoryIcon" : "icon.png",
"orientations" : [
{
"dualImage" : "penguinplush.png:<color>",
"imagePosition" : [-8, 0],
"frames" : 1,
"animationCycle" : 0.4,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,15 @@
{
"frameGrid" : {
"size" : [16, 8],
"dimensions" : [2, 1],
"names" : [
[ "default.1", "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

View file

@ -0,0 +1,164 @@
{
"objectName" : "platformemitter",
"colonyTags" : [ ],
"printable" : false,
"rarity" : "Common",
"description" : "A test object that emits platform projectiles.",
"shortdescription" : "Rail Platform Emitter",
"race" : "avian",
"category" : "trap",
"price" : 200,
"inventoryIcon" : "platformemittericon.png",
"orientations" : [
{
"image" : "platformemitter.png:<color>.<frame>",
"imagePosition" : [-8, 0],
"direction" : "left",
"flipImages" : true,
"animationPosition" : [-8, 0],
"animationParts" : {
"bg" : "platformemitter.png",
"fg" : "platformemitter.png"
},
"projectileDirection" : [0, 1],
"projectilePosition" : [0, 1.0],
"projectileConfig" : {
"railConfig" : {
"direction" : "n"
}
},
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
},
{
"image" : "platformemitter.png:<color>.<frame>",
"imagePosition" : [0, 0],
"direction" : "right",
"animationPosition" : [0, 0],
"animationParts" : {
"bg" : "platformemitter.png",
"fg" : "platformemitter.png"
},
"projectileDirection" : [0, 1],
"projectilePosition" : [1, 1.0],
"projectileConfig" : {
"railConfig" : {
"direction" : "n"
}
},
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
},
{
"image" : "platformemitterleft.png:<color>.<frame>",
"imagePosition" : [0, -8],
"direction" : "right",
"animationPosition" : [0, -8],
"animationParts" : {
"bg" : "platformemitterleft.png",
"fg" : "platformemitterleft.png"
},
"projectileDirection" : [1, 0],
"projectilePosition" : [1, 0.5],
"projectileConfig" : {
"railConfig" : {
"direction" : "e"
}
},
"spaceScan" : 0.1,
"anchors" : [ "left" ]
},
{
"image" : "platformemitterright.png:<color>.<frame>",
"imagePosition" : [0, -8],
"direction" : "right",
"animationPosition" : [0, -8],
"animationParts" : {
"bg" : "platformemitterright.png",
"fg" : "platformemitterright.png"
},
"projectileDirection" : [-1, 0],
"projectilePosition" : [0, 0.5],
"projectileConfig" : {
"railConfig" : {
"direction" : "w"
}
},
"spaceScan" : 0.1,
"anchors" : [ "right" ]
},
{
"image" : "platformemitterceiling.png:<color>.<frame>",
"imagePosition" : [-8, 0],
"direction" : "left",
"flipImages" : true,
"animationPosition" : [-8, 0],
"animationParts" : {
"bg" : "platformemitterceiling.png",
"fg" : "platformemitterceiling.png"
},
"projectileDirection" : [0, -1],
"projectilePosition" : [0, 0.0],
"projectileConfig" : {
"railConfig" : {
"direction" : "s"
}
},
"spaceScan" : 0.1,
"anchors" : [ "top" ]
},
{
"image" : "platformemitterceiling.png:<color>.<frame>",
"imagePosition" : [0, 0],
"direction" : "right",
"animationPosition" : [0, 0],
"animationParts" : {
"bg" : "platformemitterceiling.png",
"fg" : "platformemitterceiling.png"
},
"projectileDirection" : [0, -1],
"projectilePosition" : [1, 0.0],
"projectileConfig" : {
"railConfig" : {
"direction" : "s"
}
},
"spaceScan" : 0.1,
"anchors" : [ "top" ]
}
],
"scripts" : [ "/objects/wired/projectiletrap/projectiletrap.lua" ],
"scriptDelta" : 2,
"animation" : "/objects/wired/projectiletrap/projectiletrap.animation",
"inputNodes" : [ [0, 0] ],
"inactiveLightColor" : [0, 0, 0],
"activeLightColor" : [0, 0, 0],
"fireTime" : 5,
"fireTimeVariance" : 0.0,
"projectile" : "railplatform"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

View file

@ -0,0 +1,15 @@
{
"frameGrid" : {
"size" : [16, 8],
"dimensions" : [2, 1],
"names" : [
[ "default.1", "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

View file

@ -0,0 +1,15 @@
{
"frameGrid" : {
"size" : [8, 16],
"dimensions" : [2, 1],
"names" : [
[ "default.1", "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

View file

@ -0,0 +1,15 @@
{
"frameGrid" : {
"size" : [8, 16],
"dimensions" : [2, 1],
"names" : [
[ "default.1", "default.off" ]
]
},
"aliases" : {
"default.default" : "default.off",
"default.on" : "default.1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

View file

@ -0,0 +1,52 @@
{
"animatedParts" : {
"stateTypes" : {
"pumping" : {
"priority" : 0,
"default" : "idle",
"states" : {
"idle" : {
"frames" : 1
},
"error" : {
"frames" : 1
},
"pump" : {
"frames" : 10,
"cycle" : 0.5,
"mode" : "loop"
}
}
}
},
"parts" : {
"pump" : {
"properties" : {
"offset" : [0, 0],
"centered" : false,
"zLevel" : 3
},
"partStates" : {
"pumping" : {
"idle" : {
"properties" : {
"image" : "<partImage>:idle"
}
},
"error" : {
"properties" : {
"image" : "<partImage>:error"
}
},
"pump" : {
"properties" : {
"image" : "<partImage>:pump.<frame>"
}
}
}
}
}
}
}
}

View file

@ -0,0 +1,9 @@
{
"frameGrid" : {
"size" : [16, 16],
"dimensions" : [12, 1],
"names" : [
[ "idle", "error", "pump.1", "pump.2", "pump.3", "pump.4", "pump.5", "pump.6", "pump.7", "pump.8", "pump.9", "pump.10" ]
]
}
}

View file

@ -0,0 +1,56 @@
require "/scripts/vec2.lua"
function init()
self.inputPosition = config.getParameter("inputPosition")
self.outputPosition = config.getParameter("outputPosition")
if object.direction() < 0 then
self.inputPosition, self.outputPosition = self.outputPosition, self.inputPosition
end
local pos = entity.position()
self.inputPosition = vec2.add(vec2.add(self.inputPosition, pos), {0.5, 0.5})
self.outputPosition = vec2.add(vec2.add(self.outputPosition, pos), {0.5, 0.5})
self.pumpTimer = 0
self.pumpFrequency = config.getParameter("pumpFrequency", 0.25)
storage.pumping = storage.pumping or false
end
function update(dt)
-- world.debugPoint(self.inputPosition, "blue")
-- world.debugPoint(self.outputPosition, "green")
if object.isInputNodeConnected(0) then
object.setInteractive(false)
storage.pumping = object.getInputNodeLevel(0)
else
object.setInteractive(true)
end
local pumpAnimationState = storage.pumping and ((world.liquidAt(self.inputPosition) and not world.pointCollision(self.outputPosition)) and "pump" or "error") or "idle"
animator.setAnimationState("pumping", pumpAnimationState)
self.pumpTimer = math.max(0, self.pumpTimer - dt)
if storage.pumping and self.pumpTimer == 0 then
pump()
self.pumpTimer = self.pumpFrequency
end
end
function onInteraction(args)
storage.pumping = not storage.pumping
end
function uninit()
end
function pump()
local liquid = world.liquidAt(self.inputPosition)
if liquid and not world.pointCollision(self.outputPosition) then
world.destroyLiquid(self.inputPosition)
world.spawnLiquid(self.outputPosition, table.unpack(liquid))
end
end

View file

@ -0,0 +1,45 @@
{
"objectName" : "pump",
"colonyTags" : ["wired"],
"printable" : false,
"rarity" : "Common",
"description" : "Moves liquids from one side to the other.",
"shortdescription" : "Pump",
"race" : "generic",
"category" : "wire",
"price" : 20,
"inventoryIcon" : "pump.png:idle",
"orientations" : [
{
"dualImage" : "pump.png:idle",
"imagePosition" : [-8, -8],
"spaceScan" : 0.1,
"anchors" : [ "background" ],
"collision" : "solid"
}
],
"scripts" : [
"pump.lua"
],
"scriptDelta" : 5,
"animation" : "pump.animation",
"animationCustom" : { },
"animationParts" : {
"pump" : "pump.png"
},
"animationPosition" : [-8, -8],
"inputNodes" : [ [-1, 0] ],
"inputPosition" : [-2, -1],
"outputPosition" : [1, -1],
"pumpFrequency" : 0.25
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,11 @@
{
"frameGrid" : {
"size" : [16, 16],
"dimensions" : [3, 1],
"names" : [
[ "default" ]
]
}
}

View file

@ -0,0 +1,91 @@
require("/scripts/quest/serialize.lua")
require("/scripts/questgen/generator.lua")
require("/scripts/questgen/plannerTests.lua")
function init()
object.setInteractive(true)
setupTests()
end
function chooseQuestGiver()
if storage.questGiver then
return world.loadUniqueEntity(storage.questGiver)
end
local entities = util.filter(world.npcQuery(object.position(), 50), function (npc)
return world.callScriptedEntity(npc, "config.getParameter", "questGenerator.enableParticipation")
end)
if #entities == 0 then return nil end
return entities[math.random(#entities)]
end
function withGenerator(func)
local questGiver = chooseQuestGiver()
if not questGiver then return end
local generator = QuestGenerator.new()
generator.debug = true
generator.questGiver = questGiver
generator.questPools = world.callScriptedEntity(questGiver, "config.getParameter", "questGenerator.pools") or {}
self.co = coroutine.create(function ()
local arc = func(generator)
if arc then
world.spawnStagehand(generator:position(), "questmanager", {
uniqueId = arc.questArc.stagehandUniqueId,
quest = {
arc = storeQuestArcDescriptor(arc.questArc),
participants = arc.participants
},
plugins = arc.managerPlugins
})
end
return arc
end)
end
function generate(questName)
questName = questName or storage.questName
withGenerator(function (generator)
local quest = generator:questPool().quests[questName]
quest.name = questName
return generator:generate(quest)
end)
end
function timing()
local questGiver = chooseQuestGiver()
if not questGiver then return end
local generator = QuestGenerator.new()
generator.debug = true
generator.measureTime = true
local stepCount = 0
while generator.coroutine == nil or coroutine.status(generator.coroutine) ~= "dead" do
generator:generateStep()
stepCount = stepCount + 1
end
sb.logInfo("Total steps: %s", stepCount)
sb.logInfo("Estimated generation time over multiple frames: %ss", stepCount/6)
end
function onInteraction()
if storage.questName then
generate()
return
end
withGenerator(function (generator)
return generator:generate()
end)
end
function update(dt)
if self.co and coroutine.status(self.co) ~= "dead" then
local status, result = coroutine.resume(self.co)
if not status then
sb.logInfo("Generator broke: %s", result)
end
end
end

View file

@ -0,0 +1,30 @@
{
"objectName" : "questgentest",
"colonyTags" : [],
"rarity" : "Common",
"description" : "This book is full of quests...",
"shortdescription" : "Quest Book",
"race" : "glitch",
"category" : "decorative",
"price" : 55,
"inventoryIcon" : "questgentesticon.png",
"orientations" : [
{
"dualImage" : "questgentest.png:<color>",
"imagePosition" : [-8, 0],
"frames" : 1,
"animationCycle" : 1.0,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : [
"/objects/questgentest/questgentest.lua"
],
"scriptDelta" : 10
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

View file

@ -0,0 +1,131 @@
{
"objectName" : "railbladetrap",
"colonyTags" : ["evil"],
"rarity" : "Common",
"description" : "Fires spinning blades that follow rails for absurdly dangerous situations!",
"shortdescription" : "Railblade Trap",
"race" : "generic",
"category" : "rail",
"price" : 200,
"inventoryIcon" : "railbladetrapicon.png",
"orientations" : [
{
"dualImage" : "railbladetrapground.png",
"imagePosition" : [-12, 0],
"animationPosition" : [-12, 0],
"animationParts" : {
"bg" : "railbladetrapground.png",
"fg" : "railbladetrapground.png"
},
"spaceScan" : 0.1,
"anchors" : [ "bottom" ],
"direction" : "right",
"projectileDirection" : [0, 1],
"projectilePosition" : [0, 0.5],
"projectileConfig" : {
"railConfig" : {
"direction" : "n"
}
}
},
{
"dualImage" : "railbladetrapceiling.png",
"imagePosition" : [-12, 0],
"animationPosition" : [-12, 0],
"animationParts" : {
"bg" : "railbladetrapceiling.png",
"fg" : "railbladetrapceiling.png"
},
"spaceScan" : 0.1,
"anchors" : [ "top" ],
"direction" : "right",
"projectileDirection" : [0, -1],
"projectilePosition" : [0, 0.5],
"projectileConfig" : {
"railConfig" : {
"direction" : "s"
}
}
},
{
"image" : "railbladetrapleft.png",
"imagePosition" : [0, -12],
"animationPosition" : [0, -12],
"animationParts" : {
"bg" : "railbladetrapleft.png",
"fg" : "railbladetrapleft.png"
},
"spaceScan" : 0.1,
"anchors" : [ "left" ],
"direction" : "right",
"projectileDirection" : [1, 0],
"projectilePosition" : [0.5, 0],
"projectileConfig" : {
"railConfig" : {
"direction" : "e"
}
}
},
{
"image" : "railbladetrapright.png",
"imagePosition" : [0, -12],
"animationPosition" : [0, -12],
"animationParts" : {
"bg" : "railbladetrapright.png",
"fg" : "railbladetrapright.png"
},
"spaceScan" : 0.1,
"anchors" : [ "right" ],
"direction" : "right",
"projectileDirection" : [-1, 0],
"projectilePosition" : [0.5, 0],
"projectileConfig" : {
"railConfig" : {
"direction" : "w"
}
}
}
],
"animationParts" : {
"bg" : "railbladetrapground.png",
"fg" : "railbladetrapground.png"
},
"animation" : "/objects/wired/projectiletrap/projectiletrap.animation",
"inputNodes" : [ [0, 0] ],
"smashOnBreak" : true,
"smashParticles" : [ { "count" : 5, "particle" : "woodshard" } ],
"scripts" : [ "/objects/wired/projectiletrap/projectiletrap.lua" ],
"scriptDelta" : 5,
"inactiveLightColor" : [0, 0, 0],
"activeLightColor" : [0, 0, 0],
"fireTime" : 5.0,
"fireTimeVariance" : 0.0,
"projectile" : "railblade"
}

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [24, 8],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
},
"aliases" : {
"default.default" : "default",
"default.on" : "default",
"default.off" : "default",
"default.1" : "default"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [24, 8],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
},
"aliases" : {
"default.default" : "default",
"default.on" : "default",
"default.off" : "default",
"default.1" : "default"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [8, 24],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
},
"aliases" : {
"default.default" : "default",
"default.on" : "default",
"default.off" : "default",
"default.1" : "default"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

View file

@ -0,0 +1,17 @@
{
"frameGrid" : {
"size" : [8, 24],
"dimensions" : [1, 1],
"names" : [
[ "default" ]
]
},
"aliases" : {
"default.default" : "default",
"default.on" : "default",
"default.off" : "default",
"default.1" : "default"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

View file

@ -0,0 +1,22 @@
{
"frameGrid" : {
"size" : [40, 40],
"dimensions" : [6, 1],
"names" : [
[ "closed", "halfLeft", "left", null, "halfRight", "right" ]
]
},
"aliases" : {
"default" : "closed",
"closeLeft.1" : "halfLeft",
"closeLeft.2" : "closed",
"closeRight.1" : "halfRight",
"closeRight.2" : "closed",
"openLeft.1" : "halfLeft",
"openLeft.2" : "left",
"openRight.1" : "halfRight",
"openRight.2" : "right"
}
}

View file

@ -0,0 +1,53 @@
{
"objectName" : "raildoor",
"colonyTags" : ["rails","door"],
"rarity" : "Common",
"category" : "door",
"price" : 300,
"description" : "This door includes rails to allow riders through when open.",
"shortdescription" : "Rail Door",
"race" : "generic",
"inventoryIcon" : "raildooricon.png",
"orientations" : [
{
"image" : "raildoor.png:default",
"flipImages" : true,
"imagePosition" : [-20, 0],
"spaceScan" : 0.1,
"anchors" : [ "bottom", "top" ],
"direction" : "left"
},
{
"image" : "raildoor.png:default",
"imagePosition" : [-20, 0],
"spaceScan" : 0.1,
"anchors" : [ "bottom", "top" ],
"direction" : "right"
}
],
"scripts" : [ "/objects/wired/door/door.lua" ],
"scriptDelta" : 5,
"openMaterialSpaces" : [
[[-1, 0], "metamaterial:rail"], [[0, 0], "metamaterial:rail"],
[[-1, 4], "metamaterial:rail"], [[0, 4], "metamaterial:rail"]
],
"animation" : "/objects/wired/door/door.animation",
"animationCustom" : {
"sounds" : {
"open" : [ "/sfx/objects/apexcooldoor_open.ogg" ],
"close" : [ "/sfx/objects/apexcooldoor_close.ogg" ]
}
},
"animationParts" : {
"door" : "raildoor.png"
},
"animationPosition" : [-20, 0],
"inputNodes" : [ [-1, 4] ],
"outputNodes" : [ [0, 0] ]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

View file

@ -0,0 +1,14 @@
{
"frameGrid" : {
"size" : [24, 32],
"dimensions" : [3, 1],
"names" : [
[ "default.off", "default.0", "default.1" ]
]
},
"aliases" : {
"default.default" : "default.off"
}
}

View file

@ -0,0 +1,33 @@
{
"objectName" : "sbvntestconsole",
"colonyTags" : [],
"rarity" : "Legendary",
"category" : "decorative",
"price" : 0,
"description" : "An arcade machine with an interactive narrative game.",
"shortdescription" : "SBVN Test Console",
"race" : "generic",
"inventoryIcon" : "sbvntestconsoleicon.png",
"orientations" : [
{
"dualImage" : "sbvntestconsole.png:<color>.<frame>",
"imagePosition" : [-12, 0],
"frames" : 2,
"animationCycle" : 0.6,
"spaceScan" : 0.1,
"anchors" : [ "bottom" ]
}
],
"scripts" : ["/interface/scripted/sbvn/sbvnobject.lua"],
"scriptDelta" : 0,
"interactAction" : "ScriptPane",
"interactData" : {
"baseConfig" : "/interface/scripted/sbvn/sbvngui.config",
"gameFile" : "/interface/scripted/sbvn/games/testgame/testgame.sbvn"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show more