mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
[MIRROR] Adds a multi-dimensional bomb payload to the black market. (#26663)
* Adds a multi-dimensional bomb payload to the black market. (#81562) ## About The Pull Request This PR adds a !!!FUN!!! bomb payload to the blackmarket, which, upon detonation, transmutates all terrain in a range like the dimensional anomaly would. You can also select the dimensional theme to use by using it in your hand. I believe however, this thing should cost a fuckton to get and only show up occasionally. 8k to 10k was my original idea, but I think that's perhaps not high enough given its flagrant potential. Perhaps I should also make it so the more dangerous themes yield a shorter range than others. Suggestions are welcome. Screenshot of what happens when you don't set the theme:  This PR also turns dimension themes into singletons so we access them more easily. Nothing to write home about. ## Why It's Good For The Game The black market could always use some extra thingy or two anyway, and this thing could either be a source of emergent gameplay, or a recipe for a disaster. Perhaps second to the Big Slappy for how funny it could be. ## Changelog 🆑 add: Added a multi-dimensional bomb payload to the black market. It's very expensive. /🆑 * Adds a multi-dimensional bomb payload to the black market. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
@@ -21,6 +21,11 @@
|
||||
animate(src, transform = matrix()*0.85, time = 3, loop = -1)
|
||||
animate(transform = matrix(), time = 3, loop = -1)
|
||||
|
||||
/obj/effect/anomaly/dimensional/Destroy()
|
||||
theme = null
|
||||
target_turfs = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/anomaly/dimensional/anomalyEffect(seconds_per_tick)
|
||||
. = ..()
|
||||
transmute_area()
|
||||
@@ -36,8 +41,7 @@
|
||||
return
|
||||
|
||||
var/turf/affected_turf = target_turfs[1]
|
||||
new /obj/effect/temp_visual/transmute_tile_flash(affected_turf)
|
||||
theme.apply_theme(affected_turf)
|
||||
theme.apply_theme(affected_turf, show_effect = TRUE)
|
||||
target_turfs -= affected_turf
|
||||
|
||||
/**
|
||||
@@ -47,7 +51,7 @@
|
||||
/obj/effect/anomaly/dimensional/proc/prepare_area(new_theme_path)
|
||||
if (!new_theme_path)
|
||||
new_theme_path = pick(subtypesof(/datum/dimension_theme))
|
||||
theme = new new_theme_path()
|
||||
theme = SSmaterials.dimensional_themes[new_theme_path]
|
||||
apply_theme_icon()
|
||||
|
||||
target_turfs = list()
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/**
|
||||
* Datum which describes a theme and replaces turfs and objects in specified locations to match that theme
|
||||
*/
|
||||
@@ -44,12 +43,16 @@
|
||||
*
|
||||
* Arguments
|
||||
* * affected_turf - Turf to transform.
|
||||
* * skip_sound - If the sound shouldn't be played.
|
||||
* * show_effect - if the temp visual effect should be shown.
|
||||
*/
|
||||
/datum/dimension_theme/proc/apply_theme(turf/affected_turf, skip_sound = FALSE)
|
||||
/datum/dimension_theme/proc/apply_theme(turf/affected_turf, skip_sound = FALSE, show_effect = FALSE)
|
||||
if (!replace_turf(affected_turf))
|
||||
return
|
||||
if (!skip_sound)
|
||||
playsound(affected_turf, sound, 100, TRUE)
|
||||
if(show_effect)
|
||||
new /obj/effect/temp_visual/transmute_tile_flash(affected_turf)
|
||||
for (var/obj/object in affected_turf)
|
||||
replace_object(object)
|
||||
if (length(random_spawns) && prob(random_spawn_chance) && !affected_turf.is_blocked_turf(exclude_mobs = TRUE))
|
||||
@@ -250,7 +253,7 @@
|
||||
/datum/dimension_theme/radioactive
|
||||
name = "Radioactive"
|
||||
icon = 'icons/obj/ore.dmi'
|
||||
icon_state = "Uranium ore"
|
||||
icon_state = "uranium"
|
||||
material = /datum/material/uranium
|
||||
sound = 'sound/items/welder.ogg'
|
||||
|
||||
@@ -353,7 +356,14 @@
|
||||
name = "Fancy"
|
||||
icon = 'icons/obj/clothing/head/costume.dmi'
|
||||
icon_state = "fancycrown"
|
||||
replace_floors = null
|
||||
replace_walls = /turf/closed/wall/mineral/wood/nonmetal
|
||||
replace_objs = list(
|
||||
/obj/structure/chair = list(/obj/structure/chair/comfy = 1),
|
||||
/obj/machinery/door/airlock = list(/obj/machinery/door/airlock/wood = 1, /obj/machinery/door/airlock/wood/glass = 1),
|
||||
)
|
||||
///cooldown for changing carpets, It's kinda dull to always use the same one, but we also can't make it too random.
|
||||
COOLDOWN_DECLARE(carpet_switch_cd)
|
||||
|
||||
#define FANCY_CARPETS list(\
|
||||
/turf/open/floor/eighties, \
|
||||
@@ -369,14 +379,12 @@
|
||||
/turf/open/floor/carpet/royalblack, \
|
||||
/turf/open/floor/carpet/royalblue,)
|
||||
|
||||
/datum/dimension_theme/fancy/New()
|
||||
. = ..()
|
||||
replace_floors = list(pick(FANCY_CARPETS) = 1)
|
||||
replace_objs = list(
|
||||
/obj/structure/chair = list(/obj/structure/chair/comfy = 1),
|
||||
/obj/machinery/door/airlock = list(/obj/machinery/door/airlock/wood = 1, /obj/machinery/door/airlock/wood/glass = 1),
|
||||
/obj/structure/table/wood = list(pick(subtypesof(/obj/structure/table/wood/fancy)) = 1),
|
||||
)
|
||||
/datum/dimension_theme/fancy/apply_theme(turf/affected_turf, skip_sound = FALSE, show_effect = FALSE)
|
||||
if(COOLDOWN_FINISHED(src, carpet_switch_cd))
|
||||
replace_floors = list(pick(FANCY_CARPETS) = 1)
|
||||
replace_objs[/obj/structure/table/wood] = list(pick(subtypesof(/obj/structure/table/wood/fancy)) = 1)
|
||||
COOLDOWN_START(src, carpet_switch_cd, 90 SECONDS)
|
||||
return ..()
|
||||
|
||||
#undef FANCY_CARPETS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user