mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
Merge remote-tracking branch 'ParadiseSS13/master' into skills_rework
This commit is contained in:
@@ -481,7 +481,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
var/more = ""
|
||||
if(M)
|
||||
more = " "
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1)
|
||||
add_attack_logs(M, location, "Caused a chemical smoke reaction containing [contained]. Last associated key is [carry.my_atom.fingerprintslast][more]", ATKLOG_FEW)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
|
||||
else
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
|
||||
|
||||
@@ -83,13 +83,13 @@
|
||||
var/more = ""
|
||||
if(M)
|
||||
more = " "
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", ATKLOG_FEW)
|
||||
add_attack_logs(M, location, "Caused a chemical smoke reaction containing [contained]. Last associated key is [carry.my_atom.fingerprintslast][more]", ATKLOG_FEW)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
|
||||
else
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", ATKLOG_FEW)
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. No associated key.", ATKLOG_FEW)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
|
||||
else
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key. CODERS: carry.my_atom may be null.", ATKLOG_FEW)
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. No associated key. CODERS: carry.my_atom may be null.", ATKLOG_FEW)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key. CODERS: carry.my_atom may be null.")
|
||||
|
||||
|
||||
|
||||
@@ -88,9 +88,6 @@
|
||||
if(!M.simulated || iseffect(M))
|
||||
. = FALSE
|
||||
|
||||
if(M.anchored && ismecha(M))
|
||||
. = FALSE
|
||||
|
||||
/obj/effect/portal/proc/teleport(atom/movable/M)
|
||||
if(!can_teleport(M))
|
||||
return FALSE
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
var/btemp1 = 1500
|
||||
var/btemp2 = 1000 // tank temperatures
|
||||
|
||||
timer
|
||||
btype = 2
|
||||
/obj/effect/spawner/newbomb/timer
|
||||
btype = 2
|
||||
|
||||
syndicate
|
||||
btemp1 = 150
|
||||
btemp2 = 20
|
||||
/obj/effect/spawner/newbomb/timer/syndicate
|
||||
btemp1 = 150
|
||||
btemp2 = 20
|
||||
|
||||
proximity
|
||||
btype = 1
|
||||
/obj/effect/spawner/newbomb/proximity
|
||||
btype = 1
|
||||
|
||||
radio
|
||||
btype = 0
|
||||
/obj/effect/spawner/newbomb/radio
|
||||
btype = 0
|
||||
|
||||
|
||||
/obj/effect/spawner/newbomb/New()
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
/obj/item/clothing/gloves/color/yellow/power = 1,
|
||||
/obj/item/twohanded/chainsaw = 1,
|
||||
/obj/item/bee_briefcase = 1,
|
||||
/obj/item/twohanded/energizedfireaxe = 1,
|
||||
/obj/item/twohanded/fireaxe/energized = 1,
|
||||
/obj/item/clothing/glasses/thermal = 1,
|
||||
/obj/item/chameleon = 1,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/stimulants = 1,
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/obj/structure/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(height == 0)
|
||||
return TRUE
|
||||
if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider))
|
||||
if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider) || isterrorspider(mover))
|
||||
return TRUE
|
||||
else if(istype(mover, /mob/living))
|
||||
if(prob(50))
|
||||
|
||||
@@ -137,19 +137,7 @@
|
||||
T.ex_act(3)
|
||||
|
||||
CHECK_TICK
|
||||
//--- THROW ITEMS AROUND ---
|
||||
/*
|
||||
if(throw_dist > 0)
|
||||
var/throw_dir = get_dir(epicenter,T)
|
||||
for(var/obj/item/I in T)
|
||||
spawn(0) //Simultaneously not one at a time
|
||||
if(I && !I.anchored)
|
||||
var/throw_mult = 0.5 + (0.5 * rand()) // Between 0.5 and 1.0
|
||||
var/throw_range = round((throw_dist + 1) * throw_mult) // Roughly 50% to 100% of throw_dist
|
||||
if(throw_range > 0)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_at(throw_at, throw_range, 2, no_spin = 1) //Throw it at 2 speed, this is purely visual anyway; don't spin the thrown items, it's very costly.
|
||||
*/
|
||||
|
||||
var/took = stop_watch(watch)
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
if(GLOB.debug2)
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
icon_state = "bodybag_folded"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
attack_self(mob/user)
|
||||
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
/obj/item/bodybag/attack_self(mob/user)
|
||||
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/body_bag
|
||||
name = "body bag"
|
||||
@@ -56,16 +56,13 @@
|
||||
|
||||
|
||||
/obj/structure/closet/body_bag/MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
. = ..()
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
if(!ishuman(usr)) return
|
||||
if(opened) return 0
|
||||
if(contents.len) return 0
|
||||
visible_message("[usr] folds up the [src.name]")
|
||||
if(!ishuman(usr) || opened || length(contents))
|
||||
return FALSE
|
||||
visible_message("[usr] folds up the [name]")
|
||||
new item_path(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/body_bag/relaymove(mob/user as mob)
|
||||
if(user.stat)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/obj/artifacts.dmi'
|
||||
icon_state = "changerock"
|
||||
|
||||
obj/item/changestone/attack_hand(var/mob/user as mob)
|
||||
/obj/item/changestone/attack_hand(var/mob/user as mob)
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!H.gloves)
|
||||
|
||||
@@ -37,71 +37,83 @@
|
||||
overlays.Cut()
|
||||
|
||||
/obj/item/aicard/attack_self(mob/user)
|
||||
ui_interact(user)
|
||||
tgui_interact(user)
|
||||
|
||||
|
||||
/obj/item/aicard/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = GLOB.inventory_state)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/item/aicard/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_inventory_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "aicard.tmpl", "[name]", 600, 400, state = state)
|
||||
ui = new(user, src, ui_key, "AICard", "[name]", 600, 394, master_ui, state)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
|
||||
/obj/item/aicard/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.inventory_state)
|
||||
/obj/item/aicard/tgui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.inventory_state)
|
||||
var/data[0]
|
||||
|
||||
var/mob/living/silicon/ai/AI = locate() in src
|
||||
if(istype(AI))
|
||||
data["has_ai"] = 1
|
||||
data["has_ai"] = TRUE
|
||||
data["name"] = AI.name
|
||||
data["hardware_integrity"] = ((AI.health + 100) / 2)
|
||||
data["integrity"] = ((AI.health + 100) / 2)
|
||||
data["radio"] = !AI.aiRadio.disabledAi
|
||||
data["wireless"] = !AI.control_disabled
|
||||
data["operational"] = AI.stat != DEAD
|
||||
data["flushing"] = flush
|
||||
|
||||
var/laws[0]
|
||||
for(var/datum/ai_law/AL in AI.laws.all_laws())
|
||||
laws[++laws.len] = list("index" = AL.get_index(), "law" = sanitize(AL.law))
|
||||
for(var/datum/ai_law/law in AI.laws.all_laws())
|
||||
if(law in AI.laws.ion_laws) // If we're an ion law, give it an ion index code
|
||||
laws.Add(ionnum() + ". " + law.law)
|
||||
else
|
||||
laws.Add(num2text(law.get_index()) + ". " + law.law)
|
||||
data["laws"] = laws
|
||||
data["has_laws"] = laws.len
|
||||
data["has_laws"] = length(AI.laws.all_laws())
|
||||
|
||||
else
|
||||
data["has_ai"] = FALSE // If this isn't passed to tgui, it won't show there isn't a AI in the card.
|
||||
|
||||
return data
|
||||
|
||||
|
||||
/obj/item/aicard/Topic(href, href_list, nowindow, state)
|
||||
/obj/item/aicard/tgui_act(action, params)
|
||||
if(..())
|
||||
return 1
|
||||
return
|
||||
|
||||
var/mob/living/silicon/ai/AI = locate() in src
|
||||
if(!istype(AI))
|
||||
return 1
|
||||
return
|
||||
|
||||
var/user = usr
|
||||
switch(action)
|
||||
if("wipe")
|
||||
if(flush) // Don't doublewipe.
|
||||
to_chat(user, "<span class='warning'>You are already wiping this AI!</span>")
|
||||
return
|
||||
var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No")
|
||||
if(confirm == "Yes" && (tgui_status(user, GLOB.tgui_inventory_state) == STATUS_INTERACTIVE)) // And make doubly sure they want to wipe (three total clicks)
|
||||
msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].", ATKLOG_FEW)
|
||||
add_attack_logs(user, AI, "Wiped with [src].")
|
||||
INVOKE_ASYNC(src, .proc/wipe_ai)
|
||||
|
||||
if(href_list["wipe"])
|
||||
var/confirm = alert("Are you sure you want to wipe this card's memory? This cannot be undone once started.", "Confirm Wipe", "Yes", "No")
|
||||
if(confirm == "Yes" && (CanUseTopic(user, state) == STATUS_INTERACTIVE))
|
||||
msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].", ATKLOG_FEW)
|
||||
add_attack_logs(user, AI, "Wiped with [src].")
|
||||
flush = 1
|
||||
AI.suiciding = 1
|
||||
to_chat(AI, "Your core files are being wiped!")
|
||||
while(AI && AI.stat != DEAD)
|
||||
AI.adjustOxyLoss(2)
|
||||
sleep(10)
|
||||
flush = 0
|
||||
if("radio")
|
||||
AI.aiRadio.disabledAi = !AI.aiRadio.disabledAi
|
||||
to_chat(AI, "<span class='warning'>Your Subspace Transceiver has been [AI.aiRadio.disabledAi ? "disabled" : "enabled"]!</span>")
|
||||
to_chat(user, "<span class='notice'>You [AI.aiRadio.disabledAi ? "disable" : "enable"] the AI's Subspace Transceiver.</span>")
|
||||
|
||||
if(href_list["radio"])
|
||||
AI.aiRadio.disabledAi = text2num(href_list["radio"])
|
||||
to_chat(AI, "<span class='warning'>Your Subspace Transceiver has been [AI.aiRadio.disabledAi ? "disabled" : "enabled"]!</span>")
|
||||
to_chat(user, "<span class='notice'>You [AI.aiRadio.disabledAi ? "disable" : "enable"] the AI's Subspace Transceiver.</span>")
|
||||
if("wireless")
|
||||
AI.control_disabled = !AI.control_disabled
|
||||
to_chat(AI, "<span class='warning'>Your wireless interface has been [AI.control_disabled ? "disabled" : "enabled"]!</span>")
|
||||
to_chat(user, "<span class='notice'>You [AI.control_disabled ? "disable" : "enable"] the AI's wireless interface.</span>")
|
||||
update_icon()
|
||||
|
||||
if(href_list["wireless"])
|
||||
AI.control_disabled = text2num(href_list["wireless"])
|
||||
to_chat(AI, "<span class='warning'>Your wireless interface has been [AI.control_disabled ? "disabled" : "enabled"]!</span>")
|
||||
to_chat(user, "<span class='notice'>You [AI.control_disabled ? "disable" : "enable"] the AI's wireless interface.</span>")
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
return 1
|
||||
/obj/item/aicard/proc/wipe_ai()
|
||||
var/mob/living/silicon/ai/AI = locate() in src
|
||||
flush = TRUE
|
||||
AI.suiciding = TRUE
|
||||
to_chat(AI, "Your core files are being wiped!")
|
||||
while(AI && AI.stat != DEAD)
|
||||
AI.adjustOxyLoss(2)
|
||||
sleep(10)
|
||||
flush = FALSE
|
||||
|
||||
@@ -45,9 +45,6 @@
|
||||
QDEL_NULL(keyslot2)
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/headset/list_channels(var/mob/user)
|
||||
return list_secure_channels()
|
||||
|
||||
/obj/item/radio/headset/examine(mob/user)
|
||||
. = ..()
|
||||
if(in_range(src, user) && radio_desc)
|
||||
|
||||
@@ -245,14 +245,7 @@
|
||||
usesound = 'sound/items/deconstruct.ogg'
|
||||
|
||||
/obj/item/radio/intercom/locked
|
||||
var/locked_frequency
|
||||
|
||||
/obj/item/radio/intercom/locked/set_frequency(var/frequency)
|
||||
if(frequency == locked_frequency)
|
||||
..(locked_frequency)
|
||||
|
||||
/obj/item/radio/intercom/locked/list_channels()
|
||||
return ""
|
||||
freqlock = TRUE
|
||||
|
||||
/obj/item/radio/intercom/locked/ai_private
|
||||
name = "\improper AI intercom"
|
||||
|
||||
@@ -129,7 +129,10 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
/obj/item/radio/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "Radio", name, 360, 150 + (length(channels) * 20), master_ui, state)
|
||||
var/list/schannels = list_secure_channels(user)
|
||||
var/list/ichannels = list_internal_channels(user)
|
||||
var/calc_height = 150 + (schannels.len * 20) + (ichannels.len * 10)
|
||||
ui = new(user, src, ui_key, "Radio", name, 400, calc_height, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/item/radio/tgui_data(mob/user)
|
||||
@@ -142,9 +145,8 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
data["maxFrequency"] = freerange ? RADIO_HIGH_FREQ : PUBLIC_HIGH_FREQ
|
||||
data["canReset"] = frequency == initial(frequency) ? FALSE : TRUE
|
||||
data["freqlock"] = freqlock
|
||||
data["channels"] = list()
|
||||
for(var/channel in channels)
|
||||
data["channels"][channel] = channels[channel] & FREQ_LISTENING
|
||||
data["schannels"] = list_secure_channels(user)
|
||||
data["ichannels"] = list_internal_channels(user)
|
||||
|
||||
data["has_loudspeaker"] = has_loudspeaker
|
||||
data["loudspeaker"] = loudspeaker
|
||||
@@ -173,6 +175,12 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
usr << browse(null, "window=radio")
|
||||
if(.)
|
||||
set_frequency(sanitize_frequency(tune, freerange))
|
||||
if("ichannel") // change primary frequency to an internal channel authorized by access
|
||||
if(freqlock)
|
||||
return
|
||||
var/freq = params["ichannel"]
|
||||
if(has_channel_access(usr, freq))
|
||||
set_frequency(text2num(freq))
|
||||
if("listen")
|
||||
listening = !listening
|
||||
if("broadcast")
|
||||
@@ -198,34 +206,32 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
if(.)
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/item/radio/proc/list_channels(var/mob/user)
|
||||
return list_internal_channels(user)
|
||||
|
||||
/obj/item/radio/proc/list_secure_channels(var/mob/user)
|
||||
var/dat[0]
|
||||
|
||||
for(var/ch_name in channels)
|
||||
var/chan_stat = channels[ch_name]
|
||||
var/listening = !!(chan_stat & FREQ_LISTENING) != 0
|
||||
|
||||
dat.Add(list(list("chan" = ch_name, "display_name" = ch_name, "secure_channel" = 1, "sec_channel_listen" = !listening, "chan_span" = SSradio.frequency_span_class(SSradio.radiochannels[ch_name]))))
|
||||
|
||||
/obj/item/radio/proc/list_secure_channels(mob/user)
|
||||
var/list/dat = list()
|
||||
for(var/channel in channels)
|
||||
dat[channel] = channels[channel] & FREQ_LISTENING
|
||||
return dat
|
||||
|
||||
/obj/item/radio/proc/list_internal_channels(var/mob/user)
|
||||
var/dat[0]
|
||||
/obj/item/radio/proc/list_internal_channels(mob/user)
|
||||
var/list/dat = list()
|
||||
if(freqlock)
|
||||
return dat
|
||||
for(var/internal_chan in internal_channels)
|
||||
var/freqnum = text2num(internal_chan)
|
||||
var/freqname = get_frequency_name(freqnum)
|
||||
if(has_channel_access(user, internal_chan))
|
||||
dat.Add(list(list("chan" = internal_chan, "display_name" = get_frequency_name(text2num(internal_chan)), "chan_span" = SSradio.frequency_span_class(text2num(internal_chan)))))
|
||||
|
||||
dat[freqname] = freqnum // unlike secure_channels, this is set to the freq number so Radio.js can use it as an arg
|
||||
return dat
|
||||
|
||||
/obj/item/radio/proc/has_channel_access(var/mob/user, var/freq)
|
||||
/obj/item/radio/proc/has_channel_access(mob/user, freq)
|
||||
if(!user)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!(freq in internal_channels))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(isrobot(user))
|
||||
return FALSE // cyborgs and drones are not allowed to remotely re-tune intercomms, etc
|
||||
|
||||
return user.has_internal_radio_channel_access(user, internal_channels[freq])
|
||||
|
||||
@@ -603,13 +609,14 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
/obj/item/radio/borg
|
||||
name = "Cyborg Radio"
|
||||
var/mob/living/silicon/robot/myborg = null // Cyborg which owns this radio. Used for power checks
|
||||
var/obj/item/encryptionkey/keyslot = null//Borg radios can handle a single encryption key
|
||||
var/obj/item/encryptionkey/keyslot // Borg radios can handle a single encryption key
|
||||
icon = 'icons/obj/robot_component.dmi' // Cyborgs radio icons should look like the component.
|
||||
icon_state = "radio"
|
||||
has_loudspeaker = TRUE
|
||||
loudspeaker = FALSE
|
||||
canhear_range = 0
|
||||
dog_fashion = null
|
||||
freqlock = TRUE // don't let cyborgs change the default channel of their internal radio away from common
|
||||
|
||||
/obj/item/radio/borg/syndicate
|
||||
keyslot = new /obj/item/encryptionkey/syndicate/nukeops
|
||||
@@ -623,9 +630,6 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
|
||||
myborg = null
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/borg/list_channels(var/mob/user)
|
||||
return list_secure_channels(user)
|
||||
|
||||
/obj/item/radio/borg/syndicate/New()
|
||||
..()
|
||||
syndiekey = keyslot
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||
|
||||
investigate_log("[key_name(user)] attached a [A] to a transfer valve.", INVESTIGATE_BOMB)
|
||||
msg_admin_attack("[key_name_admin(user)]attached [A] to a transfer valve.", ATKLOG_FEW)
|
||||
add_attack_logs(user, src, "attached [A] to a transfer valve", ATKLOG_FEW)
|
||||
log_game("[key_name_admin(user)] attached [A] to a transfer valve.")
|
||||
attacher = user
|
||||
SSnanoui.update_uis(src) // update all UIs attached to src
|
||||
@@ -128,7 +128,7 @@
|
||||
if((!tank_one || tank_one.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL))
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
if("toggle")
|
||||
toggle_valve()
|
||||
toggle_valve(usr)
|
||||
if("device")
|
||||
if(attached_device)
|
||||
attached_device.attack_self(usr)
|
||||
@@ -190,7 +190,7 @@
|
||||
it explodes properly when it gets a signal (and it does).
|
||||
*/
|
||||
|
||||
/obj/item/transfer_valve/proc/toggle_valve()
|
||||
/obj/item/transfer_valve/proc/toggle_valve(mob/user)
|
||||
if(!valve_open && tank_one && tank_two)
|
||||
valve_open = 1
|
||||
var/turf/bombturf = get_turf(src)
|
||||
@@ -207,6 +207,8 @@
|
||||
investigate_log("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]", INVESTIGATE_BOMB)
|
||||
message_admins("Bomb valve opened at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name_admin(mob)]")
|
||||
log_game("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]")
|
||||
if(user)
|
||||
add_attack_logs(user, src, "Bomb valve opened with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]", ATKLOG_FEW)
|
||||
merge_gases()
|
||||
spawn(20) // In case one tank bursts
|
||||
for(var/i in 1 to 5)
|
||||
|
||||
@@ -242,15 +242,15 @@
|
||||
to_chat(user, "<span class='notice'>You hide [I] in the [src]. It will detonate some time after the flag is lit on fire.</span>")
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
message_admins("[key_name_admin(user)] has hidden [I] in the [src] ready for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name(user)] has hidden [I] in the [src] ready for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
investigate_log("[key_name(user)] has hidden [I] in the [src] ready for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has hidden [I] ready for detonation in", ATKLOG_MOST)
|
||||
else if(is_hot(I) && !(resistance_flags & ON_FIRE) && boobytrap && trapper)
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
message_admins("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
investigate_log("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has lit (booby trapped with [boobytrap]", ATKLOG_FEW)
|
||||
burn()
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -185,20 +185,18 @@
|
||||
|
||||
/obj/item/borg/upgrade/syndicate
|
||||
name = "safety override module"
|
||||
desc = "Unlocks the hidden, deadlier functions of a cyborg. Also prevents emag subversion."
|
||||
desc = "Unlocks the hidden, deadlier functions of a cyborg."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
origin_tech = "combat=4;syndicate=1"
|
||||
origin_tech = "combat=6;materials=6"
|
||||
require_module = TRUE
|
||||
|
||||
/obj/item/borg/upgrade/syndicate/action(mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return
|
||||
if(R.emagged)
|
||||
return
|
||||
if(R.weapons_unlock)
|
||||
to_chat(R, "<span class='warning'>Internal diagnostic error: incompatible upgrade module detected.</span>")
|
||||
to_chat(R, "<span class='warning'>Warning: Safety Overide Protocols have be disabled.</span>")
|
||||
return
|
||||
R.emagged = 1
|
||||
R.weapons_unlock = 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/lavaproof
|
||||
|
||||
@@ -54,7 +54,6 @@ GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
new /datum/stack_recipe/rods("metal rod", /obj/item/stack/rods, 1, 2, 50),
|
||||
null,
|
||||
new /datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("modular console", /obj/machinery/modular_computer/console/buildable/, 10, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
|
||||
@@ -214,8 +214,9 @@
|
||||
/obj/item/twohanded/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
return 0
|
||||
|
||||
/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
|
||||
return 0
|
||||
/obj/item/twohanded/dualsaber/toy/IsReflect()
|
||||
if(wielded)
|
||||
return 2
|
||||
|
||||
/obj/item/toy/katana
|
||||
name = "replica katana"
|
||||
@@ -404,7 +405,7 @@
|
||||
|
||||
|
||||
|
||||
obj/item/toy/cards
|
||||
/obj/item/toy/cards
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 50
|
||||
var/parentdeck = null
|
||||
@@ -416,14 +417,14 @@ obj/item/toy/cards
|
||||
var/card_throw_range = 20
|
||||
var/list/card_attack_verb = list("attacked")
|
||||
|
||||
obj/item/toy/cards/New()
|
||||
/obj/item/toy/cards/New()
|
||||
..()
|
||||
|
||||
obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
|
||||
/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
|
||||
if(!istype(sourceobj))
|
||||
return
|
||||
|
||||
obj/item/toy/cards/deck
|
||||
/obj/item/toy/cards/deck
|
||||
name = "deck of cards"
|
||||
desc = "A deck of space-grade playing cards."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -433,7 +434,7 @@ obj/item/toy/cards/deck
|
||||
var/cooldown = 0
|
||||
var/list/cards = list()
|
||||
|
||||
obj/item/toy/cards/deck/New()
|
||||
/obj/item/toy/cards/deck/New()
|
||||
..()
|
||||
icon_state = "deck_[deckstyle]_full"
|
||||
for(var/i in 2 to 10)
|
||||
@@ -458,7 +459,7 @@ obj/item/toy/cards/deck/New()
|
||||
cards += "Ace of Clubs"
|
||||
cards += "Ace of Diamonds"
|
||||
|
||||
obj/item/toy/cards/deck/attack_hand(mob/user as mob)
|
||||
/obj/item/toy/cards/deck/attack_hand(mob/user as mob)
|
||||
var/choice = null
|
||||
if(cards.len == 0)
|
||||
icon_state = "deck_[deckstyle]_empty"
|
||||
@@ -476,14 +477,14 @@ obj/item/toy/cards/deck/attack_hand(mob/user as mob)
|
||||
visible_message("<span class='notice'>[user] draws a card from the deck.</span>", "<span class='notice'>You draw a card from the deck.</span>")
|
||||
update_icon()
|
||||
|
||||
obj/item/toy/cards/deck/attack_self(mob/user as mob)
|
||||
/obj/item/toy/cards/deck/attack_self(mob/user as mob)
|
||||
if(cooldown < world.time - 50)
|
||||
cards = shuffle(cards)
|
||||
playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
|
||||
user.visible_message("<span class='notice'>[user] shuffles the deck.</span>", "<span class='notice'>You shuffle the deck.</span>")
|
||||
cooldown = world.time
|
||||
|
||||
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
|
||||
/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
|
||||
..()
|
||||
if(istype(C))
|
||||
if(C.parentdeck == src)
|
||||
@@ -498,7 +499,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use
|
||||
update_icon()
|
||||
|
||||
|
||||
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params)
|
||||
/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params)
|
||||
..()
|
||||
if(istype(C))
|
||||
if(C.parentdeck == src)
|
||||
@@ -512,7 +513,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
update_icon()
|
||||
|
||||
obj/item/toy/cards/deck/MouseDrop(atom/over_object)
|
||||
/obj/item/toy/cards/deck/MouseDrop(atom/over_object)
|
||||
var/mob/M = usr
|
||||
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
|
||||
return
|
||||
@@ -536,7 +537,7 @@ obj/item/toy/cards/deck/MouseDrop(atom/over_object)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You can't reach it from here.</span>")
|
||||
|
||||
obj/item/toy/cards/deck/update_icon()
|
||||
/obj/item/toy/cards/deck/update_icon()
|
||||
switch(cards.len)
|
||||
if(0)
|
||||
icon_state = "deck_[deckstyle]_empty"
|
||||
@@ -547,7 +548,7 @@ obj/item/toy/cards/deck/update_icon()
|
||||
else
|
||||
icon_state = "deck_[deckstyle]_full"
|
||||
|
||||
obj/item/toy/cards/cardhand
|
||||
/obj/item/toy/cards/cardhand
|
||||
name = "hand of cards"
|
||||
desc = "A number of cards not in a deck, customarily held in ones hand."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -557,11 +558,11 @@ obj/item/toy/cards/cardhand
|
||||
var/choice = null
|
||||
|
||||
|
||||
obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
|
||||
/obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
|
||||
obj/item/toy/cards/cardhand/interact(mob/user)
|
||||
/obj/item/toy/cards/cardhand/interact(mob/user)
|
||||
var/dat = "You have:<BR>"
|
||||
for(var/t in currenthand)
|
||||
dat += "<A href='?src=[UID()];pick=[t]'>A [t].</A><BR>"
|
||||
@@ -572,7 +573,7 @@ obj/item/toy/cards/cardhand/interact(mob/user)
|
||||
popup.open()
|
||||
|
||||
|
||||
obj/item/toy/cards/cardhand/Topic(href, href_list)
|
||||
/obj/item/toy/cards/cardhand/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(usr.stat || !ishuman(usr) || !usr.canmove)
|
||||
@@ -606,7 +607,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
|
||||
/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
|
||||
if(istype(C))
|
||||
if(C.parentdeck == parentdeck)
|
||||
currenthand += C.cardname
|
||||
@@ -618,7 +619,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
|
||||
/obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
|
||||
..()
|
||||
newobj.deckstyle = sourceobj.deckstyle
|
||||
newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added.
|
||||
@@ -631,7 +632,7 @@ obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/t
|
||||
newobj.resistance_flags = sourceobj.resistance_flags
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard
|
||||
/obj/item/toy/cards/singlecard
|
||||
name = "card"
|
||||
desc = "a card"
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
@@ -642,7 +643,7 @@ obj/item/toy/cards/singlecard
|
||||
pixel_x = -5
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/examine(mob/user)
|
||||
/obj/item/toy/cards/singlecard/examine(mob/user)
|
||||
. = ..()
|
||||
if(get_dist(user, src) <= 0)
|
||||
if(ishuman(user))
|
||||
@@ -653,7 +654,7 @@ obj/item/toy/cards/singlecard/examine(mob/user)
|
||||
. += "<span class='notice'>You need to have the card in your hand to check it.</span>"
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/verb/Flip()
|
||||
/obj/item/toy/cards/singlecard/verb/Flip()
|
||||
set name = "Flip Card"
|
||||
set category = "Object"
|
||||
set src in range(1)
|
||||
@@ -674,7 +675,7 @@ obj/item/toy/cards/singlecard/verb/Flip()
|
||||
name = "card"
|
||||
pixel_x = -5
|
||||
|
||||
obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
|
||||
/obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/toy/cards/singlecard/))
|
||||
var/obj/item/toy/cards/singlecard/C = I
|
||||
if(C.parentdeck == parentdeck)
|
||||
@@ -704,7 +705,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
obj/item/toy/cards/cardhand/update_icon()
|
||||
/obj/item/toy/cards/cardhand/update_icon()
|
||||
switch(currenthand.len)
|
||||
if(0 to 1)
|
||||
return
|
||||
@@ -718,12 +719,12 @@ obj/item/toy/cards/cardhand/update_icon()
|
||||
icon_state = "[deckstyle]_hand5"
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/attack_self(mob/user)
|
||||
/obj/item/toy/cards/singlecard/attack_self(mob/user)
|
||||
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
|
||||
return
|
||||
Flip()
|
||||
|
||||
obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
|
||||
/obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
|
||||
..()
|
||||
newobj.deckstyle = sourceobj.deckstyle
|
||||
newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works.
|
||||
@@ -745,7 +746,7 @@ obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newo
|
||||
|| Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. ||
|
||||
*/
|
||||
|
||||
obj/item/toy/cards/deck/syndicate
|
||||
/obj/item/toy/cards/deck/syndicate
|
||||
name = "suspicious looking deck of cards"
|
||||
desc = "A deck of space-grade playing cards. They seem unusually rigid."
|
||||
deckstyle = "syndicate"
|
||||
@@ -760,10 +761,10 @@ obj/item/toy/cards/deck/syndicate
|
||||
/*
|
||||
|| Custom card decks ||
|
||||
*/
|
||||
obj/item/toy/cards/deck/black
|
||||
/obj/item/toy/cards/deck/black
|
||||
deckstyle = "black"
|
||||
|
||||
obj/item/toy/cards/deck/syndicate/black
|
||||
/obj/item/toy/cards/deck/syndicate/black
|
||||
deckstyle = "black"
|
||||
|
||||
/obj/item/toy/nuke
|
||||
|
||||
@@ -59,6 +59,14 @@
|
||||
/obj/item/trash/fried_vox
|
||||
name = "Kentucky Fried Vox"
|
||||
icon_state = "fried_vox_empty"
|
||||
item_state = "fried_vox_empty"
|
||||
slot_flags = SLOT_HEAD
|
||||
dog_fashion = /datum/dog_fashion/head/fried_vox_empty
|
||||
sprite_sheets = list(
|
||||
"Skrell" = 'icons/mob/species/skrell/head.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/head.dmi',
|
||||
"Kidan" = 'icons/mob/species/kidan/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/trash/pistachios
|
||||
name = "Pistachios pack"
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
var/rank = null //actual job
|
||||
var/owner_uid
|
||||
var/owner_ckey
|
||||
var/lastlog
|
||||
var/dorm = 0 // determines if this ID has claimed a dorm already
|
||||
|
||||
var/sex
|
||||
|
||||
@@ -66,6 +66,10 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
..()
|
||||
light()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/catch_fire()
|
||||
if(!lit)
|
||||
light("<span class='warning'>The [name] is lit by the flames!</span>")
|
||||
|
||||
/obj/item/clothing/mask/cigarette/welder_act(mob/user, obj/item/I)
|
||||
. = TRUE
|
||||
if(I.tool_use_check(user, 0)) //Don't need to flash eyes because you are a badass
|
||||
|
||||
@@ -189,8 +189,8 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
investigate_log("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]", INVESTIGATE_BOMB)
|
||||
message_admins("E20 detonated at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> with a roll of [result]. Triggered by: [key_name_admin(user)]")
|
||||
log_game("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]")
|
||||
add_attack_logs(user, src, "detonated with a roll of [result]", ATKLOG_FEW)
|
||||
|
||||
|
||||
/obj/item/dice/update_icon()
|
||||
|
||||
@@ -106,6 +106,8 @@
|
||||
|
||||
src.last_use = world.time
|
||||
|
||||
if(reagents.chem_temp > 300 || reagents.chem_temp < 280)
|
||||
add_attack_logs(user, target, "Sprayed with superheated or cooled fire extinguisher at Temperature [reagents.chem_temp]K")
|
||||
playsound(src.loc, 'sound/effects/extinguish.ogg', 75, 1, -3)
|
||||
|
||||
var/direction = get_dir(src,target)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
obj/item/firework
|
||||
/obj/item/firework
|
||||
name = "fireworks"
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "rocket_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect_system/sparkle_spread/S
|
||||
obj/item/firework/attackby(obj/item/W,mob/user, params)
|
||||
|
||||
/obj/item/firework/attackby(obj/item/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
if(is_hot(W))
|
||||
@@ -20,13 +21,13 @@ obj/item/firework/attackby(obj/item/W,mob/user, params)
|
||||
S.start()
|
||||
qdel(src)
|
||||
|
||||
obj/item/sparkler
|
||||
/obj/item/sparkler
|
||||
name = "sparkler"
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "sparkler_0"
|
||||
var/litzor = 0
|
||||
|
||||
obj/item/sparkler/attackby(obj/item/W,mob/user, params)
|
||||
/obj/item/sparkler/attackby(obj/item/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
if(is_hot(W))
|
||||
@@ -39,8 +40,12 @@ obj/item/sparkler/attackby(obj/item/W,mob/user, params)
|
||||
do_sparks(1, 0, loc)
|
||||
sleep(10)
|
||||
qdel(src)
|
||||
|
||||
// TODO: Refactor this into a proper locker or something
|
||||
// Or just axe the system. This code is 7 years old
|
||||
/obj/crate/fireworks
|
||||
name = "Fireworks!"
|
||||
|
||||
/obj/crate/fireworks/New()
|
||||
new /obj/item/sparkler(src)
|
||||
new /obj/item/sparkler(src)
|
||||
|
||||
@@ -101,9 +101,9 @@
|
||||
update_icon()
|
||||
else if(clown_check(user))
|
||||
// This used to go before the assembly check, but that has absolutely zero to do with priming the damn thing. You could spam the admins with it.
|
||||
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> [contained].")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) [contained].")
|
||||
investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])[contained].", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has primed (contained [contained])", ATKLOG_FEW)
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time / 10] second\s!</span>")
|
||||
playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1)
|
||||
active = 1
|
||||
@@ -120,7 +120,7 @@
|
||||
owner.visible_message("<span class='danger'>[attack_text] hits [owner]'s [src], setting it off! What a shot!</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
log_game("A projectile ([hitby]) detonated a grenade held by [key_name(owner)] at [COORD(T)]")
|
||||
message_admins("A projectile ([hitby]) detonated a grenade held by [key_name_admin(owner)] at [ADMIN_COORDJMP(T)]")
|
||||
add_attack_logs(P.firer, owner, "A projectile ([hitby]) detonated a grenade held", ATKLOG_FEW)
|
||||
prime()
|
||||
return 1 //It hit the grenade, not them
|
||||
|
||||
@@ -149,16 +149,16 @@
|
||||
if(!O.reagents) continue
|
||||
if(istype(O,/obj/item/slime_extract))
|
||||
cores += " [O]"
|
||||
for(var/reagent in O.reagents.reagent_list)
|
||||
contained += " [reagent] "
|
||||
for(var/R in O.reagents.reagent_list)
|
||||
var/datum/reagent/reagent = R
|
||||
contained += "[reagent.volume] [reagent], "
|
||||
if(contained)
|
||||
if(cores)
|
||||
contained = "\[[cores];[contained]\]"
|
||||
contained = "\[[cores]; [contained]\]"
|
||||
else
|
||||
contained = "\[[contained]\]"
|
||||
contained = "\[ [contained]\]"
|
||||
var/turf/bombturf = get_turf(loc)
|
||||
var/area/A = bombturf.loc
|
||||
message_admins("[key_name_admin(usr)] has completed [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> [contained].")
|
||||
add_attack_logs(user, src, "has completed with [contained]", ATKLOG_MOST)
|
||||
log_game("[key_name(usr)] has completed [name] at [bombturf.x], [bombturf.y], [bombturf.z]. [contained]")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to add at least one beaker before locking the assembly.</span>")
|
||||
|
||||
@@ -48,9 +48,9 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)].")
|
||||
log_game("[key_name(user)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
|
||||
investigate_log("[key_name(user)] has primed a [name] for detonation at [A.name] [COORD(bombturf)])", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has primed for detonation", ATKLOG_FEW)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])")
|
||||
investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has primed for detonation", ATKLOG_FEW)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
|
||||
@@ -9,27 +9,27 @@
|
||||
var/deliveryamt = 1 // amount of type to deliver
|
||||
spawner_type = /mob/living/simple_animal/hostile/viscerator
|
||||
|
||||
prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
|
||||
/obj/item/grenade/spawnergrenade/prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
|
||||
|
||||
if(spawner_type && deliveryamt)
|
||||
// Make a quick flash
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
|
||||
for(var/mob/living/carbon/C in viewers(T, null))
|
||||
C.flash_eyes()
|
||||
if(spawner_type && deliveryamt)
|
||||
// Make a quick flash
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
|
||||
for(var/mob/living/carbon/C in viewers(T, null))
|
||||
C.flash_eyes()
|
||||
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
x.admin_spawned = admin_spawned
|
||||
x.loc = T
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(x, pick(NORTH,SOUTH,EAST,WEST))
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
x.admin_spawned = admin_spawned
|
||||
x.loc = T
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(x, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
// Spawn some hostile syndicate critters
|
||||
// Spawn some hostile syndicate critters
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/grenade/spawnergrenade/manhacks
|
||||
name = "manhack delivery grenade"
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/claymore/highlander/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
if(!ishuman(user) || !user.mind)
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(slot == slot_r_hand || slot == slot_l_hand)
|
||||
if(H.martial_art && H.martial_art != style)
|
||||
style.teach(H, 1)
|
||||
if(H.mind.martial_art && H.mind.martial_art != style)
|
||||
style.teach(H, TRUE)
|
||||
to_chat(H, "<span class='notice'>THERE CAN ONLY BE ONE!</span>")
|
||||
else if(H.martial_art && H.martial_art == style)
|
||||
else if(H.mind.martial_art && H.mind.martial_art == style)
|
||||
style.remove(H)
|
||||
var/obj/item/claymore/highlander/sword = H.is_in_hands(/obj/item/claymore/highlander)
|
||||
if(sword)
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
|
||||
/obj/item/implant/krav_maga/activate()
|
||||
var/mob/living/carbon/human/H = imp_in
|
||||
if(!ishuman(H))
|
||||
if(!ishuman(H) || !H.mind)
|
||||
return
|
||||
if(istype(H.martial_art, /datum/martial_art/krav_maga))
|
||||
if(istype(H.mind.martial_art, /datum/martial_art/krav_maga))
|
||||
style.remove(H)
|
||||
else
|
||||
style.teach(H,1)
|
||||
style.teach(H, TRUE)
|
||||
|
||||
/obj/item/implanter/krav_maga
|
||||
name = "implanter (krav maga)"
|
||||
|
||||
@@ -17,13 +17,6 @@
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/injecting = 0
|
||||
|
||||
/obj/machinery/implantchair/proc
|
||||
go_out()
|
||||
put_mob(mob/living/carbon/M)
|
||||
implant(var/mob/M)
|
||||
add_implants()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/New()
|
||||
..()
|
||||
add_implants()
|
||||
@@ -87,7 +80,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/go_out(mob/M)
|
||||
/obj/machinery/implantchair/proc/go_out(mob/M)
|
||||
if(!( src.occupant ))
|
||||
return
|
||||
if(M == occupant) // so that the guy inside can't eject himself -Agouri
|
||||
@@ -101,7 +94,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/put_mob(mob/living/carbon/M)
|
||||
/obj/machinery/implantchair/proc/put_mob(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
to_chat(usr, "<span class='warning'>The [src.name] cannot hold this!</span>")
|
||||
return
|
||||
@@ -116,7 +109,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/implantchair/implant(mob/M)
|
||||
/obj/machinery/implantchair/proc/implant(mob/M)
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if(!implant_list.len) return
|
||||
@@ -131,7 +124,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/add_implants()
|
||||
/obj/machinery/implantchair/proc/add_implants()
|
||||
for(var/i=0, i<src.max_implants, i++)
|
||||
var/obj/item/implant/mindshield/I = new /obj/item/implant/mindshield(src)
|
||||
implant_list += I
|
||||
|
||||
@@ -42,26 +42,23 @@
|
||||
|
||||
create_reagents(5)
|
||||
|
||||
/obj/item/kitchen/utensil/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
/obj/item/kitchen/utensil/attack(mob/living/carbon/C, mob/living/carbon/user)
|
||||
if(!istype(C))
|
||||
return ..()
|
||||
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
if(user.zone_selected == "head" || user.zone_selected == "eyes")
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
C = user
|
||||
return eyestab(C, user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
if(contents.len)
|
||||
if(length(contents))
|
||||
var/obj/item/reagent_containers/food/snacks/toEat = contents[1]
|
||||
if(istype(toEat))
|
||||
if(M.eat(toEat, user))
|
||||
toEat.On_Consume(M, user)
|
||||
spawn(0)
|
||||
if(toEat)
|
||||
qdel(toEat)
|
||||
if(C.eat(toEat, user))
|
||||
toEat.On_Consume(C, user)
|
||||
overlays.Cut()
|
||||
return
|
||||
|
||||
|
||||
@@ -556,7 +556,7 @@
|
||||
icon_state = "duffel-clown"
|
||||
item_state = "duffel-clown"
|
||||
|
||||
obj/item/storage/backpack/duffel/blueshield
|
||||
/obj/item/storage/backpack/duffel/blueshield
|
||||
name = "blueshield duffelbag"
|
||||
desc = "A robust duffelbag issued to Nanotrasen's finest."
|
||||
icon_state = "duffel-blueshield"
|
||||
|
||||
@@ -258,6 +258,14 @@
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/storage/belt/security/webbing
|
||||
name = "security webbing"
|
||||
desc = "Unique and versatile chest rig, can hold security gear."
|
||||
icon_state = "securitywebbing"
|
||||
item_state = "securitywebbing"
|
||||
storage_slots = 6
|
||||
use_item_overlays = FALSE
|
||||
|
||||
/obj/item/storage/belt/soulstone
|
||||
name = "soul stone belt"
|
||||
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
|
||||
@@ -310,6 +318,18 @@
|
||||
item_state = "utility"
|
||||
use_item_overlays = 1 // So it will still show tools in it in case sec get lazy and just glance at it.
|
||||
|
||||
/obj/item/storage/belt/military/traitor/hacker
|
||||
|
||||
/obj/item/storage/belt/military/traitor/hacker/New()
|
||||
..()
|
||||
new /obj/item/screwdriver(src, "red")
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/weldingtool/largetank(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/wirecutters(src, "red")
|
||||
new /obj/item/stack/cable_coil(src, 30, COLOR_RED)
|
||||
update_icon()
|
||||
|
||||
/obj/item/storage/belt/grenade
|
||||
name = "grenadier belt"
|
||||
desc = "A belt for holding grenades."
|
||||
|
||||
@@ -66,14 +66,15 @@
|
||||
|
||||
/obj/item/storage/box/survival
|
||||
icon_state = "box_civ"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/tank/emergency_oxygen( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/flashlight/flare/glowstick/emergency( src )
|
||||
return
|
||||
|
||||
/obj/item/storage/box/survival/New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/tank/emergency_oxygen( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/flashlight/flare/glowstick/emergency( src )
|
||||
return
|
||||
|
||||
/obj/item/storage/box/survival_vox
|
||||
icon_state = "box_vox"
|
||||
@@ -99,66 +100,69 @@
|
||||
|
||||
/obj/item/storage/box/engineer
|
||||
icon_state = "box_eng"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/tank/emergency_oxygen/engi( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/flashlight/flare/glowstick/emergency( src )
|
||||
return
|
||||
|
||||
/obj/item/storage/box/engineer/New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/tank/emergency_oxygen/engi( src )
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector( src )
|
||||
new /obj/item/flashlight/flare/glowstick/emergency( src )
|
||||
return
|
||||
|
||||
/obj/item/storage/box/survival_mining
|
||||
icon_state = "box_min"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/gas/explorer(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/flashlight/flare/glowstick/emergency(src)
|
||||
|
||||
/obj/item/storage/box/survival_mining/New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/gas/explorer(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/crowbar/red(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/flashlight/flare/glowstick/emergency(src)
|
||||
|
||||
/obj/item/storage/box/survival_syndi
|
||||
icon_state = "box_syndi"
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/tank/emergency_oxygen/syndi(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/reagent_containers/food/pill/initropidril(src)
|
||||
new /obj/item/flashlight/flare/glowstick/red(src)
|
||||
|
||||
/obj/item/storage/box/survival_syndi/New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/tank/emergency_oxygen/syndi(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
new /obj/item/reagent_containers/food/pill/initropidril(src)
|
||||
new /obj/item/flashlight/flare/glowstick/red(src)
|
||||
|
||||
/obj/item/storage/box/gloves
|
||||
name = "box of latex gloves"
|
||||
desc = "Contains white gloves."
|
||||
icon_state = "latex"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
/obj/item/storage/box/gloves/New()
|
||||
..()
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
|
||||
/obj/item/storage/box/masks
|
||||
name = "sterile masks"
|
||||
desc = "This box contains masks of sterility."
|
||||
icon_state = "sterile"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
/obj/item/storage/box/masks/New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
|
||||
|
||||
/obj/item/storage/box/syringes
|
||||
@@ -167,29 +171,29 @@
|
||||
desc = "A biohazard alert warning is printed on the box"
|
||||
icon_state = "syringe"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
/obj/item/storage/box/syringes/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
new /obj/item/reagent_containers/syringe( src )
|
||||
|
||||
/obj/item/storage/box/beakers
|
||||
name = "beaker box"
|
||||
icon_state = "beaker"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
/obj/item/storage/box/beakers/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
new /obj/item/reagent_containers/glass/beaker( src )
|
||||
|
||||
/obj/item/storage/box/beakers/bluespace
|
||||
name = "box of bluespace beakers"
|
||||
@@ -219,14 +223,14 @@
|
||||
name = "\improper DNA injectors"
|
||||
desc = "This box contains injectors it seems."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
/obj/item/storage/box/injectors/New()
|
||||
..()
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
new /obj/item/dnainjector/m2h(src)
|
||||
|
||||
/obj/item/storage/box/slug
|
||||
name = "Ammunition Box (Slug)"
|
||||
@@ -304,29 +308,29 @@
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
/obj/item/storage/box/flashbangs/New()
|
||||
..()
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
new /obj/item/grenade/flashbang(src)
|
||||
|
||||
/obj/item/storage/box/flashes
|
||||
name = "box of flashbulbs"
|
||||
desc = "<B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
/obj/item/storage/box/flashes/New()
|
||||
..()
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
new /obj/item/flash(src)
|
||||
|
||||
/obj/item/storage/box/teargas
|
||||
name = "box of tear gas grenades (WARNING)"
|
||||
@@ -348,13 +352,13 @@
|
||||
desc = "A box with 5 emp grenades."
|
||||
icon_state = "flashbang"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
/obj/item/storage/box/emps/New()
|
||||
..()
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
|
||||
|
||||
/obj/item/storage/box/trackimp
|
||||
@@ -362,15 +366,15 @@
|
||||
desc = "Box full of scum-bag tracking utensils."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
new /obj/item/locator(src)
|
||||
/obj/item/storage/box/trackimp/New()
|
||||
..()
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implantcase/tracking(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
new /obj/item/locator(src)
|
||||
|
||||
/obj/item/storage/box/minertracker
|
||||
name = "boxed tracking implant kit"
|
||||
@@ -391,86 +395,86 @@
|
||||
desc = "Box of stuff used to implant chemicals."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
/obj/item/storage/box/chemimp/New()
|
||||
..()
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implantcase/chem(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantpad(src)
|
||||
|
||||
/obj/item/storage/box/exileimp
|
||||
name = "boxed exile implant kit"
|
||||
desc = "Box of exile implants. It has a picture of a clown being booted through the Gateway."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implanter(src)
|
||||
/obj/item/storage/box/exileimp/New()
|
||||
..()
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implanter(src)
|
||||
|
||||
/obj/item/storage/box/deathimp
|
||||
name = "death alarm implant kit"
|
||||
desc = "Box of life sign monitoring implants."
|
||||
icon_state = "implant"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implanter(src)
|
||||
/obj/item/storage/box/deathimp/New()
|
||||
..()
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implanter(src)
|
||||
|
||||
/obj/item/storage/box/tapes
|
||||
name = "Tape Box"
|
||||
desc = "A box of spare recording tapes"
|
||||
icon_state = "box"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
/obj/item/storage/box/tapes/New()
|
||||
..()
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
new /obj/item/tape(src)
|
||||
|
||||
/obj/item/storage/box/rxglasses
|
||||
name = "prescription glasses"
|
||||
desc = "This box contains nerd glasses."
|
||||
icon_state = "glasses"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
/obj/item/storage/box/rxglasses/New()
|
||||
..()
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
|
||||
/obj/item/storage/box/drinkingglasses
|
||||
name = "box of drinking glasses"
|
||||
desc = "It has a picture of drinking glasses on it."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
/obj/item/storage/box/drinkingglasses/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
|
||||
/obj/item/storage/box/cdeathalarm_kit
|
||||
name = "Death Alarm Kit"
|
||||
@@ -478,43 +482,42 @@
|
||||
icon_state = "implant"
|
||||
item_state = "syringe_kit"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
/obj/item/storage/box/cdeathalarm_kit/New()
|
||||
..()
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
new /obj/item/implantcase/death_alarm(src)
|
||||
|
||||
/obj/item/storage/box/condimentbottles
|
||||
name = "box of condiment bottles"
|
||||
desc = "It has a large ketchup smear on it."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
|
||||
|
||||
/obj/item/storage/box/condimentbottles/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
new /obj/item/reagent_containers/food/condiment(src)
|
||||
|
||||
/obj/item/storage/box/cups
|
||||
name = "box of paper cups"
|
||||
desc = "It has pictures of paper cups on the front."
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
|
||||
/obj/item/storage/box/cups/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
new /obj/item/reagent_containers/food/drinks/sillycup( src )
|
||||
|
||||
|
||||
/obj/item/storage/box/donkpockets
|
||||
@@ -522,28 +525,28 @@
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
icon_state = "donk_kit"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
/obj/item/storage/box/donkpockets/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/donkpocket(src)
|
||||
|
||||
/obj/item/storage/box/syndidonkpockets
|
||||
name = "box of donk-pockets"
|
||||
desc = "This box feels slightly warm"
|
||||
icon_state = "donk_kit"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
/obj/item/storage/box/syndidonkpockets/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
new /obj/item/reagent_containers/food/snacks/syndidonkpocket(src)
|
||||
|
||||
/obj/item/storage/box/monkeycubes
|
||||
name = "monkey cube box"
|
||||
@@ -604,59 +607,59 @@
|
||||
desc = "Has so many empty IDs."
|
||||
icon_state = "id"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
/obj/item/storage/box/ids/New()
|
||||
..()
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
new /obj/item/card/id(src)
|
||||
|
||||
/obj/item/storage/box/prisoner
|
||||
name = "prisoner IDs"
|
||||
desc = "Take away their last shred of dignity, their name."
|
||||
icon_state = "id"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/card/id/prisoner/one(src)
|
||||
new /obj/item/card/id/prisoner/two(src)
|
||||
new /obj/item/card/id/prisoner/three(src)
|
||||
new /obj/item/card/id/prisoner/four(src)
|
||||
new /obj/item/card/id/prisoner/five(src)
|
||||
new /obj/item/card/id/prisoner/six(src)
|
||||
new /obj/item/card/id/prisoner/seven(src)
|
||||
/obj/item/storage/box/prisoner/New()
|
||||
..()
|
||||
new /obj/item/card/id/prisoner/one(src)
|
||||
new /obj/item/card/id/prisoner/two(src)
|
||||
new /obj/item/card/id/prisoner/three(src)
|
||||
new /obj/item/card/id/prisoner/four(src)
|
||||
new /obj/item/card/id/prisoner/five(src)
|
||||
new /obj/item/card/id/prisoner/six(src)
|
||||
new /obj/item/card/id/prisoner/seven(src)
|
||||
|
||||
/obj/item/storage/box/seccarts
|
||||
name = "spare R.O.B.U.S.T. Cartridges"
|
||||
desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security."
|
||||
icon_state = "pda"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
/obj/item/storage/box/seccarts/New()
|
||||
..()
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
new /obj/item/cartridge/security(src)
|
||||
|
||||
/obj/item/storage/box/holobadge
|
||||
name = "holobadge box"
|
||||
icon_state = "box_badge"
|
||||
desc = "A box claiming to contain holobadges."
|
||||
New()
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/storage/box/holobadge/New()
|
||||
..()
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
new /obj/item/clothing/accessory/holobadge/cord(src)
|
||||
|
||||
/obj/item/storage/box/evidence
|
||||
name = "evidence bag box"
|
||||
@@ -677,50 +680,50 @@
|
||||
desc = "A box full of handcuffs."
|
||||
icon_state = "handcuff"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
/obj/item/storage/box/handcuffs/New()
|
||||
..()
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
|
||||
/obj/item/storage/box/zipties
|
||||
name = "box of spare zipties"
|
||||
desc = "A box full of zipties."
|
||||
icon_state = "handcuff"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
/obj/item/storage/box/zipties/New()
|
||||
..()
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
new /obj/item/restraints/handcuffs/cable/zipties(src)
|
||||
|
||||
/obj/item/storage/box/alienhandcuffs
|
||||
name = "box of spare handcuffs"
|
||||
desc = "A box full of handcuffs."
|
||||
icon_state = "alienboxCuffs"
|
||||
|
||||
New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/restraints/handcuffs/alien(src)
|
||||
/obj/item/storage/box/alienhandcuffs/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/restraints/handcuffs/alien(src)
|
||||
|
||||
/obj/item/storage/box/fakesyndiesuit
|
||||
name = "boxed space suit and helmet"
|
||||
desc = "A sleek, sturdy box used to hold replica spacesuits."
|
||||
icon_state = "box_of_doom"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/head/syndicatefake(src)
|
||||
new /obj/item/clothing/suit/syndicatefake(src)
|
||||
/obj/item/storage/box/fakesyndiesuit/New()
|
||||
..()
|
||||
new /obj/item/clothing/head/syndicatefake(src)
|
||||
new /obj/item/clothing/suit/syndicatefake(src)
|
||||
|
||||
/obj/item/storage/box/enforcer_rubber
|
||||
name = "enforcer pistol kit (rubber)"
|
||||
@@ -777,28 +780,28 @@
|
||||
desc = "<B><FONT color='red'>WARNING:</FONT></B> <I>Keep out of reach of children</I>."
|
||||
icon_state = "mousetraps"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
/obj/item/storage/box/mousetraps/New()
|
||||
..()
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
new /obj/item/assembly/mousetrap( src )
|
||||
|
||||
/obj/item/storage/box/pillbottles
|
||||
name = "box of pill bottles"
|
||||
desc = "It has pictures of pill bottles on its front."
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
/obj/item/storage/box/pillbottles/New()
|
||||
..()
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
new /obj/item/storage/pill_bottle( src )
|
||||
|
||||
/obj/item/storage/box/patch_packs
|
||||
name = "box of patch packs"
|
||||
@@ -836,10 +839,11 @@
|
||||
icon_state = "spbox"
|
||||
storage_slots = 8
|
||||
can_hold = list(/obj/item/toy/snappop)
|
||||
New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/toy/snappop(src)
|
||||
|
||||
/obj/item/storage/box/snappops/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/toy/snappop(src)
|
||||
|
||||
/obj/item/storage/box/matches
|
||||
name = "matchbox"
|
||||
@@ -868,23 +872,24 @@
|
||||
name = "box of injectors"
|
||||
desc = "Contains autoinjectors."
|
||||
icon_state = "syringe"
|
||||
New()
|
||||
..()
|
||||
for(var/i; i < storage_slots; i++)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/storage/box/autoinjectors/New()
|
||||
..()
|
||||
for(var/i; i < storage_slots; i++)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/storage/box/autoinjector/utility
|
||||
name = "autoinjector kit"
|
||||
desc = "A box with several utility autoinjectors for the economical miner."
|
||||
icon_state = "syringe"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
/obj/item/storage/box/autoinjector/utility/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/teporone(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
new /obj/item/reagent_containers/hypospray/autoinjector/stimpack(src)
|
||||
|
||||
/obj/item/storage/box/lights
|
||||
name = "replacement bulbs"
|
||||
@@ -1048,7 +1053,7 @@
|
||||
/obj/item/storage/box/responseteam/New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/tank/emergency_oxygen/engi/full(src)
|
||||
new /obj/item/flashlight/flare(src)
|
||||
new /obj/item/kitchen/knife/combat(src)
|
||||
new /obj/item/radio/centcom(src)
|
||||
|
||||
@@ -204,11 +204,11 @@
|
||||
var/obj/item/sample_object
|
||||
var/number
|
||||
|
||||
New(obj/item/sample as obj)
|
||||
if(!istype(sample))
|
||||
qdel(src)
|
||||
sample_object = sample
|
||||
number = 1
|
||||
/datum/numbered_display/New(obj/item/sample as obj)
|
||||
if(!istype(sample))
|
||||
qdel(src)
|
||||
sample_object = sample
|
||||
number = 1
|
||||
|
||||
//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
|
||||
/obj/item/storage/proc/orient2hud(mob/user as mob)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/storage/box/syndicate/New()
|
||||
..()
|
||||
switch(pickweight(list("bloodyspai" = 1, "thief" = 1, "bond" = 1, "sabotage" = 1, "payday" = 1, "implant" = 1, "hacker" = 1, "darklord" = 1, "professional" = 1)))
|
||||
if("bloodyspai") // 35TC + one 0TC
|
||||
if("bloodyspai") // 37TC + one 0TC
|
||||
new /obj/item/clothing/under/chameleon(src) // 2TC
|
||||
new /obj/item/clothing/mask/chameleon(src) // 0TC
|
||||
new /obj/item/card/id/syndicate(src) // 2TC
|
||||
@@ -14,12 +14,12 @@
|
||||
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) // 2TC
|
||||
new /obj/item/flashlight/emp(src) // 2TC
|
||||
new /obj/item/clothing/glasses/hud/security/chameleon(src) // 2TC
|
||||
new /obj/item/chameleon(src) // 8TC
|
||||
new /obj/item/chameleon(src) // 7TC
|
||||
return
|
||||
|
||||
if("thief") // 40TC
|
||||
if("thief") // 39TC
|
||||
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src) // 12TC
|
||||
new /obj/item/chameleon(src) // 8TC
|
||||
new /obj/item/chameleon(src) // 7TC
|
||||
new /obj/item/clothing/glasses/chameleon/thermal(src) // 6TC
|
||||
new /obj/item/clothing/gloves/color/black/thief(src) // 6TC
|
||||
new /obj/item/card/id/syndicate(src) // 2TC
|
||||
@@ -43,7 +43,7 @@
|
||||
new /obj/item/CQC_manual(src) // 13TC
|
||||
return
|
||||
|
||||
if("sabotage") // 47TC + three 0TC
|
||||
if("sabotage") // 41TC + two 0TC
|
||||
new /obj/item/grenade/plastic/c4(src) // 1TC
|
||||
new /obj/item/grenade/plastic/c4(src) // 1TC
|
||||
new /obj/item/camera_bug(src) // 1TC
|
||||
@@ -53,23 +53,23 @@
|
||||
new /obj/item/card/emag(src) // 6TC
|
||||
new /obj/item/clothing/gloves/color/yellow(src) // 0TC
|
||||
new /obj/item/grenade/syndieminibomb(src) // 6TC
|
||||
new /obj/item/grenade/clusterbuster/n2o(src) // 0TC
|
||||
new /obj/item/grenade/clusterbuster/n2o(src) // 4TC
|
||||
new /obj/item/storage/box/syndie_kit/space(src) // 4TC
|
||||
new /obj/item/encryptionkey/syndicate(src) // 2TC
|
||||
return
|
||||
|
||||
if("payday") // 33TC + four 0TC
|
||||
if("payday") // 35TC + four 0TC
|
||||
new /obj/item/gun/projectile/revolver(src) // 13TC
|
||||
new /obj/item/ammo_box/a357(src) // 3TC
|
||||
new /obj/item/ammo_box/a357(src) // 3TC
|
||||
new /obj/item/card/emag(src) // 6TC
|
||||
new /obj/item/grenade/plastic/c4(src) // 1TC
|
||||
new /obj/item/jammer(src) // 5TC
|
||||
new /obj/item/card/id/syndicate(src) // 2TC
|
||||
new /obj/item/clothing/under/suit_jacket/really_black(src) //0TC
|
||||
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src) //0TC
|
||||
new /obj/item/clothing/gloves/color/latex/nitrile(src) //0 TC
|
||||
new /obj/item/clothing/mask/gas/clown_hat(src) // 0TC
|
||||
new /obj/item/thermal_drill(src) // 3TC
|
||||
new /obj/item/thermal_drill/diamond_drill(src) // 1TC
|
||||
new /obj/item/encryptionkey/syndicate(src) // 2TC
|
||||
return
|
||||
|
||||
@@ -83,17 +83,20 @@
|
||||
new /obj/item/encryptionkey/syndicate(src) // 2TC
|
||||
return
|
||||
|
||||
if("hacker") // 30TC + one 0TC
|
||||
if("hacker") // 37TC + two 0TC
|
||||
new /obj/item/aiModule/syndicate(src) // 12TC
|
||||
new /obj/item/card/emag(src) // 6TC
|
||||
new /obj/item/encryptionkey/syndicate(src) // 2TC
|
||||
new /obj/item/encryptionkey/binary(src) // 5TC
|
||||
new /obj/item/aiModule/toyAI(src) // 0TC
|
||||
new /obj/item/clothing/glasses/chameleon/thermal(src) // 6TC
|
||||
new /obj/item/storage/belt/military/traitor/hacker(src) // 3TC
|
||||
new /obj/item/clothing/gloves/combat(src) // 0TC
|
||||
new /obj/item/multitool/ai_detect(src) // 1TC
|
||||
new /obj/item/storage/box/syndie_kit/c4 // 4TC
|
||||
new /obj/item/flashlight/emp(src) // 2TC
|
||||
return
|
||||
|
||||
if("darklord") // 22TC + two 0TC
|
||||
if("darklord") // 24TC + two 0TC
|
||||
new /obj/item/melee/energy/sword/saber/red(src) // 8TC
|
||||
new /obj/item/melee/energy/sword/saber/red(src) // 8TC
|
||||
new /obj/item/dnainjector/telemut/darkbundle(src) // 0TC
|
||||
@@ -104,7 +107,7 @@
|
||||
new /obj/item/encryptionkey/syndicate(src) // 2TC
|
||||
return
|
||||
|
||||
if("professional") // 32 TC + two 0TC
|
||||
if("professional") // 34TC + two 0TC
|
||||
new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate/penetrator(src) // 16TC
|
||||
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src) // 5TC
|
||||
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) // 3TC
|
||||
@@ -157,14 +160,14 @@
|
||||
/obj/item/storage/box/syndie_kit/boolets
|
||||
name = "Shotgun shells"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
/obj/item/storage/box/syndie_kit/boolets/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/emp
|
||||
name = "boxed EMP kit"
|
||||
@@ -205,26 +208,26 @@
|
||||
/obj/item/storage/box/syndie_kit/sarin
|
||||
name = "Sarin Gas Grenades"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
/obj/item/storage/box/syndie_kit/sarin/New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/grenade/chem_grenade/saringas(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/bioterror
|
||||
name = "bioterror syringe box"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
return
|
||||
/obj/item/storage/box/syndie_kit/bioterror/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/reagent_containers/syringe/bioterror(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/caneshotgun
|
||||
name = "cane gun kit"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
if(get_dist(user, src) <= 0 && air_contents.oxygen < 10)
|
||||
. += "<span class='danger'>The meter on [src] indicates you are almost out of air!</span>"
|
||||
|
||||
obj/item/tank/oxygen/empty/New()
|
||||
/obj/item/tank/oxygen/empty/New()
|
||||
..()
|
||||
air_contents.oxygen = null
|
||||
|
||||
@@ -158,7 +158,7 @@ obj/item/tank/oxygen/empty/New()
|
||||
. += "<span class='danger'>The meter on [src] indicates you are almost out of air!</span>"
|
||||
playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
obj/item/tank/emergency_oxygen/empty/New()
|
||||
/obj/item/tank/emergency_oxygen/empty/New()
|
||||
..()
|
||||
air_contents.oxygen = null
|
||||
|
||||
@@ -167,7 +167,12 @@ obj/item/tank/emergency_oxygen/empty/New()
|
||||
icon_state = "emergency_engi"
|
||||
volume = 6
|
||||
|
||||
obj/item/tank/emergency_oxygen/engi/empty/New()
|
||||
/obj/item/tank/emergency_oxygen/engi/full/New()
|
||||
..()
|
||||
air_contents.oxygen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
|
||||
/obj/item/tank/emergency_oxygen/engi/empty/New()
|
||||
..()
|
||||
air_contents.oxygen = null
|
||||
|
||||
@@ -182,7 +187,7 @@ obj/item/tank/emergency_oxygen/engi/empty/New()
|
||||
icon_state = "emergency_double"
|
||||
volume = 10
|
||||
|
||||
obj/item/tank/emergency_oxygen/double/empty/New()
|
||||
/obj/item/tank/emergency_oxygen/double/empty/New()
|
||||
..()
|
||||
air_contents.oxygen = null
|
||||
|
||||
|
||||
@@ -209,6 +209,42 @@
|
||||
/obj/item/twohanded/fireaxe/boneaxe/update_icon()
|
||||
icon_state = "bone_axe[wielded]"
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized
|
||||
desc = "Someone with a love for fire axes decided to turn this one into a high-powered energy weapon. Seems excessive."
|
||||
force_wielded = 30
|
||||
armour_penetration = 20
|
||||
var/charge = 30
|
||||
var/max_charge = 30
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized/update_icon()
|
||||
if(wielded)
|
||||
icon_state = "fireaxe2"
|
||||
else
|
||||
icon_state = "fireaxe0"
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized/New()
|
||||
..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized/process()
|
||||
charge = min(charge + 1, max_charge)
|
||||
|
||||
/obj/item/twohanded/fireaxe/energized/attack(mob/M, mob/user)
|
||||
. = ..()
|
||||
if(wielded && charge == max_charge)
|
||||
if(isliving(M))
|
||||
charge = 0
|
||||
playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1)
|
||||
user.visible_message("<span class='danger'>[user] slams the charged axe into [M.name] with all [user.p_their()] might!</span>")
|
||||
do_sparks(1, 1, src)
|
||||
M.Weaken(4)
|
||||
var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
|
||||
M.throw_at(throw_target, 5, 1)
|
||||
|
||||
/*
|
||||
* Double-Bladed Energy Swords - Cheridan
|
||||
*/
|
||||
@@ -755,57 +791,6 @@
|
||||
charged = 3
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
|
||||
// Energized Fire axe
|
||||
/obj/item/twohanded/energizedfireaxe
|
||||
name = "energized fire axe"
|
||||
desc = "Someone with a love for fire axes decided to turn one into a single-charge energy weapon. Seems excessive."
|
||||
icon_state = "fireaxe0"
|
||||
force = 5
|
||||
throwforce = 15
|
||||
sharp = TRUE
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
armour_penetration = 20
|
||||
slot_flags = SLOT_BACK
|
||||
force_unwielded = 5
|
||||
force_wielded = 30
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
var/charged = 1
|
||||
|
||||
/obj/item/twohanded/energizedfireaxe/update_icon()
|
||||
if(wielded)
|
||||
icon_state = "fireaxe2"
|
||||
else
|
||||
icon_state = "fireaxe0"
|
||||
..()
|
||||
|
||||
/obj/item/twohanded/energizedfireaxe/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded)
|
||||
if(isliving(A))
|
||||
var/mob/living/Z = A
|
||||
if(charged)
|
||||
charged--
|
||||
Z.take_organ_damage(0, 30)
|
||||
user.visible_message("<span class='danger'>[user] slams the charged axe into [Z.name] with all [user.p_their()] might!</span>")
|
||||
playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1)
|
||||
do_sparks(1, 1, src)
|
||||
|
||||
if(A && wielded && (istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)))
|
||||
if(istype(A, /obj/structure/window))
|
||||
var/obj/structure/window/W = A
|
||||
W.deconstruct(FALSE)
|
||||
if(prob(4))
|
||||
charged++
|
||||
user.visible_message("<span class='notice'>The axe starts to emit an electric buzz!</span>")
|
||||
else
|
||||
qdel(A)
|
||||
if(prob(4))
|
||||
charged++
|
||||
user.visible_message("<span class='notice'>The axe starts to emit an electric buzz!</span>")
|
||||
|
||||
/obj/item/twohanded/pitchfork
|
||||
icon_state = "pitchfork0"
|
||||
name = "pitchfork"
|
||||
|
||||
@@ -126,10 +126,6 @@
|
||||
machine_name = "NanoMed"
|
||||
icon_state = "refill_medical"
|
||||
|
||||
/obj/item/vending_refill/modularpc
|
||||
machine_name = "Deluxe Silicate Selections"
|
||||
icon_state = "refill_engi"
|
||||
|
||||
/obj/item/vending_refill/hydronutrients
|
||||
machine_name = "NutriMax"
|
||||
icon_state = "refill_plant"
|
||||
|
||||
@@ -185,6 +185,7 @@
|
||||
throwforce = 12
|
||||
attack_verb = list("beat", "smacked")
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
var/next_throw_time = 0
|
||||
var/homerun_ready = 0
|
||||
var/homerun_able = 0
|
||||
|
||||
@@ -253,16 +254,38 @@
|
||||
to_chat(user, "<span class='warning'>You cannot attack in deflect mode!</span>")
|
||||
return
|
||||
. = ..()
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
if(homerun_ready)
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
user.visible_message("<span class='userdanger'>It's a home run!</span>")
|
||||
target.throw_at(throw_target, rand(8,10), 14, user)
|
||||
target.ex_act(2)
|
||||
playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, 1)
|
||||
homerun_ready = 0
|
||||
return
|
||||
else if(!target.anchored)
|
||||
target.throw_at(throw_target, rand(1,2), 7, user)
|
||||
if(world.time < next_throw_time)
|
||||
// Limit the rate of throwing, so you can't spam it.
|
||||
return
|
||||
if(!istype(target))
|
||||
// Should already be /mob/living, but check anyway.
|
||||
return
|
||||
if(target.anchored)
|
||||
// No throwing mobs that are anchored to the floor.
|
||||
return
|
||||
if(target.mob_size > MOB_SIZE_HUMAN)
|
||||
// No throwing things that are physically bigger than you are.
|
||||
// Covers: blobbernaut, alien empress, ai core, juggernaut, ed209, mulebot, alien/queen/large, carp/megacarp, deathsquid, hostile/tree, megafauna, hostile/asteroid, terror_spider/queen/empress
|
||||
return
|
||||
if(!(target.status_flags & CANPUSH))
|
||||
// No throwing mobs specifically flagged as immune to being pushed.
|
||||
// Covers: revenant, hostile/blob/*, most borgs, juggernauts, hivebot/tele, spaceworms, shades, bots, alien queens, hostile/syndicate/melee, hostile/asteroid
|
||||
return
|
||||
if(target.move_resist > MOVE_RESIST_DEFAULT)
|
||||
// No throwing mobs that have higher than normal move_resist.
|
||||
// Covers: revenant, bot/mulebot, hostile/statue, hostile/megafauna, goliath
|
||||
return
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
target.throw_at(throw_target, rand(1, 2), 7, user)
|
||||
next_throw_time = world.time + 10 SECONDS
|
||||
|
||||
/obj/item/melee/baseball_bat/ablative
|
||||
name = "metal baseball bat"
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
take_damage(AM.throwforce, BRUTE, "melee", 1, get_dir(src, AM))
|
||||
|
||||
/obj/ex_act(severity)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
return
|
||||
switch(severity)
|
||||
|
||||
@@ -30,13 +30,14 @@
|
||||
desc = "This is a random tool"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "welder"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/screwdriver,\
|
||||
/obj/item/wirecutters,\
|
||||
/obj/item/weldingtool,\
|
||||
/obj/item/crowbar,\
|
||||
/obj/item/wrench,\
|
||||
/obj/item/flashlight)
|
||||
|
||||
/obj/random/tool/item_to_spawn()
|
||||
return pick(/obj/item/screwdriver,\
|
||||
/obj/item/wirecutters,\
|
||||
/obj/item/weldingtool,\
|
||||
/obj/item/crowbar,\
|
||||
/obj/item/wrench,\
|
||||
/obj/item/flashlight)
|
||||
|
||||
|
||||
/obj/random/technology_scanner
|
||||
@@ -44,10 +45,11 @@
|
||||
desc = "This is a random technology scanner."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "atmos"
|
||||
item_to_spawn()
|
||||
return pick(prob(5);/obj/item/t_scanner,\
|
||||
prob(2);/obj/item/radio/intercom,\
|
||||
prob(5);/obj/item/analyzer)
|
||||
|
||||
/obj/random/technology_scanner/item_to_spawn()
|
||||
return pick(prob(5);/obj/item/t_scanner,\
|
||||
prob(2);/obj/item/radio/intercom,\
|
||||
prob(5);/obj/item/analyzer)
|
||||
|
||||
|
||||
/obj/random/powercell
|
||||
@@ -55,23 +57,24 @@
|
||||
desc = "This is a random powercell."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
item_to_spawn()
|
||||
return pick(prob(10);/obj/item/stock_parts/cell/crap,\
|
||||
prob(40);/obj/item/stock_parts/cell,\
|
||||
prob(40);/obj/item/stock_parts/cell/high,\
|
||||
prob(9);/obj/item/stock_parts/cell/super,\
|
||||
prob(1);/obj/item/stock_parts/cell/hyper)
|
||||
|
||||
/obj/random/powercell/item_to_spawn()
|
||||
return pick(prob(10);/obj/item/stock_parts/cell/crap,\
|
||||
prob(40);/obj/item/stock_parts/cell,\
|
||||
prob(40);/obj/item/stock_parts/cell/high,\
|
||||
prob(9);/obj/item/stock_parts/cell/super,\
|
||||
prob(1);/obj/item/stock_parts/cell/hyper)
|
||||
|
||||
/obj/random/bomb_supply
|
||||
name = "Bomb Supply"
|
||||
desc = "This is a random bomb supply."
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = "signaller"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/assembly/igniter,\
|
||||
/obj/item/assembly/prox_sensor,\
|
||||
/obj/item/assembly/signaler)
|
||||
|
||||
/obj/random/bomb_supply/item_to_spawn()
|
||||
return pick(/obj/item/assembly/igniter,\
|
||||
/obj/item/assembly/prox_sensor,\
|
||||
/obj/item/assembly/signaler)
|
||||
|
||||
|
||||
/obj/random/toolbox
|
||||
@@ -79,11 +82,11 @@
|
||||
desc = "This is a random toolbox."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "red"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/storage/toolbox/mechanical,\
|
||||
prob(2);/obj/item/storage/toolbox/electrical,\
|
||||
prob(1);/obj/item/storage/toolbox/emergency)
|
||||
|
||||
/obj/random/toolbox/item_to_spawn()
|
||||
return pick(prob(3);/obj/item/storage/toolbox/mechanical,\
|
||||
prob(2);/obj/item/storage/toolbox/electrical,\
|
||||
prob(1);/obj/item/storage/toolbox/emergency)
|
||||
|
||||
/obj/random/tech_supply
|
||||
name = "Random Tech Supply"
|
||||
@@ -91,15 +94,16 @@
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
spawn_nothing_percentage = 50
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/random/powercell,\
|
||||
prob(2);/obj/random/technology_scanner,\
|
||||
prob(1);/obj/item/stack/packageWrap,\
|
||||
prob(2);/obj/random/bomb_supply,\
|
||||
prob(1);/obj/item/extinguisher,\
|
||||
prob(1);/obj/item/clothing/gloves/color/fyellow,\
|
||||
prob(3);/obj/item/stack/cable_coil,\
|
||||
prob(2);/obj/random/toolbox,\
|
||||
prob(2);/obj/item/storage/belt/utility,\
|
||||
prob(5);/obj/random/tool,\
|
||||
prob(3);/obj/item/stack/tape_roll)
|
||||
|
||||
/obj/random/tech_supply/item_to_spawn()
|
||||
return pick(prob(3);/obj/random/powercell,\
|
||||
prob(2);/obj/random/technology_scanner,\
|
||||
prob(1);/obj/item/stack/packageWrap,\
|
||||
prob(2);/obj/random/bomb_supply,\
|
||||
prob(1);/obj/item/extinguisher,\
|
||||
prob(1);/obj/item/clothing/gloves/color/fyellow,\
|
||||
prob(3);/obj/item/stack/cable_coil,\
|
||||
prob(2);/obj/random/toolbox,\
|
||||
prob(2);/obj/item/storage/belt/utility,\
|
||||
prob(5);/obj/random/tool,\
|
||||
prob(3);/obj/item/stack/tape_roll)
|
||||
|
||||
@@ -61,89 +61,89 @@
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/clothing/suit/space/hardsuit/syndi/elite/sst(src)
|
||||
|
||||
/obj/structure/closet/syndicate/resources/
|
||||
/obj/structure/closet/syndicate/resources
|
||||
desc = "An old, dusty locker."
|
||||
|
||||
New()
|
||||
..()
|
||||
var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
|
||||
var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
|
||||
var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
|
||||
var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
|
||||
/obj/structure/closet/syndicate/resources/New()
|
||||
..()
|
||||
var/common_min = 30 //Minimum amount of minerals in the stack for common minerals
|
||||
var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals
|
||||
var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals
|
||||
var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK
|
||||
|
||||
var/pickednum = rand(1, 50)
|
||||
var/pickednum = rand(1, 50)
|
||||
|
||||
//Sad trombone
|
||||
if(pickednum == 1)
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.name = "IOU"
|
||||
P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!"
|
||||
//Sad trombone
|
||||
if(pickednum == 1)
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.name = "IOU"
|
||||
P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!"
|
||||
|
||||
//Metal (common ore)
|
||||
if(pickednum >= 2)
|
||||
new /obj/item/stack/sheet/metal(src, rand(common_min, common_max))
|
||||
//Metal (common ore)
|
||||
if(pickednum >= 2)
|
||||
new /obj/item/stack/sheet/metal(src, rand(common_min, common_max))
|
||||
|
||||
//Glass (common ore)
|
||||
if(pickednum >= 5)
|
||||
new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
|
||||
//Glass (common ore)
|
||||
if(pickednum >= 5)
|
||||
new /obj/item/stack/sheet/glass(src, rand(common_min, common_max))
|
||||
|
||||
//Plasteel (common ore) Because it has a million more uses then plasma
|
||||
if(pickednum >= 10)
|
||||
new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
|
||||
//Plasteel (common ore) Because it has a million more uses then plasma
|
||||
if(pickednum >= 10)
|
||||
new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max))
|
||||
|
||||
//Plasma (rare ore)
|
||||
if(pickednum >= 15)
|
||||
new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
|
||||
//Plasma (rare ore)
|
||||
if(pickednum >= 15)
|
||||
new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max))
|
||||
|
||||
//Silver (rare ore)
|
||||
if(pickednum >= 20)
|
||||
new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max))
|
||||
//Silver (rare ore)
|
||||
if(pickednum >= 20)
|
||||
new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max))
|
||||
|
||||
//Gold (rare ore)
|
||||
if(pickednum >= 30)
|
||||
new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max))
|
||||
//Gold (rare ore)
|
||||
if(pickednum >= 30)
|
||||
new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max))
|
||||
|
||||
//Uranium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
|
||||
//Uranium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
|
||||
|
||||
//Titanium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max))
|
||||
//Titanium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max))
|
||||
|
||||
//Plastitanium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max))
|
||||
//Plastitanium (rare ore)
|
||||
if(pickednum >= 40)
|
||||
new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max))
|
||||
|
||||
//Diamond (rare HONK)
|
||||
if(pickednum >= 45)
|
||||
new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
|
||||
//Diamond (rare HONK)
|
||||
if(pickednum >= 45)
|
||||
new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
|
||||
|
||||
//Jetpack (You hit the jackpot!)
|
||||
if(pickednum == 50)
|
||||
new /obj/item/tank/jetpack/carbondioxide(src)
|
||||
//Jetpack (You hit the jackpot!)
|
||||
if(pickednum == 50)
|
||||
new /obj/item/tank/jetpack/carbondioxide(src)
|
||||
|
||||
/obj/structure/closet/syndicate/resources/everything
|
||||
desc = "It's an emergency storage closet for repairs."
|
||||
|
||||
New()
|
||||
..()
|
||||
var/list/resources = list(
|
||||
/obj/item/stack/sheet/metal,
|
||||
/obj/item/stack/sheet/glass,
|
||||
/obj/item/stack/sheet/mineral/gold,
|
||||
/obj/item/stack/sheet/mineral/silver,
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/obj/item/stack/sheet/mineral/uranium,
|
||||
/obj/item/stack/sheet/mineral/diamond,
|
||||
/obj/item/stack/sheet/mineral/bananium,
|
||||
/obj/item/stack/sheet/mineral/titanium,
|
||||
/obj/item/stack/sheet/mineral/plastitanium,
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/item/stack/rods
|
||||
)
|
||||
/obj/structure/closet/syndicate/resources/everything/New()
|
||||
..()
|
||||
var/list/resources = list(
|
||||
/obj/item/stack/sheet/metal,
|
||||
/obj/item/stack/sheet/glass,
|
||||
/obj/item/stack/sheet/mineral/gold,
|
||||
/obj/item/stack/sheet/mineral/silver,
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/obj/item/stack/sheet/mineral/uranium,
|
||||
/obj/item/stack/sheet/mineral/diamond,
|
||||
/obj/item/stack/sheet/mineral/bananium,
|
||||
/obj/item/stack/sheet/mineral/titanium,
|
||||
/obj/item/stack/sheet/mineral/plastitanium,
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/item/stack/rods
|
||||
)
|
||||
|
||||
for(var/i in 1 to 2)
|
||||
for(var/res in resources)
|
||||
var/obj/item/stack/R = new res(src)
|
||||
R.amount = R.max_amount
|
||||
for(var/i in 1 to 2)
|
||||
for(var/res in resources)
|
||||
var/obj/item/stack/R = new res(src)
|
||||
R.amount = R.max_amount
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
if(user)
|
||||
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
|
||||
investigate_log("[key_name(user)] has detonated a [src]", INVESTIGATE_BOMB)
|
||||
add_attack_logs(user, src, "has detonated", ATKLOG_MOST)
|
||||
for(var/atom/movable/AM in src)
|
||||
qdel(AM)
|
||||
explosion(get_turf(src), 0, 1, 5, 5)
|
||||
@@ -338,24 +339,23 @@
|
||||
var/target_temp = T0C - 40
|
||||
var/cooling_power = 40
|
||||
|
||||
return_air()
|
||||
var/datum/gas_mixture/gas = (..())
|
||||
if(!gas) return null
|
||||
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
|
||||
newgas.oxygen = gas.oxygen
|
||||
newgas.carbon_dioxide = gas.carbon_dioxide
|
||||
newgas.nitrogen = gas.nitrogen
|
||||
newgas.toxins = gas.toxins
|
||||
newgas.volume = gas.volume
|
||||
newgas.temperature = gas.temperature
|
||||
if(newgas.temperature <= target_temp) return
|
||||
|
||||
if((newgas.temperature - cooling_power) > target_temp)
|
||||
newgas.temperature -= cooling_power
|
||||
else
|
||||
newgas.temperature = target_temp
|
||||
return newgas
|
||||
/obj/structure/closet/crate/freezer/return_air()
|
||||
var/datum/gas_mixture/gas = (..())
|
||||
if(!gas) return null
|
||||
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
|
||||
newgas.oxygen = gas.oxygen
|
||||
newgas.carbon_dioxide = gas.carbon_dioxide
|
||||
newgas.nitrogen = gas.nitrogen
|
||||
newgas.toxins = gas.toxins
|
||||
newgas.volume = gas.volume
|
||||
newgas.temperature = gas.temperature
|
||||
if(newgas.temperature <= target_temp) return
|
||||
|
||||
if((newgas.temperature - cooling_power) > target_temp)
|
||||
newgas.temperature -= cooling_power
|
||||
else
|
||||
newgas.temperature = target_temp
|
||||
return newgas
|
||||
|
||||
/obj/structure/closet/crate/can
|
||||
desc = "A large can, looks like a bin to me."
|
||||
@@ -496,22 +496,23 @@
|
||||
/obj/structure/closet/crate/hydroponics/prespawned
|
||||
//This exists so the prespawned hydro crates spawn with their contents.
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/glass/bucket(src)
|
||||
new /obj/item/reagent_containers/glass/bucket(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/shovel/spade(src)
|
||||
new /obj/item/shovel/spade(src)
|
||||
new /obj/item/storage/box/beakers(src)
|
||||
new /obj/item/storage/box/beakers(src)
|
||||
new /obj/item/hand_labeler(src)
|
||||
new /obj/item/hand_labeler(src)
|
||||
// Do I need the definition above? Who knows!
|
||||
/obj/structure/closet/crate/hydroponics/prespawned/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/glass/bucket(src)
|
||||
new /obj/item/reagent_containers/glass/bucket(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/shovel/spade(src)
|
||||
new /obj/item/shovel/spade(src)
|
||||
new /obj/item/storage/box/beakers(src)
|
||||
new /obj/item/storage/box/beakers(src)
|
||||
new /obj/item/hand_labeler(src)
|
||||
new /obj/item/hand_labeler(src)
|
||||
|
||||
/obj/structure/closet/crate/sci
|
||||
name = "science crate"
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
to_chat(user, "<span class='notice'>You [open ? "close":"open"] [src].</span>")
|
||||
toggle_lock(user)
|
||||
|
||||
obj/structure/displaycase/welder_act(mob/user, obj/item/I)
|
||||
/obj/structure/displaycase/welder_act(mob/user, obj/item/I)
|
||||
. = TRUE
|
||||
if(default_welder_repair(user, I))
|
||||
broken = FALSE
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
. = TRUE
|
||||
default_unfasten_wrench(user, I, time = 20)
|
||||
|
||||
obj/structure/dresser/deconstruct(disassembled = FALSE)
|
||||
/obj/structure/dresser/deconstruct(disassembled = FALSE)
|
||||
var/mat_drop = 15
|
||||
if(disassembled)
|
||||
mat_drop = 30
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
anchored = TRUE
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
|
||||
var/gps = null
|
||||
var/obj/effect/light_emitter/tendril/emitted_light
|
||||
|
||||
/obj/structure/spawner/lavaland/goliath
|
||||
@@ -29,7 +28,6 @@ GLOBAL_LIST_INIT(tendrils, list())
|
||||
/obj/structure/spawner/lavaland/Initialize(mapload)
|
||||
. = ..()
|
||||
emitted_light = new(loc)
|
||||
gps = new /obj/item/gps/internal(src)
|
||||
GLOB.tendrils += src
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
@@ -59,7 +57,6 @@ GLOBAL_LIST_INIT(tendrils, list())
|
||||
SSmedals.SetScore(TENDRIL_CLEAR_SCORE, L.client, 1)
|
||||
GLOB.tendrils -= src
|
||||
QDEL_NULL(emitted_light)
|
||||
QDEL_NULL(gps)
|
||||
return ..()
|
||||
|
||||
/obj/effect/light_emitter/tendril
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
to_chat(user, "Civilians: NT is recruiting! Please head SOUTH to the NT Recruitment office to join the station's crew!")
|
||||
/obj/structure/signpost/attack_hand(mob/user as mob)
|
||||
to_chat(user, "Civilians: NT is recruiting! Please head SOUTH to the NT Recruitment office to join the station's crew!")
|
||||
|
||||
/obj/structure/ninjatele
|
||||
|
||||
@@ -23,31 +23,28 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
|
||||
|
||||
if(user.mind.special_role=="Ninja")
|
||||
switch(alert("Phase Jaunt relay primed, target locked as [station_name()], initiate VOID-shift translocation? (Warning! Internals required!)",,"Yes","No"))
|
||||
|
||||
if("Yes")
|
||||
if(user.z != src.z) return
|
||||
|
||||
user.loc.loc.Exited(user)
|
||||
user.loc = pick(GLOB.carplist) // In the future, possibly make specific NinjaTele landmarks, and give him an option to teleport to North/South/East/West of SS13 instead of just hijacking a carpspawn.
|
||||
|
||||
|
||||
playsound(user.loc, 'sound/effects/phasein.ogg', 25, 1)
|
||||
playsound(user.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(user), user.dir)
|
||||
to_chat(user, "<span class='boldnotice'>VOID-Shift</span> translocation successful")
|
||||
|
||||
if("No")
|
||||
|
||||
to_chat(user, "<span class='danger'>Process aborted!</span>")
|
||||
/obj/structure/ninjatele/attack_hand(mob/user as mob)
|
||||
if(user.mind.special_role=="Ninja")
|
||||
switch(alert("Phase Jaunt relay primed, target locked as [station_name()], initiate VOID-shift translocation? (Warning! Internals required!)",,"Yes","No"))
|
||||
|
||||
if("Yes")
|
||||
if(user.z != src.z)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='danger'>FĆAL �Rr�R</span>: ŧer nt recgnized, c-cntr-r䣧-ç äcked.")
|
||||
|
||||
user.loc.loc.Exited(user)
|
||||
user.loc = pick(GLOB.carplist) // In the future, possibly make specific NinjaTele landmarks, and give him an option to teleport to North/South/East/West of SS13 instead of just hijacking a carpspawn.
|
||||
|
||||
playsound(user.loc, 'sound/effects/phasein.ogg', 25, 1)
|
||||
playsound(user.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(user), user.dir)
|
||||
to_chat(user, "<span class='boldnotice'>VOID-Shift</span> translocation successful")
|
||||
|
||||
if("No")
|
||||
to_chat(user, "<span class='danger'>Process aborted!</span>")
|
||||
return
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='danger'>FĆAL �Rr�R</span>: ŧer nt recgnized, c-cntr-r䣧-ç äcked.")
|
||||
|
||||
/obj/structure/respawner
|
||||
name = "\improper Long-Distance Cloning Machine"
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
..()
|
||||
if(climber)
|
||||
climber.Weaken(2)
|
||||
climber.visible_message("<span class='warning'>[climber.name] has been knocked off the table", "You've been knocked off the table", "You see [climber.name] get knocked off the table</span>")
|
||||
climber.visible_message("<span class='warning'>[climber.name] has been knocked off the table", "You've been knocked off the table", "You hear [climber.name] get knocked off the table</span>")
|
||||
else if(Adjacent(user) && user.pulling && user.pulling.pass_flags & PASSTABLE)
|
||||
user.Move_Pulled(src)
|
||||
if(user.pulling.loc == loc)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
return !density
|
||||
|
||||
// When destroyed by explosions, properly handle contents.
|
||||
obj/structure/transit_tube/ex_act(severity)
|
||||
/obj/structure/transit_tube/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
for(var/atom/movable/AM in contents)
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to rotate it clockwise.</span>"
|
||||
|
||||
obj/structure/windoor_assembly/New(loc, set_dir)
|
||||
/obj/structure/windoor_assembly/New(loc, set_dir)
|
||||
..()
|
||||
if(set_dir)
|
||||
dir = set_dir
|
||||
ini_dir = dir
|
||||
air_update_turf(1)
|
||||
|
||||
obj/structure/windoor_assembly/Destroy()
|
||||
/obj/structure/windoor_assembly/Destroy()
|
||||
density = FALSE
|
||||
QDEL_NULL(electronics)
|
||||
air_update_turf(1)
|
||||
|
||||
@@ -666,7 +666,7 @@ GLOBAL_LIST_INIT(wcCommon, pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e",
|
||||
icon_state = "tinted_window"
|
||||
opacity = 1
|
||||
|
||||
obj/structure/window/full/reinforced/ice
|
||||
/obj/structure/window/full/reinforced/ice
|
||||
icon = 'icons/obj/smooth_structures/rice_window.dmi'
|
||||
icon_state = "ice_window"
|
||||
max_integrity = 150
|
||||
|
||||
Reference in New Issue
Block a user