diff --git a/code/datums/uplink_items/uplink_nuclear.dm b/code/datums/uplink_items/uplink_nuclear.dm index 66cc4fc68d6..eb0021a5842 100644 --- a/code/datums/uplink_items/uplink_nuclear.dm +++ b/code/datums/uplink_items/uplink_nuclear.dm @@ -680,3 +680,23 @@ reference = "DEPCN" excludefrom = list() uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + +// --------------------------------- +// NUKIE ONLY POINTLESS BADASSERY +// --------------------------------- + +/datum/uplink_item/badass/confettidrum + name = "Bulldog - 12g party Magazine" + desc = "An alternative 12-round confetti magazine for use in the Bulldog shotgun. Why? Because we can - Honkco Industries" + item = /obj/item/ammo_box/magazine/m12g/confetti + reference = "12CS" + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + cost = 1 + +/datum/uplink_item/badass/confetti_party_pack + name = "Nuclear party pack" + desc = "A dufflebag filled with hilarious equipment! Comes with free confetti grenades and a cap gun!" + item = /obj/item/storage/backpack/duffel/syndie/party + reference = "SPP" + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + cost = 10 diff --git a/code/game/objects/items/weapons/grenades/confetti.dm b/code/game/objects/items/weapons/grenades/confetti.dm index c0ef064ccee..6165f08488f 100644 --- a/code/game/objects/items/weapons/grenades/confetti.dm +++ b/code/game/objects/items/weapons/grenades/confetti.dm @@ -2,15 +2,15 @@ name = "party grenade" desc = "Party time!" icon_state = "confetti" - var/spawner_type = /obj/effect/decal/cleanable/confetti /obj/item/grenade/confetti/prime() - var/turf/T = get_turf(src) - playsound(T, 'sound/effects/confetti_partywhistle.ogg', 100, 1) - for(var/i in 1 to 20) //20 confettis. Yes. - var/atom/movable/x = new spawner_type - x.loc = T - for(var/j in 1 to rand(1, 4)) - step(x, pick(NORTH,SOUTH,EAST,WEST)) - + confettisize(src, 20, 4) //20 confettis. Yes. qdel(src) + +/proc/confettisize(turf/simulated/T, volume, range) + var/spawner_type = /obj/effect/decal/cleanable/confetti + playsound(T, 'sound/effects/confetti_partywhistle.ogg', 70, 1) + for(var/i in 1 to volume) + var/atom/movable/x = new spawner_type(T) + for(var/j in 1 to rand(1, range)) + step(x, pick(NORTH,SOUTH,EAST,WEST)) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index bf10509cec9..84cc2e3c396 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -125,6 +125,11 @@ new /obj/item/instrument/bikehorn(src) new /obj/item/bikehorn(src) new /obj/item/dnainjector/comic(src) + for(var/i in 1 to 10) + new /obj/item/ammo_box/magazine/m12g/confetti(src) + for(var/i in 1 to 5) + new /obj/item/grenade/confetti(src) + new /obj/item/gun/projectile/revolver/capgun(src) /obj/item/storage/backpack/mime name = "Parcel Parceaux" @@ -592,6 +597,16 @@ new /obj/item/circular_saw(src) new /obj/item/surgicaldrill(src) +/obj/item/storage/backpack/duffel/syndie/party + desc = "A large duffel bag, packed to the brim with hilarious equipment." + +/obj/item/storage/backpack/duffel/syndie/party/populate_contents() + for(var/i in 1 to 10) + new /obj/item/ammo_box/magazine/m12g/confetti(src) + for(var/i in 1 to 5) + new /obj/item/grenade/confetti(src) + new /obj/item/gun/projectile/revolver/capgun(src) + #define NANNY_MAX_VALUE 7 #define NANNY_MIN_VALUE 6 diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 15feb4296cb..7a59fab5977 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -423,6 +423,16 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO +/datum/crafting_recipe/confettishot + name = "Confetti Shot" + result = list(/obj/item/ammo_casing/shotgun/confetti) + reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, + /datum/reagent/confetti = 10) + tools = list(TOOL_SCREWDRIVER) + time = 5 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + /datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = list(/obj/item/gun/projectile/revolver/doublebarrel/improvised) diff --git a/code/modules/projectiles/ammunition/ammo_boxes.dm b/code/modules/projectiles/ammunition/ammo_boxes.dm index b14a742b238..a2be11cee53 100644 --- a/code/modules/projectiles/ammunition/ammo_boxes.dm +++ b/code/modules/projectiles/ammunition/ammo_boxes.dm @@ -111,6 +111,12 @@ icon_state = "buckloader" ammo_type = /obj/item/ammo_casing/shotgun/buckshot +/obj/item/ammo_box/shotgun/confetti + name = "shotgun speedloader (Confetti)" + icon_state = "partyloader" + ammo_type = /obj/item/ammo_casing/shotgun/confetti + multi_sprite_step = 1 + /obj/item/ammo_box/shotgun/dragonsbreath name = "shotgun speedloader (Dragonsbreath)" icon_state = "dragonsbreathloader" diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index dbeb03878b8..fa2f62870f5 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -300,6 +300,12 @@ muzzle_flash_range = MUZZLE_FLASH_RANGE_NORMAL materials = list(MAT_METAL=250) +/obj/item/ammo_casing/shotgun/confetti + name = "confettishot" + desc = "It's party time!" + icon_state = "partyshell" + projectile_type = /obj/item/projectile/bullet/confetti + /obj/item/ammo_casing/a556 desc = "A 5.56mm bullet casing." caliber = "a556" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 0838ace62e5..16c46758527 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -489,6 +489,11 @@ icon_state = "m12gXlDb" ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath +/obj/item/ammo_box/magazine/m12g/confetti + name = "\improper XL shotgun magazine (12g confetti)" + icon_state = "party_drum" + ammo_type = /obj/item/ammo_casing/shotgun/confetti + /obj/item/ammo_box/magazine/toy name = "foam force META magazine" ammo_type = /obj/item/ammo_casing/caseless/foam_dart diff --git a/code/modules/projectiles/projectile/special_projectiles.dm b/code/modules/projectiles/projectile/special_projectiles.dm index 896b4f44ed9..5559f70e878 100644 --- a/code/modules/projectiles/projectile/special_projectiles.dm +++ b/code/modules/projectiles/projectile/special_projectiles.dm @@ -219,6 +219,19 @@ explosion(target, -1, 0, 1) return TRUE +/obj/item/projectile/bullet/confetti + name = "confetti shot" + damage = 0 + range = 3 + +/obj/item/projectile/bullet/confetti/on_range() + confettisize(src, 7, 3) + ..() + +/obj/item/projectile/bullet/confetti/on_hit(atom/target, blocked, hit_zone) + confettisize(src, 7, 3) + ..() + /obj/item/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index a8703930ed5..9960656e37e 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -465,3 +465,14 @@ M.adjust_fire_stacks(volume / 5) return ..() + +/datum/reagent/confetti + name = "Confetti" + id = "confetti" + description = "Pure, liquid confetti. Explodes into a colorful bomb when exposed to heat." + color = "#500064" // rgb: 80, 0, 100 + taste_description = "the tears of janitors" + +/datum/reagent/confetti/reaction_turf(turf/T, volume) + var/confetti = /obj/effect/decal/cleanable/confetti + new confetti(T) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 768689ee4db..00b1f7ac9ae 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -389,3 +389,26 @@ result = "thermite" required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) result_amount = 3 + +/datum/chemical_reaction/confetti + name = "Confetti" + id = "confetti" + result = "confetti" + required_reagents = list("cyanide" = 1, "colorful_reagent" = 1) + result_amount = 5 + mix_message = "The mixture congeals into a dry powder." + +/datum/chemical_reaction/confetti/confettibomb + name = "confettibomb" + id = "confettibomb" + required_reagents = list("confetti" = 1) + min_temp = T0C + 300 + result = null + mix_sound = 'sound/effects/confetti_partywhistle.ogg' + mix_message = "The powder starts vibrating quickly!" + +/datum/chemical_reaction/confetti/confettibomb/on_reaction(datum/reagents/holder, created_volume) + var/turf/T = get_turf(holder.my_atom) + var/confetti_size = CEILING(created_volume / 10, 1) + var/confetti_range = CEILING(confetti_size / 2, 1) + confettisize(T, confetti_size, confetti_range) diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 65f302bdfee..fb1f6459b40 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ