diff --git a/client/public/img/game/buildings/riverside_house_ceiling.svg b/client/public/img/game/buildings/riverside_house_ceiling.svg new file mode 100644 index 0000000000..f980724e70 --- /dev/null +++ b/client/public/img/game/buildings/riverside_house_ceiling.svg @@ -0,0 +1,490 @@ + + + + diff --git a/client/public/img/game/buildings/riverside_house_floor.svg b/client/public/img/game/buildings/riverside_house_floor.svg new file mode 100644 index 0000000000..9dd0574f41 --- /dev/null +++ b/client/public/img/game/buildings/riverside_house_floor.svg @@ -0,0 +1,827 @@ + + + + diff --git a/client/public/img/game/obstacles/bathtub.svg b/client/public/img/game/obstacles/bathtub.svg new file mode 100644 index 0000000000..fa81ff6856 --- /dev/null +++ b/client/public/img/game/obstacles/bathtub.svg @@ -0,0 +1,107 @@ + + + + diff --git a/client/public/img/game/obstacles/bed2.svg b/client/public/img/game/obstacles/bed2.svg new file mode 100644 index 0000000000..c74275c506 --- /dev/null +++ b/client/public/img/game/obstacles/bed2.svg @@ -0,0 +1,117 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/client/public/img/game/obstacles/fireplace.svg b/client/public/img/game/obstacles/fireplace.svg new file mode 100644 index 0000000000..56f51d4485 --- /dev/null +++ b/client/public/img/game/obstacles/fireplace.svg @@ -0,0 +1,158 @@ + + + + diff --git a/client/public/img/game/obstacles/riverside_house_wall.svg b/client/public/img/game/obstacles/riverside_house_wall.svg new file mode 100644 index 0000000000..c7166b23c9 --- /dev/null +++ b/client/public/img/game/obstacles/riverside_house_wall.svg @@ -0,0 +1,94 @@ + + + + diff --git a/client/public/img/game/obstacles/riverside_house_wall_2.svg b/client/public/img/game/obstacles/riverside_house_wall_2.svg new file mode 100644 index 0000000000..5dcc0214f0 --- /dev/null +++ b/client/public/img/game/obstacles/riverside_house_wall_2.svg @@ -0,0 +1,106 @@ + + + + diff --git a/client/public/img/game/obstacles/riverside_house_wall_3.svg b/client/public/img/game/obstacles/riverside_house_wall_3.svg new file mode 100644 index 0000000000..cea1f0307c --- /dev/null +++ b/client/public/img/game/obstacles/riverside_house_wall_3.svg @@ -0,0 +1,110 @@ + + + + diff --git a/client/public/img/game/obstacles/riverside_house_wall_exterior.svg b/client/public/img/game/obstacles/riverside_house_wall_exterior.svg new file mode 100644 index 0000000000..4fe6df698d --- /dev/null +++ b/client/public/img/game/obstacles/riverside_house_wall_exterior.svg @@ -0,0 +1,179 @@ + + + + diff --git a/client/public/img/game/obstacles/slide_door.svg b/client/public/img/game/obstacles/slide_door.svg new file mode 100644 index 0000000000..8a553d5792 --- /dev/null +++ b/client/public/img/game/obstacles/slide_door.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/client/public/img/game/obstacles/table2.svg b/client/public/img/game/obstacles/table2.svg new file mode 100644 index 0000000000..4ec5b67599 --- /dev/null +++ b/client/public/img/game/obstacles/table2.svg @@ -0,0 +1,243 @@ + + + + diff --git a/client/public/img/game/particles/fireplace_particle.svg b/client/public/img/game/particles/fireplace_particle.svg new file mode 100644 index 0000000000..bf722db9c3 --- /dev/null +++ b/client/public/img/game/particles/fireplace_particle.svg @@ -0,0 +1,83 @@ + + + + diff --git a/client/public/img/game/residues/fireplace_residue.svg b/client/public/img/game/residues/fireplace_residue.svg new file mode 100644 index 0000000000..937d696090 --- /dev/null +++ b/client/public/img/game/residues/fireplace_residue.svg @@ -0,0 +1,239 @@ + + + + diff --git a/common/src/definitions/buildings.ts b/common/src/definitions/buildings.ts index 249a6aac25..4525fe5300 100644 --- a/common/src/definitions/buildings.ts +++ b/common/src/definitions/buildings.ts @@ -1035,6 +1035,125 @@ export const Buildings = ObjectDefinitions.create()( { table: "ground_loot", position: Vec.create(-15.42, 17.44) } ] }, + + { + idString: "riverside_house", + name: "riverside_house", + spawnHitbox: + RectangleHitbox.fromRect(85, 85), + + scopeHitbox: new HitboxGroup( + RectangleHitbox.fromRect(50, 50,Vec.create(2, 0)), + RectangleHitbox.fromRect(47, 47,Vec.create(-8.4, -8.8)), + ), + floorImages: [ + { + key: "riverside_house_floor", + position: Vec.create(0, 0) + }, + ], + ceilingImages: [{ + key: "riverside_house_ceiling", + position: Vec.create(-1.62, -2.5), + }], + obstacles: [ + { + idString: "slide_door", + position: Vec.create(15.15, -15.4), + rotation: 1 + }, + { + idString: "slide_door", + position: Vec.create(-12, 14.6), + rotation: 2 + }, + { + idString: "riverside_house_wall_exterior", + position: Vec.create(-8.5, -8.9), + rotation: 4 + }, + { + idString: "window", + position: Vec.create(-30.95, -9), + rotation: 0 + }, + { + idString: "small_drawer", + position: Vec.create(-26, -26.9), + rotation: 0 + }, + { + idString: "gun_mount_maul", + position: Vec.create(-28, -19), + rotation: 1 + }, + { + idString: "large_drawer", + position: Vec.create(-23, 9.7), + rotation: 2 + }, + { + idString: "table2", + position: Vec.create(-24.5, 1), + rotation: 1 + }, + { + idString: "bookshelf", + position: Vec.create(-5, 4), + rotation: 1 + }, + { + idString: { toilet: 2, used_toilet: 1 }, + position: Vec.create(10, 8.9), + rotation: 2 + }, + { + idString: "bathtub", + position: Vec.create(3, 6.5), + rotation: 2 + }, + { + idString: "fireplace", + position: Vec.create(-11.9, -25.9), + rotation: 1 + }, + { + idString: "bed2", + position: Vec.create(5.2, -27.5), + rotation: 3 + }, + { + idString: "riverside_house_wall", + position: Vec.create(-1.1, -6.5), + rotation: 3 + }, + { + idString: "riverside_house_wall_3", + position: Vec.create(2.5, -6.5), + rotation: 3 + }, + { + idString: "riverside_house_wall_2", + position: Vec.create(-1.1, 3.95), + rotation: 2 + }, + { + idString: "door", + position: Vec.create(9.15, -6.5), + rotation: 2 + }, + { + idString: "box", + position: Vec.create(19, 13.5), + rotation: 2 + }, + { + idString: "box", + position: Vec.create(22, 19), + rotation: 2 + }, + ] + }, { idString: "crane", name: "Crane", diff --git a/common/src/definitions/obstacles.ts b/common/src/definitions/obstacles.ts index 318bd3354d..b4fe914712 100644 --- a/common/src/definitions/obstacles.ts +++ b/common/src/definitions/obstacles.ts @@ -844,6 +844,27 @@ export const Obstacles = ObjectDefinitions.create()( particle: "furniture_particle" } }, + { + idString: "slide_door", + name: "slide_Door", + material: "wood", + health: 120, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 1 + }, + hitbox: RectangleHitbox.fromRect(10.15, 1.6, Vec.create(-0.44, 0)), + rotationMode: RotationMode.Limited, + noResidue: true, + role: ObstacleSpecialRoles.Door, + hingeOffset: Vec.create(-5.5, 0), + operationStyle: "slide", + zIndex: ZIndexes.ObstaclesLayer3, + frames: { + particle: "furniture_particle" + } + }, { idString: "vault_door", name: "Vault Door", @@ -959,6 +980,26 @@ export const Obstacles = ObjectDefinitions.create()( hitbox: RectangleHitbox.fromRect(6.85, 15.4, Vec.create(-0.3, 0)), rotationMode: RotationMode.Limited }, + { + idString: "fireplace", + name: "fireplace", + material: "metal", + health: 100, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 0.9 + }, + hideOnMap: true, + hitbox: new HitboxGroup( + RectangleHitbox.fromRect(9.5, 13.5, Vec.create(0, -1)), + new CircleHitbox(3, Vec.create(0, 5.35)), + + ), + explosion: "barrel_explosion", + rotationMode: RotationMode.Limited + + }, { idString: "tv", name: "TV", @@ -996,6 +1037,49 @@ export const Obstacles = ObjectDefinitions.create()( zIndex: ZIndexes.ObstaclesLayer3, noCollisions: true }, + { + idString: "table2", + name: "Table2", + material: "wood", + health: 100, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 0.9 + }, + hideOnMap: true, + hitbox: RectangleHitbox.fromRect(9, 7.7), + rotationMode: RotationMode.Limited, + frames: { + particle: "furniture_particle" + }, + zIndex: ZIndexes.ObstaclesLayer3, + noCollisions: true + }, + { + idString: "bathtub", + name: "bathtub", + material: "porcelain", + health: 100, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 0.9 + }, + hideOnMap: true, + hitbox: new HitboxGroup( + RectangleHitbox.fromRect(5.8, 10, Vec.create(0, -1.5)), + new CircleHitbox(2.65, Vec.create(0, 3.7)), + + ), + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Always, + hasLoot: true, + frames: { + particle: "porta_potty_toilet_particle", + residue: "porta_potty_toilet_residue" + } + }, { idString: "green_house_large_table", name: "Green House Large Table", @@ -1123,6 +1207,66 @@ export const Obstacles = ObjectDefinitions.create()( particle: "furniture_particle" } }, + { + idString: "riverside_house_wall", + name: "riverside_house_wall", + material: "wood", + health: 250, + hideOnMap: true, + hitbox: RectangleHitbox.fromRect(2.3, 2.3), + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Never, + reflectBullets: true, + frames: { + particle: "wall_particle" + } + }, + { + idString: "riverside_house_wall_2", + name: "riverside_house_wall_2", + material: "wood", + health: 250, + hideOnMap: true, + hitbox: RectangleHitbox.fromRect(1.65, 18.5), + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Never, + reflectBullets: true, + frames: { + particle: "wall_particle" + } + }, + { + idString: "riverside_house_wall_3", + name: "riverside_house_wall_3", + material: "wood", + health: 250, + hideOnMap: true, + hitbox: RectangleHitbox.fromRect(1.65, 4.5), + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Never, + reflectBullets: true, + frames: { + particle: "wall_particle" + } + }, + { + idString: "bed2", + name: "Bed2", + material: "wood", + health: 100, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 0.9 + }, + hideOnMap: true, + hitbox: RectangleHitbox.fromRect(5.6, 16), + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Always, + frames: { + particle: "furniture_particle" + } + }, { idString: "bunk_bed", name: "Bunk Bed", @@ -1196,6 +1340,51 @@ export const Obstacles = ObjectDefinitions.create()( residue: "porta_potty_toilet_residue" } }, + { + idString: "riverside_house_wall_exterior", + name: "riverside_house_wall_exterior", + material: "wood", + indestructible: true, + reflectBullets: false, + health: 1000, + noResidue: true, + scale: { + spawnMin: 1, + spawnMax: 1, + destroy: 0.9 + }, + hideOnMap: true, + hitbox: new HitboxGroup( + RectangleHitbox.fromRect(22.3, 1.9, Vec.create(12.9, 23.3)), + RectangleHitbox.fromRect(1.9, 25, Vec.create(23.5, 11.5)), + RectangleHitbox.fromRect(1.9, 13.3, Vec.create(23.5, -17.8)), + RectangleHitbox.fromRect(14.9, 1.9, Vec.create(-15.3, 23.3)), + RectangleHitbox.fromRect(45.75, 1.9, Vec.create(0, -23.2)), + RectangleHitbox.fromRect(1.9, 18, Vec.create(-22, 13.8)), + RectangleHitbox.fromRect(1.9, 18, Vec.create(-22, -13.8)), + RectangleHitbox.fromRect(1.6, 8.5, Vec.create(-13.7, 28.5)), + RectangleHitbox.fromRect(2.3, 2.3, Vec.create(-13.7, 34)), + RectangleHitbox.fromRect(4.5, 1.3, Vec.create(-10.3, 34)), + RectangleHitbox.fromRect(4.5, 1.3, Vec.create(3.7, 34)), + RectangleHitbox.fromRect(2.3, 2.3, Vec.create(7.3, 34)), + RectangleHitbox.fromRect(24.78, 1.3, Vec.create(20.8, 34)), + RectangleHitbox.fromRect(2.3, 2.3, Vec.create(34.4, 34)), + RectangleHitbox.fromRect(1.6, 27.8, Vec.create(34.4, 19.4)), + RectangleHitbox.fromRect(2.3, 2.3, Vec.create(34.4, 4.2)), + RectangleHitbox.fromRect(1.3, 4.5, Vec.create(34.4, 1.1)), + RectangleHitbox.fromRect(1.3, 4.5, Vec.create(34.4, -13.5)), + RectangleHitbox.fromRect(2.3, 2.3, Vec.create(34.4, -17)), + RectangleHitbox.fromRect(8.8, 1.6, Vec.create(28.7, -16.8)), + + ), + + rotationMode: RotationMode.Limited, + allowFlyover: FlyoverPref.Never, + role: ObstacleSpecialRoles.Wall, + frames: { + particle: "furniture_particle" + } + }, { idString: "porta_potty_back_wall", name: "Porta Potty Back Wall", diff --git a/server/src/data/lootTables.ts b/server/src/data/lootTables.ts index 8f7674425a..b5890c2a57 100644 --- a/server/src/data/lootTables.ts +++ b/server/src/data/lootTables.ts @@ -260,6 +260,15 @@ export const LootTables: Record = { { item: "basic_outfit", weight: 0.001 } ] }, + bathtub: { + min: 2, + max: 3, + loot: [ + { tier: "healing_items", weight: 3 }, + { tier: "scopes", weight: 0.1 }, + { tier: "guns", weight: 0.05 } + ] + }, toilet: { min: 2, max: 3, @@ -269,6 +278,7 @@ export const LootTables: Record = { { tier: "guns", weight: 0.05 } ] }, + used_toilet: { min: 2, max: 3, diff --git a/server/src/data/maps.ts b/server/src/data/maps.ts index 3526274446..f2165463ca 100644 --- a/server/src/data/maps.ts +++ b/server/src/data/maps.ts @@ -72,6 +72,7 @@ const maps = { green_house: 2, mobile_home: 9, porta_potty: 12, + riverside_house: 5, container_3: 2, container_4: 2, container_5: 2,