mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into Vox_suits
This commit is contained in:
@@ -93,7 +93,7 @@ world/IsBanned(key,address,computer_id)
|
||||
var/appealmessage = ""
|
||||
if(config.banappeals)
|
||||
appealmessage = " You may appeal it at <a href='[config.banappeals]'>[config.banappeals]</a>."
|
||||
expires = " The is a permanent ban.[appealmessage]"
|
||||
expires = " This is a permanent ban.[appealmessage]"
|
||||
|
||||
var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban was applied by [ackey] on [bantime].[expires]"
|
||||
|
||||
|
||||
@@ -826,8 +826,8 @@ var/list/admin_verbs_ticket = list(
|
||||
if(!istype(H))
|
||||
if(istype(H, /mob/living/carbon/brain))
|
||||
var/mob/living/carbon/brain/B = H
|
||||
if(istype(B.container, /obj/item/device/mmi/posibrain/ipc))
|
||||
var/obj/item/device/mmi/posibrain/ipc/C = B.container
|
||||
if(istype(B.container, /obj/item/mmi/posibrain/ipc))
|
||||
var/obj/item/mmi/posibrain/ipc/C = B.container
|
||||
var/obj/item/organ/internal/brain/mmi_holder/posibrain/P = C.loc
|
||||
if(istype(P.owner, /mob/living/carbon/human))
|
||||
H = P.owner
|
||||
@@ -852,8 +852,8 @@ var/list/admin_verbs_ticket = list(
|
||||
if(!istype(H))
|
||||
if(istype(H, /mob/living/carbon/brain))
|
||||
var/mob/living/carbon/brain/B = H
|
||||
if(istype(B.container, /obj/item/device/mmi/posibrain/ipc))
|
||||
var/obj/item/device/mmi/posibrain/ipc/C = B.container
|
||||
if(istype(B.container, /obj/item/mmi/posibrain/ipc))
|
||||
var/obj/item/mmi/posibrain/ipc/C = B.container
|
||||
var/obj/item/organ/internal/brain/mmi_holder/posibrain/P = C.loc
|
||||
if(istype(P.owner, /mob/living/carbon/human))
|
||||
H = P.owner
|
||||
@@ -868,10 +868,10 @@ var/list/admin_verbs_ticket = list(
|
||||
|
||||
switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
|
||||
if("Yes")
|
||||
admin_log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.")
|
||||
admin_log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, without whitelisting of races.")
|
||||
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0)
|
||||
if("No")
|
||||
admin_log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.")
|
||||
admin_log_and_message_admins("has allowed [H] to change [H.p_their()] appearance, with whitelisting of races.")
|
||||
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
|
||||
feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
var/create_object_html = null
|
||||
var/list/create_object_forms = list(/obj, /obj/structure, /obj/machinery, /obj/effect, /obj/item, /obj/mecha, /obj/item, /obj/item/clothing, /obj/item/stack, /obj/item/device, /obj/item/reagent_containers, /obj/item/gun)
|
||||
var/list/create_object_forms = list(/obj, /obj/structure, /obj/machinery, /obj/effect, /obj/item, /obj/mecha, /obj/item/clothing, /obj/item/stack, /obj/item/reagent_containers, /obj/item/gun)
|
||||
|
||||
/datum/admins/proc/create_object(var/mob/user)
|
||||
if(!create_object_html)
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
<A href='?src=[UID()];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
|
||||
<a href='?src=[UID()];secretsadmin=night_shift_set'>Set Night Shift Mode</a><br>
|
||||
<B>Bombs</b><br>
|
||||
<A href='?src=[UID()];secretsadmin=list_bombers'>Bombing List</A>
|
||||
<A href='?src=[UID()];secretsadmin=clear_bombs'>Remove all bombs currently in existence</A>
|
||||
[check_rights(R_SERVER, 0) ? " <A href='?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><br>" : "<br>"]
|
||||
<B>Lists</b><br>
|
||||
<A href='?src=[UID()];secretsadmin=list_signalers'>Show last [length(lastsignalers)] signalers</A>
|
||||
@@ -130,5 +128,3 @@
|
||||
var/datum/browser/popup = new(usr, "secrets", "<div align='center'>Admin Secrets</div>", 630, 670)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ var/global/datum/adminTicketHolder/globAdminTicketHolder = new /datum/adminTicke
|
||||
/datum/adminTicketHolder/proc/checkForTicket(var/client/C)
|
||||
var/list/tickets = list()
|
||||
for(var/datum/admin_ticket/T in allTickets)
|
||||
if(T.clientName == C && T.ticketState == ADMIN_TICKET_OPEN || T.ticketState == ADMIN_TICKET_STALE)
|
||||
if(T.clientName == C && (T.ticketState == ADMIN_TICKET_OPEN || T.ticketState == ADMIN_TICKET_STALE))
|
||||
tickets += T
|
||||
if(tickets.len)
|
||||
return tickets
|
||||
|
||||
+15
-22
@@ -1622,14 +1622,14 @@
|
||||
H.equip_to_slot_or_del( new /obj/item/reagent_containers/food/snacks/cookie(H), slot_r_hand )
|
||||
if(!(istype(H.r_hand,/obj/item/reagent_containers/food/snacks/cookie)))
|
||||
log_admin("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].")
|
||||
message_admins("[key_name_admin(H)] has their hands full, so they did not receive their cookie, spawned by [key_name_admin(src.owner)].")
|
||||
message_admins("[key_name_admin(H)] has [H.p_their()] hands full, so [H.p_they()] did not receive [H.p_their()] cookie, spawned by [key_name_admin(src.owner)].")
|
||||
return
|
||||
else
|
||||
H.update_inv_r_hand()//To ensure the icon appears in the HUD
|
||||
else
|
||||
H.update_inv_l_hand()
|
||||
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
|
||||
message_admins("[key_name_admin(H)] got their cookie, spawned by [key_name_admin(src.owner)]")
|
||||
message_admins("[key_name_admin(H)] got [H.p_their()] cookie, spawned by [key_name_admin(src.owner)]")
|
||||
feedback_inc("admin_cookies_spawned",1)
|
||||
to_chat(H, "<span class='notice'>Your prayers have been answered!! You received the <b>best cookie</b>!</span>")
|
||||
|
||||
@@ -1679,11 +1679,11 @@
|
||||
if(!istype(H))
|
||||
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
|
||||
if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset))
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset")
|
||||
return
|
||||
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "")
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from Centcomm", "")
|
||||
if(!input) return
|
||||
|
||||
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
|
||||
@@ -1734,7 +1734,7 @@
|
||||
P.update_icon()
|
||||
//fax.receivefax(P) // this does not work, it does not preserve the type, we have to physically teleport the fax paper instead
|
||||
P.loc = fax.loc
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset)))
|
||||
to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.")
|
||||
to_chat(src.owner, "You sent a [eviltype] fax to [H]")
|
||||
log_admin("[key_name(src.owner)] sent [key_name(H)] a [eviltype] fax")
|
||||
@@ -1941,7 +1941,7 @@
|
||||
newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
|
||||
tatorhud.join_hud(newtraitor)
|
||||
ticker.mode.set_antag_hud(newtraitor, "hudsyndicate")
|
||||
set_antag_hud(newtraitor, "hudsyndicate")
|
||||
else
|
||||
to_chat(usr, "ERROR: Failed to create a traitor.")
|
||||
return
|
||||
@@ -2026,7 +2026,7 @@
|
||||
P.stamps += "<HR><img src=large_stamp-[stampvalue].png>"
|
||||
P.update_icon()
|
||||
fax.receivefax(P)
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset)))
|
||||
to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.")
|
||||
to_chat(src.owner, "You sent a standard '[stype]' fax to [H]")
|
||||
log_admin("[key_name(src.owner)] sent [key_name(H)] a standard '[stype]' fax")
|
||||
@@ -2042,10 +2042,10 @@
|
||||
if(H.stat != 0)
|
||||
to_chat(usr, "The person you are trying to contact is not conscious.")
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
|
||||
if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset))
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset")
|
||||
return
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from The Syndicate", "")
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from The Syndicate", "")
|
||||
if(!input)
|
||||
return
|
||||
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
|
||||
@@ -2057,11 +2057,11 @@
|
||||
if(!istype(H))
|
||||
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
|
||||
if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset))
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset")
|
||||
return
|
||||
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from HONKplanet", "")
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from HONKplanet", "")
|
||||
if(!input) return
|
||||
|
||||
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
|
||||
@@ -2080,7 +2080,7 @@
|
||||
if(H.stat != 0)
|
||||
to_chat(usr, "The person you are trying to contact is not conscious.")
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
|
||||
if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset))
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset")
|
||||
return
|
||||
|
||||
@@ -2274,7 +2274,7 @@
|
||||
to_chat(src.owner, "<span class='notice'>Message transmitted successfully.</span>")
|
||||
if(notify == "Yes")
|
||||
var/mob/living/carbon/human/H = sender
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset)))
|
||||
to_chat(sender, "Your headset pings, notifying you that a reply to your fax has arrived.")
|
||||
if(sender)
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
|
||||
@@ -2957,13 +2957,6 @@
|
||||
|
||||
var/ok = 0
|
||||
switch(href_list["secretsadmin"])
|
||||
if("clear_bombs")
|
||||
//I do nothing
|
||||
if("list_bombers")
|
||||
var/dat = "<B>Bombing List<HR>"
|
||||
for(var/l in bombers)
|
||||
dat += text("[l]<BR>")
|
||||
usr << browse(dat, "window=bombers")
|
||||
if("list_signalers")
|
||||
var/dat = "<B>Showing last [length(lastsignalers)] signalers.</B><HR>"
|
||||
for(var/sig in lastsignalers)
|
||||
@@ -3432,11 +3425,11 @@
|
||||
to_chat(hunter_mob, "<span class='danger'>ATTENTION:</span> You are now on a mission!")
|
||||
to_chat(hunter_mob, "<B>Goal: <span class='danger'>[killthem ? "MURDER" : "PROTECT"] [H.real_name]</span>, currently in [get_area(H.loc)]. </B>");
|
||||
if(killthem)
|
||||
to_chat(hunter_mob, "<B>If you kill them, they cannot be revived.</B>");
|
||||
to_chat(hunter_mob, "<B>If you kill [H.p_them()], [H.p_they()] cannot be revived.</B>");
|
||||
hunter_mob.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
|
||||
tatorhud.join_hud(hunter_mob)
|
||||
ticker.mode.set_antag_hud(hunter_mob, "hudsyndicate")
|
||||
set_antag_hud(hunter_mob, "hudsyndicate")
|
||||
|
||||
/proc/admin_jump_link(var/atom/target)
|
||||
if(!target) return
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
//get message text, limit it's length.and clean/escape html
|
||||
if(!msg)
|
||||
msg = input(src,"Message:", "Private message to [key_name(C, 0)]") as text|null
|
||||
msg = input(src,"Message:", "Private message to [holder ? key_name(C, FALSE) : key_name_hidden(C, FALSE)]") as text|null
|
||||
|
||||
if(!msg)
|
||||
return
|
||||
@@ -154,7 +154,7 @@
|
||||
var/emoji_msg = "<span class='emoji_enabled'>[msg]</span>"
|
||||
recieve_message = "<span class='[recieve_span]'>[type] from-<b>[recieve_pm_type][C.holder ? key_name(src, TRUE, type) : key_name_hidden(src, TRUE, type)]</b>: [emoji_msg]</span>"
|
||||
to_chat(C, recieve_message)
|
||||
to_chat(src, "<font color='blue'>[send_pm_type][type] to-<b>[holder ? key_name(C, TRUE, type) : key_name_hidden(src, TRUE, type)]</b>: [emoji_msg]</font>")
|
||||
to_chat(src, "<font color='blue'>[send_pm_type][type] to-<b>[holder ? key_name(C, TRUE, type) : key_name_hidden(C, TRUE, type)]</b>: [emoji_msg]</font>")
|
||||
|
||||
/*if(holder && !C.holder)
|
||||
C.last_pm_recieved = world.time
|
||||
@@ -183,6 +183,8 @@
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, X.mob))
|
||||
to_chat(X, "<span class='boldnotice'>[type]: [key_name(src, TRUE, type)]->[key_name(C, TRUE, type)]: [emoji_msg]</span>")
|
||||
|
||||
if(type == "Mentorhelp")
|
||||
return
|
||||
//Check if the mob being PM'd has any open admin tickets.
|
||||
var/tickets = list()
|
||||
tickets = globAdminTicketHolder.checkForTicket(C)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
if(check_rights(R_ADMIN,0))
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
msg = "<span class='emoji_enabled'>[msg]</span>"
|
||||
to_chat(C, "<span class='admin_channel'>ADMIN: <span class='name'>[key_name(usr, 1)]</span> ([admin_jump_link(mob)]): <span class='message'>[msg]</span></span>")
|
||||
|
||||
feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -38,6 +39,7 @@
|
||||
display_name = "[holder.fakekey]/([key])"
|
||||
else
|
||||
display_name = holder.fakekey
|
||||
msg = "<span class='emoji_enabled'>[msg]</span>"
|
||||
to_chat(C, "<span class='[check_rights(R_ADMIN, 0) ? "mentor_channel_admin" : "mentor_channel"]'>MENTOR: <span class='name'>[display_name]</span> ([admin_jump_link(mob)]): <span class='message'>[msg]</span></span>")
|
||||
|
||||
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
return
|
||||
feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
for(var/datum/powernet/PN in powernets)
|
||||
for(var/datum/powernet/PN in SSmachines.powernets)
|
||||
if(!PN.nodes || !PN.nodes.len)
|
||||
if(PN.cables && (PN.cables.len > 1))
|
||||
var/obj/structure/cable/C = PN.cables[1]
|
||||
|
||||
@@ -266,10 +266,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!choice)
|
||||
return 0
|
||||
if(!istype(choice, /mob/dead/observer))
|
||||
var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank him out of them out of their body and place them in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No")
|
||||
var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank [choice.p_them()] out of [choice.p_their()] body and place [choice.p_them()] in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return 0
|
||||
var/obj/item/device/paicard/card = new(T)
|
||||
var/obj/item/paicard/card = new(T)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
|
||||
pai.real_name = pai.name
|
||||
@@ -387,7 +387,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
makepowernets()
|
||||
SSmachines.makepowernets()
|
||||
log_admin("[key_name(src)] has remade the powernet. makepowernets() called.")
|
||||
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
|
||||
feedback_add_details("admin_verb","MPWN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -406,8 +406,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.wear_id)
|
||||
var/obj/item/card/id/id = H.wear_id
|
||||
if(istype(H.wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = H.wear_id
|
||||
if(istype(H.wear_id, /obj/item/pda))
|
||||
var/obj/item/pda/pda = H.wear_id
|
||||
id = pda.id
|
||||
id.icon_state = "gold"
|
||||
id:access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
|
||||
@@ -507,7 +507,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
continue
|
||||
areas_with_LS |= A.type
|
||||
|
||||
for(var/obj/item/device/radio/intercom/I in world)
|
||||
for(var/obj/item/radio/intercom/I in world)
|
||||
var/area/A = get_area(I)
|
||||
if(!A)
|
||||
continue
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
H.dna.ready_dna(H)
|
||||
|
||||
H.mind_initialize()
|
||||
H.mind.assigned_role = "MODE"
|
||||
H.mind.assigned_role = "Event Character"
|
||||
H.mind.special_role = "Event Character"
|
||||
|
||||
H.key = thisplayer.key
|
||||
|
||||
@@ -91,7 +91,7 @@ var/global/sent_honksquad = 0
|
||||
|
||||
//Creates mind stuff.
|
||||
new_honksquad.mind_initialize()
|
||||
new_honksquad.mind.assigned_role = "MODE"
|
||||
new_honksquad.mind.assigned_role = SPECIAL_ROLE_HONKSQUAD
|
||||
new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD
|
||||
new_honksquad.add_language("Clownish")
|
||||
ticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
@@ -100,7 +100,7 @@ var/global/sent_honksquad = 0
|
||||
|
||||
/mob/living/carbon/human/proc/equip_honksquad(honk_leader_selected = 0)
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
|
||||
var/obj/item/radio/R = new /obj/item/radio/headset(src)
|
||||
R.set_frequency(1442)
|
||||
equip_to_slot_or_del(R, slot_l_ear)
|
||||
equip_to_slot_or_del(new /obj/item/storage/backpack/clown(src), slot_back)
|
||||
@@ -112,7 +112,7 @@ var/global/sent_honksquad = 0
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/pda/clown(src), slot_wear_pda)
|
||||
equip_to_slot_or_del(new /obj/item/pda/clown(src), slot_wear_pda)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/bikehorn(src), slot_in_backpack)
|
||||
|
||||
@@ -109,7 +109,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
new_syndicate_infiltrator.mind.store_memory("<B>Starting Equipment:</B> <BR>- Syndicate Headset ((.h for your radio))<BR>- Chameleon Jumpsuit ((right click to Change Color))<BR> - Agent ID card ((disguise as another job))<BR> - Uplink Implant ((top left of screen)) <BR> - Dust Implant ((destroys your body on death)) <BR> - Combat Gloves ((insulated, disguised as black gloves)) <BR> - Anything bought with your uplink implant")
|
||||
var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS]
|
||||
opshud.join_hud(new_syndicate_infiltrator.mind.current)
|
||||
ticker.mode.set_antag_hud(new_syndicate_infiltrator.mind.current, "hudoperative")
|
||||
set_antag_hud(new_syndicate_infiltrator.mind.current, "hudoperative")
|
||||
new_syndicate_infiltrator.regenerate_icons()
|
||||
num_spawned++
|
||||
if(!teamsize)
|
||||
@@ -127,7 +127,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate, slot_wear_mask)
|
||||
var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS]
|
||||
opshud.join_hud(syndimgmtmob.mind.current)
|
||||
ticker.mode.set_antag_hud(syndimgmtmob.mind.current, "hudoperative")
|
||||
set_antag_hud(syndimgmtmob.mind.current, "hudoperative")
|
||||
syndimgmtmob.mind.special_role = "Syndicate Management Consultant"
|
||||
syndimgmtmob.regenerate_icons()
|
||||
to_chat(syndimgmtmob, "<span class='userdanger'>You have spawned as Syndicate Management. You should brief them on their mission before they go.</span>")
|
||||
@@ -149,7 +149,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
|
||||
//Creates mind stuff.
|
||||
new_syndicate_infiltrator.mind_initialize()
|
||||
new_syndicate_infiltrator.mind.assigned_role = "MODE"
|
||||
new_syndicate_infiltrator.mind.assigned_role = "Syndicate Infiltrator"
|
||||
new_syndicate_infiltrator.mind.special_role = "Syndicate Infiltrator"
|
||||
ticker.mode.traitors |= new_syndicate_infiltrator.mind //Adds them to extra antag list
|
||||
new_syndicate_infiltrator.equip_syndicate_infiltrator(syndicate_leader_selected, uplink_tc, is_mgmt)
|
||||
@@ -163,7 +163,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/storage/box/survival(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/chameleon(src), slot_w_uniform)
|
||||
if(!flag_mgmt)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/flashlight(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/storage/belt/utility/full/multitool(src), slot_belt)
|
||||
|
||||
var/obj/item/clothing/gloves/combat/G = new /obj/item/clothing/gloves/combat(src)
|
||||
@@ -183,10 +183,10 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
D.implant(src)
|
||||
|
||||
// Radio & PDA
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/syndteam(src)
|
||||
var/obj/item/radio/R = new /obj/item/radio/headset/syndicate/syndteam(src)
|
||||
R.set_frequency(SYNDTEAM_FREQ)
|
||||
equip_to_slot_or_del(R, slot_l_ear)
|
||||
equip_or_collect(new /obj/item/device/pda(src), slot_in_backpack)
|
||||
equip_or_collect(new /obj/item/pda(src), slot_in_backpack)
|
||||
|
||||
// Other gear
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/syndigaloshes(src), slot_shoes)
|
||||
|
||||
@@ -118,7 +118,7 @@ var/intercom_range_display_status = 0
|
||||
qdel(M)
|
||||
|
||||
if(intercom_range_display_status)
|
||||
for(var/obj/item/device/radio/intercom/I in world)
|
||||
for(var/obj/item/radio/intercom/I in world)
|
||||
for(var/turf/T in orange(7,I))
|
||||
var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T)
|
||||
if(!(F in view(7,I.loc)))
|
||||
|
||||
@@ -411,7 +411,7 @@ client/proc/one_click_antag()
|
||||
|
||||
//Creates mind stuff.
|
||||
new_syndicate_commando.mind_initialize()
|
||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||
new_syndicate_commando.mind.assigned_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
|
||||
//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
qdel(I)
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/claymore/highlander(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
to_chat(H, "<B>You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs.</B>")
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/beach_ball/dodgeball(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ var/list/sounds_cache = list()
|
||||
ignore_power = 1
|
||||
|
||||
for(var/O in global_intercoms)
|
||||
var/obj/item/device/radio/intercom/I = O
|
||||
var/obj/item/radio/intercom/I = O
|
||||
if(!is_station_level(I.z) && !ignore_z)
|
||||
continue
|
||||
if(!I.on && !ignore_power)
|
||||
|
||||
@@ -429,7 +429,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
//Announces the character on all the systems, based on the record.
|
||||
if(!issilicon(new_character))//If they are not a cyborg/AI.
|
||||
if(!record_found&&new_character.mind.assigned_role!="MODE")//If there are no records for them. If they have a record, this info is already in there. MODE people are not announced anyway.
|
||||
if(!record_found && new_character.mind.assigned_role != new_character.mind.special_role)//If there are no records for them. If they have a record, this info is already in there. Offstation special characters announced anyway.
|
||||
//Power to the user!
|
||||
if(alert(new_character,"Warning: No data core entry detected. Would you like to announce the arrival of this character by adding them to various databases, such as medical records?",,"No","Yes")=="Yes")
|
||||
data_core.manifest_inject(new_character)
|
||||
|
||||
@@ -5,14 +5,16 @@ var/global/sent_strike_team = 0
|
||||
|
||||
/client/proc/strike_team()
|
||||
if(!ticker)
|
||||
to_chat(usr, "<font color='red'>The game hasn't started yet!</font>")
|
||||
to_chat(usr, "<span class='userdanger'>The game hasn't started yet!</span>")
|
||||
return
|
||||
if(sent_strike_team == 1)
|
||||
to_chat(usr, "<font color='red'>CentComm is already sending a team.</font>")
|
||||
to_chat(usr, "<span class='userdanger'>CentComm is already sending a team.</span>")
|
||||
return
|
||||
if(alert("Do you want to send in the CentComm death squad? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
|
||||
return
|
||||
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. Assigning the team's detailed task is recommended from there. While you will be able to manually pick the candidates from active ghosts, their assignment in the squad will be random.")
|
||||
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned commandos have internals cameras which are viewable through a monitor inside the Spec. Ops. Office. The first one selected/spawned will be the team leader.")
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has started to spawn a CentComm DeathSquad.</span>", 1)
|
||||
|
||||
var/input = null
|
||||
while(!input)
|
||||
@@ -25,13 +27,7 @@ var/global/sent_strike_team = 0
|
||||
to_chat(usr, "Looks like someone beat you to it.")
|
||||
return
|
||||
|
||||
sent_strike_team = 1
|
||||
|
||||
shuttle_master.cancelEvac()
|
||||
var/commando_number = commandos_possible //for selecting a leader
|
||||
var/leader_selected = 0 //when the leader is chosen. The last person spawned.
|
||||
|
||||
//Code for spawning a nuke auth code.
|
||||
// Find the nuclear auth code
|
||||
var/nuke_code
|
||||
var/temp_code
|
||||
for(var/obj/machinery/nuclearbomb/N in world)
|
||||
@@ -40,42 +36,69 @@ var/global/sent_strike_team = 0
|
||||
nuke_code = N.r_code
|
||||
break
|
||||
|
||||
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
|
||||
var/list/candidates = list() //candidates for being a commando out of all the active ghosts in world.
|
||||
var/list/commandos = list() //actual commando ghosts as picked by the user.
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(!G.client.holder && !G.client.is_afk()) //Whoever called/has the proc won't be added to the list.
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
candidates += G.key
|
||||
for(var/i=commandos_possible,(i>0&&candidates.len),i--)//Decrease with every commando selected.
|
||||
var/candidate = input("Pick characters to spawn as the commandos. This will go on until there either no more ghosts to pick from or the slots are full.", "Active Players") as null|anything in candidates //It will auto-pick a person when there is only one candidate.
|
||||
candidates -= candidate //Subtract from candidates.
|
||||
commandos += candidate//Add their ghost to commandos.
|
||||
// Find ghosts willing to be DS
|
||||
var/list/commando_ckeys = pollCandidatesByKeyWithVeto(src, usr, commandos_possible, "Join the DeathSquad?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ckeys.len)
|
||||
to_chat(usr, "<span class='userdanger'>Nobody volunteered to join the DeathSquad.</span>")
|
||||
return
|
||||
|
||||
//Spawns commandos and equips them.
|
||||
sent_strike_team = 1
|
||||
|
||||
// Spawns commandos and equips them.
|
||||
var/commando_number = commandos_possible //for selecting a leader
|
||||
var/is_leader = TRUE // set to FALSE after leader is spawned
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(commando_number<=0) break
|
||||
if(L.name == "Commando")
|
||||
leader_selected = commando_number == 1?1:0
|
||||
|
||||
var/mob/living/carbon/human/new_commando = create_death_commando(L, leader_selected)
|
||||
spawn(0)
|
||||
var/use_ds_borg = FALSE
|
||||
var/ghost_key // Ghost ckey that we intend to put into the commando. Can remain undefined if we don't have one.
|
||||
if(commando_ckeys.len)
|
||||
ghost_key = pick(commando_ckeys)
|
||||
commando_ckeys -= ghost_key
|
||||
if(!is_leader)
|
||||
var/new_gender = alert(src, "Select Deathsquad Type.", "DS Character Generation", "Organic", "Cyborg")
|
||||
if(new_gender == "Cyborg")
|
||||
use_ds_borg = TRUE
|
||||
|
||||
if(commandos.len)
|
||||
new_commando.key = pick(commandos)
|
||||
commandos -= new_commando.key
|
||||
new_commando.internal = new_commando.s_store
|
||||
new_commando.update_action_buttons_icon()
|
||||
|
||||
//So they don't forget their code or mission.
|
||||
if(nuke_code)
|
||||
new_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
new_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
|
||||
to_chat(new_commando, "<span class='notice'>You are a Special Ops. [!leader_selected ? "commando" : "<B>LEADER</B>"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
if(use_ds_borg)
|
||||
var/mob/living/silicon/robot/deathsquad/R = new()
|
||||
R.forceMove(get_turf(L))
|
||||
var/rnum = rand(1,1000)
|
||||
var/borgname = "Epsilon [rnum]"
|
||||
R.name = borgname
|
||||
R.custom_name = borgname
|
||||
R.real_name = R.name
|
||||
R.mind = new
|
||||
R.mind.current = R
|
||||
R.mind.original = R
|
||||
R.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
if(!(R.mind in ticker.minds))
|
||||
ticker.minds += R.mind
|
||||
ticker.mode.traitors += R.mind
|
||||
if(ghost_key)
|
||||
R.key = ghost_key
|
||||
if(nuke_code)
|
||||
R.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
R.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(R, "<span class='userdanger'>You are a Special Operations cyborg, in the service of Central Command. \nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
else
|
||||
var/mob/living/carbon/human/new_commando = create_death_commando(L, is_leader)
|
||||
if(ghost_key)
|
||||
new_commando.key = ghost_key
|
||||
new_commando.internal = new_commando.s_store
|
||||
new_commando.update_action_buttons_icon()
|
||||
if(nuke_code)
|
||||
new_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
new_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(new_commando, "<span class='userdanger'>You are a Special Ops [is_leader ? "<B>TEAM LEADER</B>" : "commando"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
|
||||
is_leader = FALSE
|
||||
commando_number--
|
||||
|
||||
//Spawns the rest of the commando gear.
|
||||
//Spawns the rest of the commando gear.
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "Commando_Manual")
|
||||
//new /obj/item/gun/energy/pulse_rifle(L.loc)
|
||||
@@ -92,18 +115,18 @@ var/global/sent_strike_team = 0
|
||||
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
|
||||
qdel(L)
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned a CentComm strike squad.</span>", 1)
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned a CentComm DeathSquad.</span>", 1)
|
||||
log_admin("[key_name(usr)] used Spawn Death Squad.")
|
||||
return 1
|
||||
|
||||
/client/proc/create_death_commando(obj/spawn_location, leader_selected = 0)
|
||||
/client/proc/create_death_commando(obj/spawn_location, is_leader = FALSE)
|
||||
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
|
||||
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/commando_name = pick(last_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(leader_selected)
|
||||
if(is_leader)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[commando_leader_rank] [commando_name]"
|
||||
else
|
||||
@@ -114,21 +137,21 @@ var/global/sent_strike_team = 0
|
||||
|
||||
//Creates mind stuff.
|
||||
new_commando.mind_initialize()
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
new_commando.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
ticker.mode.traitors |= new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
new_commando.equip_death_commando(leader_selected)
|
||||
new_commando.equip_death_commando(is_leader)
|
||||
return new_commando
|
||||
|
||||
/mob/living/carbon/human/proc/equip_death_commando(leader_selected = 0)
|
||||
/mob/living/carbon/human/proc/equip_death_commando(is_leader = FALSE)
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/alt(src)
|
||||
var/obj/item/radio/R = new /obj/item/radio/headset/alt(src)
|
||||
R.set_frequency(DTH_FREQ)
|
||||
equip_to_slot_or_del(R, slot_l_ear)
|
||||
if(leader_selected == 0)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/color/green(src), slot_w_uniform)
|
||||
else
|
||||
if(is_leader)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/color/green(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(src), slot_gloves)
|
||||
@@ -142,21 +165,20 @@ var/global/sent_strike_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/ammo_box/a357(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/combat/nanites(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/storage/box/flashbangs(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_in_backpack)
|
||||
if(!leader_selected)
|
||||
equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/flashlight(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_in_backpack)
|
||||
if(is_leader)
|
||||
equip_to_slot_or_del(new /obj/item/disk/nuclear(src), slot_in_backpack)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack)
|
||||
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/melee/energy/sword/saber(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/shield/energy(src), slot_r_store)
|
||||
equip_to_slot_or_del(new /obj/item/tank/emergency_oxygen/double/full(src), slot_s_store)
|
||||
equip_to_slot_or_del(new /obj/item/gun/projectile/revolver/mateba(src), slot_belt)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/gun/energy/pulse(src), slot_r_hand)
|
||||
|
||||
|
||||
var/obj/item/implant/mindshield/L = new/obj/item/implant/mindshield(src)
|
||||
L.implant(src)
|
||||
|
||||
|
||||
@@ -17,7 +17,9 @@ var/global/sent_syndicate_strike_team = 0
|
||||
return
|
||||
if(alert("Do you want to send in the Syndicate Strike Team? Once enabled, this is irreversible.",,"Yes","No")=="No")
|
||||
return
|
||||
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned syndicates have internals cameras which are viewable through a monitor inside the Syndicate Mothership Bridge. Assigning the team's detailed task is recommended from there. While you will be able to manually pick the candidates from active ghosts, their assignment in the squad will be random.")
|
||||
alert("This 'mode' will go on until everyone is dead or the station is destroyed. You may also admin-call the evac shuttle when appropriate. Spawned syndicates have internals cameras which are viewable through a monitor inside the Syndicate Mothership Bridge. Assigning the team's detailed task is recommended from there. The first one selected/spawned will be the team leader.")
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has started to spawn a Syndicate Strike Team.</span>", 1)
|
||||
|
||||
var/input = null
|
||||
while(!input)
|
||||
@@ -30,15 +32,10 @@ var/global/sent_syndicate_strike_team = 0
|
||||
to_chat(src, "Looks like someone beat you to it.")
|
||||
return
|
||||
|
||||
sent_syndicate_strike_team = 1
|
||||
|
||||
//if(emergency_shuttle.can_recall())
|
||||
// emergency_shuttle.recall() //why, exactly? Admins can do this themselves.
|
||||
|
||||
var/syndicate_commando_number = syndicate_commandos_possible //for selecting a leader
|
||||
var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned.
|
||||
var/is_leader = TRUE // set to FALSE after leader is spawned
|
||||
|
||||
//Code for spawning a nuke auth code.
|
||||
// Find the nuclear auth code
|
||||
var/nuke_code
|
||||
var/temp_code
|
||||
for(var/obj/machinery/nuclearbomb/N in world)
|
||||
@@ -47,29 +44,23 @@ var/global/sent_syndicate_strike_team = 0
|
||||
nuke_code = N.r_code
|
||||
break
|
||||
|
||||
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
|
||||
var/list/candidates = list() //candidates for being a commando out of all the active ghosts in world.
|
||||
var/list/commandos = list() //actual commando ghosts as picked by the user.
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(!G.client.holder && !G.client.is_afk()) //Whoever called/has the proc won't be added to the list.
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
candidates += G.key
|
||||
for(var/i=commandos_possible,(i>0&&candidates.len),i--)//Decrease with every commando selected.
|
||||
var/candidate = input("Pick characters to spawn as the commandos. This will go on until there either no more ghosts to pick from or the slots are full.", "Active Players") as null|anything in candidates //It will auto-pick a person when there is only one candidate.
|
||||
candidates -= candidate //Subtract from candidates.
|
||||
commandos += candidate//Add their ghost to commandos.
|
||||
// Find ghosts willing to be SST
|
||||
var/list/commando_ckeys = pollCandidatesByKeyWithVeto(src, usr, syndicate_commandos_possible, "Join the Syndicate Strike Team?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ckeys.len)
|
||||
to_chat(usr, "<span class='userdanger'>Nobody volunteered to join the SST.</span>")
|
||||
return
|
||||
|
||||
//Spawns commandos and equips them.
|
||||
sent_syndicate_strike_team = 1
|
||||
|
||||
//Spawns commandos and equips them.
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(syndicate_commando_number<=0) break
|
||||
if(L.name == "Syndicate-Commando")
|
||||
syndicate_leader_selected = syndicate_commando_number == 1?1:0
|
||||
var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, is_leader)
|
||||
|
||||
var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, syndicate_leader_selected)
|
||||
|
||||
if(commandos.len)
|
||||
new_syndicate_commando.key = pick(commandos)
|
||||
commandos -= new_syndicate_commando.key
|
||||
if(commando_ckeys.len)
|
||||
new_syndicate_commando.key = pick(commando_ckeys)
|
||||
commando_ckeys -= new_syndicate_commando.key
|
||||
new_syndicate_commando.internal = new_syndicate_commando.s_store
|
||||
new_syndicate_commando.update_action_buttons_icon()
|
||||
|
||||
@@ -78,8 +69,9 @@ var/global/sent_syndicate_strike_team = 0
|
||||
new_syndicate_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code]</span>.")
|
||||
new_syndicate_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input]</span>.")
|
||||
|
||||
to_chat(new_syndicate_commando, "<span class='notice'>You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
to_chat(new_syndicate_commando, "<span class='notice'>You are an Elite Syndicate [is_leader ? "<B>TEAM LEADER</B>" : "commando"] in the service of the Syndicate. \nYour current mission is: <span class='userdanger'>[input]</span></span>")
|
||||
new_syndicate_commando.faction += "syndicate"
|
||||
is_leader = FALSE
|
||||
syndicate_commando_number--
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
@@ -91,14 +83,14 @@ var/global/sent_syndicate_strike_team = 0
|
||||
log_admin("[key_name(usr)] used Spawn Syndicate Squad.")
|
||||
feedback_add_details("admin_verb","SDTHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/create_syndicate_death_commando(obj/spawn_location, syndicate_leader_selected = 0)
|
||||
/client/proc/create_syndicate_death_commando(obj/spawn_location, is_leader = FALSE)
|
||||
var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc)
|
||||
var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(syndicate_leader_selected)
|
||||
if(is_leader)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[syndicate_commando_leader_rank] [syndicate_commando_name]"
|
||||
else
|
||||
@@ -109,29 +101,29 @@ var/global/sent_syndicate_strike_team = 0
|
||||
|
||||
//Creates mind stuff.
|
||||
new_syndicate_commando.mind_initialize()
|
||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||
new_syndicate_commando.mind.assigned_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
|
||||
ticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
|
||||
new_syndicate_commando.equip_syndicate_commando(is_leader)
|
||||
qdel(spawn_location)
|
||||
return new_syndicate_commando
|
||||
|
||||
/mob/living/carbon/human/proc/equip_syndicate_commando(syndicate_leader_selected = 0)
|
||||
/mob/living/carbon/human/proc/equip_syndicate_commando(is_leader = FALSE)
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt/syndteam(src)
|
||||
var/obj/item/radio/R = new /obj/item/radio/headset/syndicate/alt/syndteam(src)
|
||||
R.set_frequency(SYNDTEAM_FREQ)
|
||||
equip_to_slot_or_del(R, slot_l_ear)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/syndie/advance(src), slot_shoes)
|
||||
if(!syndicate_leader_selected)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/strike(src), slot_wear_suit)
|
||||
else
|
||||
if(is_leader)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/red/strike(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(src), slot_gloves)
|
||||
if(!syndicate_leader_selected)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/strike(src), slot_head)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/strike(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(src), slot_gloves)
|
||||
if(is_leader)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/red/strike(src), slot_head)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/strike(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
|
||||
|
||||
@@ -141,14 +133,13 @@ var/global/sent_syndicate_strike_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m45(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/combat/nanites(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_in_backpack)
|
||||
if(!syndicate_leader_selected)
|
||||
equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/card/emag(src), slot_in_backpack)
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/flashlight(src), slot_in_backpack)
|
||||
if(is_leader)
|
||||
equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/disk/nuclear(src), slot_in_backpack)
|
||||
|
||||
else
|
||||
equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/card/emag(src), slot_in_backpack)
|
||||
equip_to_slot_or_del(new /obj/item/melee/energy/sword/saber(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/grenade/empgrenade(src), slot_r_store)
|
||||
equip_to_slot_or_del(new /obj/item/tank/emergency_oxygen/double/full(src), slot_s_store)
|
||||
|
||||
@@ -2,7 +2,7 @@ var/global/vox_tick = 1
|
||||
|
||||
/mob/living/carbon/human/proc/equip_vox_raider()
|
||||
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src)
|
||||
var/obj/item/radio/R = new /obj/item/radio/headset/syndicate(src)
|
||||
R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode.
|
||||
equip_to_slot_or_del(R, slot_l_ear)
|
||||
|
||||
@@ -16,7 +16,7 @@ var/global/vox_tick = 1
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/melee/classic_baton/telescopic(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/chameleon(src), slot_l_store)
|
||||
|
||||
var/obj/item/gun/projectile/automatic/spikethrower/W = new(src)
|
||||
equip_to_slot_or_del(W, slot_r_hand)
|
||||
@@ -28,7 +28,7 @@ var/global/vox_tick = 1
|
||||
equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(src), slot_belt)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/storage/box/emps(src), slot_r_hand)
|
||||
equip_to_slot_or_del(new /obj/item/device/multitool(src), slot_l_hand)
|
||||
equip_to_slot_or_del(new /obj/item/multitool(src), slot_l_hand)
|
||||
|
||||
|
||||
if(3) // Vox saboteur!
|
||||
@@ -38,7 +38,7 @@ var/global/vox_tick = 1
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||
equip_to_slot_or_del(new /obj/item/card/emag(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/gun/dartgun/vox/raider(src), slot_r_hand)
|
||||
equip_to_slot_or_del(new /obj/item/device/multitool(src), slot_l_hand)
|
||||
equip_to_slot_or_del(new /obj/item/multitool(src), slot_l_hand)
|
||||
|
||||
if(4) // Vox medic!
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/medic(src), slot_wear_suit)
|
||||
@@ -50,7 +50,7 @@ var/global/vox_tick = 1
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/breath/vox(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/tank/nitrogen(src), slot_back)
|
||||
equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store)
|
||||
equip_to_slot_or_del(new /obj/item/flashlight(src), slot_r_store)
|
||||
|
||||
var/obj/item/card/id/syndicate/vox/W = new(src)
|
||||
W.name = "[real_name]'s Legitimate Human ID Card"
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
team = "Blue"
|
||||
avatar_y_offset = 1
|
||||
|
||||
/obj/machinery/computer/mob_battle_terminal/red/initialize()
|
||||
/obj/machinery/computer/mob_battle_terminal/red/Initialize()
|
||||
..()
|
||||
check_connection()
|
||||
|
||||
/obj/machinery/computer/mob_battle_terminal/blue/initialize()
|
||||
/obj/machinery/computer/mob_battle_terminal/blue/Initialize()
|
||||
..()
|
||||
check_connection()
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
update_self()
|
||||
forceMove(mob_info.spawn_point)
|
||||
if(!mob_info.is_trap)
|
||||
addtimer(src, "despawn", mob_info.lifetime)
|
||||
addtimer(CALLBACK(src, .proc/despawn), mob_info.lifetime)
|
||||
|
||||
/obj/effect/nanomob/proc/update_self()
|
||||
if(!mob_info)
|
||||
@@ -37,18 +37,18 @@
|
||||
add_alt_appearance("nanomob_avatar", avatar)
|
||||
|
||||
/obj/effect/nanomob/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/P = O
|
||||
if(istype(O, /obj/item/pda))
|
||||
var/obj/item/pda/P = O
|
||||
attempt_capture(P, -20) //attempting a melee capture reduces the mob's effective run_chance by 20% to balance the risk of triggering a trap mob
|
||||
return 1
|
||||
|
||||
/obj/effect/nanomob/hitby(atom/movable/AM)
|
||||
if(istype(AM, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/P = AM
|
||||
if(istype(AM, /obj/item/pda))
|
||||
var/obj/item/pda/P = AM
|
||||
attempt_capture(P) //attempting a ranged capture does not affect the mob's effective run_chance but does prevent you from being shocked by a trap mob
|
||||
return 1
|
||||
|
||||
/obj/effect/nanomob/proc/attempt_capture(obj/item/device/pda/P, catch_mod = 0) //negative catch_mods lower effective run chance,
|
||||
/obj/effect/nanomob/proc/attempt_capture(obj/item/pda/P, catch_mod = 0) //negative catch_mods lower effective run chance,
|
||||
if(!P || !P.current_app || !istype(P.current_app, /datum/data/pda/app/mob_hunter_game) || !P.cartridge)
|
||||
return
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
else
|
||||
icon_state = mob_info.icon_state_normal
|
||||
|
||||
/obj/effect/nanomob/battle/attempt_capture(obj/item/device/pda/P, catch_mod = 0)
|
||||
/obj/effect/nanomob/battle/attempt_capture(obj/item/pda/P, catch_mod = 0)
|
||||
//you can't capture battle avatars, since they belong to someone already
|
||||
return
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly
|
||||
/obj/item/assembly
|
||||
name = "assembly"
|
||||
desc = "A small electronic device that should never exist."
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
var/secured = 1
|
||||
var/list/attached_overlays = null
|
||||
var/obj/item/device/assembly_holder/holder = null
|
||||
var/obj/item/assembly_holder/holder = null
|
||||
var/cooldown = 0//To prevent spam
|
||||
var/wires = WIRE_RECEIVE | WIRE_PULSE
|
||||
var/datum/wires/connected = null // currently only used by timer/signaler
|
||||
@@ -64,8 +64,8 @@
|
||||
return 1
|
||||
|
||||
Destroy()
|
||||
if(istype(src.loc, /obj/item/device/assembly_holder) || istype(holder))
|
||||
var/obj/item/device/assembly_holder/A = src.loc
|
||||
if(istype(src.loc, /obj/item/assembly_holder) || istype(holder))
|
||||
var/obj/item/assembly_holder/A = src.loc
|
||||
if(A.a_left == src)
|
||||
A.a_left = null
|
||||
else if(A.a_right == src)
|
||||
@@ -113,8 +113,8 @@
|
||||
return secured
|
||||
|
||||
|
||||
attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
|
||||
holder = new/obj/item/device/assembly_holder(get_turf(src))
|
||||
attach_assembly(var/obj/item/assembly/A, var/mob/user)
|
||||
holder = new/obj/item/assembly_holder(get_turf(src))
|
||||
if(holder.attach(A,src,user))
|
||||
to_chat(user, "<span class='notice'>You attach \the [A] to \the [src]!</span>")
|
||||
return 1
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(isassembly(W))
|
||||
var/obj/item/device/assembly/A = W
|
||||
var/obj/item/assembly/A = W
|
||||
if((!A.secured) && (!secured))
|
||||
attach_assembly(A,user)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/onetankbomb
|
||||
/obj/item/onetankbomb
|
||||
name = "bomb"
|
||||
icon = 'icons/obj/tank.dmi'
|
||||
item_state = "assembly"
|
||||
@@ -8,15 +8,15 @@
|
||||
throw_range = 4
|
||||
flags = CONDUCT //Copied this from old code, so this may or may not be necessary
|
||||
var/status = 0 //0 - not readied //1 - bomb finished with welder
|
||||
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
|
||||
/obj/item/device/onetankbomb/examine(mob/user)
|
||||
/obj/item/onetankbomb/examine(mob/user)
|
||||
..(user)
|
||||
user.examinate(bombtank)
|
||||
|
||||
/obj/item/device/onetankbomb/update_icon()
|
||||
/obj/item/onetankbomb/update_icon()
|
||||
if(bombtank)
|
||||
icon_state = bombtank.icon_state
|
||||
if(bombassembly)
|
||||
@@ -24,8 +24,8 @@
|
||||
overlays += bombassembly.overlays
|
||||
overlays += "bomb_assembly"
|
||||
|
||||
/obj/item/device/onetankbomb/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/device/analyzer))
|
||||
/obj/item/onetankbomb/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/analyzer))
|
||||
bombtank.attackby(W, user, params)
|
||||
return
|
||||
if(istype(W, /obj/item/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works.
|
||||
@@ -45,23 +45,23 @@
|
||||
if((istype(W, /obj/item/weldingtool) && W:welding))
|
||||
if(!status)
|
||||
status = 1
|
||||
bombers += "[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
|
||||
investigate_log("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB)
|
||||
msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]")
|
||||
log_game("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature - T0C]")
|
||||
to_chat(user, "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>")
|
||||
else
|
||||
status = 0
|
||||
bombers += "[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
|
||||
investigate_log("[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB)
|
||||
to_chat(user, "<span class='notice'>The hole has been closed.</span>")
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/device/onetankbomb/attack_self(mob/user as mob) //pressing the bomb accesses its assembly
|
||||
/obj/item/onetankbomb/attack_self(mob/user as mob) //pressing the bomb accesses its assembly
|
||||
bombassembly.attack_self(user, 1)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
|
||||
/obj/item/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
|
||||
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||
sleep(10)
|
||||
if(!src)
|
||||
@@ -71,37 +71,37 @@
|
||||
else
|
||||
bombtank.release()
|
||||
|
||||
/obj/item/device/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
|
||||
/obj/item/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(bombassembly)
|
||||
bombassembly.HasProximity(AM)
|
||||
|
||||
/obj/item/device/onetankbomb/Crossed(atom/movable/AM as mob|obj) //for mousetraps
|
||||
/obj/item/onetankbomb/Crossed(atom/movable/AM as mob|obj) //for mousetraps
|
||||
if(bombassembly)
|
||||
bombassembly.Crossed(AM)
|
||||
|
||||
/obj/item/device/onetankbomb/on_found(mob/finder as mob) //for mousetraps
|
||||
/obj/item/onetankbomb/on_found(mob/finder as mob) //for mousetraps
|
||||
if(bombassembly)
|
||||
bombassembly.on_found(finder)
|
||||
|
||||
/obj/item/device/onetankbomb/hear_talk(mob/living/M as mob, msg)
|
||||
/obj/item/onetankbomb/hear_talk(mob/living/M as mob, msg)
|
||||
if(bombassembly)
|
||||
bombassembly.hear_talk(M, msg)
|
||||
|
||||
/obj/item/device/onetankbomb/hear_message(mob/living/M as mob, msg)
|
||||
/obj/item/onetankbomb/hear_message(mob/living/M as mob, msg)
|
||||
if(bombassembly)
|
||||
bombassembly.hear_message(M, msg)
|
||||
|
||||
// ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ----------
|
||||
|
||||
/obj/item/tank/proc/bomb_assemble(W,user) //Bomb assembly proc. This turns assembly+tank into a bomb
|
||||
var/obj/item/device/assembly_holder/S = W
|
||||
var/obj/item/assembly_holder/S = W
|
||||
var/mob/M = user
|
||||
if(!S.secured) //Check if the assembly is secured
|
||||
return
|
||||
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
|
||||
return
|
||||
|
||||
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
|
||||
var/obj/item/onetankbomb/R = new /obj/item/onetankbomb(loc)
|
||||
|
||||
M.drop_item() //Remove the assembly from your hands
|
||||
M.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/health
|
||||
/obj/item/assembly/health
|
||||
name = "health sensor"
|
||||
desc = "Used for scanning and monitoring health."
|
||||
icon_state = "health"
|
||||
@@ -12,12 +12,12 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/device/assembly/health/activate()
|
||||
/obj/item/assembly/health/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
toggle_scan()
|
||||
return 0
|
||||
|
||||
/obj/item/device/assembly/health/toggle_secure()
|
||||
/obj/item/assembly/health/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured && scanning)
|
||||
processing_objects.Add(src)
|
||||
@@ -27,8 +27,8 @@
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
/obj/item/device/assembly/health/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
/obj/item/assembly/health/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/multitool))
|
||||
if(alarm_health == 0)
|
||||
alarm_health = -90
|
||||
user.show_message("You toggle [src] to \"detect death\" mode.")
|
||||
@@ -39,7 +39,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/health/process()
|
||||
/obj/item/assembly/health/process()
|
||||
if(!scanning || !secured)
|
||||
return
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/health/proc/toggle_scan()
|
||||
/obj/item/assembly/health/proc/toggle_scan()
|
||||
if(!secured) return 0
|
||||
scanning = !scanning
|
||||
if(scanning)
|
||||
@@ -69,7 +69,7 @@
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy
|
||||
/obj/item/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy
|
||||
if(!secured)
|
||||
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
|
||||
return 0
|
||||
@@ -83,7 +83,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/health/Topic(href, href_list)
|
||||
/obj/item/assembly/health/Topic(href, href_list)
|
||||
..()
|
||||
if(!ismob(usr))
|
||||
return
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
/proc/isassembly(O)
|
||||
if(istype(O, /obj/item/device/assembly))
|
||||
if(istype(O, /obj/item/assembly))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isigniter(O)
|
||||
if(istype(O, /obj/item/device/assembly/igniter))
|
||||
if(istype(O, /obj/item/assembly/igniter))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isinfared(O)
|
||||
if(istype(O, /obj/item/device/assembly/infra))
|
||||
if(istype(O, /obj/item/assembly/infra))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isprox(O)
|
||||
if(istype(O, /obj/item/device/assembly/prox_sensor))
|
||||
if(istype(O, /obj/item/assembly/prox_sensor))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/issignaler(O)
|
||||
if(istype(O, /obj/item/device/assembly/signaler))
|
||||
if(istype(O, /obj/item/assembly/signaler))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/istimer(O)
|
||||
if(istype(O, /obj/item/device/assembly/timer))
|
||||
if(istype(O, /obj/item/assembly/timer))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly_holder
|
||||
/obj/item/assembly_holder
|
||||
name = "Assembly"
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = "holder"
|
||||
@@ -10,13 +10,13 @@
|
||||
throw_range = 10
|
||||
|
||||
var/secured = 0
|
||||
var/obj/item/device/assembly/a_left = null
|
||||
var/obj/item/device/assembly/a_right = null
|
||||
var/obj/item/assembly/a_left = null
|
||||
var/obj/item/assembly/a_right = null
|
||||
|
||||
proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
proc/attach(var/obj/item/D, var/obj/item/D2, var/mob/user)
|
||||
return
|
||||
|
||||
proc/process_activation(var/obj/item/device/D)
|
||||
proc/process_activation(var/obj/item/D)
|
||||
return
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
a_right.holder = null
|
||||
return ..()
|
||||
|
||||
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
attach(var/obj/item/D, var/obj/item/D2, var/mob/user)
|
||||
if((!D)||(!D2)) return 0
|
||||
if((!isassembly(D))||(!isassembly(D2))) return 0
|
||||
if((D:secured)||(D2:secured)) return 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/igniter
|
||||
/obj/item/assembly/igniter
|
||||
name = "igniter"
|
||||
desc = "A small electronic device able to ignite combustable substances."
|
||||
icon_state = "igniter"
|
||||
@@ -6,29 +6,29 @@
|
||||
origin_tech = "magnets=1"
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
|
||||
/obj/item/device/assembly/igniter/New()
|
||||
/obj/item/assembly/igniter/New()
|
||||
..()
|
||||
sparks.set_up(2, 0, src)
|
||||
sparks.attach(src)
|
||||
|
||||
/obj/item/device/assembly/igniter/Destroy()
|
||||
/obj/item/assembly/igniter/Destroy()
|
||||
QDEL_NULL(sparks)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/device/assembly/igniter/describe()
|
||||
/obj/item/assembly/igniter/describe()
|
||||
return "The igniter is [secured?"secured.":"unsecured."]"
|
||||
|
||||
|
||||
/obj/item/device/assembly/igniter/activate()
|
||||
/obj/item/assembly/igniter/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
var/turf/location = get_turf(loc)
|
||||
if(location) location.hotspot_expose(1000,1000)
|
||||
if(istype(src.loc,/obj/item/device/assembly_holder))
|
||||
if(istype(src.loc,/obj/item/assembly_holder))
|
||||
if(istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
|
||||
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
|
||||
if(tank)
|
||||
tank.boom()
|
||||
tank.boom(TRUE)
|
||||
if(istype(src.loc.loc, /obj/item/reagent_containers/glass/beaker/))
|
||||
var/obj/item/reagent_containers/glass/beaker/beakerbomb = src.loc.loc
|
||||
if(beakerbomb)
|
||||
@@ -38,7 +38,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/igniter/attack_self(mob/user as mob)
|
||||
/obj/item/assembly/igniter/attack_self(mob/user as mob)
|
||||
activate()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/infra
|
||||
/obj/item/assembly/infra
|
||||
name = "infrared emitter"
|
||||
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
|
||||
icon_state = "infrared"
|
||||
@@ -18,27 +18,27 @@
|
||||
var/emission_cycles = 0
|
||||
var/emission_cap = 20
|
||||
|
||||
/obj/item/device/assembly/infra/Destroy()
|
||||
/obj/item/assembly/infra/Destroy()
|
||||
if(first)
|
||||
QDEL_NULL(first)
|
||||
last = null
|
||||
fire_location = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/infra/describe()
|
||||
/obj/item/assembly/infra/describe()
|
||||
return "The assembly is [secured ? "secure" : "not secure"]. The infrared trigger is [on ? "on" : "off"]."
|
||||
|
||||
/obj/item/device/assembly/infra/examine(mob/user)
|
||||
/obj/item/assembly/infra/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, describe())
|
||||
|
||||
/obj/item/device/assembly/infra/activate()
|
||||
/obj/item/assembly/infra/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
on = !on
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/device/assembly/infra/toggle_secure()
|
||||
/obj/item/assembly/infra/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
@@ -50,17 +50,17 @@
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
/obj/item/device/assembly/infra/New()
|
||||
/obj/item/assembly/infra/New()
|
||||
..()
|
||||
if(!secured)
|
||||
toggle_secure()
|
||||
|
||||
/obj/item/device/assembly/infra/proc/arm() // Forces the device to arm no matter its current state.
|
||||
/obj/item/assembly/infra/proc/arm() // Forces the device to arm no matter its current state.
|
||||
if(!secured) // Checked because arm() might be called sometime after the object is spawned.
|
||||
toggle_secure()
|
||||
on = 1
|
||||
|
||||
/obj/item/device/assembly/infra/update_icon()
|
||||
/obj/item/assembly/infra/update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(on)
|
||||
@@ -70,7 +70,7 @@
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
|
||||
/obj/item/device/assembly/infra/process()
|
||||
/obj/item/assembly/infra/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if(first && (!on || !fire_location || fire_location != T || emission_cycles >= emission_cap))
|
||||
qdel(first)
|
||||
@@ -99,30 +99,30 @@
|
||||
I.limit = 8
|
||||
I.process()
|
||||
|
||||
/obj/item/device/assembly/infra/attack_hand()
|
||||
/obj/item/assembly/infra/attack_hand()
|
||||
qdel(first)
|
||||
..()
|
||||
|
||||
/obj/item/device/assembly/infra/Move()
|
||||
/obj/item/assembly/infra/Move()
|
||||
var/t = dir
|
||||
..()
|
||||
dir = t
|
||||
qdel(first)
|
||||
|
||||
/obj/item/device/assembly/infra/holder_movement()
|
||||
/obj/item/assembly/infra/holder_movement()
|
||||
if(!holder) return 0
|
||||
qdel(first)
|
||||
return 1
|
||||
|
||||
/obj/item/device/assembly/infra/equipped(var/mob/user, var/slot)
|
||||
/obj/item/assembly/infra/equipped(var/mob/user, var/slot)
|
||||
qdel(first)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/infra/pickup(mob/user)
|
||||
/obj/item/assembly/infra/pickup(mob/user)
|
||||
qdel(first)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/infra/proc/trigger_beam()
|
||||
/obj/item/assembly/infra/proc/trigger_beam()
|
||||
if(!secured || !on || cooldown > 0)
|
||||
return 0
|
||||
pulse(0)
|
||||
@@ -133,7 +133,7 @@
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
|
||||
/obj/item/device/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel
|
||||
/obj/item/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel
|
||||
if(!secured) return
|
||||
user.set_machine(src)
|
||||
var/dat = {"<TT><B>Infrared Laser</B>
|
||||
@@ -148,7 +148,7 @@
|
||||
popup.open(0)
|
||||
onclose(user, "infra")
|
||||
|
||||
/obj/item/device/assembly/infra/Topic(href, href_list)
|
||||
/obj/item/assembly/infra/Topic(href, href_list)
|
||||
..()
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=infra")
|
||||
@@ -169,7 +169,7 @@
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
/obj/item/device/assembly/infra/verb/rotate()//This could likely be better
|
||||
/obj/item/assembly/infra/verb/rotate()//This could likely be better
|
||||
set name = "Rotate Infrared Laser"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/armed/New()
|
||||
/obj/item/assembly/infra/armed/New()
|
||||
..()
|
||||
spawn(3)
|
||||
if(holder)
|
||||
@@ -195,7 +195,7 @@
|
||||
dir = holder.master.dir
|
||||
arm()
|
||||
|
||||
/obj/item/device/assembly/infra/armed/stealth
|
||||
/obj/item/assembly/infra/armed/stealth
|
||||
visible = 0
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
icon_state = "ibeam"
|
||||
var/obj/effect/beam/i_beam/next = null
|
||||
var/obj/effect/beam/i_beam/previous = null
|
||||
var/obj/item/device/assembly/infra/master = null
|
||||
var/obj/item/assembly/infra/master = null
|
||||
var/limit = null
|
||||
var/visible = 0.0
|
||||
var/left = null
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/mousetrap
|
||||
/obj/item/assembly/mousetrap
|
||||
name = "mousetrap"
|
||||
desc = "A handy little spring-loaded trap for catching pesty rodents."
|
||||
icon_state = "mousetrap"
|
||||
@@ -75,7 +75,7 @@
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking [user.p_their()] fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You disarm [src].</span>")
|
||||
@@ -91,7 +91,7 @@
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking [user.p_their()] fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
..()
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
on_found(mob/finder as mob)
|
||||
if(armed)
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking [finder.p_their()] fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
triggered(finder, finder.hand ? "l_hand" : "r_hand")
|
||||
return 1 //end the search!
|
||||
@@ -128,12 +128,12 @@
|
||||
triggered(null)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/armed
|
||||
/obj/item/assembly/mousetrap/armed
|
||||
icon_state = "mousetraparmed"
|
||||
armed = 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/verb/hide_under()
|
||||
/obj/item/assembly/mousetrap/verb/hide_under()
|
||||
set src in oview(1)
|
||||
set name = "Hide"
|
||||
set category = "Object"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/prox_sensor
|
||||
/obj/item/assembly/prox_sensor
|
||||
name = "proximity sensor"
|
||||
desc = "Used for scanning and alerting when someone enters a certain proximity."
|
||||
icon_state = "prox"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "shock_kit"
|
||||
var/obj/item/clothing/head/helmet/part1 = null
|
||||
var/obj/item/device/radio/electropack/part2 = null
|
||||
var/obj/item/radio/electropack/part2 = null
|
||||
var/status = 0
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/signaler
|
||||
/obj/item/assembly/signaler
|
||||
name = "remote signaling device"
|
||||
desc = "Used to remotely activate devices."
|
||||
icon_state = "signaller"
|
||||
@@ -18,25 +18,26 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/airlock_wire = null
|
||||
|
||||
/obj/item/device/assembly/signaler/New()
|
||||
/obj/item/assembly/signaler/New()
|
||||
..()
|
||||
if(radio_controller)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/item/device/assembly/signaler/initialize()
|
||||
/obj/item/assembly/signaler/Initialize()
|
||||
..()
|
||||
if(radio_controller)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/item/device/assembly/signaler/Destroy()
|
||||
/obj/item/assembly/signaler/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/signaler/describe()
|
||||
/obj/item/assembly/signaler/describe()
|
||||
return "\The [src]'s power light is [receiving?"on":"off"]"
|
||||
|
||||
/obj/item/device/assembly/signaler/activate()
|
||||
/obj/item/assembly/signaler/activate()
|
||||
if(cooldown > 0) return 0
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
@@ -45,12 +46,12 @@
|
||||
signal()
|
||||
return 1
|
||||
|
||||
/obj/item/device/assembly/signaler/update_icon()
|
||||
/obj/item/assembly/signaler/update_icon()
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/signaler/interact(mob/user as mob, flag1)
|
||||
/obj/item/assembly/signaler/interact(mob/user as mob, flag1)
|
||||
var/t1 = "-------"
|
||||
// if((src.b_stat && !( flag1 )))
|
||||
// t1 = text("-------<BR>\nGreen Wire: []<BR>\nRed Wire: []<BR>\nBlue Wire: []<BR>\n", (src.wires & 4 ? "<A href='?src=[UID()];wires=4'>Cut Wire</A>" : "<A href='?src=[UID()];wires=4'>Mend Wire</A>"), (src.wires & 2 ? "<A href='?src=[UID()];wires=2'>Cut Wire</A>" : "<A href='?src=[UID()];wires=2'>Mend Wire</A>"), (src.wires & 1 ? "<A href='?src=[UID()];wires=1'>Cut Wire</A>" : "<A href='?src=[UID()];wires=1'>Mend Wire</A>"))
|
||||
@@ -89,7 +90,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/signaler/Topic(href, href_list)
|
||||
/obj/item/assembly/signaler/Topic(href, href_list)
|
||||
..()
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
@@ -120,7 +121,7 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/signaler/proc/signal()
|
||||
/obj/item/assembly/signaler/proc/signal()
|
||||
if(!radio_connection) return
|
||||
|
||||
var/datum/signal/signal = new
|
||||
@@ -136,13 +137,13 @@
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/signaler/pulse(var/radio = 0)
|
||||
/obj/item/assembly/signaler/pulse(var/radio = 0)
|
||||
if(src.connected && src.wires)
|
||||
connected.Pulse(src)
|
||||
else
|
||||
return ..(radio)
|
||||
|
||||
/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal)
|
||||
/obj/item/assembly/signaler/receive_signal(datum/signal/signal)
|
||||
if( !receiving || !signal )
|
||||
return 0
|
||||
|
||||
@@ -156,7 +157,7 @@
|
||||
O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency)
|
||||
/obj/item/assembly/signaler/proc/set_frequency(new_frequency)
|
||||
if(!radio_controller)
|
||||
sleep(20)
|
||||
if(!radio_controller)
|
||||
@@ -167,17 +168,17 @@
|
||||
return
|
||||
|
||||
// Embedded signaller used in anomalies.
|
||||
/obj/item/device/assembly/signaler/anomaly
|
||||
/obj/item/assembly/signaler/anomaly
|
||||
name = "anomaly core"
|
||||
desc = "The neutralized core of an anomaly. It'd probably be valuable for research."
|
||||
icon_state = "anomaly core"
|
||||
item_state = "electronic"
|
||||
receiving = 1
|
||||
|
||||
/obj/item/device/assembly/signaler/anomaly/receive_signal(datum/signal/signal)
|
||||
/obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal)
|
||||
..()
|
||||
for(var/obj/effect/anomaly/A in orange(0, src))
|
||||
A.anomalyNeutralize()
|
||||
|
||||
/obj/item/device/assembly/signaler/anomaly/attack_self()
|
||||
/obj/item/assembly/signaler/anomaly/attack_self()
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/timer
|
||||
/obj/item/assembly/timer
|
||||
name = "timer"
|
||||
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
|
||||
icon_state = "timer"
|
||||
@@ -112,9 +112,9 @@
|
||||
|
||||
if(href_list["time"])
|
||||
timing = !timing
|
||||
if(timing && istype(holder, /obj/item/device/transfer_valve))
|
||||
if(timing && istype(holder, /obj/item/transfer_valve))
|
||||
message_admins("[key_name_admin(usr)] activated [src] attachment on [holder].")
|
||||
bombers += "[key_name(usr)] activated [src] attachment for [loc]"
|
||||
investigate_log("[key_name(usr)] activated [src] attachment for [loc]", INVESTIGATE_BOMB)
|
||||
log_game("[key_name(usr)] activated [src] attachment for [loc]")
|
||||
update_icon()
|
||||
if(href_list["reset"])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/assembly/voice
|
||||
/obj/item/assembly/voice
|
||||
name = "voice analyzer"
|
||||
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
|
||||
icon_state = "voice"
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
var/brute_damage = 0
|
||||
var/oxy_damage = 0
|
||||
|
||||
/obj/effect/landmark/corpse/initialize()
|
||||
/obj/effect/landmark/corpse/Initialize()
|
||||
..()
|
||||
if(istype(src,/obj/effect/landmark/corpse/clown))
|
||||
var/obj/effect/landmark/corpse/clown/C = src
|
||||
C.chooseRank()
|
||||
@@ -103,7 +104,7 @@
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/swat
|
||||
corpseback = /obj/item/storage/backpack
|
||||
@@ -119,7 +120,7 @@
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
corpseshoes = /obj/item/clothing/shoes/magboots/syndie
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
corpseback = /obj/item/tank/jetpack/oxygen
|
||||
@@ -139,7 +140,7 @@
|
||||
corpseshoes = /obj/item/clothing/shoes/black
|
||||
corpsehelmet = /obj/item/clothing/head/chefhat
|
||||
corpseback = /obj/item/storage/backpack
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpseid = 1
|
||||
corpseidjob = "Chef"
|
||||
corpseidaccess = "Chef"
|
||||
@@ -147,11 +148,11 @@
|
||||
|
||||
/obj/effect/landmark/corpse/doctor
|
||||
name = "Doctor"
|
||||
corpseradio = /obj/item/device/radio/headset/headset_med
|
||||
corpseradio = /obj/item/radio/headset/headset_med
|
||||
corpseuniform = /obj/item/clothing/under/rank/medical
|
||||
corpsesuit = /obj/item/clothing/suit/storage/labcoat
|
||||
corpseback = /obj/item/storage/backpack/medic
|
||||
corpsepocket1 = /obj/item/device/flashlight/pen
|
||||
corpsepocket1 = /obj/item/flashlight/pen
|
||||
corpseshoes = /obj/item/clothing/shoes/black
|
||||
corpseid = 1
|
||||
corpseidjob = "Medical Doctor"
|
||||
@@ -159,7 +160,7 @@
|
||||
|
||||
/obj/effect/landmark/corpse/engineer
|
||||
name = "Engineer"
|
||||
corpseradio = /obj/item/device/radio/headset/headset_eng
|
||||
corpseradio = /obj/item/radio/headset/headset_eng
|
||||
corpseuniform = /obj/item/clothing/under/rank/engineer
|
||||
corpseback = /obj/item/storage/backpack/industrial
|
||||
corpseshoes = /obj/item/clothing/shoes/workboots
|
||||
@@ -183,7 +184,7 @@
|
||||
corpseuniform = /obj/item/clothing/under/officeruniform
|
||||
corpsesuit = /obj/item/clothing/suit/officercoat
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
||||
corpsepocket1 = /obj/item/bikehorn
|
||||
corpseback = /obj/item/storage/backpack/clown
|
||||
@@ -197,7 +198,7 @@
|
||||
corpseuniform = /obj/item/clothing/under/soldieruniform
|
||||
corpsesuit = /obj/item/clothing/suit/soldiercoat
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
||||
corpsepocket1 = /obj/item/bikehorn
|
||||
corpseback = /obj/item/storage/backpack/clown
|
||||
@@ -211,7 +212,7 @@
|
||||
name = "Clown King"
|
||||
corpseuniform = /obj/item/clothing/under/rank/clown
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
||||
corpsehelmet = /obj/item/clothing/head/crown
|
||||
corpsepocket1 = /obj/item/bikehorn
|
||||
@@ -226,7 +227,7 @@
|
||||
name = "Mime"
|
||||
corpseuniform = /obj/item/clothing/under/mime
|
||||
corpseshoes = /obj/item/clothing/shoes/black
|
||||
corpseradio = /obj/item/device/radio/headset
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/mime
|
||||
corpseback = /obj/item/storage/backpack
|
||||
corpseid = 1
|
||||
@@ -236,7 +237,7 @@
|
||||
|
||||
/obj/effect/landmark/corpse/scientist
|
||||
name = "Scientist"
|
||||
corpseradio = /obj/item/device/radio/headset/headset_sci
|
||||
corpseradio = /obj/item/radio/headset/headset_sci
|
||||
corpseuniform = /obj/item/clothing/under/rank/scientist
|
||||
corpsesuit = /obj/item/clothing/suit/storage/labcoat/science
|
||||
corpseback = /obj/item/storage/backpack
|
||||
@@ -246,7 +247,7 @@
|
||||
corpseidaccess = "Scientist"
|
||||
|
||||
/obj/effect/landmark/corpse/miner
|
||||
corpseradio = /obj/item/device/radio/headset/headset_cargo
|
||||
corpseradio = /obj/item/radio/headset/headset_cargo
|
||||
corpseuniform = /obj/item/clothing/under/rank/miner
|
||||
corpsegloves = /obj/item/clothing/gloves/fingerless
|
||||
corpseback = /obj/item/storage/backpack/industrial
|
||||
@@ -265,7 +266,7 @@
|
||||
|
||||
/obj/effect/landmark/corpse/bridgeofficer
|
||||
name = "Bridge Officer"
|
||||
corpseradio = /obj/item/device/radio/headset/heads/hop
|
||||
corpseradio = /obj/item/radio/headset/heads/hop
|
||||
corpseuniform = /obj/item/clothing/under/rank/centcom_officer
|
||||
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
|
||||
corpseshoes = /obj/item/clothing/shoes/black
|
||||
@@ -278,7 +279,7 @@
|
||||
name = "Commander"
|
||||
corpseuniform = /obj/item/clothing/under/rank/centcom_commander
|
||||
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
|
||||
corpseradio = /obj/item/device/radio/headset/heads/captain
|
||||
corpseradio = /obj/item/radio/headset/heads/captain
|
||||
corpseglasses = /obj/item/clothing/glasses/eyepatch
|
||||
corpsemask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
corpsehelmet = /obj/item/clothing/head/centhat
|
||||
|
||||
@@ -9,7 +9,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
unacidable = 1
|
||||
var/active = 0
|
||||
|
||||
/obj/machinery/gateway/initialize()
|
||||
/obj/machinery/gateway/Initialize()
|
||||
..()
|
||||
update_icon()
|
||||
update_density_from_dir()
|
||||
@@ -44,7 +44,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
if(!the_gateway)
|
||||
the_gateway = src
|
||||
|
||||
/obj/machinery/gateway/centerstation/initialize()
|
||||
/obj/machinery/gateway/centerstation/Initialize()
|
||||
..()
|
||||
update_icon()
|
||||
wait = world.time + config.gateway_delay //+ thirty minutes default
|
||||
@@ -152,8 +152,8 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
/obj/machinery/gateway/centerstation/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/multitool))
|
||||
to_chat(user, "The gate is already calibrated, there is no work for you to do here.")
|
||||
return
|
||||
|
||||
@@ -170,7 +170,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
var/obj/machinery/gateway/centeraway/stationgate = null
|
||||
|
||||
|
||||
/obj/machinery/gateway/centeraway/initialize()
|
||||
/obj/machinery/gateway/centeraway/Initialize()
|
||||
..()
|
||||
update_icon()
|
||||
stationgate = locate(/obj/machinery/gateway/centerstation) in world
|
||||
@@ -258,8 +258,8 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
/obj/machinery/gateway/centeraway/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/multitool))
|
||||
if(calibrated)
|
||||
to_chat(user, "<span class='notice'>The gate is already calibrated, there is no work for you to do here.</span>")
|
||||
return
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
var/lootdoubles = 0 //if the same item can be spawned twice
|
||||
var/loot = "" //a list of possible items to spawn- a string of paths
|
||||
|
||||
/obj/effect/spawner/away/lootdrop/initialize()
|
||||
/obj/effect/spawner/away/lootdrop/Initialize()
|
||||
..()
|
||||
var/list/things = params2list(loot)
|
||||
|
||||
if(things && things.len)
|
||||
|
||||
@@ -18,13 +18,8 @@
|
||||
template_name = tname
|
||||
if(template_name)
|
||||
template = map_templates[template_name]
|
||||
// Catches the interim-zone of worldstart and roundstart
|
||||
// I want both the ticker to exist (so mapped-in maploaders don't trip this)
|
||||
// but also not have started yet (since the zlevel system would handle this on its own otherwise)
|
||||
if((ticker && ticker.current_state < GAME_STATE_PLAYING))
|
||||
attempt_init()
|
||||
|
||||
/obj/effect/landmark/map_loader/initialize()
|
||||
/obj/effect/landmark/map_loader/Initialize()
|
||||
..()
|
||||
if(template)
|
||||
load(template)
|
||||
@@ -48,7 +43,7 @@
|
||||
/obj/effect/landmark/map_loader/random
|
||||
var/template_list = ""
|
||||
|
||||
/obj/effect/landmark/map_loader/random/initialize()
|
||||
/obj/effect/landmark/map_loader/random/Initialize()
|
||||
..()
|
||||
if(template_list)
|
||||
template_name = safepick(splittext(template_list, ";"))
|
||||
|
||||
@@ -422,13 +422,6 @@ var/global/dmm_suite/preloader/_preloader = new
|
||||
|
||||
return to_return
|
||||
|
||||
//atom creation method that preloads variables at creation
|
||||
/atom/New()
|
||||
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
_preloader.load(src)
|
||||
|
||||
. = ..()
|
||||
|
||||
/dmm_suite/Destroy()
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/water_timer = 0
|
||||
|
||||
/obj/effect/waterfall/New()
|
||||
water_timer = addtimer(src, "drip", water_frequency)
|
||||
water_timer = addtimer(CALLBACK(src, .proc/drip), water_frequency, TIMER_STOPPABLE)
|
||||
|
||||
/obj/effect/waterfall/Destroy()
|
||||
if(water_timer)
|
||||
@@ -25,4 +25,4 @@
|
||||
W.dir = dir
|
||||
spawn(1)
|
||||
W.loc = get_step(W, dir)
|
||||
water_timer = addtimer(src, "drip", water_frequency)
|
||||
water_timer = addtimer(CALLBACK(src, .proc/drip), water_frequency, TIMER_STOPPABLE)
|
||||
@@ -54,7 +54,7 @@
|
||||
name = "space hotel pamphlet"
|
||||
info = "<h3>Welcome to Deep Space Hotel 419!</h3>Thank you for choosing our hotel. Simply hand your credit or debit card to the concierge and get your room key! To check out, hand your credit card back.<small><h4>Conditions:</h4><ul><li>The hotel is not responsible for any losses due to time or space anomalies.<li>The hotel is not responsible for events that occur outside of the hotel station, including, but not limited to, events that occur inside of dimensional pockets.<li>The hotel is not responsible for overcharging your account.<li>The hotel is not responsible for missing persons.<li>The hotel is not responsible for mind-altering effects due to drugs, magic, demons, or space worms.</ul></small>"
|
||||
|
||||
/obj/effect/landmark/map_loader/hotel_room/initialize()
|
||||
/obj/effect/landmark/map_loader/hotel_room/Initialize()
|
||||
..()
|
||||
// load and randomly assign rooms
|
||||
var/global/list/south_room_templates = list()
|
||||
@@ -194,7 +194,7 @@
|
||||
var/list/vacant_rooms[0] // list of vacant room doors
|
||||
var/list/guests[0] // assoc list of [guest mob]=room id
|
||||
|
||||
var/obj/item/device/radio/radio // for shouting at deadbeats
|
||||
var/obj/item/radio/radio // for shouting at deadbeats
|
||||
|
||||
/obj/effect/hotel_controller/New()
|
||||
..()
|
||||
@@ -238,7 +238,7 @@
|
||||
return null
|
||||
|
||||
D.occupant = occupant
|
||||
D.roomtimer = addtimer(src, "process_room", PAY_INTERVAL, 0, roomid)
|
||||
D.roomtimer = addtimer(CALLBACK(src, .proc/process_room, roomid), PAY_INTERVAL, TIMER_STOPPABLE)
|
||||
vacant_rooms -= D
|
||||
guests[occupant] = roomid
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
return
|
||||
|
||||
if(D.account.charge(100, transaction_purpose = "10 minutes", dest_name = name))
|
||||
D.roomtimer = addtimer(src, "process_room", PAY_INTERVAL, 0, roomid)
|
||||
D.roomtimer = addtimer(CALLBACK(src, .proc/process_room, roomid), PAY_INTERVAL, TIMER_STOPPABLE)
|
||||
else
|
||||
force_checkout(roomid)
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ var/sc_safecode5 = "[rand(0,9)]"
|
||||
l_code = "[sc_safecode1][sc_safecode2][sc_safecode3][sc_safecode4][sc_safecode5]"
|
||||
l_set = 1
|
||||
new /obj/item/gun/energy/mindflayer(src)
|
||||
new /obj/item/device/soulstone(src)
|
||||
new /obj/item/soulstone(src)
|
||||
new /obj/item/clothing/head/helmet/space/cult(src)
|
||||
new /obj/item/clothing/suit/space/cult(src)
|
||||
//new /obj/item/teleportation_scroll(src)
|
||||
|
||||
@@ -217,14 +217,15 @@
|
||||
C.update_canmove()
|
||||
return 1
|
||||
|
||||
/obj/item/device/wildwest_communicator
|
||||
/obj/item/wildwest_communicator
|
||||
name = "Syndicate Comms Device"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "gangtool-red"
|
||||
item_state = "walkietalkie"
|
||||
desc = "Use to communicate with the syndicate base commander."
|
||||
var/used = FALSE
|
||||
|
||||
/obj/item/device/wildwest_communicator/attack_self(mob/living/user)
|
||||
/obj/item/wildwest_communicator/attack_self(mob/living/user)
|
||||
|
||||
if(!is_away_level(user.z))
|
||||
to_chat(user, "<span class='warning'>The communicator emits a faint beep. Perhaps it is out of range?</span>")
|
||||
@@ -270,7 +271,7 @@
|
||||
stand_down()
|
||||
used = TRUE
|
||||
|
||||
/obj/item/device/wildwest_communicator/proc/stand_down()
|
||||
/obj/item/wildwest_communicator/proc/stand_down()
|
||||
for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in living_mob_list)
|
||||
W.on_alert = FALSE
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
..()
|
||||
levels += src
|
||||
|
||||
/obj/effect/levelref/initialize()
|
||||
/obj/effect/levelref/Initialize()
|
||||
..()
|
||||
for(var/obj/effect/levelref/O in levels)
|
||||
if(id == O.id && O != src)
|
||||
@@ -161,7 +161,7 @@
|
||||
..()
|
||||
portals += src
|
||||
|
||||
/obj/effect/view_portal/initialize()
|
||||
/obj/effect/view_portal/Initialize()
|
||||
..()
|
||||
if(id)
|
||||
for(var/obj/effect/view_portal/O in portals)
|
||||
|
||||
@@ -152,3 +152,7 @@
|
||||
/datum/gear/hat/flowerpin
|
||||
display_name = "hair flower"
|
||||
path = /obj/item/clothing/head/hairflower
|
||||
|
||||
/datum/gear/hat/kitty
|
||||
display_name = "kitty headband"
|
||||
path = /obj/item/clothing/head/kitty
|
||||
|
||||
@@ -411,7 +411,7 @@ BLIND // can't see anything
|
||||
desc = "[desc] They have had their toes opened up."
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] have already had their toes cut open!</span>")
|
||||
to_chat(user, "<span class='notice'>[src] have already had [p_their()] toes cut open!</span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -489,7 +489,7 @@ BLIND // can't see anything
|
||||
for(var/obj/item/I in O.contents) //Dump the pocket out onto the floor below the user.
|
||||
user.unEquip(I,1)
|
||||
|
||||
user.visible_message("<span class='warning'>[user] bellows, [pick("shredding", "ripping open", "tearing off")] their jacket in a fit of rage!</span>","<span class='warning'>You accidentally [pick("shred", "rend", "tear apart")] \the [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")]!</span>")
|
||||
user.visible_message("<span class='warning'>[user] bellows, [pick("shredding", "ripping open", "tearing off")] [user.p_their()] jacket in a fit of rage!</span>","<span class='warning'>You accidentally [pick("shred", "rend", "tear apart")] [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")]!</span>")
|
||||
user.unEquip(src)
|
||||
qdel(src) //Now that the pockets have been emptied, we can safely destroy the jacket.
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
|
||||
@@ -550,7 +550,7 @@ BLIND // can't see anything
|
||||
permeability_coefficient = 0.02
|
||||
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank)
|
||||
slowdown = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
|
||||
@@ -132,3 +132,14 @@
|
||||
cell.forceMove(get_turf(loc))
|
||||
cell = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/rapid
|
||||
name = "Gloves of the north star"
|
||||
desc = "Just looking at these fills you with an urge to beat the shit out of people."
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/rapid/Touch(mob/living/target, proximity = TRUE)
|
||||
var/mob/living/M = loc
|
||||
|
||||
if(M.a_intent == INTENT_HARM)
|
||||
M.changeNext_move(CLICK_CD_RAPID)
|
||||
.= FALSE
|
||||
@@ -222,7 +222,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/head/fedora/proc/tip_fedora(mob/user)
|
||||
user.visible_message("[user] tips their fedora.", "You tip your fedora")
|
||||
user.visible_message("[user] tips [user.p_their()] fedora.", "You tip your fedora")
|
||||
|
||||
|
||||
/obj/item/clothing/head/fez
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
return 0
|
||||
else if(security_lock && locked)
|
||||
if(do_unlock(user))
|
||||
visible_message("<span class='danger'>[user] unlocks their [src.name].</span>", \
|
||||
"<span class='userdanger'>[user] unlocks their [src.name].</span>")
|
||||
visible_message("<span class='danger'>[user] unlocks [user.p_their()] [src.name].</span>", \
|
||||
"<span class='userdanger'>[user] unlocks [user.p_their()] [src.name].</span>")
|
||||
..()
|
||||
return 1
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache/proc/pontificate(mob/user)
|
||||
user.visible_message("<span class='danger'>\ [user] twirls \his moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!</span>")
|
||||
user.visible_message("<span class='danger'>\ [user] twirls [user.p_their()] moustache and laughs [pick("fiendishly","maniacally","diabolically","evilly")]!</span>")
|
||||
|
||||
//scarves (fit in in mask slot)
|
||||
|
||||
|
||||
@@ -37,9 +37,9 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
allowed = list(/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword/saber,/obj/item/restraints/handcuffs,/obj/item/tank)
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank, /obj/item/device/t_scanner, /obj/item/rcd, /obj/item/crowbar, \
|
||||
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer, /obj/item/gun/energy/laser, /obj/item/gun/energy/pulse, \
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/crowbar, \
|
||||
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/multitool, \
|
||||
/obj/item/radio, /obj/item/analyzer, /obj/item/gun/energy/laser, /obj/item/gun/energy/pulse, \
|
||||
/obj/item/gun/energy/gun/advtaser, /obj/item/melee/baton, /obj/item/gun/energy/gun)
|
||||
strip_delay = 130
|
||||
species_fit = list("Drask", "Vox")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "eng_helm"
|
||||
hardsuit_restrict_helmet = 1
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight)
|
||||
allowed = list(/obj/item/flashlight)
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
|
||||
@@ -67,7 +67,7 @@
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/t_scanner, /obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd)
|
||||
siemens_coefficient = 0
|
||||
|
||||
species_restricted = list("exclude","Diona","Wryn")
|
||||
@@ -261,7 +261,7 @@
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/t_scanner, /obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd)
|
||||
|
||||
//Chief Engineer's hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/elite
|
||||
@@ -298,7 +298,7 @@
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
|
||||
item_state = "mining_hardsuit"
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/pickaxe)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/pickaxe)
|
||||
|
||||
|
||||
//Syndicate hardsuit
|
||||
@@ -496,7 +496,7 @@
|
||||
name = "medical hardsuit"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
|
||||
item_state = "medical_hardsuit"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/device/rad_laser)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical,/obj/item/rad_laser)
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
|
||||
|
||||
//Security
|
||||
@@ -514,7 +514,7 @@
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||
item_state = "sec_hardsuit"
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/baton,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/restraints/handcuffs)
|
||||
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/baton,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/restraints/handcuffs)
|
||||
|
||||
|
||||
//Atmospherics hardsuit (BS12)
|
||||
@@ -577,7 +577,7 @@
|
||||
name = "shielded hardsuit"
|
||||
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
|
||||
icon_state = "hardsuit-hos"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank, /obj/item/gun,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank, /obj/item/gun,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs)
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
var/current_charges = 3
|
||||
var/max_charges = 3 //How many charges total the shielding has
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
icon_state = "caparmor"
|
||||
item_state = "capspacesuit"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
allowed = list(/obj/item/tank, /obj/item/device/flashlight,/obj/item/gun/energy, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/restraints/handcuffs)
|
||||
allowed = list(/obj/item/tank, /obj/item/flashlight,/obj/item/gun/energy, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/restraints/handcuffs)
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_fit = list("Vox")
|
||||
|
||||
@@ -391,10 +391,20 @@
|
||||
name = "blood red plasmaman suit"
|
||||
icon_state = "plasmaman_Nukeops"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword/saber,/obj/item/restraints/handcuffs)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword/saber,/obj/item/restraints/handcuffs)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/nuclear
|
||||
name = "blood red plasmaman helmet"
|
||||
icon_state = "plasmaman_Nukeops_helmet0"
|
||||
base_state = "plasmaman_Nukeops_helmet"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
|
||||
//WIZARD
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/wizard
|
||||
name = "robed plasmaman suit"
|
||||
icon_state = "plasmamanWizardBlue_suit"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/wizard
|
||||
name = "wizard hat"
|
||||
icon_state = "plasmamanWizardBlue_helmet0"
|
||||
base_state = "plasmamanWizardBlue_helmet"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "flash"
|
||||
interface_name = "mounted flash"
|
||||
interface_desc = "Stuns your target by blinding them with a bright light."
|
||||
device_type = /obj/item/device/flash
|
||||
device_type = /obj/item/flash
|
||||
|
||||
/obj/item/rig_module/grenade_launcher
|
||||
|
||||
|
||||
@@ -74,14 +74,14 @@
|
||||
else
|
||||
target_ai = locate(/mob/living/silicon/ai) in input_device.contents
|
||||
|
||||
var/obj/item/device/aicard/card = ai_card
|
||||
var/obj/item/aicard/card = ai_card
|
||||
|
||||
// Downloading from/loading to a terminal.
|
||||
if(istype(input_device,/obj/machinery/computer/aifixer) || istype(input_device,/mob/living/silicon/ai) || istype(input_device,/obj/structure/AIcore/deactivated))
|
||||
|
||||
// If we're stealing an AI, make sure we have a card for it.
|
||||
if(!card)
|
||||
card = new /obj/item/device/aicard(src)
|
||||
card = new /obj/item/aicard(src)
|
||||
|
||||
// Terminal interaction only works with an intellicarded AI.
|
||||
if(!istype(card))
|
||||
@@ -99,10 +99,10 @@
|
||||
update_verb_holder()
|
||||
return 1
|
||||
|
||||
if(istype(input_device,/obj/item/device/aicard))
|
||||
if(istype(input_device,/obj/item/aicard))
|
||||
// We are carding the AI in our suit.
|
||||
if(integrated_ai)
|
||||
var/obj/item/device/aicard/ext_card = input_device
|
||||
var/obj/item/aicard/ext_card = input_device
|
||||
ext_card.afterattack(integrated_ai, user, 1)
|
||||
// If the transfer was successful, we can clear out our vars.
|
||||
if(integrated_ai.loc != src)
|
||||
@@ -116,7 +116,7 @@
|
||||
return 1
|
||||
|
||||
// Okay, it wasn't a terminal being touched, check for all the simple insertions.
|
||||
if(input_device.type in list(/obj/item/device/paicard, /obj/item/device/mmi, /obj/item/device/mmi/posibrain))
|
||||
if(input_device.type in list(/obj/item/paicard, /obj/item/mmi, /obj/item/mmi/posibrain))
|
||||
if(integrated_ai)
|
||||
integrated_ai.attackby(input_device,user)
|
||||
// If the transfer was successful, we can clear out our vars.
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
if(!target)
|
||||
if(ai_card)
|
||||
if(istype(ai_card,/obj/item/device/aicard))
|
||||
if(istype(ai_card,/obj/item/aicard))
|
||||
ai_card.ui_interact(H, state = deep_inventory_state)
|
||||
else
|
||||
eject_ai(H)
|
||||
@@ -157,7 +157,7 @@
|
||||
/obj/item/rig_module/ai_container/proc/eject_ai(var/mob/user)
|
||||
|
||||
if(ai_card)
|
||||
if(istype(ai_card, /obj/item/device/aicard))
|
||||
if(istype(ai_card, /obj/item/aicard))
|
||||
if(integrated_ai && !integrated_ai.stat)
|
||||
if(user)
|
||||
to_chat(user, "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>")
|
||||
@@ -182,14 +182,14 @@
|
||||
var/mob/living/ai_mob = locate(/mob/living) in ai.contents
|
||||
if(ai_mob)
|
||||
if(ai_mob.key && ai_mob.client)
|
||||
if(istype(ai, /obj/item/device/aicard))
|
||||
if(istype(ai, /obj/item/aicard))
|
||||
var/mob/living/silicon/ai/ROBUTT = ai_mob
|
||||
if(istype(ROBUTT))
|
||||
if(!ai_card)
|
||||
ai_card = new /obj/item/device/aicard(src)
|
||||
ai_card = new /obj/item/aicard(src)
|
||||
|
||||
var/obj/item/device/aicard/source_card = ai
|
||||
var/obj/item/device/aicard/target_card = ai_card
|
||||
var/obj/item/aicard/source_card = ai
|
||||
var/obj/item/aicard/target_card = ai_card
|
||||
if(istype(source_card) && istype(target_card))
|
||||
ROBUTT.forceMove(target_card)
|
||||
ROBUTT.aiRestorePowerRoutine = 0//So the AI initially has power.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
deactivate_string = "Retract"
|
||||
|
||||
var/device_type
|
||||
var/obj/item/device
|
||||
var/obj/item
|
||||
|
||||
/obj/item/rig_module/handheld/activate()
|
||||
if(!..())
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
interface_name = "health scanner"
|
||||
interface_desc = "Shows an informative health readout when used on a subject."
|
||||
|
||||
device_type = /obj/item/device/healthanalyzer
|
||||
device_type = /obj/item/healthanalyzer
|
||||
|
||||
/obj/item/rig_module/device/drill
|
||||
name = "hardsuit drill mount"
|
||||
@@ -67,7 +67,7 @@
|
||||
engage_string = "Begin Scan"
|
||||
usable = 1
|
||||
selectable = 0
|
||||
device_type = /obj/item/device/mining_scanner
|
||||
device_type = /obj/item/mining_scanner
|
||||
/*
|
||||
/obj/item/rig_module/device/rcd
|
||||
name = "RCD mount"
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
correct_piece.icon_state = "[initial(icon_state)]"
|
||||
switch(msg_type)
|
||||
if("boots")
|
||||
to_chat(wearer, "<font color='blue'>\The [correct_piece] relax their grip on your legs.</font>")
|
||||
to_chat(wearer, "<font color='blue'>\The [correct_piece] relax [correct_piece.p_their()] grip on your legs.</font>")
|
||||
if(user != wearer)
|
||||
to_chat(user, "<span class='notice'>\The [correct_piece] has been unsealed.</span>")
|
||||
wearer.update_inv_shoes()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
if(open)
|
||||
|
||||
// Hacking.
|
||||
if(istype(W,/obj/item/wirecutters) || istype(W,/obj/item/device/multitool))
|
||||
if(istype(W,/obj/item/wirecutters) || istype(W,/obj/item/multitool))
|
||||
if(open)
|
||||
wires.Interact(user)
|
||||
else
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/new_rig
|
||||
name = "chestpiece"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/obj/item/clothing/suit/lightrig
|
||||
name = "suit"
|
||||
allowed = list(/obj/item/device/flashlight)
|
||||
allowed = list(/obj/item/flashlight)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
offline_vision_restriction = 1
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/combat
|
||||
allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/baton)
|
||||
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/baton)
|
||||
|
||||
|
||||
/obj/item/rig/combat/equipped
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
req_access = list(access_cent_specops)
|
||||
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank, /obj/item/device/t_scanner, /obj/item/rcd, /obj/item/crowbar, \
|
||||
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/crowbar, \
|
||||
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/multitool, \
|
||||
/obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
|
||||
/obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller)
|
||||
|
||||
initial_modules = list(
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
offline_vision_restriction = 1
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/merc
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/gun,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/restraints/handcuffs)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/gun,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/restraints/handcuffs)
|
||||
|
||||
initial_modules = list(
|
||||
/obj/item/rig_module/mounted,
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
offline_slowdown = 0
|
||||
offline_vision_restriction = 0
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/briefcase,/obj/item/storage/secure/briefcase)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/briefcase,/obj/item/storage/secure/briefcase)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/industrial
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/eva
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/t_scanner,/obj/item/rcd)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/ce
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
|
||||
|
||||
|
||||
req_access = list()
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/ert
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/pickaxe,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/medical
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller )
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical,/obj/item/roller )
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -207,7 +207,7 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/hazard
|
||||
|
||||
allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/baton)
|
||||
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/baton)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_state = "void-red"
|
||||
item_state = "void"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit. Used for AI satellite maintenance."
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/multitool)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/multitool)
|
||||
|
||||
//Colors!!!
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/green
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/clothing/suit/armor
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/melee/classic_baton/telescopic,/obj/item/kitchen/knife/combat)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/flashlight/seclite,/obj/item/melee/classic_baton/telescopic,/obj/item/kitchen/knife/combat)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO
|
||||
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
|
||||
@@ -243,7 +243,7 @@
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
flags_size = ONESIZEFITSALL
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/reagent_containers/spray/pepper,/obj/item/flashlight,/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/detective_scanner,/obj/item/taperecorder)
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
//Reactive armor
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
flags_size = ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/pen,/obj/item/device/flashlight/pen)
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/pen,/obj/item/flashlight/pen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
strip_delay = 70
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_state = "paramedic-vest"
|
||||
item_state = "paramedic-vest"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
/obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/radio, /obj/item/tank/emergency_oxygen,/obj/item/rad_laser)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -22,8 +22,8 @@
|
||||
icon_state = "brigphysician-vest"
|
||||
item_state = "brigphysician-vest"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, \
|
||||
/obj/item/device/radio, /obj/item/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
/obj/item/healthanalyzer, /obj/item/flashlight, \
|
||||
/obj/item/radio, /obj/item/tank/emergency_oxygen,/obj/item/rad_laser)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -38,7 +38,7 @@
|
||||
item_state = "apron"
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
allowed = list(/obj/item/reagent_containers/spray/plantbgone,/obj/item/device/plant_analyzer,/obj/item/seeds,/obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/cultivator,/obj/item/reagent_containers/spray/pestspray,/obj/item/hatchet,/obj/item/storage/bag/plants)
|
||||
allowed = list(/obj/item/reagent_containers/spray/plantbgone,/obj/item/plant_analyzer,/obj/item/seeds,/obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/cultivator,/obj/item/reagent_containers/spray/pestspray,/obj/item/hatchet,/obj/item/storage/bag/plants)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
@@ -53,7 +53,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_size = ONESIZEFITSALL
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/device/flash, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/flash, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/emergency_oxygen)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
@@ -159,7 +159,7 @@
|
||||
item_state = "det_suit"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/reagent_containers/spray/pepper,/obj/item/flashlight,/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/detective_scanner,/obj/item/taperecorder)
|
||||
armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
@@ -196,7 +196,7 @@
|
||||
item_state = "blueshieldcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/melee/classic_baton/telescopic)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/flashlight/seclite,/obj/item/melee/classic_baton/telescopic)
|
||||
armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
@@ -213,7 +213,7 @@
|
||||
icon_state = "hazard"
|
||||
item_state = "hazard"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list (/obj/item/device/flashlight, /obj/item/device/t_scanner, /obj/item/tank/emergency_oxygen)
|
||||
allowed = list (/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/emergency_oxygen)
|
||||
burn_state = FIRE_PROOF
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -299,7 +299,7 @@
|
||||
item_state = "fr_jacket_open"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
/obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/radio, /obj/item/tank/emergency_oxygen,/obj/item/rad_laser)
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
suit_adjusted = 1
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/pill,/obj/item/storage/pill_bottle,/obj/item/paper,/obj/item/device/rad_laser)
|
||||
allowed = list(/obj/item/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/food/pill,/obj/item/storage/pill_bottle,/obj/item/paper,/obj/item/rad_laser)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
species_fit = list("Vox","Grey")
|
||||
sprite_sheets = list(
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
item_state = "syndicate-black-red"
|
||||
desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
burn_state = FIRE_PROOF
|
||||
|
||||
@@ -344,7 +344,7 @@
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi')
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
name = "captain's winter coat"
|
||||
icon_state = "wintercoat_captain"
|
||||
armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/captain
|
||||
|
||||
/obj/item/clothing/head/winterhood/captain
|
||||
@@ -374,7 +374,7 @@
|
||||
name = "security winter coat"
|
||||
icon_state = "wintercoat_sec"
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 15, bio = 0, rad = 0)
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/device/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/security
|
||||
|
||||
/obj/item/clothing/head/winterhood/security
|
||||
@@ -383,7 +383,7 @@
|
||||
/obj/item/clothing/suit/hooded/wintercoat/medical
|
||||
name = "medical winter coat"
|
||||
icon_state = "wintercoat_med"
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
|
||||
allowed = list(/obj/item/analyzer, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,/obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/medical
|
||||
|
||||
@@ -393,7 +393,7 @@
|
||||
/obj/item/clothing/suit/hooded/wintercoat/science
|
||||
name = "science winter coat"
|
||||
icon_state = "wintercoat_sci"
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,/obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/science
|
||||
|
||||
@@ -404,7 +404,7 @@
|
||||
name = "engineering winter coat"
|
||||
icon_state = "wintercoat_engi"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/rcd)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/t_scanner, /obj/item/rcd)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/engineering
|
||||
|
||||
/obj/item/clothing/head/winterhood/engineering
|
||||
@@ -421,7 +421,7 @@
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hydro
|
||||
name = "hydroponics winter coat"
|
||||
icon_state = "wintercoat_hydro"
|
||||
allowed = list(/obj/item/reagent_containers/spray, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/hatchet, /obj/item/storage/bag/plants)
|
||||
allowed = list(/obj/item/reagent_containers/spray, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/hatchet, /obj/item/storage/bag/plants)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/hydro
|
||||
|
||||
/obj/item/clothing/head/winterhood/hydro
|
||||
@@ -438,7 +438,7 @@
|
||||
/obj/item/clothing/suit/hooded/wintercoat/miner
|
||||
name = "mining winter coat"
|
||||
icon_state = "wintercoat_miner"
|
||||
allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
hoodtype = /obj/item/clothing/head/winterhood/miner
|
||||
|
||||
@@ -457,7 +457,7 @@
|
||||
icon_state = "black_hoodie"
|
||||
item_state = "blueshieldcoat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen)
|
||||
hoodtype = /obj/item/clothing/head/hood
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -650,7 +650,7 @@
|
||||
ignore_suitadjust = 1
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/gun/projectile/automatic/pistol,/obj/item/gun/projectile/revolver,/obj/item/gun/projectile/revolver/detective)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter,/obj/item/gun/projectile/automatic/pistol,/obj/item/gun/projectile/revolver,/obj/item/gun/projectile/revolver/detective)
|
||||
|
||||
/obj/item/clothing/suit/jacket/miljacket/navy
|
||||
name = "navy military jacket"
|
||||
@@ -719,7 +719,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
flags_size = ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/pen,/obj/item/device/flashlight/pen)
|
||||
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/pen,/obj/item/flashlight/pen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
|
||||
@@ -740,7 +740,7 @@
|
||||
icon_state = "bomber"
|
||||
item_state = "bomber"
|
||||
ignore_suitadjust = 0
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
actions_types = list(/datum/action/item_action/zipper)
|
||||
@@ -757,7 +757,7 @@
|
||||
item_state = "bombersec"
|
||||
ignore_suitadjust = 0
|
||||
//Inherited from Security armour.
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/melee/classic_baton/telescopic,/obj/item/kitchen/knife/combat)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/flashlight/seclite,/obj/item/melee/classic_baton/telescopic,/obj/item/kitchen/knife/combat)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO
|
||||
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
@@ -816,7 +816,7 @@
|
||||
item_state = "owl_wings"
|
||||
body_parts_covered = ARMS
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/device/flashlight/seclite)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/flashlight/seclite)
|
||||
actions_types = list(/datum/action/item_action/toggle_wings)
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.50
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/extinguisher)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/extinguisher)
|
||||
slowdown = 1
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
@@ -143,7 +143,7 @@
|
||||
permeability_coefficient = 0.50
|
||||
flags = THICKMATERIAL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(ishuman(M) && isliving(user))
|
||||
if(user == M)
|
||||
user.visible_message("[user] places \the [src] against \his chest and listens attentively.", "You place \the [src] against your chest...")
|
||||
user.visible_message("[user] places [src] against [user.p_their()] chest and listens attentively.", "You place [src] against your chest...")
|
||||
else
|
||||
user.visible_message("[user] places \the [src] against [M]'s chest and listens attentively.", "You place \the [src] against [M]'s chest...")
|
||||
var/obj/item/organ/internal/H = M.get_int_organ(/obj/item/organ/internal/heart)
|
||||
@@ -250,17 +250,17 @@
|
||||
to_chat(user, "Waving around a badge before swiping an ID would be pretty pointless.")
|
||||
return
|
||||
if(isliving(user))
|
||||
user.visible_message("<span class='warning'>[user] displays their Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>","<span class='warning'>You display your Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>")
|
||||
user.visible_message("<span class='warning'>[user] displays [user.p_their()] Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>","<span class='warning'>You display your Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>")
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(istype(O, /obj/item/card/id) || istype(O, /obj/item/device/pda))
|
||||
if(istype(O, /obj/item/card/id) || istype(O, /obj/item/pda))
|
||||
|
||||
var/obj/item/card/id/id_card = null
|
||||
|
||||
if(istype(O, /obj/item/card/id))
|
||||
id_card = O
|
||||
else
|
||||
var/obj/item/device/pda/pda = O
|
||||
var/obj/item/pda/pda = O
|
||||
id_card = pda.id
|
||||
|
||||
if(access_security in id_card.access || emagged)
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(isliving(user))
|
||||
user.visible_message("<span class='warning'>[user] invades [M]'s personal space, thrusting [src] into their face insistently.</span>","<span class='warning'>You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.</span>")
|
||||
user.visible_message("<span class='warning'>[user] invades [M]'s personal space, thrusting [src] into [M.p_their()] face insistently.</span>","<span class='warning'>You invade [M]'s personal space, thrusting [src] into [M.p_their()] face insistently. You are the law.</span>")
|
||||
|
||||
/obj/item/storage/box/holobadge
|
||||
name = "holobadge box"
|
||||
@@ -644,7 +644,7 @@
|
||||
return
|
||||
|
||||
var/area/t = get_area(M)
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(src)
|
||||
var/obj/item/radio/headset/a = new /obj/item/radio/headset(src)
|
||||
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
|
||||
//give the syndicats a bit of stealth
|
||||
a.autosay("[M] has been vandalized in Space!", "[M]'s Death Alarm")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
result = /obj/item/grenade/iedcasing
|
||||
reqs = list(/datum/reagent/fuel = 50,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/device/assembly/igniter = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/reagent_containers/food/drinks/cans = 1)
|
||||
parts = list(/obj/item/reagent_containers/food/drinks/cans = 1)
|
||||
time = 15
|
||||
@@ -48,7 +48,7 @@
|
||||
result = /obj/item/melee/baton/cattleprod
|
||||
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/device/assembly/igniter = 1)
|
||||
/obj/item/assembly/igniter = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPON
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/gun/energy/gun/advtaser = 1,
|
||||
/obj/item/stock_parts/cell = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1)
|
||||
/obj/item/assembly/prox_sensor = 1)
|
||||
tools = list(/obj/item/weldingtool, /obj/item/screwdriver)
|
||||
time = 60
|
||||
category = CAT_ROBOT
|
||||
@@ -80,10 +80,10 @@
|
||||
/datum/crafting_recipe/secbot
|
||||
name = "Secbot"
|
||||
result = /mob/living/simple_animal/bot/secbot
|
||||
reqs = list(/obj/item/device/assembly/signaler = 1,
|
||||
reqs = list(/obj/item/assembly/signaler = 1,
|
||||
/obj/item/clothing/head/helmet = 1,
|
||||
/obj/item/melee/baton = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
tools = list(/obj/item/weldingtool)
|
||||
time = 60
|
||||
@@ -93,7 +93,7 @@
|
||||
name = "Cleanbot"
|
||||
result = /mob/living/simple_animal/bot/cleanbot
|
||||
reqs = list(/obj/item/reagent_containers/glass/bucket = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 40
|
||||
category = CAT_ROBOT
|
||||
@@ -103,7 +103,7 @@
|
||||
result = /mob/living/simple_animal/bot/floorbot
|
||||
reqs = list(/obj/item/storage/toolbox/mechanical = 1,
|
||||
/obj/item/stack/tile/plasteel = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 40
|
||||
category = CAT_ROBOT
|
||||
@@ -111,9 +111,9 @@
|
||||
/datum/crafting_recipe/medbot
|
||||
name = "Medbot"
|
||||
result = /mob/living/simple_animal/bot/medbot
|
||||
reqs = list(/obj/item/device/healthanalyzer = 1,
|
||||
reqs = list(/obj/item/healthanalyzer = 1,
|
||||
/obj/item/storage/firstaid = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
time = 40
|
||||
category = CAT_ROBOT
|
||||
@@ -122,9 +122,9 @@
|
||||
name = "Flamethrower"
|
||||
result = /obj/item/flamethrower
|
||||
reqs = list(/obj/item/weldingtool = 1,
|
||||
/obj/item/device/assembly/igniter = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/stack/rods = 1)
|
||||
parts = list(/obj/item/device/assembly/igniter = 1,
|
||||
parts = list(/obj/item/assembly/igniter = 1,
|
||||
/obj/item/weldingtool = 1)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 10
|
||||
@@ -243,11 +243,11 @@
|
||||
|
||||
/datum/crafting_recipe/spooky_camera
|
||||
name = "Camera Obscura"
|
||||
result = /obj/item/device/camera/spooky
|
||||
result = /obj/item/camera/spooky
|
||||
time = 15
|
||||
reqs = list(/obj/item/device/camera = 1,
|
||||
reqs = list(/obj/item/camera = 1,
|
||||
/datum/reagent/holywater = 10)
|
||||
parts = list(/obj/item/device/camera = 1)
|
||||
parts = list(/obj/item/camera = 1)
|
||||
|
||||
/datum/crafting_recipe/papersack
|
||||
name = "Paper Sack"
|
||||
@@ -354,3 +354,13 @@
|
||||
reqs = list(/obj/item/grown/log = 5)
|
||||
result = /obj/structure/bonfire
|
||||
category = CAT_PRIMAL
|
||||
|
||||
/datum/crafting_recipe/guillotine
|
||||
name = "Guillotine"
|
||||
result = /obj/structure/guillotine
|
||||
time = 150 // Building a functioning guillotine takes time
|
||||
reqs = list(/obj/item/stack/sheet/plasteel = 3,
|
||||
/obj/item/stack/sheet/wood = 20,
|
||||
/obj/item/stack/cable_coil = 10)
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wrench, /obj/item/weldingtool)
|
||||
category = CAT_MISC
|
||||
@@ -10,10 +10,10 @@
|
||||
////////// Usable Items //////////
|
||||
//////////////////////////////////
|
||||
|
||||
/obj/item/device/fluff
|
||||
/obj/item/fluff
|
||||
var/used = 0
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun // Generic tattoo gun, make subtypes for different folks
|
||||
/obj/item/fluff/tattoo_gun // Generic tattoo gun, make subtypes for different folks
|
||||
name = "disposable tattoo pen"
|
||||
desc = "A cheap plastic tattoo application pen."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
@@ -29,7 +29,7 @@
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/Welder2.ogg'
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
/obj/item/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
user.visible_message("<span class='warning'>[user] stabs [M] with the [src]!</span>", "<span class='warning'>You stab [M] with the [src]!</span>")
|
||||
to_chat(M, "<span class='userdanger'>[user] stabs you with the [src]!<br></span><span class = 'warning'>You feel a tiny prick!</span>")
|
||||
@@ -46,7 +46,7 @@
|
||||
var/mob/living/carbon/human/target = M
|
||||
|
||||
if(istype(target.species, /datum/species/machine))
|
||||
to_chat(user, "<span class= 'notice'>[target] has no skin, how do you expect to tattoo them?</span>")
|
||||
to_chat(user, "<span class= 'notice'>[target] has no skin, how do you expect to tattoo [target.p_them()]?</span>")
|
||||
return
|
||||
|
||||
if(target.m_styles["body"] != "None")
|
||||
@@ -75,7 +75,7 @@
|
||||
used = 1
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/update_icon()
|
||||
/obj/item/fluff/tattoo_gun/update_icon()
|
||||
..()
|
||||
|
||||
overlays.Cut()
|
||||
@@ -85,11 +85,11 @@
|
||||
ink.icon += rgb(tattoo_r, tattoo_g, tattoo_b, 190)
|
||||
overlays += ink
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/New()
|
||||
/obj/item/fluff/tattoo_gun/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/elliot_cybernetic_tat
|
||||
/obj/item/fluff/tattoo_gun/elliot_cybernetic_tat
|
||||
desc = "A cheap plastic tattoo application pen.<br>This one seems heavily used."
|
||||
tattoo_name = "circuitry tattoo"
|
||||
tattoo_icon = "Elliot Circuit Tattoo"
|
||||
@@ -97,7 +97,7 @@
|
||||
tattoo_g = 138
|
||||
tattoo_b = 176
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/elliot_cybernetic_tat/attack_self(mob/user as mob)
|
||||
/obj/item/fluff/tattoo_gun/elliot_cybernetic_tat/attack_self(mob/user as mob)
|
||||
if(!used)
|
||||
var/ink_color = input("Please select an ink color.", "Tattoo Ink Color", rgb(tattoo_r, tattoo_g, tattoo_b)) as color|null
|
||||
if(ink_color && !(user.incapacitated() || used) )
|
||||
@@ -112,13 +112,13 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The [src] is out of ink!</span>")
|
||||
|
||||
/obj/item/device/fluff/bird_painter // BirdtTalon: Kahkiri
|
||||
/obj/item/fluff/bird_painter // BirdtTalon: Kahkiri
|
||||
name = "Orb of Onyx"
|
||||
desc = "It is imbued with such dark power as to corrupt the very appearance of those who gaze into its depths."
|
||||
icon_state = "bird_orb"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
|
||||
/obj/item/device/fluff/bird_painter/attack_self(mob/user)
|
||||
/obj/item/fluff/bird_painter/attack_self(mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.s_tone = -115
|
||||
@@ -159,12 +159,12 @@
|
||||
desc = "A weathered Vox thermonocle, doesn't seem to work anymore."
|
||||
icon_state = "thermoncle"
|
||||
|
||||
/obj/item/device/fluff/rapid_wheelchair_kit //Rapidvalj: Hakikarahiti
|
||||
/obj/item/fluff/rapid_wheelchair_kit //Rapidvalj: Hakikarahiti
|
||||
name = "wheelchair conversion kit"
|
||||
desc = "An assorted set of exchangable parts for a wheelchair."
|
||||
icon_state = "modkit"
|
||||
|
||||
/obj/item/device/fluff/rapid_wheelchair_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/rapid_wheelchair_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
new /obj/item/reagent_containers/food/drinks/cans/cola(src)
|
||||
|
||||
|
||||
/obj/item/device/instrument/guitar/jello_guitar //Antcolon3: Dan Jello
|
||||
/obj/item/instrument/guitar/jello_guitar //Antcolon3: Dan Jello
|
||||
name = "Dan Jello's Pink Guitar"
|
||||
desc = "Dan Jello's special pink guitar."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
@@ -262,7 +262,6 @@
|
||||
force = 0
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/used = 0
|
||||
|
||||
/obj/item/fluff/wingler_comb/attack_self(mob/user)
|
||||
if(used)
|
||||
@@ -276,13 +275,13 @@
|
||||
to_chat(target, "<span class='notice'>You comb your tail with the [src].</span>")
|
||||
used = 1
|
||||
|
||||
/obj/item/device/fluff/desolate_coat_kit //DesolateG: Micheal Smith
|
||||
/obj/item/fluff/desolate_coat_kit //DesolateG: Micheal Smith
|
||||
name = "armored jacket conversion kit"
|
||||
desc = "Flaps of dark fabric, probably used to somehow modify some sort of an armored garment. Won't help with protection, though."
|
||||
icon_state = "modkit"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/device/fluff/desolate_coat_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/desolate_coat_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -308,13 +307,13 @@
|
||||
user.update_inv_wear_suit()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/fluff/fei_gasmask_kit //Fei Hazelwood: Tariq Yon-Dale
|
||||
/obj/item/fluff/fei_gasmask_kit //Fei Hazelwood: Tariq Yon-Dale
|
||||
name = "gas mask conversion kit"
|
||||
desc = "A gas mask conversion kit."
|
||||
icon_state = "modkit"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/device/fluff/fei_gasmask_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/fei_gasmask_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -335,14 +334,14 @@
|
||||
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
|
||||
/obj/item/device/fluff/desolate_baton_kit //DesolateG: Micheal Smith
|
||||
/obj/item/fluff/desolate_baton_kit //DesolateG: Micheal Smith
|
||||
name = "stun baton conversion kit"
|
||||
desc = "Some sci-fi looking parts for a stun baton."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "scifikit"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/device/fluff/desolate_baton_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/desolate_baton_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -361,7 +360,7 @@
|
||||
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
|
||||
/obj/item/device/fluff/cardgage_helmet_kit //captain cardgage: Richard Ulery
|
||||
/obj/item/fluff/cardgage_helmet_kit //captain cardgage: Richard Ulery
|
||||
name = "welding helmet modkit"
|
||||
desc = "Some spraypaint and a stencil, perfect for painting flames onto a welding helmet!"
|
||||
icon_state = "modkit"
|
||||
@@ -369,7 +368,7 @@
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/device/fluff/cardgage_helmet_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/cardgage_helmet_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -386,7 +385,7 @@
|
||||
#define USED_MOD_HELM 1
|
||||
#define USED_MOD_SUIT 2
|
||||
|
||||
/obj/item/device/fluff/shadey_plasman_modkit
|
||||
/obj/item/fluff/shadey_plasman_modkit
|
||||
name = "plasmaman suit modkit"
|
||||
desc = "A kit containing nanites that are able to modify the look of a plasmaman suit and helmet without exposing the wearer to hostile environments."
|
||||
icon_state = "modkit"
|
||||
@@ -394,7 +393,7 @@
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/device/fluff/shadey_plasman_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/shadey_plasman_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -432,7 +431,7 @@
|
||||
return
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
|
||||
/obj/item/device/fluff/lighty_plasman_modkit // LightFire53: Ikelos
|
||||
/obj/item/fluff/lighty_plasman_modkit // LightFire53: Ikelos
|
||||
name = "plasmaman suit modkit"
|
||||
desc = "A kit containing nanites that are able to modify the look of a plasmaman suit and helmet without exposing the wearer to hostile environments."
|
||||
icon_state = "modkit"
|
||||
@@ -449,7 +448,7 @@
|
||||
"Gold" = "plasmaman_ikelosgold",
|
||||
"Red" = "plasmaman_ikelossecurity")
|
||||
|
||||
/obj/item/device/fluff/lighty_plasman_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/lighty_plasman_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -497,15 +496,15 @@
|
||||
#undef USED_MOD_HELM
|
||||
#undef USED_MOD_SUIT
|
||||
|
||||
/obj/item/device/fluff/merchant_sallet_modkit //Travelling Merchant: Trav Noble. This is what they spawn in with
|
||||
name = "sallet modkit"
|
||||
desc = "A modkit that can make most helmets look like a steel sallet."
|
||||
/obj/item/fluff/merchant_sallet_modkit //Travelling Merchant: Trav Noble. This is what they spawn in with
|
||||
name = "SG Helmet modkit"
|
||||
desc = "A modkit that can make most helmets look like a Shellguard Helmet."
|
||||
icon_state = "modkit"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/device/fluff/merchant_sallet_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/merchant_sallet_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -540,7 +539,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
|
||||
/obj/item/device/fluff/k3_webbing_modkit //IK3I: Yakikatachi
|
||||
/obj/item/fluff/k3_webbing_modkit //IK3I: Yakikatachi
|
||||
name = "webbing modkit"
|
||||
desc = "A modkit that can be used to turn certain vests and labcoats into lightweight webbing"
|
||||
icon_state = "modkit"
|
||||
@@ -548,7 +547,7 @@
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/device/fluff/k3_webbing_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/k3_webbing_modkit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -650,53 +649,59 @@
|
||||
icon_state = "kakicharakiti"
|
||||
|
||||
/obj/item/clothing/head/helmet/fluff/merchant_sallet //Travelling Merchant: Trav Noble. This >>IS NOT<< what they spawn in with
|
||||
name = "Steel Sallet"
|
||||
desc = "A heavy steel sallet with the word Noble scratched into the side. Comes with a Bevor attached."
|
||||
name = "Shellguard Helmet"
|
||||
desc = "A Shellguard Helmet with the name Noble written on the inside."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "merchant_sallet_visor_bevor"
|
||||
item_state = "merchant_sallet_visor_bevor"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
|
||||
toggle_cooldown = 20
|
||||
toggle_sound = 'sound/items/ZippoClose.ogg'
|
||||
toggle_sound = 'sound/items/change_jaws.ogg'
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEEYES|HIDEMASK|HIDEFACE|HIDEEARS
|
||||
var/state = "Visor & Bevor"
|
||||
var/state = "Soldier Up"
|
||||
|
||||
/obj/item/clothing/head/helmet/fluff/merchant_sallet/attack_self(mob/user)
|
||||
if(!user.incapacitated() && (world.time > cooldown + toggle_cooldown) && Adjacent(user))
|
||||
var/list/options = list()
|
||||
options["Visor & Bevor"] = list(
|
||||
options["Soldier Up"] = list(
|
||||
"icon_state" = "merchant_sallet_visor_bevor",
|
||||
"visor_flags" = HIDEEYES,
|
||||
"mask_flags" = HIDEMASK|HIDEFACE
|
||||
)
|
||||
options["Visor Only"] = list(
|
||||
"icon_state" = "merchant_sallet_visor",
|
||||
"visor_flags" = HIDEEYES,
|
||||
"mask_flags" = HIDEFACE
|
||||
)
|
||||
options["Bevor Only"] = list(
|
||||
"icon_state" = "merchant_sallet_bevor",
|
||||
"visor_flags" = null,
|
||||
"mask_flags" = HIDEMASK|HIDEFACE
|
||||
)
|
||||
options["Neither Visor nor Bevor"] = list(
|
||||
"icon_state" = "merchant_sallet",
|
||||
"visor_flags" = null,
|
||||
"mask_flags" = null
|
||||
)
|
||||
options["Soldier Down"] = list(
|
||||
"icon_state" = "merchant_sallet_visor",
|
||||
"visor_flags" = HIDEEYES,
|
||||
"mask_flags" = HIDEMASK|HIDEFACE
|
||||
)
|
||||
options["Technician Up"] = list(
|
||||
"icon_state" = "merchant_sallet_bevor",
|
||||
"visor_flags" = null,
|
||||
"mask_flags" = null
|
||||
)
|
||||
options["Technician Down"] = list(
|
||||
"icon_state" = "merchant_sallet",
|
||||
"visor_flags" = HIDEEYES,
|
||||
"mask_flags" = HIDEMASK|HIDEFACE
|
||||
)
|
||||
|
||||
var/choice = input(user, "How would you like to adjust the sallet?", "Adjust Sallet") as null|anything in options
|
||||
var/choice = input(user, "How would you like to adjust the helmet?", "Adjust Helmet") as null|anything in options
|
||||
|
||||
if(choice && choice != state && !user.incapacitated() && Adjacent(user))
|
||||
var/list/new_state = options[choice]
|
||||
icon_state = new_state["icon_state"]
|
||||
state = choice
|
||||
to_chat(user, "You adjust the sallet.")
|
||||
to_chat(user, "You adjust the helmet.")
|
||||
playsound(src.loc, "[toggle_sound]", 100, 0, 4)
|
||||
user.update_inv_head()
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/head/beret/fluff/elo //V-Force_Bomber: E.L.O.
|
||||
name = "E.L.O.'s medical beret"
|
||||
desc = "E.L.O.s personal medical beret, issued by Nanotrassen and awarded along with her medal."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "elo-beret"
|
||||
|
||||
//////////// Suits ////////////
|
||||
/obj/item/clothing/suit/fluff
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
@@ -766,7 +771,7 @@
|
||||
item_state = "supplymaster_jacket_open"
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
@@ -927,7 +932,7 @@
|
||||
icon_state = "xantholne_wintercoat"
|
||||
hoodtype = /obj/item/clothing/head/hood/fluff/xantholne
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
|
||||
|
||||
/obj/item/clothing/head/hood/fluff/xantholne // Xantholne: Meex Zwichsnicrur
|
||||
@@ -1260,6 +1265,8 @@
|
||||
name = "engraved hand mirror"
|
||||
desc = "A very classy hand mirror, with fancy detailing."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
icon_state = "hand_mirror"
|
||||
attack_verb = list("smacked")
|
||||
hitsound = 'sound/weapons/tap.ogg'
|
||||
@@ -1306,18 +1313,20 @@
|
||||
name = "Classy victorian suit"
|
||||
desc = "A blue and black victorian suit with silver buttons, very fancy!"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
icon_state = "victorianlightfire"
|
||||
item_state = "victorianvest"
|
||||
item_color = "victorianlightfire"
|
||||
displays_id = FALSE
|
||||
|
||||
|
||||
/obj/item/device/fluff/decemviri_spacepod_kit //Decemviri: Sylus Cain
|
||||
/obj/item/fluff/decemviri_spacepod_kit //Decemviri: Sylus Cain
|
||||
name = "Spacepod mod kit"
|
||||
desc = "a kit on tools and a blueprint detailing how to reconfigure a spacepod"
|
||||
icon_state = "modkit"
|
||||
|
||||
/obj/item/device/fluff/decemviri_spacepod_kit/afterattack(atom/target, mob/user, proximity)
|
||||
/obj/item/fluff/decemviri_spacepod_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
@@ -1325,7 +1334,7 @@
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You modify the appearance of [target] based on the kite blueprints.</span>")
|
||||
to_chat(user, "<span class='notice'>You modify the appearance of [target] based on the kit blueprints.</span>")
|
||||
var/obj/spacepod/pod = target
|
||||
pod.icon = 'icons/48x48/custom_pod.dmi'
|
||||
pod.icon_state = "pod_dece"
|
||||
@@ -1343,4 +1352,22 @@
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
icon_state = "teri_horn"
|
||||
item_state = "teri_horn"
|
||||
honk_sound = 'sound/items/teri_horn.ogg'
|
||||
honk_sound = 'sound/items/teri_horn.ogg'
|
||||
|
||||
/obj/item/clothing/suit/fluff/vetcoat //Furasian: Fillmoore Grayson
|
||||
name = "Veteran Coat"
|
||||
desc = "An old, yet well-kept Nanotrasen uniform. Very few of its kind are still produced."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
icon_state = "alchemistcoatblack"
|
||||
item_state = "alchemistcoatblack"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
|
||||
/obj/item/clothing/suit/fluff/vetcoat/red //Furasian: Fillmoore Grayson
|
||||
icon_state = "alchemistcoatred"
|
||||
item_state = "alchemistcoatred"
|
||||
|
||||
/obj/item/clothing/suit/fluff/vetcoat/navy //Furasian: Fillmoore Grayson
|
||||
icon_state = "alchemistcoatnavy"
|
||||
item_state = "alchemistcoatnavy"
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
// TODO: Split everything into easy to manage procs.
|
||||
|
||||
/obj/item/device/detective_scanner
|
||||
/obj/item/detective_scanner
|
||||
name = "forensic scanner"
|
||||
desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings."
|
||||
icon = 'icons/goonstation/objects/objects.dmi'
|
||||
@@ -16,7 +16,7 @@
|
||||
var/list/log = list()
|
||||
actions_types = list(/datum/action/item_action/print_report)
|
||||
|
||||
/obj/item/device/detective_scanner/attack_self(var/mob/user)
|
||||
/obj/item/detective_scanner/attack_self(var/mob/user)
|
||||
var/search = input(user, "Enter name, fingerprint or blood DNA.", "Find record", "")
|
||||
|
||||
if(!search || user.stat || user.incapacitated())
|
||||
@@ -59,10 +59,10 @@
|
||||
|
||||
to_chat(user, "<span class='warning'>No match found in station records.</span>")
|
||||
|
||||
/obj/item/device/detective_scanner/ui_action_click()
|
||||
/obj/item/detective_scanner/ui_action_click()
|
||||
print_scanner_report()
|
||||
|
||||
/obj/item/device/detective_scanner/proc/print_scanner_report()
|
||||
/obj/item/detective_scanner/proc/print_scanner_report()
|
||||
if(log.len && !scanning)
|
||||
scanning = 1
|
||||
to_chat(usr, "<span class='notice'>Printing report, please wait...</span>")
|
||||
@@ -89,14 +89,14 @@
|
||||
to_chat(usr, "<span class='notice'>The scanner has no logs or is in use.</span>")
|
||||
|
||||
|
||||
/obj/item/device/detective_scanner/attack(mob/living/M as mob, mob/user as mob)
|
||||
/obj/item/detective_scanner/attack(mob/living/M as mob, mob/user as mob)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/detective_scanner/afterattack(atom/A, mob/user as mob, proximity)
|
||||
/obj/item/detective_scanner/afterattack(atom/A, mob/user as mob, proximity)
|
||||
scan(A, user)
|
||||
|
||||
/obj/item/device/detective_scanner/proc/scan(var/atom/A, var/mob/user)
|
||||
/obj/item/detective_scanner/proc/scan(var/atom/A, var/mob/user)
|
||||
|
||||
if(!scanning)
|
||||
// Can remotely scan objects and mobs.
|
||||
@@ -210,7 +210,7 @@
|
||||
scanning = 0
|
||||
return
|
||||
|
||||
/obj/item/device/detective_scanner/proc/add_log(var/msg, var/broadcast = 1)
|
||||
/obj/item/detective_scanner/proc/add_log(var/msg, var/broadcast = 1)
|
||||
if(scanning)
|
||||
if(broadcast && ismob(loc))
|
||||
var/mob/M = loc
|
||||
|
||||
@@ -38,7 +38,7 @@ log transactions
|
||||
..()
|
||||
machine_id = "[station_name()] RT #[num_financial_terminals++]"
|
||||
|
||||
/obj/machinery/atm/initialize()
|
||||
/obj/machinery/atm/Initialize()
|
||||
..()
|
||||
reconnect_database()
|
||||
|
||||
@@ -122,6 +122,8 @@ log transactions
|
||||
if(issilicon(user))
|
||||
to_chat(user, "<span class='warning'>Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per Nanotrasen regulation #1005.</span>")
|
||||
return
|
||||
if(!linked_db)
|
||||
reconnect_database()
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atm/attack_ghost(mob/user)
|
||||
@@ -199,12 +201,9 @@ log transactions
|
||||
authenticated_account.security_level = new_sec_level
|
||||
if("attempt_auth")
|
||||
if(linked_db)
|
||||
// check if they have low security enabled
|
||||
scan_user(usr)
|
||||
|
||||
if(!ticks_left_locked_down && held_card)
|
||||
if(!ticks_left_locked_down)
|
||||
var/tried_account_num = text2num(href_list["account_num"])
|
||||
if(!tried_account_num)
|
||||
if(!tried_account_num && held_card)
|
||||
tried_account_num = held_card.associated_account_number
|
||||
var/tried_pin = text2num(href_list["account_pin"])
|
||||
|
||||
@@ -323,30 +322,3 @@ log transactions
|
||||
//create the most effective combination of notes to make up the requested amount
|
||||
/obj/machinery/atm/proc/withdraw_arbitrary_sum(arbitrary_sum)
|
||||
new /obj/item/stack/spacecash(get_step(get_turf(src), turn(dir, 180)), arbitrary_sum)
|
||||
|
||||
//stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri
|
||||
/obj/machinery/atm/proc/scan_user(mob/living/carbon/human/H)
|
||||
if(!authenticated_account && linked_db)
|
||||
if(H.wear_id)
|
||||
var/obj/item/card/id/I
|
||||
if(istype(H.wear_id, /obj/item/card/id) )
|
||||
I = H.wear_id
|
||||
else if(istype(H.wear_id, /obj/item/device/pda) )
|
||||
var/obj/item/device/pda/P = H.wear_id
|
||||
I = P.id
|
||||
if(I)
|
||||
authenticated_account = attempt_account_access(I.associated_account_number)
|
||||
if(authenticated_account)
|
||||
to_chat(H, "[bicon(src)]<span class='notice'>Access granted. Welcome user '[authenticated_account.owner_name].'</span>")
|
||||
|
||||
//create a transaction log entry
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = authenticated_account.owner_name
|
||||
T.purpose = "Remote terminal access"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = station_time_timestamp()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
|
||||
view_screen = NO_SCREEN
|
||||
SSnanoui.update_uis(src)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/eftpos
|
||||
/obj/item/eftpos
|
||||
name = "EFTPOS scanner"
|
||||
desc = "Swipe your ID card to make purchases electronically."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
@@ -13,7 +13,7 @@
|
||||
var/obj/machinery/computer/account_database/linked_db
|
||||
var/datum/money_account/linked_account
|
||||
|
||||
/obj/item/device/eftpos/New()
|
||||
/obj/item/eftpos/New()
|
||||
..()
|
||||
machine_id = "[station_name()] EFTPOS #[num_financial_terminals++]"
|
||||
access_code = rand(1111,111111)
|
||||
@@ -25,7 +25,7 @@
|
||||
//the user of the EFTPOS device can change the target account though, and no-one will be the wiser (except whoever's being charged)
|
||||
linked_account = station_account
|
||||
|
||||
/obj/item/device/eftpos/proc/print_reference()
|
||||
/obj/item/eftpos/proc/print_reference()
|
||||
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
|
||||
var/obj/item/paper/R = new(loc)
|
||||
R.name = "Reference: [eftpos_name]"
|
||||
@@ -49,7 +49,7 @@
|
||||
D.wrapped = R
|
||||
D.name = "small parcel - 'EFTPOS access code'"
|
||||
|
||||
/obj/item/device/eftpos/proc/reconnect_database()
|
||||
/obj/item/eftpos/proc/reconnect_database()
|
||||
var/turf/location = get_turf(src)
|
||||
if(!location)
|
||||
return
|
||||
@@ -59,10 +59,10 @@
|
||||
linked_db = DB
|
||||
break
|
||||
|
||||
/obj/item/device/eftpos/attack_self(mob/user)
|
||||
/obj/item/eftpos/attack_self(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/eftpos/attackby(obj/O, mob/user, params)
|
||||
/obj/item/eftpos/attackby(obj/O, mob/user, params)
|
||||
if(istype(O, /obj/item/card))
|
||||
//attempt to connect to a new db, and if that doesn't work then fail
|
||||
if(!linked_db)
|
||||
@@ -78,13 +78,13 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/device/eftpos/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/item/eftpos/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "eftpos.tmpl", name, 790, 310)
|
||||
ui.open()
|
||||
|
||||
/obj/item/device/eftpos/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
/obj/item/eftpos/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
var/data[0]
|
||||
data["eftpos_name"] = eftpos_name
|
||||
data["machine_id"] = machine_id
|
||||
@@ -95,7 +95,7 @@
|
||||
data["linked_account"] = linked_account ? linked_account.owner_name : null
|
||||
return data
|
||||
|
||||
/obj/item/device/eftpos/Topic(href, list/href_list)
|
||||
/obj/item/eftpos/Topic(href, list/href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
SSnanoui.update_uis(src)
|
||||
return 1
|
||||
|
||||
/obj/item/device/eftpos/proc/scan_card(obj/item/card/I, mob/user)
|
||||
/obj/item/eftpos/proc/scan_card(obj/item/card/I, mob/user)
|
||||
if(istype(I, /obj/item/card/id))
|
||||
var/obj/item/card/id/C = I
|
||||
visible_message("<span class='info'>[user] swipes a card through [src].</span>")
|
||||
|
||||
@@ -96,7 +96,7 @@ var/total_runtimes_skipped = 0
|
||||
|
||||
// Now to actually output the error info...
|
||||
log_world("\[[time_stamp()]] Runtime in [e.file],[e.line]: [e]")
|
||||
log_runtime_txt("\[[time_stamp()]] Runtime in [e.file],[e.line]: [e]")
|
||||
log_runtime_txt("Runtime in [e.file],[e.line]: [e]")
|
||||
for(var/line in desclines)
|
||||
log_world(line)
|
||||
log_runtime_txt(line)
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
var/turf/T = pick(get_area_turfs(impact_area))
|
||||
if(T)
|
||||
// Calculate new position (searches through beacons in world)
|
||||
var/obj/item/device/radio/beacon/chosen
|
||||
var/obj/item/radio/beacon/chosen
|
||||
var/list/possible = list()
|
||||
for(var/obj/item/device/radio/beacon/W in world)
|
||||
for(var/obj/item/radio/beacon/W in world)
|
||||
if(!is_station_level(W.z))
|
||||
continue
|
||||
possible += W
|
||||
@@ -43,7 +43,7 @@
|
||||
var/y_distance = TO.y - FROM.y
|
||||
var/x_distance = TO.x - FROM.x
|
||||
for(var/atom/movable/A in range(12, FROM )) // iterate thru list of mobs in the area
|
||||
if(istype(A, /obj/item/device/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid
|
||||
if(istype(A, /obj/item/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid
|
||||
if(A.anchored) continue
|
||||
|
||||
var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
var/aurora_progress = 0 //this cycles from 1 to 7, slowly changing colors from gentle green to gentle blue
|
||||
|
||||
/datum/event/aurora_caelus/announce()
|
||||
event_announcement.Announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull.\
|
||||
Nanotrasen has approved a short break for all employees to relax and observe this very rare event.\
|
||||
During this time, starlight will be bright but gentle, shifting between quiet green and blue colors.\
|
||||
Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space.\
|
||||
We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meterology Divison")
|
||||
event_announcement.Announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. \
|
||||
Nanotrasen has approved a short break for all employees to relax and observe this very rare event. \
|
||||
During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. \
|
||||
Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. \
|
||||
We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division")
|
||||
for(var/V in player_list)
|
||||
var/mob/M = V
|
||||
if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z))
|
||||
@@ -37,10 +37,10 @@ We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/
|
||||
for(var/s in GLOB.station_level_space_turfs)
|
||||
var/turf/space/S = s
|
||||
fade_to_black(S)
|
||||
event_announcement.Announce("The aurora caelus event is now ending. Starlight conditions will slowly return to normal.\
|
||||
When this has concluded, please return to your workplace and continue work as normal.\
|
||||
event_announcement.Announce("The Aurora Caelus event is now ending. Starlight conditions will slowly return to normal. \
|
||||
When this has concluded, please return to your workplace and continue work as normal. \
|
||||
Have a pleasant shift, [station_name()], and thank you for watching with us.",
|
||||
"Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meterology Divison")
|
||||
"Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division")
|
||||
|
||||
/datum/event/aurora_caelus/proc/fade_to_black(turf/space/S)
|
||||
set waitfor = FALSE
|
||||
@@ -48,4 +48,4 @@ Have a pleasant shift, [station_name()], and thank you for watching with us.",
|
||||
while(S.light_range > new_light)
|
||||
S.set_light(S.light_range - 0.2)
|
||||
sleep(30)
|
||||
S.set_light(new_light, 1, l_color = "") // we should be able to use `, null` as the last arg but BYOND is a piece of FUCKING SHIT AND SET_LIGHT DOESN'T WORK THAT WAY DESPITE EVERY FUCKING THING ABOUT IT INDICATING THAT IT GODDAMN WELL SHOULD AAAAAAAAAAAAAAAAA
|
||||
S.set_light(new_light, 1, l_color = "") // we should be able to use `, null` as the last arg but BYOND is a piece of FUCKING SHIT AND SET_LIGHT DOESN'T WORK THAT WAY DESPITE EVERY FUCKING THING ABOUT IT INDICATING THAT IT GODDAMN WELL SHOULD AAAAAAAAAAAAAAAAA
|
||||
|
||||
@@ -493,7 +493,7 @@
|
||||
/proc/generate_static_ion_law()
|
||||
/var/list/players = list()
|
||||
for(var/mob/living/carbon/human/player in player_list)
|
||||
if( !player.mind || player.mind.assigned_role == "MODE" || player.client.inactivity > MinutesToTicks(10))
|
||||
if( !player.mind || player.mind.assigned_role == player.mind.special_role || player.client.inactivity > MinutesToTicks(10))
|
||||
continue
|
||||
players += player.real_name
|
||||
var/random_player = "The Captain"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
if(prob(5))
|
||||
// /obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "")
|
||||
var/list/viables = list()
|
||||
for(var/obj/item/device/pda/check_pda in PDAs)
|
||||
for(var/obj/item/pda/check_pda in PDAs)
|
||||
var/datum/data/pda/app/messenger/check_m = check_pda.find_program(/datum/data/pda/app/messenger)
|
||||
|
||||
if(!check_m || !check_m.can_receive())
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
if(!viables.len)
|
||||
return
|
||||
var/obj/item/device/pda/P = pick(viables)
|
||||
var/obj/item/pda/P = pick(viables)
|
||||
var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger)
|
||||
|
||||
var/sender
|
||||
|
||||
@@ -50,7 +50,7 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
switch(station)
|
||||
if("sol")
|
||||
M = new /mob/living/carbon/human(picked_loc)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/storage/backpack/industrial(M), slot_back)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
throw_range = 7
|
||||
|
||||
suicide_act(mob/user) //"A tiny net is a death sentence: it's a net and it's tiny!" https://www.youtube.com/watch?v=FCI9Y4VGCVw
|
||||
to_chat(viewers(user), "<span class='warning'>[user] places the [src.name] on top of \his head, \his fingers tangled in the netting! It looks like \he's trying to commit suicide.</span>")
|
||||
to_chat(viewers(user), "<span class='warning'>[user] places the [src.name] on top of [user.p_their()] head, [user.p_their()] fingers tangled in the netting! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
return(OXYLOSS)
|
||||
|
||||
/obj/item/fishfood
|
||||
@@ -52,7 +52,7 @@
|
||||
attack_verb = list("scrubbed", "brushed", "scraped")
|
||||
|
||||
suicide_act(mob/user)
|
||||
to_chat(viewers(user), "<span class='warning'>[user] is vigorously scrubbing \himself raw with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
to_chat(viewers(user), "<span class='warning'>[user] is vigorously scrubbing [user.p_them()]self raw with the [name]! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
return(BRUTELOSS|FIRELOSS)
|
||||
|
||||
//////////////////////////////////////////////
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
dream_images += pick_n_take(dreams)
|
||||
dreaming++
|
||||
for(var/i in 1 to dream_images.len)
|
||||
addtimer(src, "experience_dream", ((i - 1) * rand(30,60)), FALSE, dream_images[i], FALSE)
|
||||
addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i], FALSE), ((i - 1) * rand(30,60)))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
dream_images += pick_n_take(nightmares)
|
||||
nightmare++
|
||||
for(var/i in 1 to dream_images.len)
|
||||
addtimer(src, "experience_dream", ((i - 1) * rand(30,60)), FALSE, nightmares[i], TRUE)
|
||||
addtimer(CALLBACK(src, .proc/experience_dream, nightmares[i], TRUE), ((i - 1) * rand(30,60)))
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/handle_dreams()
|
||||
@@ -43,7 +43,7 @@
|
||||
nightmare()
|
||||
if(ishuman(src))
|
||||
if(prob(10))
|
||||
emote("writhes in their sleep.")
|
||||
emote("writhes in [p_their()] sleep.")
|
||||
dir = pick(cardinal)
|
||||
|
||||
/mob/living/carbon/proc/experience_dream(dream_image, isNightmare)
|
||||
|
||||
@@ -339,7 +339,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
s.loc = get_step(get_turf(s), get_dir(s, target))
|
||||
s.Show()
|
||||
s.Eat()
|
||||
addtimer(src, "wake_and_restore", rand(50, 100))
|
||||
addtimer(CALLBACK(src, .proc/wake_and_restore), rand(50, 100))
|
||||
qdel(s)
|
||||
|
||||
/obj/effect/hallucination/simple/singularity
|
||||
@@ -365,9 +365,9 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, 'sound/weapons/Laser.ogg', 25, 1)
|
||||
if(prob(75))
|
||||
addtimer(target, "playsound_local", rand(10,20), null, 'sound/weapons/sear.ogg', 25, 1)
|
||||
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/sear.ogg', 25, 1), rand(10,20))
|
||||
else
|
||||
addtimer(target, "playsound_local", rand(10,20), null, 'sound/weapons/effects/searwall.ogg', 25, 1)
|
||||
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
||||
if(2) //Esword fight
|
||||
@@ -381,9 +381,9 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, get_sfx("gunshot"), 25)
|
||||
if(prob(75))
|
||||
addtimer(target, "playsound_local", rand(10,20), null, 'sound/weapons/pierce.ogg', 25, 1)
|
||||
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/pierce.ogg', 25, 1), rand(10,20))
|
||||
else
|
||||
addtimer(target, "playsound_local", rand(10,20), null, "ricochet", 25, 1)
|
||||
addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, "ricochet", 25, 1), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||
if(4) //Stunprod + cablecuff
|
||||
@@ -641,6 +641,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
updateimage()
|
||||
else
|
||||
if(prob(15))
|
||||
do_attack_animation(my_target, ATTACK_EFFECT_PUNCH)
|
||||
if(weapon_name)
|
||||
my_target.playsound_local(my_target, weap.hitsound, 1)
|
||||
my_target.show_message("<span class='danger'>[src.name] has attacked [my_target] with [weapon_name]!</span>", 1)
|
||||
@@ -681,13 +682,13 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_
|
||||
/obj/item/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
|
||||
/obj/item/clothing/shoes/syndigaloshes, /obj/item/card/id/syndicate,\
|
||||
/obj/item/clothing/mask/gas/voice, /obj/item/clothing/glasses/thermal,\
|
||||
/obj/item/device/chameleon, /obj/item/card/emag,\
|
||||
/obj/item/chameleon, /obj/item/card/emag,\
|
||||
/obj/item/storage/toolbox/syndicate, /obj/item/aiModule,\
|
||||
/obj/item/device/radio/headset/syndicate, /obj/item/grenade/plastic/c4,\
|
||||
/obj/item/device/powersink, /obj/item/storage/box/syndie_kit,\
|
||||
/obj/item/radio/headset/syndicate, /obj/item/grenade/plastic/c4,\
|
||||
/obj/item/powersink, /obj/item/storage/box/syndie_kit,\
|
||||
/obj/item/toy/syndicateballoon, /obj/item/gun/energy/laser/captain,\
|
||||
/obj/item/hand_tele, /obj/item/rcd, /obj/item/tank/jetpack,\
|
||||
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
|
||||
/obj/item/clothing/under/rank/captain, /obj/item/aicard,\
|
||||
/obj/item/clothing/shoes/magboots, /obj/item/areaeditor/blueprints, /obj/item/disk/nuclear,\
|
||||
/obj/item/clothing/suit/space/nasavoid, /obj/item/tank)
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
|
||||
description = "Exploding with grape flavor and a favorite among ERT members system-wide."
|
||||
ingredients = list(/obj/item/reagent_containers/food/drinks/cans/grape_juice,
|
||||
/obj/item/reagent_containers/food/snacks/grown/grapes,
|
||||
/obj/item/device/flash)
|
||||
/obj/item/flash)
|
||||
result = "grape_granade"
|
||||
|
||||
/datum/bottler_recipe/Meteor_Malt
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
to_chat(chugger, "<span class='notice'>You need to open [src] first!</span>")
|
||||
return
|
||||
if(istype(chugger) && loc == chugger && src == chugger.get_active_hand() && reagents.total_volume)
|
||||
chugger.visible_message("<span class='notice'>[chugger] raises the [src] to their mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!</span>", "<span class='notice'>You start chugging \the [src].</span>", "<span class='notice'>You hear what sounds like gulping.</span>")
|
||||
chugger.visible_message("<span class='notice'>[chugger] raises the [src] to [chugger.p_their()] mouth and starts [pick("chugging","gulping")] it down like [pick("a savage","a mad beast","it's going out of style","there's no tomorrow")]!</span>", "<span class='notice'>You start chugging [src].</span>", "<span class='notice'>You hear what sounds like gulping.</span>")
|
||||
while(do_mob(chugger, chugger, 40)) //Between the default time for do_mob and the time it takes for a vampire to suck blood.
|
||||
chugger.eat(src, chugger, 25) //Half of a glass, quarter of a bottle.
|
||||
if(!reagents.total_volume) //Finish in style.
|
||||
|
||||
@@ -102,8 +102,8 @@
|
||||
target.visible_message("<span class='danger'>[user] has hit [target][head_attack_message] with a bottle of [name]!</span>", \
|
||||
"<span class='userdanger'>[user] has hit [target][head_attack_message] with a bottle of [name]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'>[target] hits \himself with a bottle of [name][head_attack_message]!</span>", \
|
||||
"<span class='userdanger'>[target] hits \himself with a bottle of [name][head_attack_message]!</span>")
|
||||
user.visible_message("<span class='danger'>[target] hits [target.p_them()]self with a bottle of [name][head_attack_message]!</span>", \
|
||||
"<span class='userdanger'>[target] hits [target.p_them()]self with a bottle of [name][head_attack_message]!</span>")
|
||||
|
||||
//Attack logs
|
||||
add_attack_logs(user, target, "Hit with [src]")
|
||||
|
||||
@@ -33,14 +33,14 @@
|
||||
to_chat(user, "<span class='notice'>You need to open the drink!</span>")
|
||||
return
|
||||
else if(M == user && !reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_sel.selecting == "head")
|
||||
user.visible_message("<span class='warning'>[user] crushes ["\the [src]"] on \his forehead!</span>", "<span class='notice'>You crush \the [src] on your forehead.</span>")
|
||||
user.visible_message("<span class='warning'>[user] crushes [src] on [user.p_their()] forehead!</span>", "<span class='notice'>You crush [src] on your forehead.</span>")
|
||||
crush(user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/storage/bag/trash/cyborg))
|
||||
user.visible_message("<span class='notice'>[user] crushes \the [src] in their trash compactor.</span>", "<span class='notice'>You crush \the [src] in your trash compactor.</span>")
|
||||
user.visible_message("<span class='notice'>[user] crushes [src] in [user.p_their()] trash compactor.</span>", "<span class='notice'>You crush [src] in your trash compactor.</span>")
|
||||
var/obj/can = crush(user)
|
||||
can.attackby(I, user, params)
|
||||
return 1
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/proc/clumsilyDrink(mob/living/carbon/human/user) //Clowns beware
|
||||
if(burn_state != ON_FIRE)
|
||||
return
|
||||
user.visible_message("<span class = 'warning'>[user] pours [src] all over themself!</span>", "<span class = 'danger'>You pour [src] all over yourself!</span>", "<span class = 'warning'>You hear a 'whoompf' and a sizzle.</span>")
|
||||
user.visible_message("<span class = 'warning'>[user] pours [src] all over [user.p_them()]self!</span>", "<span class = 'danger'>You pour [src] all over yourself!</span>", "<span class = 'warning'>You hear a 'whoompf' and a sizzle.</span>")
|
||||
extinguish(TRUE)
|
||||
reagents.reaction(user, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
@@ -90,7 +90,7 @@
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
clumsilyDrink(user)
|
||||
else
|
||||
user.visible_message("<span class = 'notice'>[user] places their hand over [src] to put it out!</span>", "<span class = 'notice'>You use your hand to extinguish [src]!</span>")
|
||||
user.visible_message("<span class = 'notice'>[user] places [user.p_their()] hand over [src] to put it out!</span>", "<span class = 'notice'>You use your hand to extinguish [src]!</span>")
|
||||
extinguish()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/MouseDrop(mob/living/carbon/human/user)
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
possible_states = list()
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to swap forms with the salt shaker! It looks like \he's trying to commit suicide.</span>")
|
||||
user.visible_message("<span class='suicide'>[user] begins to swap forms with the salt shaker! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
var/newname = "[name]"
|
||||
name = "[user.name]"
|
||||
user.name = newname
|
||||
|
||||
@@ -1216,12 +1216,12 @@
|
||||
name = "Tele Bacon"
|
||||
desc = "It tastes a little odd but it is still delicious."
|
||||
icon_state = "bacon"
|
||||
var/obj/item/device/radio/beacon/bacon/baconbeacon
|
||||
var/obj/item/radio/beacon/bacon/baconbeacon
|
||||
list_reagents = list("nutriment" = 4, "porktonium" = 10)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/telebacon/New()
|
||||
..()
|
||||
baconbeacon = new /obj/item/device/radio/beacon/bacon(src)
|
||||
baconbeacon = new /obj/item/radio/beacon/bacon(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/telebacon/On_Consume(mob/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
@@ -1250,7 +1250,14 @@
|
||||
/obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand()
|
||||
if(!QDELETED(src))
|
||||
visible_message("<span class='notice'>[src] expands!</span>")
|
||||
new/mob/living/carbon/human(get_turf(src), monkey_type)
|
||||
if(fingerprintslast)
|
||||
log_game("Cube ([monkey_type]) inflated, last touched by: " + fingerprintslast)
|
||||
else
|
||||
log_game("Cube ([monkey_type]) inflated, last touched by: NO_DATA")
|
||||
var/mob/living/carbon/human/creature = new /mob/living/carbon/human(get_turf(src))
|
||||
if(LAZYLEN(fingerprintshidden))
|
||||
creature.fingerprintshidden = fingerprintshidden.Copy()
|
||||
creature.set_species(monkey_type)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
default_deconstruction_crowbar(O)
|
||||
|
||||
if(istype(O, /obj/item/device/multitool))
|
||||
if(istype(O, /obj/item/multitool))
|
||||
cycle_through++
|
||||
switch(cycle_through)
|
||||
if(1)
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/device/multitool)||istype(O, /obj/item/wirecutters))
|
||||
if(istype(O, /obj/item/multitool)||istype(O, /obj/item/wirecutters))
|
||||
if(panel_open)
|
||||
attack_hand(user)
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/datum/recipe/grill/telebacon
|
||||
items = list(
|
||||
/obj/item/reagent_containers/food/snacks/meat,
|
||||
/obj/item/device/assembly/signaler
|
||||
/obj/item/assembly/signaler
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/telebacon
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
/datum/recipe/grill/syntitelebacon
|
||||
items = list(
|
||||
/obj/item/reagent_containers/food/snacks/meat/syntiflesh,
|
||||
/obj/item/device/assembly/signaler
|
||||
/obj/item/assembly/signaler
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/telebacon
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
visible_message("<span class='notice'>The [qb] refuses to settle down. Maybe it's something to do with its reagent?</span>")
|
||||
|
||||
if(queen_bee)
|
||||
visible_message("<span class='notice'>[user] sets [qb] down inside the apiary, making it their new home.</span>")
|
||||
visible_message("<span class='notice'>[user] sets [qb] down inside the apiary, making it [user.p_their()] new home.</span>")
|
||||
var/relocated = 0
|
||||
for(var/b in bees)
|
||||
var/mob/living/simple_animal/hostile/poison/bees/worker/B = b
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user