You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

439 lines
22 KiB
JavaScript

//settings are just variables that can be sent to the client from the server
//they are either related to the rooms or shared with the server
module.exports.SETTINGS = {
//if not specified by the url where is the starting point
defaultRoom: "likelikeOutside",
//minimum time between talk messages enforced by both client and server
ANTI_SPAM: 1000,
//shows up at first non lurking login
INTRO_TEXT: "Click/tap to move"
};
//miscellaneous assets to preload
module.exports.IMAGES = [
["sheepIdle", "sheep-idle.png"],
["sheepWalk", "sheep-walk.png"],
["wifeWalk", "wife.png"],
["wifeEmote", "wife-emote.png"],
["husbandWalk", "husband.png"],
["husbandEmote", "husband-emote.png"],
["child1Walk", "child1.png"],
["child1Emote", "child1-emote.png"],
["child2Walk", "child2.png"],
["child2Emote", "child2-emote.png"],
["child3Walk", "child3.png"],
["child3Emote", "child3-emote.png"],
["uncleWalk", "uncle.png"],
["uncleEmote", "uncle-emote.png"],
["milkmanWalk", "milkman.png"],
["milkmanEmote", "milkman-emote.png"],
["boyfriendWalk", "child-boyfriend.png"],
["boyfriendEmote", "child-boyfriend-emote.png"],
["flyWalk", "fly.png"],
["flyEmote", "fly-emote.png"]
];
//miscellaneous sounds to preload
module.exports.SOUNDS = [
["beat1", "beat1.ogg"], //credit https://www.youtube.com/watch?v=ugLVpZm69DE
["beat2", "beat2.ogg"], // credit https://www.youtube.com/watch?v=dPdoxIz0w24
["beat3", "beat3.ogg"], //credit https://www.youtube.com/watch?v=XShEWT4MwJs
["DJStop", "DJStop.mp3"]
];
module.exports.ROOMS = {
likelike: {
//the background graphics, it can be a spreadsheet
bg: "likelike-bg-pico.png",
//if spreadsheet frames
frames: 2,
//if animated, animation speed in refreshes (frame dependent)
frameDelay: 30,
//normally 2, avatars can be scaled to simulate camera distance
avatarScale: 2,
//a shade to tint the avatars to simulate light color, #FFFFFF normal
tint: "#ffbbb8",
//the html body color can be changed
pageBg: "#ab5236",
//minimum height for the speech bubbles
bubblesY: 50,
//if spawning directly in this room, top left and bottom right point defining the rectangular spawn area (random within it)
spawn: [84, 92, 121, 99],
//graphics with active areas Sierra Online adventures style
//color coded as below, #FFFFFF is walkable, transparent is obstacle
area: "likelike-areas-pico.png",
//each color can trigger a command, the destination needs to be reached first
//the "h" is replaced by # to identify color
areaColors: {
//enter command changes room
//room: id of the room to enter
//label: what to display on rollover
//point: where to walk after click
//enterPoint: where to spawn in the next room
//obstacle: is the area walkable
hffec27: { cmd: "enter", room: "likelikeBackyard", label: "Backyard", point: [6, 88], enterPoint: [116, 69], obstacle: false },
h00e436: { cmd: "enter", room: "likelikeOutside", label: "Street", point: [102, 98], enterPoint: [103, 84], obstacle: false },
hab5236: { cmd: "enter", room: "firstFloor", label: "oMoMA", point: [116, 85], enterPoint: [63, 98], obstacle: false },
//text displays a text only on the client
//txt: the text
//align: center or left
//lines: manual number of lines, p5 doesn't understand line breaks
//url: uptionally open a page on click
hff004d: { cmd: "text", txt: "ENNUIGI\nby Josh Millard, 2015\nClick to play.\nControls: Arrow keys.", align: "left", lines: 4, url: "https://www.lexaloffle.com/bbs/?tid=2232", label: "An existential game", point: [34, 78], obstacle: true },
hff77a8: { cmd: "text", txt: "STRUNG OUT IN HEAVEN'S HIGH\nby Sean S. LeBlanc\nand Ian Martin, 2016\nClick to play.\nControls: Arrow keys + Z.", align: "left", lines: 5, url: "https://www.lexaloffle.com/bbs/?tid=3941", label: "A trippy game", point: [64, 78], obstacle: true },
hffccaa: { cmd: "text", txt: "GET COMFORTABLE\nby mcccclean, 2018\nClick to play.\nControls: Arrow keys.", align: "left", lines: 4, url: "https://mcccclean.itch.io/get-comfortable", label: "A snuggly game", point: [92, 78], obstacle: true },
h83769c: { cmd: "text", txt: "HYBRIS\nby Benjamin Soule', 2015\nClick to play.\nControls: Arrow keys + Z.", align: "left", lines: 4, url: "https://www.lexaloffle.com/bbs/?tid=2897", label: "A viral game", point: [16, 82], obstacle: true },
},
//list of sprites to create in the room
//sprites are rendered according to depth sort so they can appear above the avatars unlike the background
//they can be animated, mouse reactive and trigger commands like the areas above
things: {
//sprite spreadsheets only 1 row ok?
cabinet: { file: "top-cabinet-pico.png", frames: 1, frameDelay: 1, position: [24, 89], label: "A huggy game", command: { cmd: "text", txt: "EMBRACE\nby Remy Devaux, 2018\nClick to play.\nControls: Arrow keys.", align: "left", lines: 4, url: "https://trasevol-dog.itch.io/embrace", label: "A huggy game", point: [33, 92] } }
}
},
likelikeBitsy: {
//the background graphics, it can be a spreadsheet
bg: "likelike-bg.png",
//if spreadsheet frames
frames: 2,
//if animated, animation speed in refreshes (frame dependent)
frameDelay: 30,
//normally 2, avatars can be scaled to simulate camera distance
avatarScale: 2,
//a shade to tint the avatars to simulate light color, #FFFFFF normal
tint: "#fa84af",
//the html body color can be changed
pageBg: "#6a2545",
//minimum height for the speech bubbles
bubblesY: 50,
//if spawning directly in this room, top left and bottom right point defining the rectangular spawn area (random within it)
spawn: [84, 92, 121, 99],
//graphics with active areas Sierra Online adventures style
//color coded as below, #FFFFFF is walkable, transparent is obstacle
area: "likelike-areas.png",
//each color can trigger a command, the destination needs to be reached first
//the "h" is replaced by # to identify color
areaColors: {
//enter command changes room
//room: id of the room to enter
//label: what to display on rollover
//point: where to walk after click
//enterPoint: where to spawn in the next room
//obstacle: is the area walkable
hffec27: { cmd: "enter", room: "likelikeBackyard", label: "Backyard", point: [6, 88], enterPoint: [116, 69], obstacle: false },
h00e436: { cmd: "enter", room: "likelikeOutside", label: "Street", point: [102, 98], enterPoint: [103, 84], obstacle: false },
//text displays a text only on the client
//txt: the text
//align: center or left
//lines: manual number of lines, p5 doesn't understand line breaks
//url: uptionally open a page on click
hff004d: { cmd: "text", txt: "OUR DAMNED MACHINE\nby Sophie Houlden, 2018\nClick on the frame to start.\nWASD or Arrow keys to move.", align: "left", lines: 4, url: "https://sophieh.itch.io/our-damned-machine", label: "A dystopian game", point: [34, 78], obstacle: true },
hff77a8: { cmd: "text", txt: "CONTINENTAL DRIFT\nby Cecile Richard, 2019\nWASD or Arrow keys to move.\nClick to play.", align: "left", lines: 4, url: "https://haraiva.itch.io/continental-drift", label: "An intimate game", point: [64, 78], obstacle: true },
hffccaa: { cmd: "text", txt: "SPIRAL HOUSE\nby Withering Systems (Everest Pipkin and Loren Schmidt), 2018\nWASD or Arrow keys to move.\nClick to play.", align: "left", lines: 5, url: "https://withering-systems.itch.io/spiral-house", label: "An abstract game", point: [92, 78], obstacle: true },
hab5236: { cmd: "text", txt: "ALMANAC OF GIRLSWAMPWAR TERRITORY\nby porpentine charity heartscape, 2018\nWASD or Arrow keys to move.\nClick to play.", align: "left", lines: 5, url: "https://porpentine.itch.io/almanac", label: "A mutant game", point: [110, 82], obstacle: true },
h83769c: { cmd: "text", txt: "MOSS AS TEXTURE AS SPACE\nFOLDING ONTO ITSELF\nby Pol Clarissou, 2019\nWASD or Arrow keys to move.\nClick to play.", align: "left", lines: 5, url: "https://polclarissou.itch.io/moss-as-texture-as-space-folding-onto-itself", label: "A mossy game", point: [16, 82], obstacle: true },
hffa300: { cmd: "text", txt: "LIKELIKE\npresents:\nAn Itsy Bitsy Crisis\nCatastrophes and Rebirths in Bitsy", align: "center", lines: 4, label: "Wall text", point: [119, 95], obstacle: false }
},
//list of sprites to create in the room
//sprites are rendered according to depth sort so they can appear above the avatars unlike the background
//they can be animated, mouse reactive and trigger commands like the areas above
things: {
//sprite spreadsheets only 1 row ok?
cabinet: { file: "top-cabinet.png", frames: 1, frameDelay: 1, position: [24, 89], label: "A time traveling game", command: { cmd: "text", txt: "THE LAST HUMAN TOUCH\nby Cephalopodunk, 2018\nWASD or Arrow keys to move.\nClick to play.", align: "left", lines: 4, url: "https://cephalopodunk.itch.io/the-last-human-touch", label: "A time traveling game", point: [33, 92] } }
}
},
likelikeOutside: {
bg: "likelike-outside-omoma.png",
frames: 2,
frameDelay: 30,
avatarScale: 2,
pageBg: "#ab5236",
area: "likelikeOutside-areas.png",
tint: "#fdeac8",
bubblesY: 44,
spawn: [14, 84, 119, 92],
areaColors: {
//h will be replaced by #
hff77a8: { cmd: "enter", room: "likelike", label: "Enter LIKELIKE", point: [100, 84], enterPoint: [104, 98], obstacle: false },
}
},
likelikeBackyard: {
bg: "likelike-backyard.png",
frames: 2,
frameDelay: 30,
avatarScale: 2,
area: "likelike-backyard-areas.png",
tint: "#fdbe4e",
pageBg: "#413830",
bubblesY: 20,
spawn: [38, 63, 108, 83],
areaColors: {
//h will be replaced by #
hff77a8: { cmd: "enter", room: "likelike", label: "Enter LIKELIKE", point: [119, 69], enterPoint: [5, 88], obstacle: false },
},
things: {
//spreadsheets only 1 row ok?
harvey: { file: "harvey.png", frames: 2, frameDelay: 10, position: [102, 77], label: "Harvey", command: { cmd: "text", txt: "*You pet the dog*", align: "center", lines: 1, point: [101, 84] } },
chairs: { file: "likelike-backyard-chairs.png", position: [33, 44] },
cabinet: {
file: "pico-cabinet.png", frames: 2, frameDelay: 10, position: [92, 26], label: "Looping animations?",
command: { cmd: "text", txt: "TWEETCARTS\nby Varius Creators\nThe code of each of these PICO-8 generated animations fits into a single tweet (280 chars).", align: "left", lines: 5, url: "https://twitter.com/molleindustria/timelines/1254605222455934978", label: "Short animations?", point: [96, 46] }
}
}
},
//just an empty room for testing mods
experiments: {
bg: "experiments-bg.png",
avatarScale: 2,
pageBg: "#bfaeae",
area: "experiments-areas.png",
tint: "#FFFFFF",
bubblesY: 50,
spawn: [15, 77, 113, 96]
},
firstFloor: {
bg: "firstFloor.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "firstFloor-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//left
hffec27: { cmd: "enter", room: "cnsnntrm", label: "cnsnnt rm", point: [10, 86], enterPoint: [114, 86], obstacle: false },
//right
h00e436: { cmd: "enter", room: "mirrorRoom", label: "Mirror Room", point: [117, 86], enterPoint: [12, 86], obstacle: false },
//up
h29adff: { cmd: "enter", room: "secondFloor", label: "2nd Floor", point: [30, 73], enterPoint: [99, 73], obstacle: false },
//wall text
ha8e72e: { cmd: "text", txt: "ONLINE MUSEUM OF MULTIPLAYER ART\nA survey of contemporary playful art. You have to talk and interact with other visitors to get the art.", align: "left", lines: 5, label: "Wall text", point: [50, 73], obstacle: false },
hb7250b: { cmd: "text", txt: "Anomaly\nMixed media, subjectively perceived.", align: "left", lines: 3, label: "Installation?", point: [75, 77], obstacle: false },
hbe1250: { cmd: "enter", room: "likelike", label: "LIKELIKE Arcade", point: [63, 98], enterPoint: [116, 85], obstacle: false },
},
things: {
//sprite spreadsheets only 1 row ok?
sculpture1: { file: "sculpture1.png", position: [70, 22], visible: false },
sculpture2: { file: "sculpture2.png", position: [70, 22], visible: false },
sculpture3: { file: "sculpture3.png", position: [70, 22], visible: false },
sculpture4: { file: "sculpture4.png", position: [70, 22], frames: 4, frameDelay: 10, visible: false },
}
},
secondFloor: {
bg: "secondFloor.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "secondFloor-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//left
hffec27: { cmd: "enter", room: "censorshipRoom", label: "Censorship Room", point: [10, 86], enterPoint: [114, 86], obstacle: false },
//right
h00e436: { cmd: "enter", room: "rhymeRoom", label: "Rhyme Room", point: [117, 86], enterPoint: [12, 86], obstacle: false },
//down
hff77a8: { cmd: "enter", room: "firstFloor", label: "1st Floor", point: [99, 73], enterPoint: [30, 73], obstacle: false },
//up
h29adff: { cmd: "enter", room: "thirdFloor", label: "3rd Floor", point: [30, 73], enterPoint: [99, 73], obstacle: false },
},
},
thirdFloor: {
bg: "thirdFloor.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "secondFloor-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//left
hffec27: { cmd: "enter", room: "darkRoom", label: "Dark Room", point: [10, 86], enterPoint: [114, 86], obstacle: false },
//right
h00e436: { cmd: "enter", room: "familyRoom", label: "Family Room", point: [117, 86], enterPoint: [10, 77], obstacle: false },
//VIP
h29adff: { cmd: "enter", room: "VIPRoom", label: "VIP Room", point: [30, 73], enterPoint: [64, 79], obstacle: false },
//down
hff77a8: { cmd: "enter", room: "secondFloor", label: "2nd Floor", point: [99, 73], enterPoint: [30, 73], obstacle: false },
},
},
cnsnntrm: {
bg: "leftRoom.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "leftRoom-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//right
h00e436: { cmd: "enter", room: "firstFloor", label: "Hall", point: [117, 86], enterPoint: [12, 86], obstacle: false },
},
things: {
//sprite spreadsheets only 1 row ok?
guard: { file: "museumGuard.png", frames: 1, frameDelay: 30, position: [13, 56], label: "Museum guard" }
}
},
mirrorRoom: {
bg: "rightRoom.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "rightRoom-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//left
hffec27: { cmd: "enter", room: "firstFloor", label: "Hall", point: [10, 86], enterPoint: [114, 86], obstacle: false },
}
},
censorshipRoom: {
bg: "leftRoom.png",
avatarScale: 2,
pageBg: "#e1cdcd",
area: "censorshipRoom-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//right
h00e436: { cmd: "enter", room: "secondFloor", label: "Hall", point: [117, 86], enterPoint: [12, 86], obstacle: false },
},
things: {
//sprite spreadsheets only 1 row ok?
elephant: { file: "elephant-no-outline.png", frames: 4, frameDelay: 30, position: [42, 51] }
}
},
rhymeRoom: {
bg: "speaker-room.png",
avatarScale: 2,
frames: 3,
frameDelay: 10,
pageBg: "#e1cdcd",
area: "rightRoom-areas.png",
tint: "#FFFFFF",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//left
hffec27: { cmd: "enter", room: "secondFloor", label: "Hall", point: [10, 86], enterPoint: [114, 86], obstacle: false },
}
},
darkRoom: {
bg: "darkRoom.png",
avatarScale: 2,
frames: 3,
frameDelay: 10,
pageBg: "#221c17",
area: "leftRoom-areas.png",
tint: "#342c24",
bubblesY: 46,
spawn: [15, 77, 113, 96],
areaColors: {
//right
h00e436: { cmd: "enter", room: "thirdFloor", label: "Hall", point: [117, 86], enterPoint: [12, 86], obstacle: false },
}
},
familyRoom: {
bg: "familyRoom-bg.png",
avatarScale: 2,
pageBg: "#6a2545",
area: "familyRoom-areas.png",
tint: "#f7e9e9",
bubblesY: 40,
secret: false,
spawn: [12, 70, 16, 90],
areaColors: {
//left door
hffec27: { cmd: "enter", room: "thirdFloor", label: "Hall", point: [10, 77], enterPoint: [114, 86], obstacle: false },
hffccaa: { cmd: "text", label: "Book", txt: "Fifty Shades of Grey", align: "center", lines: 1, point: [16, 61] },
hff77a8: { cmd: "text", label: "Book", txt: "Fifty Shades Darker", align: "center", lines: 1, point: [16, 61] },
hff9d81: { cmd: "text", label: "Book", txt: "Fifty Shades Freed", align: "center", lines: 1, point: [16, 61] },
//action requires a custom listener in the serverMod listening to actionId
hff6c24: { cmd: "action", actionId: "TVInteract", label: "TV", point: [39, 69], obstacle: false },
h008751: { cmd: "text", label: "Picture", txt: "Family at Disneyworld", align: "center", lines: 1, point: [52, 61] },
ha8e72e: { cmd: "text", label: "Picture", txt: "Wedding picture", align: "center", lines: 1, point: [57, 61] },
h00e436: { cmd: "text", label: "?", txt: "A short red hair", align: "center", lines: 1, point: [8, 90], obstacle: false },
h29adff: { cmd: "text", label: "?", txt: "Female underwear", align: "center", lines: 1, point: [113, 62] },
hff004d: { cmd: "text", label: "Plant", txt: "It's in bad shape", align: "center", lines: 1, point: [26, 61] },
},
things: {
//sprite spreadsheets only 1 row ok?
couch2: { file: "familyRoom-couch2.png", position: [53, 54] },
couch1: { file: "familyRoom-couch1.png", position: [26, 63] },
table: { file: "familyRoom-table.png", position: [81, 74] },
TV: { file: "tv.png", id: "TV", position: [33, 45], frames: 13, frameDelay: 60, visible: false },
}
},
VIPRoom: {
bg: "VIPRoom-bg.png",
avatarScale: 2,
pageBg: "#742f29",
area: "VIPRoom-areas.png",
tint: "#f7cdba",
bubblesY: 40,
secret: true,
spawn: [56, 76, 69, 80],
//music: "smoothCrap.ogg",
musicVolume: 0.5,
areaColors: {
//right
hff004d: { cmd: "text", label: "Painting", txt: "An original Rothko?", align: "center", lines: 1, point: [27, 65], obstacle: false },
h00e436: { cmd: "text", label: "Window", txt: "Can you see the incline from here?", align: "center", lines: 1, point: [33, 59], obstacle: false },
hffec27: { cmd: "text", label: "Window", txt: "The Paris of Appalachia", align: "center", lines: 1, point: [53, 59], obstacle: false },
h29adff: { cmd: "text", label: "Window", txt: "Ah... the city of bridges!", align: "center", lines: 1, point: [73, 59], obstacle: false },
hff6c24: { cmd: "text", label: "Window", txt: "Gentrification is beautiful", align: "center", lines: 1, point: [83, 59], obstacle: false },
hffccaa: { cmd: "text", label: "Cocktail", txt: "*You drink an Old fashioned*", align: "center", lines: 1, point: [45, 76], obstacle: false },
hff77a8: { cmd: "text", label: "Champagne", txt: "It's a magnum bottle", align: "center", lines: 1, point: [38, 76], obstacle: false },
hb7250b: { cmd: "text", label: "Caviar tartines", txt: "*You eat a tartine*", align: "center", lines: 1, point: [31, 76], obstacle: false },
hab5236: { cmd: "text", label: "Chocolate fountain", txt: "A little bit tacky", align: "center", lines: 1, point: [24, 76], obstacle: false },
h065ab5: { cmd: "enter", room: "thirdFloor", label: "Hall", point: [64, 79], enterPoint: [30, 73], obstacle: false }
},
things: {
//sprite spreadsheets only 1 row ok?
VIPSeats: { file: "VIP-seats.png", position: [43, 56] },
VIPTable: { file: "VIP-table.png", position: [20, 65] },
VIPCouch: { file: "VIP-couch.png", position: [87, 68] },
}
},
};