mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 09:08:30 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
anchored = FALSE
|
||||
pass_flags = PASSTABLE // Able to place on tables
|
||||
max_integrity = 5000 // To make attacking it not instantly break it
|
||||
throwforce = 2
|
||||
interaction_flags_mouse_drop = NEED_HANDS
|
||||
|
||||
/// The amount of times this bell has been rang, used to check the chance it breaks
|
||||
var/times_rang = 0
|
||||
@@ -60,6 +62,10 @@
|
||||
times_rang += weapon.force
|
||||
ring_bell(user)
|
||||
|
||||
/obj/structure/desk_bell/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
. = ..()
|
||||
ring_bell()
|
||||
|
||||
// Fix the clapper
|
||||
/obj/structure/desk_bell/screwdriver_act(mob/living/user, obj/item/tool)
|
||||
if(broken_ringer)
|
||||
@@ -91,7 +97,10 @@
|
||||
/// Check if the clapper breaks, and if it does, break it
|
||||
/obj/structure/desk_bell/proc/check_clapper(mob/living/user)
|
||||
if(((times_rang >= 10000) || prob(times_rang/100)) && ring_cooldown_length)
|
||||
to_chat(user, span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it."))
|
||||
if (user)
|
||||
to_chat(user, span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it."))
|
||||
else
|
||||
audible_message(span_notice("You hear [src]'s clapper fall off of its hinge. Nice job, you broke it."))
|
||||
broken_ringer = TRUE
|
||||
|
||||
/// Ring the bell
|
||||
@@ -105,20 +114,93 @@
|
||||
times_rang++
|
||||
return TRUE
|
||||
|
||||
/obj/structure/desk_bell/mouse_drop_dragged(atom/over_object, mob/user)
|
||||
if(over_object != user)
|
||||
return FALSE
|
||||
var/obj/item/inhand_desk_bell/held_bell = new (user, src)
|
||||
user.put_in_hands(held_bell, del_on_fail = FALSE)
|
||||
|
||||
// A warning to all who enter; the ringing sound STACKS. It won't be deafening because it only goes every decisecond,
|
||||
// but I did feel like my ears were going to start bleeding when I tested it with my autoclicker.
|
||||
/obj/structure/desk_bell/speed_demon
|
||||
desc = "The cornerstone of any customer service job. This one's been modified for hyper-performance."
|
||||
ring_cooldown_length = 0
|
||||
|
||||
/obj/structure/desk_bell/mouse_drop_dragged(atom/over_object, mob/user)
|
||||
if(!istype(over_object, /obj/vehicle/ridden/wheelchair))
|
||||
/// Handheld bell
|
||||
/obj/item/inhand_desk_bell
|
||||
name = "held desk bell"
|
||||
force = 1
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
obj_flags = CONDUCTS_ELECTRICITY
|
||||
force = 1
|
||||
throwforce = 2
|
||||
/// Our contained bell
|
||||
var/obj/structure/desk_bell/bell
|
||||
|
||||
/obj/item/inhand_desk_bell/Initialize(mapload, obj/structure/desk_bell/bell)
|
||||
if (mapload)
|
||||
stack_trace("You shouldn't map in this item, use /obj/structure/desk_bell")
|
||||
if (!bell)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
register_item_context()
|
||||
src.bell = bell
|
||||
bell.forceMove(src)
|
||||
appearance = bell.appearance
|
||||
RegisterSignals(bell, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED), PROC_REF(on_bell_gone))
|
||||
return ..()
|
||||
|
||||
/// If we don't have a bell we're nothing
|
||||
/obj/item/inhand_desk_bell/proc/on_bell_gone()
|
||||
SIGNAL_HANDLER
|
||||
UnregisterSignal(bell, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED))
|
||||
bell = null
|
||||
qdel(src)
|
||||
|
||||
/obj/item/inhand_desk_bell/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
|
||||
. = NONE
|
||||
if(istype(target, /obj/vehicle/ridden/wheelchair))
|
||||
var/obj/vehicle/ridden/wheelchair/chair = target
|
||||
if(!chair.bell_attached)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Attach bell to wheelchair."
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
/obj/item/inhand_desk_bell/examine(mob/user)
|
||||
return bell.examine(user)
|
||||
|
||||
/obj/item/inhand_desk_bell/on_thrown(mob/living/carbon/user, atom/target)
|
||||
var/obj/throwing_bell = bell // We are about to null this variable but also want to return it
|
||||
bell.forceMove(user.drop_location())
|
||||
return throwing_bell
|
||||
|
||||
/obj/item/inhand_desk_bell/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
|
||||
. = ..()
|
||||
if (isturf(loc))
|
||||
bell.forceMove(loc)
|
||||
|
||||
/obj/item/inhand_desk_bell/attack(mob/living/target_mob, mob/living/user, params)
|
||||
. = ..()
|
||||
if (.)
|
||||
return
|
||||
var/obj/vehicle/ridden/wheelchair/target = over_object
|
||||
if(target.bell_attached)
|
||||
bell.ring_bell(user)
|
||||
|
||||
/obj/item/inhand_desk_bell/attack_self(mob/user, modifiers)
|
||||
. = ..()
|
||||
if (.)
|
||||
return
|
||||
bell.ring_bell(user)
|
||||
|
||||
/obj/item/inhand_desk_bell/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
||||
. = ..()
|
||||
if (!istype(interacting_with, /obj/vehicle/ridden/wheelchair))
|
||||
return NONE
|
||||
var/obj/vehicle/ridden/wheelchair/chair = interacting_with
|
||||
|
||||
if (chair.bell_attached)
|
||||
user.balloon_alert(user, "already has a bell!")
|
||||
return
|
||||
return ITEM_INTERACT_FAILURE
|
||||
user.balloon_alert(user, "attaching bell...")
|
||||
if(!do_after(user, 0.5 SECONDS))
|
||||
return
|
||||
target.attach_bell(src)
|
||||
if (!do_after(user, 0.5 SECONDS, chair))
|
||||
return ITEM_INTERACT_FAILURE
|
||||
|
||||
chair.attach_bell(bell)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
icon_state = "paper"
|
||||
inhand_icon_state = "paper"
|
||||
worn_icon_state = "paper"
|
||||
custom_fire_overlay = "paper_onfire_overlay"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throw_range = 1
|
||||
@@ -86,6 +85,11 @@
|
||||
LAZYREMOVE(SSpersistence.queued_message_bottles, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/paper/custom_fire_overlay()
|
||||
if (!custom_fire_overlay)
|
||||
custom_fire_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paper_onfire_overlay", appearance_flags = RESET_COLOR|KEEP_APART)
|
||||
return custom_fire_overlay
|
||||
|
||||
/// Determines whether this paper has been written or stamped to.
|
||||
/obj/item/paper/proc/is_empty()
|
||||
return !(LAZYLEN(raw_text_inputs) || LAZYLEN(raw_stamp_data))
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
icon = 'icons/obj/service/bureaucracy.dmi'
|
||||
icon_state = "paperplane"
|
||||
base_icon_state = "paperplane"
|
||||
custom_fire_overlay = "paperplane_onfire"
|
||||
throw_range = 7
|
||||
throw_speed = 1
|
||||
throwforce = 0
|
||||
@@ -59,6 +58,11 @@
|
||||
internal_paper = null
|
||||
return ..()
|
||||
|
||||
/obj/item/paperplane/custom_fire_overlay()
|
||||
if (!custom_fire_overlay)
|
||||
custom_fire_overlay = mutable_appearance('icons/obj/service/bureaucracy.dmi', "paperplane_onfire", appearance_flags = RESET_COLOR|KEEP_APART)
|
||||
return custom_fire_overlay
|
||||
|
||||
/obj/item/paperplane/suicide_act(mob/living/user)
|
||||
var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
|
||||
user.Stun(20 SECONDS)
|
||||
|
||||
@@ -484,7 +484,7 @@
|
||||
target_turf = get_turf(src)
|
||||
if(ismineralturf(target_turf))
|
||||
var/turf/closed/mineral/mineral_turf = target_turf
|
||||
mineral_turf.gets_drilled(firer, TRUE)
|
||||
mineral_turf.gets_drilled(firer, 1)
|
||||
|
||||
/obj/item/pen/destroyer
|
||||
name = "Fine Tipped Pen"
|
||||
|
||||
@@ -663,6 +663,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks())
|
||||
desc = "A small, lightweight cartridge of Nanotrasen ValueBrand toner. Fits photocopiers and autopainters alike."
|
||||
icon = 'icons/obj/service/bureaucracy.dmi'
|
||||
icon_state = "tonercartridge"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10)
|
||||
var/charges = 5
|
||||
var/max_charges = 5
|
||||
|
||||
Reference in New Issue
Block a user