mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
* Icons folder cleaning wave two * Merge conflict resolution * Modular path hell * hmm * Update 2022-10.yml * Another modular thing --------- Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com> Co-authored-by: Giz <vinylspiders@gmail.com>
165 lines
4.6 KiB
Plaintext
165 lines
4.6 KiB
Plaintext
/*
|
|
Items, Structures, Machines
|
|
*/
|
|
|
|
|
|
//
|
|
// Items
|
|
//
|
|
|
|
/obj/item/melee/energy/sword/holographic
|
|
name = "holographic energy sword"
|
|
desc = "May the force be with you. Sorta."
|
|
damtype = STAMINA
|
|
throw_speed = 2
|
|
block_chance = 0
|
|
throwforce = 0
|
|
embedding = null
|
|
sword_color_icon = null
|
|
|
|
active_throwforce = 0
|
|
active_sharpness = NONE
|
|
active_heat = 0
|
|
|
|
/obj/item/melee/energy/sword/holographic/Initialize(mapload)
|
|
. = ..()
|
|
if(!sword_color_icon)
|
|
sword_color_icon = pick("red", "blue", "green", "purple")
|
|
|
|
/obj/item/melee/energy/sword/holographic/green
|
|
sword_color_icon = "green"
|
|
|
|
/obj/item/melee/energy/sword/holographic/red
|
|
sword_color_icon = "red"
|
|
|
|
/obj/item/toy/cards/deck/syndicate/holographic
|
|
desc = "A deck of holographic playing cards."
|
|
|
|
/obj/item/toy/cards/deck/syndicate/holographic/Initialize(mapload, obj/machinery/computer/holodeck/holodeck)
|
|
src.holodeck = holodeck
|
|
RegisterSignal(src, COMSIG_QDELETING, PROC_REF(handle_card_delete))
|
|
. = ..()
|
|
|
|
/obj/item/toy/cards/deck/syndicate/holographic/proc/handle_card_delete(datum/source)
|
|
SIGNAL_HANDLER
|
|
|
|
//if any REAL cards have been inserted into the deck they are moved outside before destroying it
|
|
for(var/obj/item/toy/singlecard/card in card_atoms)
|
|
if(card.flags_1 & HOLOGRAM_1)
|
|
continue
|
|
card_atoms -= card
|
|
card.forceMove(drop_location())
|
|
|
|
/obj/item/toy/dodgeball
|
|
name = "dodgeball"
|
|
icon = 'icons/obj/toys/balls.dmi'
|
|
icon_state = "dodgeball"
|
|
inhand_icon_state = "dodgeball"
|
|
desc = "Used for playing the most violent and degrading of childhood games."
|
|
w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
|
|
|
|
/obj/item/toy/dodgeball/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
|
..()
|
|
if((ishuman(hit_atom)))
|
|
var/mob/living/carbon/M = hit_atom
|
|
playsound(src, 'sound/items/dodgeball.ogg', 50, TRUE)
|
|
M.apply_damage(10, STAMINA)
|
|
if(prob(5))
|
|
M.Paralyze(60)
|
|
visible_message(span_danger("[M] is knocked right off [M.p_their()] feet!"))
|
|
|
|
//
|
|
// Machines
|
|
//
|
|
|
|
/obj/machinery/readybutton
|
|
name = "ready declaration device"
|
|
desc = "This device is used to declare ready. If all devices in an area are ready, the event will begin!"
|
|
icon = 'icons/obj/machines/wallmounts.dmi'
|
|
icon_state = "auth_off"
|
|
var/ready = 0
|
|
var/area/currentarea = null
|
|
var/eventstarted = FALSE
|
|
|
|
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02
|
|
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.006
|
|
power_channel = AREA_USAGE_ENVIRON
|
|
|
|
/obj/machinery/readybutton/attack_ai(mob/user)
|
|
to_chat(user, span_warning("The station AI is not to interact with these devices!"))
|
|
return
|
|
|
|
/obj/machinery/readybutton/attack_paw(mob/user, list/modifiers)
|
|
to_chat(user, span_warning("You are too primitive to use this device!"))
|
|
return
|
|
|
|
/obj/machinery/readybutton/attackby(obj/item/W, mob/user, params)
|
|
to_chat(user, span_warning("The device is a solid button, there's nothing you can do with it!"))
|
|
|
|
/obj/machinery/readybutton/attack_hand(mob/user, list/modifiers)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
if(user.stat || machine_stat & (NOPOWER|BROKEN))
|
|
to_chat(user, span_warning("This device is not powered!"))
|
|
return
|
|
|
|
currentarea = get_area(src.loc)
|
|
if(!currentarea)
|
|
qdel(src)
|
|
|
|
if(eventstarted)
|
|
to_chat(usr, span_warning("The event has already begun!"))
|
|
return
|
|
|
|
ready = !ready
|
|
|
|
update_appearance()
|
|
|
|
var/numbuttons = 0
|
|
var/numready = 0
|
|
for(var/obj/machinery/readybutton/button in currentarea)
|
|
numbuttons++
|
|
if (button.ready)
|
|
numready++
|
|
|
|
if(numbuttons == numready)
|
|
begin_event()
|
|
|
|
/obj/machinery/readybutton/update_icon_state()
|
|
icon_state = "auth_[ready ? "on" : "off"]"
|
|
return ..()
|
|
|
|
/obj/machinery/readybutton/proc/begin_event()
|
|
|
|
eventstarted = TRUE
|
|
|
|
for(var/obj/structure/window/W in currentarea)
|
|
if(W.flags_1&NODECONSTRUCT_1) // Just in case: only holo-windows
|
|
qdel(W)
|
|
|
|
for(var/mob/M in currentarea)
|
|
to_chat(M, span_userdanger("FIGHT!"))
|
|
|
|
/obj/machinery/conveyor/holodeck
|
|
|
|
/obj/machinery/conveyor/holodeck/attackby(obj/item/I, mob/user, params)
|
|
if(!user.transferItemToLoc(I, drop_location()))
|
|
return ..()
|
|
|
|
/obj/item/paper/fluff/holodeck/trek_diploma
|
|
name = "paper - Starfleet Academy Diploma"
|
|
default_raw_text = {"<h2>Starfleet Academy</h2></br><p>Official Diploma</p></br>"}
|
|
|
|
/obj/item/paper/fluff/holodeck/disclaimer
|
|
name = "Holodeck Disclaimer"
|
|
default_raw_text = "Bruises sustained in the holodeck can be healed simply by sleeping."
|
|
|
|
/obj/vehicle/ridden/scooter/skateboard/pro/holodeck
|
|
name = "holographic skateboard"
|
|
desc = "A holographic copy of the EightO brand professional skateboard."
|
|
instability = 6
|
|
|
|
/obj/vehicle/ridden/scooter/skateboard/pro/holodeck/pick_up_board() //picking up normal skateboards spawned in the holodeck gets rid of the holo flag, now you cant pick them up.
|
|
return
|