diff --git a/code/datums/uplink/tools.dm b/code/datums/uplink/tools.dm
index 7a02e16990..51fd7d51fc 100644
--- a/code/datums/uplink/tools.dm
+++ b/code/datums/uplink/tools.dm
@@ -16,9 +16,26 @@
/datum/uplink_item/item/tools/plastique
name = "C-4 (Destroys walls)"
- item_cost = 20
+ item_cost = 10
path = /obj/item/weapon/plastique
+/datum/uplink_item/item/tools/packagebomb
+ name = "Package Bomb (Small)"
+ item_cost = 20
+ path = /obj/item/weapon/storage/box/syndie_kit/demolitions
+
+/datum/uplink_item/item/tools/packagebomb/large
+ name = "Package Bomb (Large)"
+ item_cost = 40
+ path = /obj/item/weapon/storage/box/syndie_kit/demolitions_heavy
+
+/*
+/datum/uplink_item/item/tools/packagebomb/huge
+ name = "Package Bomb (Huge)
+ item_cost = 60
+ path = /obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy
+*/
+
/datum/uplink_item/item/tools/encryptionkey_radio
name = "Encrypted Radio Channel Key"
item_cost = 20
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 4e427c8f6e..76b50ab608 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -265,4 +265,19 @@
new /obj/item/clothing/suit/armor/combat(src)
new /obj/item/clothing/gloves/arm_guard/combat(src)
new /obj/item/clothing/shoes/leg_guard/combat(src)
- return
\ No newline at end of file
+ return
+
+/obj/item/weapon/storage/box/syndie_kit/demolitions/New()
+ ..()
+ new /obj/item/weapon/syndie/c4explosive(src)
+ new /obj/item/weapon/screwdriver(src)
+
+/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy/New()
+ ..()
+ new /obj/item/weapon/syndie/c4explosive/heavy(src)
+ new /obj/item/weapon/screwdriver(src)
+
+/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy/New()
+ ..()
+ new /obj/item/weapon/syndie/c4explosive/heavy/super_heavy(src)
+ new /obj/item/weapon/screwdriver(src)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm
index 56cbda16ff..fb9aa3eb41 100644
--- a/code/game/objects/items/weapons/syndie.dm
+++ b/code/game/objects/items/weapons/syndie.dm
@@ -23,62 +23,70 @@
power = 2
size = "large"
+/obj/item/weapon/syndie/c4explosive/heavy/super_heavy
+ name = "large-sized package"
+ desc = "A mysterious package, it's quite exceptionally heavy."
+ power = 3
+
/obj/item/weapon/syndie/c4explosive/New()
var/K = rand(1,2000)
K = md5(num2text(K)+name)
K = copytext(K,1,7)
- src.desc += "\n You see [K] engraved on \the [src]."
- var/obj/item/weapon/syndie/c4detonator/detonator = new(src.loc)
- detonator.desc += "\n You see [K] engraved on the lighter."
+ desc += "\n You see [K] engraved on \the [src]."
+ var/obj/item/weapon/flame/lighter/zippo/c4detonator/detonator = new(src.loc)
+ detonator.desc += " You see [K] engraved on the lighter."
detonator.bomb = src
/obj/item/weapon/syndie/c4explosive/proc/detonate()
icon_state = "c-4[size]_1"
- spawn(50)
- explosion(get_turf(src), power, power*2, power*3, power*4, power*4)
- for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
- var/turf/simulated/wall/T = get_step(src,dirn)
- if(locate(/obj/machinery/door/airlock) in T)
- var/obj/machinery/door/airlock/D = locate() in T
- if(D.density)
- D.open()
- if(istype(T,/turf/simulated/wall))
- T.dismantle_wall(1)
- qdel(src)
+ explosion(get_turf(src), power, power*2, power*3, power*4, power*5)
+ for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
+ var/turf/simulated/wall/T = get_step(src,dirn)
+ if(locate(/obj/machinery/door/airlock) in T)
+ var/obj/machinery/door/airlock/D = locate() in T
+ if(D.density)
+ D.open()
+ if(istype(T,/turf/simulated/wall))
+ T.dismantle_wall(1)
+ qdel(src)
/*Detonator, disguised as a lighter*/
/*Click it when closed to open, when open to bring up a prompt asking you if you want to close it or press the button.*/
-/obj/item/weapon/syndie/c4detonator
- icon_state = "c-4detonator_0"
- item_state = "zippo"
- name = "\improper Zippo lighter" /*Sneaky, thanks Dreyfus.*/
- desc = "The zippo."
- w_class = 1
-
+/obj/item/weapon/flame/lighter/zippo/c4detonator
+ var/detonator_mode = 0
var/obj/item/weapon/syndie/c4explosive/bomb
- var/pr_open = 0 /*Is the "What do you want to do?" prompt open?*/
-/obj/item/weapon/syndie/c4detonator/attack_self(mob/user as mob)
- switch(src.icon_state)
- if("c-4detonator_0")
- src.icon_state = "c-4detonator_1"
- user << "You flick open the lighter."
+/obj/item/weapon/flame/lighter/zippo/c4detonator/attack_self(mob/user as mob)
+ if(!detonator_mode)
+ ..()
- if("c-4detonator_1")
- if(!pr_open)
- pr_open = 1
- switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter."))
- if("Press the button.")
- user << "You press the button."
- flick("c-4detonator_click", src)
- if(src.bomb)
- src.bomb.detonate()
- log_admin("[key_name(user)] has triggered [src.bomb] with [src].")
- message_admins("[key_name_admin(user)] has triggered [src.bomb] with [src].")
+ else if(!lit)
+ base_state = icon_state
+ lit = 1
+ icon_state = "[base_state]1"
+ //item_state = "[base_state]on"
+ user.visible_message("Without even breaking stride, \the [user] flips open \the [src] in one smooth movement.")
- if("Close the lighter.")
- src.icon_state = "c-4detonator_0"
- user << "You close the lighter."
- pr_open = 0
+ else if(lit && detonator_mode)
+ switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter."))
+ if("Press the button.")
+ user << "You press the button."
+ icon_state = "[base_state]click"
+ if(src.bomb)
+ src.bomb.detonate()
+ log_admin("[key_name(user)] has triggered [src.bomb] with [src].")
+ message_admins("[key_name_admin(user)] has triggered [src.bomb] with [src].")
+
+ if("Close the lighter.")
+ lit = 0
+ icon_state = "[base_state]"
+ //item_state = "[base_state]"
+ user.visible_message("You hear a quiet click, as \the [user] shuts off \the [src] without even looking at what they're doing.")
+
+
+/obj/item/weapon/flame/lighter/zippo/c4detonator/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/screwdriver))
+ detonator_mode = !detonator_mode
+ user << "You unscrew the top panel of \the [src] revealing a button."
\ No newline at end of file
diff --git a/html/changelogs/Yoshax - PackageBombs.yml b/html/changelogs/Yoshax - PackageBombs.yml
new file mode 100644
index 0000000000..b2da01864e
--- /dev/null
+++ b/html/changelogs/Yoshax - PackageBombs.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: N3X15
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "A new item has been added to the uplink. Package bombs. These come in two variants, small and big, which cost 20 TC and 40 TC respectively. These come in a box with an explosive, a disguised detonator and a screwdriver. The use the detonator you muse apply the screwdriver to configure it into detonator mode. This must be done when it is closed."
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 37be87b1ef..b8ee96c1d9 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/polaris.dme b/polaris.dme
index 4c0a8079c6..939f94bbaa 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -827,6 +827,7 @@
#include "code\game\objects\items\weapons\stunbaton.dm"
#include "code\game\objects\items\weapons\surgery_tools.dm"
#include "code\game\objects\items\weapons\swords_axes_etc.dm"
+#include "code\game\objects\items\weapons\syndie.dm"
#include "code\game\objects\items\weapons\tape.dm"
#include "code\game\objects\items\weapons\teleportation.dm"
#include "code\game\objects\items\weapons\tools.dm"