Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
9b528fc
add rate limit on trigger
Wahlee1 Jul 1, 2026
d347bb2
add handling for range error
Wahlee1 Jul 1, 2026
23d0c71
fix fire not disappearing when cleared
Wahlee1 Jul 1, 2026
2ae701a
add limit to collision correction for edgify
Wahlee1 Jul 2, 2026
0a22dee
add isCooked tag for foods
Wahlee1 Jul 2, 2026
bdc0dcd
remove cooked tag from potato
Wahlee1 Jul 2, 2026
ad06d46
add function to check if food is cooked
Wahlee1 Jul 2, 2026
72b189a
fix non-stove items being cookable
Wahlee1 Jul 2, 2026
b16cf80
remove cooked tag from animal meat
Wahlee1 Jul 2, 2026
99d0088
allow open/close to work on lamps
Wahlee1 Jul 2, 2026
f43f9d9
limit menu choice & fix closing menu
Wahlee1 Jul 2, 2026
ed54c3a
add small_airlock.js on client
Wahlee1 Jul 3, 2026
28a5395
add small_airlock.js on server
Wahlee1 Jul 3, 2026
2c7f588
add sprites for small airlock
Wahlee1 Jul 3, 2026
df2f1ec
add sprites to tempAssets
Wahlee1 Jul 3, 2026
2f3ee36
add small airlock to constants
Wahlee1 Jul 3, 2026
fe2c56a
add small airlock to enum
Wahlee1 Jul 3, 2026
d6f5de6
add small airlock to index on server
Wahlee1 Jul 3, 2026
0446f76
add small airlock to index on client
Wahlee1 Jul 3, 2026
c38281a
increase threshold limit
Wahlee1 Jul 4, 2026
af78da7
fix player light not updating correctly
Wahlee1 Jul 6, 2026
49bc488
cleanup excessive decimals in position if present
Wahlee1 Jul 6, 2026
e5fdd10
prevent non-armors from being stored in suit station
Wahlee1 Jul 6, 2026
97c0f03
fix issue with multiple suits appearing in suit station
Wahlee1 Jul 6, 2026
14514e6
fix placeholder values
Wahlee1 Jul 6, 2026
018dca3
prevent stove content from being non-food
Wahlee1 Jul 6, 2026
c11a53e
increase rate limit
Wahlee1 Jul 7, 2026
41f4ab1
increase threshold limit
Wahlee1 Jul 7, 2026
2d2609e
offload extraneous triggers
Wahlee1 Jul 13, 2026
d4e14b5
fix custom color txt not showing
Wahlee1 Jul 14, 2026
b4130fa
Merge branch 'yomugames:master' into master
Wahlee1 Jul 14, 2026
20614a0
fix building not going invis in FOV mode
Wahlee1 Jul 15, 2026
6570809
manual update
Wahlee1 Jul 21, 2026
1f9c23a
Merge branch 'yomugames:master' into master
Wahlee1 Jul 21, 2026
8ee8e4d
revert changes
Wahlee1 Jul 21, 2026
630c7f0
Merge branch 'yomugames:master' into master
Wahlee1 Jul 21, 2026
7314cb5
fix meteor storm alert persisting
Wahlee1 Jul 23, 2026
c4f0dff
decrease size of small airlock sprites
Wahlee1 Jul 23, 2026
23896b3
enable fill building again
Wahlee1 Jul 24, 2026
896ba83
fix lamp color getting reset upon being damaged
Wahlee1 Jul 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/junon-common/protocol/enum.proto
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ enum BuildingType {
MiasmaGate = 272;
CabbageSeed = 273;
Cabbage = 274;
SmallAirlock = 275;
}

enum TerrainType {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/junon-io/client/src/entities/buildings/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Buildings.Production.AmmoPrinter = require("./ammo_printer")
Buildings.Structures.SpikeTrap = require("./spike_trap")
Buildings.Structures.WebTrap = require("./web_trap")
Buildings.Structures.ManualAirlock = require("./manual_airlock")
Buildings.Structures.SmallAirlock = require("./small_airlock")
Buildings.Structures.Airlock = require("./airlock")
Buildings.Structures.SealedDoor = require("./sealed_door")
Buildings.Structures.Fence = require("./fence")
Expand Down
4 changes: 4 additions & 0 deletions packages/junon-io/client/src/entities/buildings/lamp.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,10 @@ class Lamp extends BaseBuilding {
}
}

getDefaultSpriteColor() {
return ClientHelper.hexToInt(this.getLightColor())
}

getType() {
return Protocol.definition().BuildingType.Lamp
}
Expand Down
47 changes: 47 additions & 0 deletions packages/junon-io/client/src/entities/buildings/small_airlock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const Airlock = require("./airlock")
const Constants = require("./../../../../common/constants.json")
const Protocol = require("./../../../../common/util/protocol")

class SmallAirlock extends Airlock {

getConstantsTable() {
return "Buildings.SmallAirlock"
}

open() {
this.tween = super.getOpenTween(Constants.tileSize * 1.5)
this.tween.start()
}

getType() {
return Protocol.definition().BuildingType.SmallAirlock
}

getBuildingSprite() {
let sprite = new PIXI.Container()

let texture = PIXI.utils.TextureCache["small_airlock_upper.png"]
this.upperDoorSprite = new PIXI.Sprite(texture)
this.upperDoorSprite.anchor.set(0.5)
this.upperDoorSprite.name = "UpperDoor"

texture = PIXI.utils.TextureCache["small_airlock_lower.png"]
this.lowerDoorSprite = new PIXI.Sprite(texture)
this.lowerDoorSprite.anchor.set(0.5)
this.lowerDoorSprite.name = "LowerDoor"

sprite.addChild(this.lowerDoorSprite)
sprite.addChild(this.upperDoorSprite)

return sprite
}

getSpritePath() {
return "small_airlock.png"
}



}

module.exports = SmallAirlock
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class SuitStation extends BaseBuilding {
onContentChanged() {
const armorType = this.content

// just remove armor when content change
if (this.armor) this.armor.remove()
if (armorType) {
let suitType = armorType.split(":")[0]
let color = armorType.split(":")[1]
Expand All @@ -22,9 +24,6 @@ class SuitStation extends BaseBuilding {
}

this.armor = Equipments.forType(suitType).build(this.game, data)
} else if (this.armor) {
// no more armor in storage, remove it
this.armor.remove()
}
}

Expand Down
5 changes: 3 additions & 2 deletions packages/junon-io/client/src/entities/effects/invisible.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ class Invisible extends BaseEffect {
let opacity = { opacity: 1 }
let targetOpacity = 0
if (this.affectedEntity.isPlayer() &&
this.affectedEntity.isMe()) {
(this.affectedEntity.isMe && this.affectedEntity.isMe())) {
targetOpacity = 0.2
}

if(this.affectedEntity.sector.settings.isFovMode && !this.affectedEntity.isMe()) {
if(this.affectedEntity.sector.settings.isFovMode &&
(this.affectedEntity.isMe && !this.affectedEntity.isMe())) {
return new TWEEN.Tween(opacity)
.to({ opacity: targetOpacity }, 0)
.onUpdate(() => {
Expand Down
2 changes: 1 addition & 1 deletion packages/junon-io/client/src/entities/game.js
Original file line number Diff line number Diff line change
Expand Up @@ -1412,7 +1412,7 @@ class Game {
// PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST


let tempAssets = ['displacement_map.png', 'squid_lord_heart.png', 'squid_staff.png', 'fries.png', 'energy_drink.png', 'alien_juice.png', 'rocket_launcher.png', 'scar_17_by_px.png', 'bowl_by_px.png', 'potato_soup_by_px.png', 'miso_soup_by_px.png', 'slime_broth_by_px.png', 'bomber_turret_by_px.png', 'firebat.png', 'plasma_blade.png', 'raven.png', 'starberries.png', 'car.png', 'bricks_texture.png', 'checker_texture.png', 'noise_texture.png', 'x_texture.png', 'xchecker_texture.png', 'nihonshu.png', 'pumpkin.png', 'pumpkin_plant.png', 'pumpkin_seed.png', 'rice.png', 'rice_plant.png', 'rice_seed.png', 'fish.png', 'nigiri.png', 'katana_reskin.png', 'pumpkin_pie.png', 'imperial_special_forces_armor.png', 'deconstructor.png', 'blue_laser.png', 'keypad_door.png', 'keypad_door_lower.png', 'keypad_door_upper.png', 'unbreakable_wall.png', 'sapper.png', 'sapper_corpse.png', 'dynamite.png', 'miasma_gate.png', "solid_texture2.png", "simplex_texture.png", "cabbage_seed.png", "cabbage_plant.png", "cabbage.png", "3dwall-0.png", "3dwall-1.png", "3dwall-2.png", "3dwall-3.png", "3dwall-4.png", "3dwall-5.png", "3dwall-6.png", "3dwall-7.png", "3dwall-8.png", "3dwall-9.png", "3dwall-10.png", "3dwall-11.png", "3dwall-12.png", "3dwall-13.png"]
let tempAssets = ['displacement_map.png', 'squid_lord_heart.png', 'squid_staff.png', 'fries.png', 'energy_drink.png', 'alien_juice.png', 'rocket_launcher.png', 'scar_17_by_px.png', 'bowl_by_px.png', 'potato_soup_by_px.png', 'miso_soup_by_px.png', 'slime_broth_by_px.png', 'bomber_turret_by_px.png', 'firebat.png', 'plasma_blade.png', 'raven.png', 'starberries.png', 'car.png', 'bricks_texture.png', 'checker_texture.png', 'noise_texture.png', 'x_texture.png', 'xchecker_texture.png', 'nihonshu.png', 'pumpkin.png', 'pumpkin_plant.png', 'pumpkin_seed.png', 'rice.png', 'rice_plant.png', 'rice_seed.png', 'fish.png', 'nigiri.png', 'katana_reskin.png', 'pumpkin_pie.png', 'imperial_special_forces_armor.png', 'deconstructor.png', 'blue_laser.png', 'keypad_door.png', 'keypad_door_lower.png', 'keypad_door_upper.png', 'unbreakable_wall.png', 'sapper.png', 'sapper_corpse.png', 'dynamite.png', 'miasma_gate.png', "solid_texture2.png", "simplex_texture.png", "cabbage_seed.png", "cabbage_plant.png", "cabbage.png", "3dwall-0.png", "3dwall-1.png", "3dwall-2.png", "3dwall-3.png", "3dwall-4.png", "3dwall-5.png", "3dwall-6.png", "3dwall-7.png", "3dwall-8.png", "3dwall-9.png", "3dwall-10.png", "3dwall-11.png", "3dwall-12.png", "3dwall-13.png", "small_airlock_upper.png","small_airlock_lower.png","small_airlock.png"]
tempAssets.forEach((asset) => {
PIXI.Texture.addToCache(PIXI.Texture.fromImage('/assets/images/' + asset), asset)
})
Expand Down
7 changes: 6 additions & 1 deletion packages/junon-io/client/src/entities/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -1117,6 +1117,7 @@ class Player extends BaseEntity {
this.registerToChunk()

this.repositionOnUnitMap()
this.redrawVisionLightSprite()

if (this.isMe()) {
if (this.sector.isFovMode()) {
Expand All @@ -1125,7 +1126,6 @@ class Player extends BaseEntity {
}

this.highlightNearbyEntities()
this.redrawVisionLightSprite()
this.updateSelectedEntity()

if (options.isGridPositionChanged) {
Expand Down Expand Up @@ -1415,6 +1415,11 @@ class Player extends BaseEntity {
this.usernameText.remove()
}

if (this.visionLightSprite){
this.visionLightSprite.destroy()
this.visionLightCanvas.remove()
}

this.getContainer().unregisterEntity("players", this)

if (this.chunk) {
Expand Down
4 changes: 3 additions & 1 deletion packages/junon-io/client/src/menus/entity_menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ class EntityMenu extends BaseMenu {
}

this.el.querySelector(".entity_action").innerHTML = "" // reset
this.el.querySelector('.entity_color').innerText = ""


if (this.game.shouldShowDebugDetails()) {
Expand All @@ -425,7 +426,8 @@ class EntityMenu extends BaseMenu {
const isFloorOrWall = entity.hasCategory && (entity.hasCategory('platform') || entity.hasCategory('wall') || entity.hasCategory('custom_colors'))

if (isFloorOrWall && entity.data && entity.data.colorIndex > 37) {
this.el.querySelector('.entity_color').innerText = ClientHelper.toHex(entity.data.colorIndex - 38)
this.el.querySelector(".debug_container").style.display = 'block'
this.el.querySelector('.entity_color').innerText = "color: " + ClientHelper.toHex(entity.data.colorIndex - 38)
}
}

Expand Down
3 changes: 2 additions & 1 deletion packages/junon-io/client/src/menus/map_menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ class MapMenu extends BaseMenu {
reinit() {
// the grid size is 200x200. map is 600px by 600px wide
let sectorColCount = this.game.sector.getColCount()
this.alerts = {}

this.zoomMultiplier = Math.floor(this.mapSize / sectorColCount)
}
Expand Down Expand Up @@ -450,4 +451,4 @@ class MapMenu extends BaseMenu {



module.exports = MapMenu
module.exports = MapMenu
36 changes: 32 additions & 4 deletions packages/junon-io/common/constants.json
Original file line number Diff line number Diff line change
Expand Up @@ -2786,6 +2786,7 @@
"Gelatin": {
"width": 24,
"height": 24,
"isCooked": true,
"cost": {
"gold": 15
},
Expand Down Expand Up @@ -2874,6 +2875,7 @@
"HotDog": {
"width": 24,
"height": 24,
"isCooked": true,
"sprite": {
"position": {
"x": 60,
Expand All @@ -2896,6 +2898,7 @@
"Bread": {
"width": 24,
"height": 24,
"isCooked": true,
"isIngredient": true,
"sprite": {
"position": {
Expand All @@ -2919,6 +2922,7 @@
"VeganPizza": {
"width": 40,
"height": 40,
"isCooked": true,
"sprite": {
"position": {
"x": 95,
Expand All @@ -2941,6 +2945,7 @@
"SlimyMeatPizza": {
"width": 40,
"height": 40,
"isCooked": true,
"cost": {
"gold": 500
},
Expand All @@ -2963,6 +2968,7 @@
"LectersDinner": {
"width": 40,
"height": 40,
"isCooked": true,
"cost": {
"gold": 300
},
Expand Down Expand Up @@ -3088,6 +3094,7 @@
"Fries": {
"width": 24,
"height": 24,
"isCooked": true,
"cost": {
"gold": 100
},
Expand All @@ -3111,6 +3118,7 @@
"Steak": {
"width": 24,
"height": 24,
"isCooked": true,
"cost": {
"gold": 200
},
Expand Down Expand Up @@ -3153,6 +3161,7 @@
"PotatoSoup": {
"width": 32,
"height": 32,
"isCooked": true,
"cost": {
"gold": 200
},
Expand All @@ -3173,6 +3182,7 @@
"SlimeBroth": {
"width": 32,
"height": 32,
"isCooked": true,
"cost": {
"gold": 200
},
Expand All @@ -3192,6 +3202,7 @@
"MisoSoup": {
"width": 32,
"height": 32,
"isCooked": true,
"cost": {
"gold": 200
},
Expand All @@ -3211,6 +3222,7 @@
"Omelette": {
"width": 24,
"height": 24,
"isCooked": true,
"cost": {
"gold": 200
},
Expand All @@ -3233,6 +3245,7 @@
"Nigiri": {
"width": 24,
"height": 24,
"isCooked": true,
"cost": {
"gold": 400
},
Expand All @@ -3257,6 +3270,7 @@
"PumpkinPie": {
"width": 32,
"height": 32,
"isCooked": true,
"cost": {
"gold": 250
},
Expand Down Expand Up @@ -6090,19 +6104,33 @@
"description": "Airtight door. No power required to operate"
},
"SmallAirlock": {
"width": 64,
"width": 32,
"height": 32,
"isInteractable": true,
"showInteractTooltip": true,
"isUpgradable": true,
"isAirtight": true,
"categories": {"door":true,"melee_resistant":true},
"minimapColor": "#3bceaa",
"requirements": {
"IronBar": 5
},
"cost": {
"gold": 50
},
"sprite":{
"width": 32,
"height": 32
},
"stats": {
"health": 100,
"count": 125
},
"upgrade": {
"health": "+25",
"count": "+25"
}
"health": "+15",
"count": "+15"
},
"description":"A smaller airtight door."
},
"ResearchTable": {
"width": 32,
Expand Down
6 changes: 3 additions & 3 deletions packages/junon-io/common/interfaces/taintable.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,9 +247,10 @@ Taintable.prototype = {

removeEffect(effectName) {
if (!this.effects) return
this.setEffectLevel(effectName, 0)

delete this.effects[effectName]
this.onEffectRemoved(effectName)
// delete this.effects[effectName]
// this.onEffectRemoved(effectName)
},

removeAllEffects() {
Expand Down Expand Up @@ -278,4 +279,3 @@ Taintable.prototype = {
}

module.exports = Taintable

4 changes: 2 additions & 2 deletions packages/junon-io/server/commands/fill.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class Fill extends BaseCommand {
getUsage() {
return [
"/fill [start_row] [start_col] [end_row] [end_col] [terrain_type] [color]",
// "/fill building [start_row] [start_col] [end_row] [end_col] [1x1 building] [color]"
"/fill building [start_row] [start_col] [end_row] [end_col] [1x1 building] [color]"
]
}

Expand All @@ -19,7 +19,7 @@ class Fill extends BaseCommand {

perform(player, args) {

if(false) {
if(args[0] == 'building') {
let startRow = parseInt(args[1])
let startCol = parseInt(args[2])
let endRow = parseInt(args[3])
Expand Down
2 changes: 1 addition & 1 deletion packages/junon-io/server/commands/interact.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class Interact extends BaseCommand {
}
}

if (entity.hasCategory("door")) {
if (entity.hasCategory("door") || entity.hasCategory("lamp")) {
if (operation === "open") {
entity.open()
} else if (operation === "close") {
Expand Down
Loading