Merge pull request #14245 from Heroman3003/firework-stuff

Adds fireworks and their launchers
This commit is contained in:
Casey
2022-12-25 21:04:31 -05:00
committed by GitHub
17 changed files with 518 additions and 18 deletions
+2
View File
@@ -13,6 +13,8 @@
#define WEATHER_ASH_STORM "ash storm" // Ripped from TG, like the above. Less harmless.
#define WEATHER_ASH_STORM_SAFE "light ash storm" //Safe version of the ash storm. Dimmer.
#define WEATHER_FALLOUT "fallout" // Modified emberfall, actually harmful. Admin only.
#define WEATHER_FALLOUT_TEMP "short-term fallout" // Nuclear fallout that actually ends. Firework-only
#define WEATHER_CONFETTI "confetti" // Firework-only
#define MOON_PHASE_NEW_MOON "new moon"
#define MOON_PHASE_WAXING_CRESCENT "waxing crescent"
+15
View File
@@ -652,6 +652,21 @@
message_admins(log)
log_admin(log)
/datum/admins/proc/toggle_firework_override()
set category = "Fun"
set name = "Toggle Weather Firework Override"
set desc = "Toggles ability for weather fireworks to affect weather on planet of choice."
if(!check_rights(R_DEBUG))
return
var/datum/planet/planet = tgui_input_list(usr, "Which planet do you want to toggle firework effects on?", "Change Weather", SSplanets.planets)
if(istype(planet) && planet.weather_holder)
planet.weather_holder.firework_override = !(planet.weather_holder.firework_override)
var/log = "[key_name(src)] toggled [planet.name]'s firework override to [planet.weather_holder.firework_override ? "on" : "off"]."
message_admins(log)
log_admin(log)
/datum/admins/proc/change_time()
set category = "Debug"
set name = "Change Planet Time"
+124
View File
@@ -0,0 +1,124 @@
/obj/machinery/firework_launcher
name = "firework launcher"
desc = "A machine for launching fireworks of varying practicality."
icon = 'icons/obj/machines/firework_launcher.dmi'
icon_state = "launcher01"
density = TRUE
anchored = TRUE
circuit = /obj/item/weapon/circuitboard/firework_launcher
var/obj/item/weapon/firework_star/loaded_star
var/last_launch
var/launch_cooldown = 5 MINUTES
/obj/machinery/firework_launcher/Initialize()
. = ..()
default_apply_parts()
last_launch = world.time // Prevents cheesing cooldown by deconstructing and reconstructing
update_icon()
/obj/machinery/firework_launcher/RefreshParts()
launch_cooldown = 5 MINUTES
var/rating = 0
for(var/obj/item/weapon/stock_parts/micro_laser/laser in component_parts)
rating += laser.rating - 1
launch_cooldown = max(0, (launch_cooldown - ((rating*30) SECONDS))) // For every part tier above 1 on the two lasers, reduce cooldown by 30 seconds. 1 minute cooldown on the tier 5 parts, 3 minutes on tier 3.
. = ..()
/obj/machinery/firework_launcher/update_icon()
icon_state = "launcher[loaded_star ? "1" : "0"][anchored ? "1" : "0"][panel_open ? "_open" : ""]"
/obj/machinery/firework_launcher/attackby(var/obj/item/O, var/mob/user)
if(default_deconstruction_screwdriver(user, O))
update_icon()
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
if(default_unfasten_wrench(user, O, 20))
update_icon()
return
if(istype(O, /obj/item/weapon/firework_star))
loaded_star = O
user.drop_item()
O.forceMove(src)
to_chat(user, "<span class='notice'>You insert the firework star into the launcher.</span>")
add_fingerprint(user)
update_icon()
return
return ..()
/obj/machinery/firework_launcher/verb/eject()
set category = "Object"
set name = "Eject Firework Star"
set src in oview(1)
var/mob/living/user = usr
if(!user || user.stat != 0)
return
if(!loaded_star)
to_chat(user, "<span class='notice'>There is no firework star loaded in the launcher.</span>")
return
else
loaded_star.forceMove(get_turf(src))
loaded_star = null
add_fingerprint(user)
update_icon()
/obj/machinery/firework_launcher/attack_hand(mob/user) // Maybe this proc could be better as entirely its own proc, called from attack_hand, but also I don't really see the point
if(panel_open)
to_chat(user, "<span class='warning'>Close the panel first!</span>")
return
if(!loaded_star)
to_chat(user, "<span class='notice'>There is no firework star loaded in the launcher.</span>")
return
if((world.time - last_launch) <= launch_cooldown)
to_chat(user, "<span class='notice'>The launcher is still re-priming for launch.</span>")
return
if(!anchored)
to_chat(user, "<span class='warning'>Launcher must be firmly secured to the ground before firework can be launched!</span>")
return
var/datum/planet/P = get_planet()
if(!P || !(P.weather_holder)) // There are potential cases of being outside but not on planet. And checking whether planet has weather at all is more sanity thing than anything.
to_chat(user, "<span class='warning'>Launcher beeps as its safeties seem to prevent launch in the current location.</span>")
return
var/datum/weather_holder/WH = P.weather_holder
if(WH.firework_override && istype(loaded_star, /obj/item/weapon/firework_star/weather)) // Enable weather-based events to not be ruined
to_chat(user, "<span class='warning'>Launcher beeps as it seems some interference is preventing launch of this type of firework.</span>")
return
to_chat(user, "<span class='notice'>You launch the firework!</span>")
playsound(get_turf(src), 'sound/weapons/rpg.ogg', 75, 1)
loaded_star.trigger_firework(WH)
qdel(loaded_star)
loaded_star = null
last_launch = world.time
add_fingerprint(user)
update_icon()
flick("launcher_launch", src)
/obj/machinery/firework_launcher/proc/get_planet()
var/turf/T = get_turf(src)
if(!T)
return
if(!T.is_outdoors())
return
var/datum/planet/P = SSplanets.z_to_planet[T.z]
if(!P)
return
return P
+142
View File
@@ -0,0 +1,142 @@
#define T_FIREWORK_WEATHER_STAR(name) "weather firework star (" + (name) + ")"
/obj/item/weapon/firework_star
icon = 'icons/obj/firework_stars.dmi'
name = "firework star"
desc = "A very tightly compacted ball of chemicals for use with firework launcher."
icon_state = "star"
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 1)
/obj/item/weapon/firework_star/proc/trigger_firework(var/datum/weather_holder/w_holder)
return
/obj/item/weapon/firework_star/weather
name = "weather firework star"
desc = "A firework star designed to alter a weather, rather than put on a show."
var/weather_type
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 2)
/obj/item/weapon/firework_star/weather/trigger_firework(var/datum/weather_holder/w_holder)
if(!w_holder) // Sanity
return
if(w_holder.firework_override) // Make sure weather-based events can't be interfered with
return
if(weather_type && (weather_type in w_holder.allowed_weather_types))
w_holder.message_all_outdoor_players("Something seems to flash in the sky, as weather suddenly shifts!")
w_holder.change_weather(weather_type)
w_holder.rebuild_forecast()
/obj/item/weapon/firework_star/weather/clear
name = T_FIREWORK_WEATHER_STAR("CLEAR SKY")
weather_type = WEATHER_CLEAR
icon_state = "clear"
/obj/item/weapon/firework_star/weather/overcast
name = T_FIREWORK_WEATHER_STAR("CLOUDY")
weather_type = WEATHER_OVERCAST
icon_state = "cloudy"
/obj/item/weapon/firework_star/weather/rain
name = T_FIREWORK_WEATHER_STAR("RAIN")
weather_type = WEATHER_RAIN
icon_state = "rain"
/obj/item/weapon/firework_star/weather/storm
name = T_FIREWORK_WEATHER_STAR("STORM")
weather_type = WEATHER_STORM
icon_state = "rain"
/obj/item/weapon/firework_star/weather/light_snow
name = T_FIREWORK_WEATHER_STAR("SNOW - LIGHT")
weather_type = WEATHER_LIGHT_SNOW
icon_state = "snow"
/obj/item/weapon/firework_star/weather/snow
name = T_FIREWORK_WEATHER_STAR("SNOW - MEDIUM")
weather_type = WEATHER_SNOW
icon_state = "snow"
/obj/item/weapon/firework_star/weather/blizzard
name = T_FIREWORK_WEATHER_STAR("SNOW - HEAVY")
weather_type = WEATHER_BLIZZARD
icon_state = "snow"
/obj/item/weapon/firework_star/weather/hail
name = T_FIREWORK_WEATHER_STAR("HAIL")
weather_type = WEATHER_HAIL
icon_state = "snow"
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 2, TECH_ILLEGAL = 1)
/obj/item/weapon/firework_star/weather/fallout
name = T_FIREWORK_WEATHER_STAR("NUCLEAR")
desc = "This is the worst idea ever."
weather_type = WEATHER_FALLOUT_TEMP
icon_state = "nuclear"
origin_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 3, TECH_ILLEGAL = 5)
/obj/item/weapon/firework_star/weather/confetti
name = T_FIREWORK_WEATHER_STAR("CONFETTI")
desc = "A firework star designed to alter a weather, rather than put on a show. This one makes colorful confetti rain from the sky."
weather_type = WEATHER_CONFETTI
icon_state = "confetti"
/obj/item/weapon/firework_star/aesthetic
name = "aesthetic firework star"
desc = "A firework star designed to paint the sky with pretty lights."
var/list/firework_adjectives = list("beautiful", "pretty", "fancy", "colorful", "bright", "shimmering")
var/list/firework_colors = list("red", "orange", "yellow", "green", "cyan", "blue", "purple", "pink", "beige", "white")
/obj/item/weapon/firework_star/aesthetic/trigger_firework(var/datum/weather_holder/w_holder)
if(!w_holder)
return
w_holder.message_all_outdoor_players(get_firework_message())
/obj/item/weapon/firework_star/aesthetic/proc/get_firework_message()
return "You see a [pick(firework_adjectives)] explosion of [pick(firework_colors)] sparks in the sky!"
/obj/item/weapon/firework_star/aesthetic/configurable
name = "configurable aesthetic firework star"
desc = "A firework star designed to paint the sky with pretty lights. This one's advanced and can be configured to specific shapes or colors."
icon_state = "config"
var/current_color = "white"
var/current_shape = "Random"
var/list/firework_shapes = list("none", "Random",
"a circle", "an oval", "a triangle", "a square", "a pentagon", "a hexagon", "an octagon", "a plus sign", "an x", "a star", "a spiral", "a heart", "a teardrop",
"a smiling face", "a winking face", "a mouse", "a cat", "a dog", "a fox", "a bird", "a fish", "a lizard", "a bug", "a butterfly", "a robot", "a dragon", "a teppi", "a catslug",
"a tree", "a leaf", "a flower", "a lightning bolt", "a cloud", "a sun", "a gemstone", "a flame", "a wrench", "a beaker", "a syringe", "a pickaxe", "a pair of handcuffs", "a crown",
"a bottle", "a boat", "a spaceship",
"Nanotrasen logo", "a geometric-looking letter S", "a dodecahedron")
/obj/item/weapon/firework_star/aesthetic/configurable/attack_self(var/mob/user)
var/choice = tgui_alert(usr, "What setting do you want to adjust?", "Firework Star", list("Color", "Shape", "Nothing"))
if(src.loc != user)
return
if(choice == "Color")
var/color_choice = tgui_input_list(user, "What color would you like firework to be?", "Firework Star", firework_colors)
if(src.loc != user)
return
if(color_choice)
current_color = color_choice
if(choice == "Shape")
var/shape_choice = tgui_input_list(user, "What shape would you like firework to be?", "Firework Star", firework_shapes)
if(src.loc != user)
return
if(shape_choice)
current_shape = shape_choice
/obj/item/weapon/firework_star/aesthetic/configurable/get_firework_message()
var/temp_shape = current_shape
if(temp_shape == "Random")
var/list/shapes_copy = firework_shapes.Copy()
shapes_copy -= "Random"
temp_shape = pick(shapes_copy)
if(temp_shape == "none" || !temp_shape)
return "You see a [pick(firework_adjectives)] explosion of [current_color] sparks in the sky!"
else
return "You see a [pick(firework_adjectives)] explosion of [current_color] sparks in the sky, forming into shape of [current_shape]!"
@@ -0,0 +1,8 @@
/obj/item/weapon/circuitboard/firework_launcher
name = T_BOARD("firework launcher")
board_type = new /datum/frame/frame_types/machine
build_path = /obj/machinery/firework_launcher
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 2)
req_components = list (
/obj/item/weapon/stock_parts/micro_laser = 2
)
+35 -9
View File
@@ -111,17 +111,19 @@ var/datum/planet/virgo3b/planet_virgo3b = null
WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3b/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo3b/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo3b/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 30,
WEATHER_OVERCAST = 30,
WEATHER_LIGHT_SNOW = 20,
WEATHER_SNOW = 5,
WEATHER_BLIZZARD = 5,
WEATHER_RAIN = 5,
WEATHER_STORM = 2.5,
WEATHER_HAIL = 2.5
WEATHER_CLEAR = 60,
WEATHER_OVERCAST = 60,
WEATHER_LIGHT_SNOW = 40,
WEATHER_SNOW = 10,
WEATHER_BLIZZARD = 10,
WEATHER_RAIN = 10,
WEATHER_STORM = 5,
WEATHER_HAIL = 5
)
/datum/weather/virgo3b
@@ -550,3 +552,27 @@ var/datum/planet/virgo3b/planet_virgo3b = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo3b/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo3b/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
+27 -1
View File
@@ -131,7 +131,9 @@ var/datum/planet/virgo3c/planet_virgo3c = null
WEATHER_EMBERFALL = new /datum/weather/virgo3c/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo3c/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3c/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo3c/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo3c/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 50,
@@ -548,6 +550,30 @@ var/datum/planet/virgo3c/planet_virgo3c = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo3c/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo3c/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
/turf/unsimulated/wall/planetary/virgo3c
name = "impassable rock"
desc = "It's quite impassable"
+27 -1
View File
@@ -110,7 +110,9 @@ var/datum/planet/virgo4/planet_virgo4 = null
WEATHER_EMBERFALL = new /datum/weather/virgo4/emberfall(),
WEATHER_ASH_STORM = new /datum/weather/virgo4/ash_storm(),
WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo4/ash_storm_safe(),
WEATHER_FALLOUT = new /datum/weather/virgo4/fallout()
WEATHER_FALLOUT = new /datum/weather/virgo4/fallout(),
WEATHER_FALLOUT_TEMP = new /datum/weather/virgo4/fallout/temp(),
WEATHER_CONFETTI = new /datum/weather/virgo4/confetti()
)
roundstart_weather_chances = list(
WEATHER_CLEAR = 50,
@@ -524,6 +526,30 @@ var/datum/planet/virgo4/planet_virgo4 = null
if(T.is_outdoors())
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
/datum/weather/virgo4/fallout/temp
name = "short-term fallout"
transition_chances = list(
WEATHER_FALLOUT = 10,
WEATHER_RAIN = 50,
WEATHER_STORM = 20,
WEATHER_OVERCAST = 5
)
/datum/weather/virgo4/confetti
name = "confetti"
icon = 'icons/effects/weather_vr.dmi'
icon_state = "confetti"
transition_chances = list(
WEATHER_CLEAR = 50,
WEATHER_OVERCAST = 20,
WEATHER_CONFETTI = 5
)
observed_message = "Confetti is raining from the sky."
transition_messages = list(
"Suddenly, colorful confetti starts raining from the sky."
)
/turf/unsimulated/wall/planetary/normal/virgo4
name = "deep ocean"
alpha = 0
+3
View File
@@ -1,3 +1,6 @@
/datum/weather_holder
var/firework_override = FALSE
/datum/weather_holder/update_icon_effects()
..()
if(current_weather.icon)
@@ -169,6 +169,13 @@
build_path = /obj/item/weapon/circuitboard/machine/vitals_monitor
sort_string = "HAAF"
/datum/design/circuit/firework_launcher
name = "firework launcher"
id = "fireworklauncher"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/weapon/circuitboard/firework_launcher
sort_string = "KBAAB"
/datum/design/circuit/pointdefense
name = "point defense battery"
id = "pointdefense"
@@ -0,0 +1,112 @@
// Firework Stars
/datum/design/item/firework_star/AssembleDesignName()
name = "Firework star prototype ([item_name])"
/datum/design/item/firework_star/aesthetic
name = "aesthetic"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy."
id = "fireworkaesthetic"
req_tech = list(TECH_MATERIAL = 2)
materials = list(MAT_PLASTIC = 500, MAT_GLASS = 500)
build_path = /obj/item/weapon/firework_star/aesthetic
sort_string = "IFAAA"
/datum/design/item/firework_star/aesthetic_config
name = "aesthetic - configurable"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy. Can be modified to produce specific forms."
id = "fireworkaestheticconfig"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
materials = list(MAT_PLASTIC = 1000, MAT_GLASS = 1000)
build_path = /obj/item/weapon/firework_star/aesthetic/configurable
sort_string = "IFAAB"
/datum/design/item/firework_star/weather_clear
name = "weather - CLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky."
id = "fireworkclearsky"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_STEEL = 4000)
build_path = /obj/item/weapon/firework_star/weather/clear
sort_string = "IFABA"
/datum/design/item/firework_star/weather_overcast
name = "weather - CLOUDY"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates some clouds."
id = "fireworkcloudy"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 1000)
build_path = /obj/item/weapon/firework_star/weather/overcast
sort_string = "IFABB"
/datum/design/item/firework_star/weather_rain
name = "weather - RAIN"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates rain."
id = "fireworkrain"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 4000)
build_path = /obj/item/weapon/firework_star/weather/rain
sort_string = "IFABC"
/datum/design/item/firework_star/weather_storm
name = "weather - STORM"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a rainstorm."
id = "fireworkstorm"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_GOLD = 1000)
build_path = /obj/item/weapon/firework_star/weather/storm
sort_string = "IFABD"
/datum/design/item/firework_star/weather_light_snow
name = "weather - LIGHT SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a light snowfall."
id = "fireworklightsnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_LEAD = 2000)
build_path = /obj/item/weapon/firework_star/weather/light_snow
sort_string = "IFABE"
/datum/design/item/firework_star/weather_snow
name = "weather - MODERATE SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a moderate snowfall."
id = "fireworksnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 2000)
build_path = /obj/item/weapon/firework_star/weather/snow
sort_string = "IFABF"
/datum/design/item/firework_star/weather_blizzard
name = "weather - HEAVY SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a blizzard."
id = "fireworkblizzard"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000)
build_path = /obj/item/weapon/firework_star/weather/blizzard
sort_string = "IFABG"
/datum/design/item/firework_star/weather_hail
name = "weather - HAIL"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a hailstorm. DANGEROUS."
id = "fireworkhail"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000, MAT_PLASTEEL = 4000)
build_path = /obj/item/weapon/firework_star/weather/hail
sort_string = "IFABH"
/datum/design/item/firework_star/weather_fallout
name = "weather - NUCLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a heavy cloud of nuclear fallout. DANGEROUS."
id = "fireworkfallout"
req_tech = list(TECH_MATERIAL = 8, TECH_ENGINEERING = 6, TECH_ILLEGAL = 7)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_URANIUM = 12000)
build_path = /obj/item/weapon/firework_star/weather/fallout
sort_string = "IFABI"
/datum/design/item/firework_star/weather_confetti
name = "weather - CONFETTI"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky and rains colorful confetti from it."
id = "fireworkconfetti"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_PLASTIC = 10000, MAT_GLASS = 10000)
build_path = /obj/item/weapon/firework_star/weather/confetti
sort_string = "IFABJ"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

+6 -2
View File
@@ -208,6 +208,10 @@
},
/turf/simulated/floor/tiled,
/area/groundbase/science/robotics)
"aw" = (
/obj/machinery/firework_launcher,
/turf/simulated/floor/tiled,
/area/groundbase/science/hall)
"ax" = (
/obj/structure/closet/secure_closet/personal,
/obj/item/weapon/towel/random,
@@ -2268,7 +2272,7 @@
name = "box of measuring cups";
pixel_x = 2;
pixel_y = 3;
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup=7)
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup = 7)
},
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
@@ -23498,7 +23502,7 @@ aB
PR
lw
Vr
Vr
aw
Bl
ag
ag
+6 -5
View File
@@ -8995,6 +8995,11 @@
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/surface_one_hall)
"aoR" = (
/obj/machinery/light/small,
/obj/machinery/firework_launcher,
/turf/simulated/floor/tiled,
/area/rnd/hardstorage)
"aoS" = (
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass,
@@ -32895,10 +32900,6 @@
/obj/effect/floor_decal/corner/red/border,
/turf/simulated/floor/tiled,
/area/tether/surfacebase/security/lowerhall)
"fna" = (
/obj/machinery/light/small,
/turf/simulated/floor/tiled,
/area/rnd/hardstorage)
"fpU" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/manifold/hidden/green,
@@ -47177,7 +47178,7 @@ abn
abn
acx
afg
fna
aoR
abm
aCm
akg
+4
View File
@@ -2270,6 +2270,9 @@
#include "code\modules\examine\descriptions\weapons.dm"
#include "code\modules\ext_scripts\irc.dm"
#include "code\modules\ext_scripts\python.dm"
#include "code\modules\fireworks\firework_launcher.dm"
#include "code\modules\fireworks\firework_stars.dm"
#include "code\modules\fireworks\launcher_construction.dm"
#include "code\modules\fishing\fishing.dm"
#include "code\modules\fishing\fishing_net.dm"
#include "code\modules\fishing\fishing_rod.dm"
@@ -3747,6 +3750,7 @@
#include "code\modules\research\designs\bio_devices_vr.dm"
#include "code\modules\research\designs\circuit_assembly.dm"
#include "code\modules\research\designs\engineering.dm"
#include "code\modules\research\designs\firework_stars.dm"
#include "code\modules\research\designs\HUDs.dm"
#include "code\modules\research\designs\HUDs_vr.dm"
#include "code\modules\research\designs\implants.dm"