diff --git a/client/public/img/game/shared/projectiles/proj_satchel.svg b/client/public/img/game/shared/projectiles/proj_satchel.svg
new file mode 100644
index 0000000000..46137806d8
--- /dev/null
+++ b/client/public/img/game/shared/projectiles/proj_satchel.svg
@@ -0,0 +1,430 @@
+
+
+
+
diff --git a/client/public/img/game/shared/weapons/satchel.svg b/client/public/img/game/shared/weapons/satchel.svg
new file mode 100644
index 0000000000..46137806d8
--- /dev/null
+++ b/client/public/img/game/shared/weapons/satchel.svg
@@ -0,0 +1,430 @@
+
+
+
+
diff --git a/common/src/definitions/items/throwables.ts b/common/src/definitions/items/throwables.ts
index f75f7a997f..a58f8c808c 100644
--- a/common/src/definitions/items/throwables.ts
+++ b/common/src/definitions/items/throwables.ts
@@ -215,5 +215,39 @@ export const Throwables = new InventoryItemDefinitions([
rightFist: Vec.create(4, 2.15)
}
}
- }
+ },
+ {
+ idString: "satchel",
+ name: "Satchel Charge",
+ itemType: ItemType.Throwable,
+ cookable: false,
+ fuseTime: 8500,
+ cookTime: 150,
+ throwTime: 150,
+ speedMultiplier: 1,
+ cookSpeedMultiplier: 0.7,
+ impactDamage: 1,
+ obstacleMultiplier: 20,
+ hitboxRadius: 1,
+ image: {
+ position: Vec.create(60, 43),
+ angle: 60,
+ zIndex: 5
+ },
+ detonation: {
+ explosion: "super_barrel_explosion"
+ },
+ animation: {
+ liveImage: "proj_satchel",
+ cook: {
+ cookingImage: "proj_frag_nopin",
+ leftFist: Vec.create(2.5, 0),
+ rightFist: Vec.create(-0.5, 2.15)
+ },
+ throw: {
+ leftFist: Vec.create(1.9, -1.75),
+ rightFist: Vec.create(4, 2.15)
+ }
+ }
+ },
]);
diff --git a/server/src/data/lootTables.ts b/server/src/data/lootTables.ts
index 2a9f7f08a1..2c3d6bc740 100644
--- a/server/src/data/lootTables.ts
+++ b/server/src/data/lootTables.ts
@@ -924,7 +924,8 @@ export const LootTables: Record> = {
{ item: NullString, weight: 0.5 }
],
[
- { item: "frag_grenade", count: 3, weight: 2 },
+ { item: "frag_grenade", count: 3, weight: 3 },
+ { item: "satchel", count: 2, weight: 1 },
{ item: NullString, weight: 1 }
]
],