Harddel Fix Pack #42 + Better Live Reftracking Support (#63877)

* Hard Del Fixes, Ref Tracking Changes
This commit is contained in:
LemonInTheDark
2022-01-12 22:46:13 +01:00
committed by GitHub
parent f3f7720d7e
commit f8aad14ae8
109 changed files with 865 additions and 733 deletions
+19 -15
View File
@@ -22,6 +22,16 @@
var/list/ticket_holders = list()
var/list/obj/item/ticket_machine_ticket/tickets = list()
/obj/machinery/ticket_machine/Initialize(mapload)
. = ..()
update_appearance()
/obj/machinery/ticket_machine/Destroy()
for(var/obj/item/ticket_machine_ticket/ticket in tickets)
ticket.source = null
tickets.Cut()
return ..()
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/I)
@@ -46,10 +56,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
tickets.Cut()
update_appearance()
/obj/machinery/ticket_machine/Initialize(mapload)
. = ..()
update_appearance()
/obj/machinery/ticket_machine/proc/increment()
if(current_number > ticket_number)
return
@@ -178,21 +184,21 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
if(ticket_number >= max_number)
to_chat(user,span_warning("Ticket supply depleted, please refill this unit with a hand labeller refill cartridge!"))
return
if((user in ticket_holders) && !(obj_flags & EMAGGED))
var/user_ref = REF(user)
if((user_ref in ticket_holders) && !(obj_flags & EMAGGED))
to_chat(user, span_warning("You already have a ticket!"))
return
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, FALSE)
ticket_number ++
ticket_number++
to_chat(user, span_notice("You take a ticket from [src], looks like you're ticket number #[ticket_number]..."))
var/obj/item/ticket_machine_ticket/theirticket = new /obj/item/ticket_machine_ticket(get_turf(src))
theirticket.name = "Ticket #[ticket_number]"
theirticket.maptext = MAPTEXT(ticket_number)
theirticket.saved_maptext = MAPTEXT(ticket_number)
theirticket.ticket_number = ticket_number
theirticket.source = src
theirticket.owner = user
theirticket.owner_ref = user_ref
user.put_in_hands(theirticket)
ticket_holders += user
ticket_holders += user_ref
tickets += theirticket
if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life.
ready = FALSE
@@ -214,9 +220,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
resistance_flags = FLAMMABLE
max_integrity = 50
var/saved_maptext = null
var/mob/living/carbon/owner
var/owner_ref // A ref to our owner. Doesn't need to be weak because mobs have unique refs
var/obj/machinery/ticket_machine/source
var/ticket_number
/obj/item/ticket_machine_ticket/attack_hand(mob/user, list/modifiers)
. = ..()
@@ -233,9 +238,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
update_appearance()
/obj/item/ticket_machine_ticket/Destroy()
if(owner && source)
source.ticket_holders -= owner
source.tickets[ticket_number] = null
owner = null
if(source)
source.ticket_holders -= owner_ref
source.tickets -= src
source = null
return ..()