diff --git a/sandcode/code/datums/traits/neutral.dm b/sandcode/code/datums/traits/neutral.dm new file mode 100644 index 0000000000..415ec9aab1 --- /dev/null +++ b/sandcode/code/datums/traits/neutral.dm @@ -0,0 +1,13 @@ +/datum/quirk/hypnotic_stupor //straight from skyrat + name = "Hypnotic Stupor" + desc = "Your prone to episodes of extreme stupor that leaves you extremely suggestible." + value = 0 + human_only = TRUE + gain_text = null // Handled by trauma. + lose_text = null + medical_record_text = "Patient has an untreatable condition with their brain, wiring them to be extreamly suggestible..." + +/datum/quirk/hypnotic_stupor/add() + var/datum/brain_trauma/severe/hypnotic_stupor/T = new() + var/mob/living/carbon/human/H = quirk_holder + H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE) diff --git a/sandcode/code/modules/mob/living/simple_animal/friendly/doges.dm b/sandcode/code/modules/mob/living/simple_animal/friendly/doges.dm new file mode 100644 index 0000000000..adcb569265 --- /dev/null +++ b/sandcode/code/modules/mob/living/simple_animal/friendly/doges.dm @@ -0,0 +1,81 @@ + +//Borrowed from Skyrat, this is not sandstorm original content + +//cheems, the true cargo pet +//note: will probably add hat and fluff functionality later +//note 2: will probably get a better sprite later +//note 3: ignore note 2 the sprite is actually good now +/mob/living/simple_animal/pet/dog/cheems + name = "\proper Cheems" + desc = "Cargo's overfed and slightly greasy disposal bin." + icon = 'sandcode/icons/mob/doges.dmi' + icon_state = "cheems" + icon_dead = "cheems_dead" + icon_living = "cheems" + speak = list("Borf!", "Boof!", "Bork!") + butcher_results = list(/obj/item/reagent_containers/food/snacks/burger/cheese = 1, /obj/item/reagent_containers/food/snacks/meat/slab = 2, /obj/item/trash/syndi_cakes = 1) + faction = list("dog", "doge") + animal_species = /mob/living/simple_animal/pet/dog + gold_core_spawnable = FRIENDLY_SPAWN + +/mob/living/simple_animal/pet/dog/cheems/Move(atom/newloc, direct) + . = ..() + if(.) + for(var/obj/item/reagent_containers/food/snacks/burger/burbger in view(1, src)) + visible_message("\The [src] consumes the [burbger]!") + qdel(burbger) + revive(full_heal = 1) + +/mob/living/simple_animal/pet/dog/cheems/attacked_by(obj/item/I, mob/living/user) + . = ..() + if(.) + if(istype(I, /obj/item/reagent_containers/food/snacks/burger)) + qdel(I) + if(stat == DEAD) + visible_message("\The [src] stands right back up after nibbling the [I]!") + else + visible_message("\The [src] swallows the [I] whole!") + revive(full_heal = 1) + +//cheemgularity +/* disabled for now because error: maximum number of internal arrays exceeded (65535) +/obj/singularity/proc/consume(atom/A) + var/gain = A.singularity_act(current_size, src) + src.energy += gain + if(istype(A, /obj/machinery/power/supermatter_crystal) && !consumedSupermatter) + desc = "[initial(desc)] It glows fiercely with inner fire." + name = "supermatter-charged [initial(name)]" + consumedSupermatter = 1 + set_light(10) + if(istype(A, /mob/living/simple_animal/pet/dog/cheems)) + new /obj/singularity/cheemgularity(get_turf(src)) + qdel(src) + +/obj/singularity/cheemgularity + name = "cheemgularity" + desc = "Praise cheem." + icon = 'sandcode/icons/obj/singularity.dmi' + icon_state = "cheemgulo_s1" + +/obj/singularity/cheemgularity/expand(force_size) + ..() + switch(force_size) + if(STAGE_ONE to STAGE_TWO) + icon = initial(icon) + icon_state = "cheemgulo_s1" + if(STAGE_TWO to STAGE_THREE) + icon = 'sandcode/icons/effects/96x96.dmi' + icon_state = "cheemgulo_s3" + if(STAGE_THREE to STAGE_FOUR) + icon = 'sandcode/icons/effects/160x160.dmi' + icon_state = "cheemgulo_s5" + if(STAGE_FOUR to STAGE_FIVE) + icon = 'sandcode/icons/effects/224x224.dmi' + icon_state = "cheemgulo_s7" + if(STAGE_FIVE to STAGE_SIX) + icon = 'sandcode/icons/effects/288x288.dmi' + icon_state = "cheemgulo_s9" + if(STAGE_SIX) + icon = 'sandcode/icons/effects/352x352.dmi' + icon_state = "cheemgulo_s11" +*/ diff --git a/sandcode/code/modules/research/designs/machine_designs.dm b/sandcode/code/modules/research/designs/machine_designs.dm index de22ade33c..a0b2b97f6b 100644 --- a/sandcode/code/modules/research/designs/machine_designs.dm +++ b/sandcode/code/modules/research/designs/machine_designs.dm @@ -31,3 +31,11 @@ build_path = /obj/item/circuitboard/machine/pacman/mclunky category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/board/spaceship_navigation_beacon + name = "Machine Design (Bluespace Navigation Gigabeacon)" + desc = "The circuit board for a Bluespace Navigation Gigabeacon." + id = "spaceship_navigation_beacon" + build_path = /obj/item/circuitboard/machine/spaceship_navigation_beacon + category = list ("Teleportation Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE diff --git a/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm b/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm new file mode 100644 index 0000000000..d21f971ea3 --- /dev/null +++ b/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm @@ -0,0 +1,69 @@ +/obj/item/circuitboard/machine/spaceship_navigation_beacon + name = "Bluespace Navigation Gigabeacon (Machine Board)" + build_path = /obj/machinery/spaceship_navigation_beacon + req_components = list() + + +/obj/machinery/spaceship_navigation_beacon + name = "Bluespace Navigation Gigabeacon" + desc = "A device that creates a bluespace anchor that allow ships jump near to it." + icon = 'sandcode/icons/obj/machines/NavBeacon.dmi' + icon_state = "beacon-item" + use_power = IDLE_POWER_USE + idle_power_usage = 0 + density = TRUE + circuit = /obj/item/circuitboard/machine/spaceship_navigation_beacon + light_power = 2 + + var/locked = FALSE //Locked beacons don't allow to jump to it. + + +/obj/machinery/spaceship_navigation_beacon/Initialize() + . = ..() + SSshuttle.beacons |= src + +obj/machinery/spaceship_navigation_beacon/emp_act() + locked = TRUE + +/obj/machinery/spaceship_navigation_beacon/Destroy() + SSshuttle.beacons -= src + return ..() + +// update the icon_state +/obj/machinery/spaceship_navigation_beacon/update_icon() + if(powered()) + icon_state = "beacon-active" + set_light(1) + if(panel_open) + icon_state = "beacon-open" + set_light(0) + else + icon_state = "beacon-inactive" + set_light(0) + +/obj/machinery/spaceship_navigation_beacon/power_change() + . = ..() + update_icon() + +/obj/machinery/spaceship_navigation_beacon/multitool_act(mob/living/user, obj/item/multitool/I) + if(panel_open) + var/new_name = "Beacon_[input("Enter the custom name for this beacon", "It be Beacon ..your input..") as text]" + if(new_name && Adjacent(user)) + name = new_name + to_chat(user, "You change beacon name to [name].") + else + locked = !locked + to_chat(user, "You [locked ? "" : "un"]lock [src].") + return TRUE + +/obj/machinery/spaceship_navigation_beacon/examine() + . = ..() + . += "Status: [locked ? "LOCKED" : "Stable"] " + +/obj/machinery/spaceship_navigation_beacon/attackby(obj/item/W, mob/user, params) + if(default_deconstruction_screwdriver(user, "beacon-open", "beacon-active", W)) + return + if(default_deconstruction_crowbar(W)) + return + + return ..() diff --git a/sandcode/icons/mob/doges.dmi b/sandcode/icons/mob/doges.dmi new file mode 100644 index 0000000000..99f90f403e Binary files /dev/null and b/sandcode/icons/mob/doges.dmi differ diff --git a/sandcode/icons/obj/machines/NavBeacon.dmi b/sandcode/icons/obj/machines/NavBeacon.dmi new file mode 100644 index 0000000000..48624a1352 Binary files /dev/null and b/sandcode/icons/obj/machines/NavBeacon.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a489cb6340..92ad5491f2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3478,6 +3478,7 @@ #include "modular_citadel\code\modules\reagents\objects\items.dm" #include "sandcode\code\__DEFINES\traits.dm" #include "sandcode\code\datums\traits\negative.dm" +#include "sandcode\code\datums\traits\neutral.dm" #include "sandcode\code\game\area\ship_area.dm" #include "sandcode\code\game\mecha\mech_fabricator.dm" #include "sandcode\code\game\objects\effects\contraband.dm"