mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -159,6 +159,7 @@
|
|||||||
#define FILE_DIR "code/unused/powerarmor"
|
#define FILE_DIR "code/unused/powerarmor"
|
||||||
#define FILE_DIR "code/unused/spacecraft"
|
#define FILE_DIR "code/unused/spacecraft"
|
||||||
#define FILE_DIR "code/WorkInProgress"
|
#define FILE_DIR "code/WorkInProgress"
|
||||||
|
#define FILE_DIR "code/WorkInProgress/animusstation"
|
||||||
#define FILE_DIR "code/WorkInProgress/Apples"
|
#define FILE_DIR "code/WorkInProgress/Apples"
|
||||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
|
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
|
||||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
|
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
|
||||||
@@ -643,6 +644,7 @@
|
|||||||
#include "code\game\objects\toys.dm"
|
#include "code\game\objects\toys.dm"
|
||||||
#include "code\game\objects\transfer_valve.dm"
|
#include "code\game\objects\transfer_valve.dm"
|
||||||
#include "code\game\objects\washing_machine.dm"
|
#include "code\game\objects\washing_machine.dm"
|
||||||
|
#include "code\game\objects\watercloset.dm"
|
||||||
#include "code\game\objects\weapons.dm"
|
#include "code\game\objects\weapons.dm"
|
||||||
#include "code\game\objects\window.dm"
|
#include "code\game\objects\window.dm"
|
||||||
#include "code\game\objects\alien\acid.dm"
|
#include "code\game\objects\alien\acid.dm"
|
||||||
@@ -1138,6 +1140,7 @@
|
|||||||
#include "code\WorkInProgress\AI_Visibility.dm"
|
#include "code\WorkInProgress\AI_Visibility.dm"
|
||||||
#include "code\WorkInProgress\buildmode.dm"
|
#include "code\WorkInProgress\buildmode.dm"
|
||||||
#include "code\WorkInProgress\explosion_particles.dm"
|
#include "code\WorkInProgress\explosion_particles.dm"
|
||||||
|
#include "code\WorkInProgress\animusstation\atm.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm"
|
||||||
@@ -1158,7 +1161,6 @@
|
|||||||
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Tajara\whisper.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\whisper.dm"
|
||||||
#include "code\WorkInProgress\Chinsky\ashtray.dm"
|
#include "code\WorkInProgress\Chinsky\ashtray.dm"
|
||||||
#include "code\WorkInProgress\Mini\ATM.dm"
|
|
||||||
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
||||||
#include "code\WorkInProgress\Mini\pipe_heater.dm"
|
#include "code\WorkInProgress\Mini\pipe_heater.dm"
|
||||||
#include "code\WorkInProgress\Mloc\Shortcuts.dm"
|
#include "code\WorkInProgress\Mloc\Shortcuts.dm"
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ obj/machinery/atmospherics/tvalve
|
|||||||
icon_state = "tvalve[state]"
|
icon_state = "tvalve[state]"
|
||||||
|
|
||||||
New()
|
New()
|
||||||
|
initialize_directions()
|
||||||
|
..()
|
||||||
|
|
||||||
|
proc/initialize_directions()
|
||||||
switch(dir)
|
switch(dir)
|
||||||
if(NORTH)
|
if(NORTH)
|
||||||
initialize_directions = SOUTH|NORTH|EAST
|
initialize_directions = SOUTH|NORTH|EAST
|
||||||
@@ -35,7 +39,6 @@ obj/machinery/atmospherics/tvalve
|
|||||||
initialize_directions = WEST|EAST|SOUTH
|
initialize_directions = WEST|EAST|SOUTH
|
||||||
if(WEST)
|
if(WEST)
|
||||||
initialize_directions = EAST|WEST|NORTH
|
initialize_directions = EAST|WEST|NORTH
|
||||||
..()
|
|
||||||
|
|
||||||
network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||||
if(reference == node1)
|
if(reference == node1)
|
||||||
@@ -339,7 +342,7 @@ obj/machinery/atmospherics/tvalve
|
|||||||
obj/machinery/atmospherics/tvalve/mirrored
|
obj/machinery/atmospherics/tvalve/mirrored
|
||||||
icon_state = "tvalvem0"
|
icon_state = "tvalvem0"
|
||||||
|
|
||||||
New()
|
initialize_directions()
|
||||||
switch(dir)
|
switch(dir)
|
||||||
if(NORTH)
|
if(NORTH)
|
||||||
initialize_directions = SOUTH|NORTH|WEST
|
initialize_directions = SOUTH|NORTH|WEST
|
||||||
@@ -349,7 +352,6 @@ obj/machinery/atmospherics/tvalve/mirrored
|
|||||||
initialize_directions = WEST|EAST|NORTH
|
initialize_directions = WEST|EAST|NORTH
|
||||||
if(WEST)
|
if(WEST)
|
||||||
initialize_directions = EAST|WEST|SOUTH
|
initialize_directions = EAST|WEST|SOUTH
|
||||||
..()
|
|
||||||
|
|
||||||
initialize()
|
initialize()
|
||||||
var/node1_dir
|
var/node1_dir
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ obj/machinery/atmospherics/unary/oxygen_generator
|
|||||||
|
|
||||||
air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen)
|
air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen)
|
||||||
air_contents.oxygen += added_oxygen
|
air_contents.oxygen += added_oxygen
|
||||||
|
air_contents.update_values()
|
||||||
|
|
||||||
if(network)
|
if(network)
|
||||||
network.update = 1
|
network.update = 1
|
||||||
|
|||||||
@@ -124,6 +124,7 @@
|
|||||||
|
|
||||||
//Remix the resulting gases
|
//Remix the resulting gases
|
||||||
filtered_out.update_values()
|
filtered_out.update_values()
|
||||||
|
removed.update_values()
|
||||||
air_contents.merge(filtered_out)
|
air_contents.merge(filtered_out)
|
||||||
|
|
||||||
loc.assume_air(removed)
|
loc.assume_air(removed)
|
||||||
|
|||||||
@@ -44,11 +44,9 @@ datum/pipe_network
|
|||||||
proc/merge(datum/pipe_network/giver)
|
proc/merge(datum/pipe_network/giver)
|
||||||
if(giver==src) return 0
|
if(giver==src) return 0
|
||||||
|
|
||||||
normal_members -= giver.normal_members
|
normal_members |= giver.normal_members
|
||||||
normal_members += giver.normal_members
|
|
||||||
|
|
||||||
line_members -= giver.line_members
|
line_members |= giver.line_members
|
||||||
line_members += giver.line_members
|
|
||||||
|
|
||||||
for(var/obj/machinery/atmospherics/normal_member in giver.normal_members)
|
for(var/obj/machinery/atmospherics/normal_member in giver.normal_members)
|
||||||
normal_member.reassign_network(giver, src)
|
normal_member.reassign_network(giver, src)
|
||||||
@@ -139,6 +137,7 @@ datum/pipe_network
|
|||||||
gas.trace_gases += corresponding
|
gas.trace_gases += corresponding
|
||||||
|
|
||||||
corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume
|
corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume
|
||||||
|
gas.update_values()
|
||||||
air_transient.update_values()
|
air_transient.update_values()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ datum/pipeline
|
|||||||
member.air_temporary.trace_gases += corresponding
|
member.air_temporary.trace_gases += corresponding
|
||||||
|
|
||||||
corresponding.moles = trace_gas.moles*member.volume/air.volume
|
corresponding.moles = trace_gas.moles*member.volume/air.volume
|
||||||
|
member.air_temporary.update_values()
|
||||||
|
|
||||||
proc/build_pipeline(obj/machinery/atmospherics/pipe/base)
|
proc/build_pipeline(obj/machinery/atmospherics/pipe/base)
|
||||||
air = new
|
air = new
|
||||||
|
|||||||
@@ -341,6 +341,8 @@ obj/machinery/atmospherics/pipe
|
|||||||
|
|
||||||
New()
|
New()
|
||||||
initialize_directions = dir
|
initialize_directions = dir
|
||||||
|
if(air_temporary)
|
||||||
|
air_temporary.update_values()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
process()
|
process()
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ datum
|
|||||||
var/list/space_borders
|
var/list/space_borders
|
||||||
var/length_space_border = 0
|
var/length_space_border = 0
|
||||||
|
|
||||||
|
Del()
|
||||||
|
spawn(5)
|
||||||
|
message_admins("WARNING! Airgroup deleted! Stacktrace is in a runtime, give it to Sky.")
|
||||||
|
CRASH("Fuck. Something deleted an airgroup. Here's your stack trace.")
|
||||||
|
..()
|
||||||
|
|
||||||
proc/suspend_group_processing()
|
proc/suspend_group_processing()
|
||||||
//Purpose: Suspends processing of the group, breaks it into individual tiles.
|
//Purpose: Suspends processing of the group, breaks it into individual tiles.
|
||||||
//Called by: Any check where the airgroup is determined to break.
|
//Called by: Any check where the airgroup is determined to break.
|
||||||
|
|||||||
@@ -891,6 +891,9 @@ datum
|
|||||||
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
||||||
var/self_heat_capacity = heat_capacity_archived()
|
var/self_heat_capacity = heat_capacity_archived()
|
||||||
var/sharer_heat_capacity = sharer.heat_capacity_archived()
|
var/sharer_heat_capacity = sharer.heat_capacity_archived()
|
||||||
|
if(!group_multiplier)
|
||||||
|
message_admins("Error! The gas mixture (ref \ref[src]) has no group multiplier!")
|
||||||
|
return
|
||||||
|
|
||||||
if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
|
if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
|
||||||
var/heat = conduction_coefficient*delta_temperature* \
|
var/heat = conduction_coefficient*delta_temperature* \
|
||||||
@@ -903,13 +906,14 @@ datum
|
|||||||
var/delta_temperature = (temperature - model.temperature)
|
var/delta_temperature = (temperature - model.temperature)
|
||||||
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
||||||
var/self_heat_capacity = heat_capacity()//_archived()
|
var/self_heat_capacity = heat_capacity()//_archived()
|
||||||
|
if(!group_multiplier)
|
||||||
|
message_admins("Error! The gas mixture (ref \ref[src]) has no group multiplier!")
|
||||||
|
return
|
||||||
|
|
||||||
if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
|
if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
|
||||||
var/heat = conduction_coefficient*delta_temperature* \
|
var/heat = conduction_coefficient*delta_temperature* \
|
||||||
(self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
|
(self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity))
|
||||||
|
|
||||||
ASSERT(self_heat_capacity != 0) // Trying to solve a runtime error - Abi79
|
|
||||||
ASSERT(group_multiplier != 0)
|
|
||||||
if(border_multiplier)
|
if(border_multiplier)
|
||||||
temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier)
|
temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ datum
|
|||||||
|
|
||||||
var/current_cycle = 0
|
var/current_cycle = 0
|
||||||
var/update_delay = 5 //How long between check should it try to process atmos again.
|
var/update_delay = 5 //How long between check should it try to process atmos again.
|
||||||
|
var/failed_ticks = 0 //How many ticks have runtimed?
|
||||||
|
|
||||||
|
|
||||||
/* process()
|
/* process()
|
||||||
@@ -211,9 +212,17 @@ datum
|
|||||||
|
|
||||||
set background = 1
|
set background = 1
|
||||||
while(1)
|
while(1)
|
||||||
if(kill_air)
|
if(!kill_air)
|
||||||
return 1
|
|
||||||
current_cycle++
|
current_cycle++
|
||||||
|
var/success = tick() //Changed so that a runtime does not crash the ticker.
|
||||||
|
if(!success) //Runtimed.
|
||||||
|
failed_ticks++
|
||||||
|
if(failed_ticks > 20)
|
||||||
|
world << "<font size='4' color='red'>ERROR IN ATMOS TICKER. Killing air simulation!</font>"
|
||||||
|
kill_air = 1
|
||||||
|
sleep(max(5,update_delay*tick_multiplier))
|
||||||
|
|
||||||
|
proc/tick()
|
||||||
if(groups_to_rebuild.len > 0) //If there are groups to rebuild, do so.
|
if(groups_to_rebuild.len > 0) //If there are groups to rebuild, do so.
|
||||||
spawn process_rebuild_select_groups()
|
spawn process_rebuild_select_groups()
|
||||||
|
|
||||||
@@ -223,10 +232,16 @@ datum
|
|||||||
tiles_to_update = list()
|
tiles_to_update = list()
|
||||||
|
|
||||||
for(var/datum/air_group/AG in air_groups) //Processing groups
|
for(var/datum/air_group/AG in air_groups) //Processing groups
|
||||||
|
spawn
|
||||||
if(AG) // Because of runtime errors on syphoning.
|
if(AG) // Because of runtime errors on syphoning.
|
||||||
spawn AG.process_group()
|
AG.process_group()
|
||||||
|
|
||||||
for(var/turf/simulated/T in active_singletons) //Processing Singletons
|
for(var/turf/simulated/T in active_singletons) //Processing Singletons
|
||||||
spawn T.process_cell()
|
spawn
|
||||||
|
if(istype(T))
|
||||||
|
T.process_cell()
|
||||||
|
else
|
||||||
|
active_singletons.Remove(T)
|
||||||
|
|
||||||
for(var/turf/simulated/hot_potato in active_super_conductivity) //Process superconduction
|
for(var/turf/simulated/hot_potato in active_super_conductivity) //Process superconduction
|
||||||
spawn hot_potato.super_conduct()
|
spawn hot_potato.super_conduct()
|
||||||
@@ -238,9 +253,11 @@ datum
|
|||||||
|
|
||||||
if(current_cycle%10==5) //Check for groups of tiles to resume group processing every 10 cycles
|
if(current_cycle%10==5) //Check for groups of tiles to resume group processing every 10 cycles
|
||||||
for(var/datum/air_group/AG in air_groups)
|
for(var/datum/air_group/AG in air_groups)
|
||||||
|
spawn
|
||||||
if(AG) // Because of runtime errors on syphoning.
|
if(AG) // Because of runtime errors on syphoning.
|
||||||
spawn AG.check_regroup()
|
AG.check_regroup()
|
||||||
sleep(max(5,update_delay*tick_multiplier))
|
return 1
|
||||||
|
|
||||||
|
|
||||||
proc/process_rebuild_select_groups()
|
proc/process_rebuild_select_groups()
|
||||||
//Purpose: This gets called to recalculate and rebuild group geometry
|
//Purpose: This gets called to recalculate and rebuild group geometry
|
||||||
|
|||||||
@@ -369,6 +369,7 @@ var/datum/cameranet/cameranet = new()
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/silicon/ai/switchCamera(var/obj/machinery/camera/C)
|
/mob/living/silicon/ai/switchCamera(var/obj/machinery/camera/C)
|
||||||
|
if(C && isturf(C.loc))
|
||||||
eyeobj.loc = C.loc
|
eyeobj.loc = C.loc
|
||||||
cameranet.visibility(eyeobj)
|
cameranet.visibility(eyeobj)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
voice_name = "tajaran"
|
voice_name = "tajaran"
|
||||||
icon = 'tajaran.dmi'
|
icon = 'tajaran.dmi'
|
||||||
icon_state = "m-none"
|
icon_state = "m-none"
|
||||||
var/list/tajspeak_letters
|
var/list/tajspeak_letters = list("~","*","-")
|
||||||
//
|
//
|
||||||
universal_speak = 1 //hacky fix until someone can figure out how to make them only understand humans
|
universal_speak = 1 //hacky fix until someone can figure out how to make them only understand humans
|
||||||
taj_talk_understand = 1
|
taj_talk_understand = 1
|
||||||
@@ -12,8 +12,6 @@
|
|||||||
examine_text = "one of the cat-like Tajarans."
|
examine_text = "one of the cat-like Tajarans."
|
||||||
|
|
||||||
/mob/living/carbon/human/tajaran/New()
|
/mob/living/carbon/human/tajaran/New()
|
||||||
tajspeak_letters = new/list("~","*","-")
|
|
||||||
|
|
||||||
var/g = "m"
|
var/g = "m"
|
||||||
if (gender == FEMALE)
|
if (gender == FEMALE)
|
||||||
g = "f"
|
g = "f"
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ log transactions
|
|||||||
del I
|
del I
|
||||||
|
|
||||||
/obj/machinery/atm/attack_hand(mob/user as mob)
|
/obj/machinery/atm/attack_hand(mob/user as mob)
|
||||||
|
if(istype(user, /mob/living/silicon))
|
||||||
|
user << "\red Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per NanoTrasen regulation #1005."
|
||||||
|
return
|
||||||
|
|
||||||
var/obj/item/weapon/card/id/user_id = src.scan_user(user)
|
var/obj/item/weapon/card/id/user_id = src.scan_user(user)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -71,11 +71,107 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
src.menu_message += "<A href='byond://?src=\ref[src];buy_item=[path_text];cost=[cost]'>[name]</A> ([cost])<BR>"
|
src.menu_message += "<A href='byond://?src=\ref[src];buy_item=[path_text];cost=[cost]'>[name]</A> ([cost])<BR>"
|
||||||
category_items++
|
category_items++
|
||||||
|
|
||||||
|
// src.menu_message += "<A href='byond://?src=\ref[src];buy_item=random'>Random Item (??)</A><br>"
|
||||||
src.menu_message += "<HR>"
|
src.menu_message += "<HR>"
|
||||||
return
|
return
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
if (href_list["buy_item"])
|
if (href_list["buy_item"])
|
||||||
|
/* if(href_list["buy_item"] == "random")
|
||||||
|
var/list/randomItems = list()
|
||||||
|
|
||||||
|
//Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list
|
||||||
|
//Add only items the player can afford:
|
||||||
|
if(uses > 19)
|
||||||
|
randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops)
|
||||||
|
|
||||||
|
if(uses > 9)
|
||||||
|
randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle
|
||||||
|
|
||||||
|
//if(uses > 8) //Nothing... yet.
|
||||||
|
//if(uses > 7) //Nothing... yet.
|
||||||
|
|
||||||
|
if(uses > 6)
|
||||||
|
randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module
|
||||||
|
randomItems.Add("/obj/item/device/radio/beacon/syndicate") //Singularity Beacon
|
||||||
|
|
||||||
|
if(uses > 5)
|
||||||
|
randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver
|
||||||
|
|
||||||
|
if(uses > 4)
|
||||||
|
randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow
|
||||||
|
randomItems.Add("/obj/item/device/powersink") //Powersink
|
||||||
|
|
||||||
|
if(uses > 3)
|
||||||
|
randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword
|
||||||
|
randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer
|
||||||
|
randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector
|
||||||
|
|
||||||
|
if(uses > 2)
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades
|
||||||
|
randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen
|
||||||
|
randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge
|
||||||
|
randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit
|
||||||
|
randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card
|
||||||
|
randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit
|
||||||
|
randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant
|
||||||
|
randomItems.Add("/obj/item/clothing/glasses/thermal") //Thermal Imaging Goggles
|
||||||
|
|
||||||
|
if(uses > 1)
|
||||||
|
/*
|
||||||
|
var/list/usrItems = usr.get_contents() //Checks to see if the user has a revolver before giving ammo
|
||||||
|
var/hasRevolver = 0
|
||||||
|
for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it
|
||||||
|
if(istype(I,/obj/item/weapon/gun/projectile))
|
||||||
|
hasRevolver = 1
|
||||||
|
|
||||||
|
if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
|
||||||
|
*/
|
||||||
|
randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
|
||||||
|
randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes
|
||||||
|
randomItems.Add("/obj/item/weapon/plastique") //C4
|
||||||
|
|
||||||
|
if(uses > 0)
|
||||||
|
randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap
|
||||||
|
randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox
|
||||||
|
|
||||||
|
if(!randomItems)
|
||||||
|
del(randomItems)
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
href_list["buy_item"] = pick(randomItems)
|
||||||
|
|
||||||
|
switch(href_list["buy_item"]) //Ok, this gets a little messy, sorry.
|
||||||
|
if("/obj/item/weapon/circuitboard/teleporter")
|
||||||
|
uses -= 20
|
||||||
|
if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink" , "/obj/item/weapon/storage/box/syndicate")
|
||||||
|
uses -= 10
|
||||||
|
if("/obj/item/weapon/aiModule/syndicate" , "/obj/item/device/radio/beacon/syndicate")
|
||||||
|
uses -= 7
|
||||||
|
if("/obj/item/weapon/gun/projectile")
|
||||||
|
uses -= 6
|
||||||
|
if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink")
|
||||||
|
uses -= 5
|
||||||
|
if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon")
|
||||||
|
uses -= 4
|
||||||
|
if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \
|
||||||
|
"/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \
|
||||||
|
"/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal")
|
||||||
|
uses -= 3
|
||||||
|
if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique")
|
||||||
|
uses -= 2
|
||||||
|
if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate")
|
||||||
|
uses -= 1
|
||||||
|
|
||||||
|
del(randomItems)
|
||||||
|
return 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item
|
if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
/obj/item/tape/engineering
|
/obj/item/tape/engineering
|
||||||
name = "engineering tape"
|
name = "engineering tape"
|
||||||
desc = "A length of engineering tape. Better not cross it."
|
desc = "A length of engineering tape. Better not cross it."
|
||||||
req_one_access = list(access_engine,access_atmospherics)
|
req_access = list(access_engine,access_atmospherics)
|
||||||
icon_base = "engineering"
|
icon_base = "engineering"
|
||||||
|
|
||||||
/obj/item/taperoll/attack_self(mob/user as mob)
|
/obj/item/taperoll/attack_self(mob/user as mob)
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
var/turf/T = get_turf(A)
|
var/turf/T = get_turf(A)
|
||||||
var/obj/item/tape/P = new tape_type(T.x,T.y,T.z)
|
var/obj/item/tape/P = new tape_type(T.x,T.y,T.z)
|
||||||
P.loc = locate(T.x,T.y,T.z)
|
P.loc = locate(T.x,T.y,T.z)
|
||||||
P.icon_state = "door"
|
P.icon_state = "[src.icon_base]_door"
|
||||||
P.layer = 3.2
|
P.layer = 3.2
|
||||||
user << "\blue You finish placing the [src]."
|
user << "\blue You finish placing the [src]."
|
||||||
|
|
||||||
|
|||||||
@@ -249,7 +249,7 @@
|
|||||||
new /obj/item/device/flashlight/pen(src)
|
new /obj/item/device/flashlight/pen(src)
|
||||||
new /obj/item/clothing/gloves/latex(src)
|
new /obj/item/clothing/gloves/latex(src)
|
||||||
new /obj/item/clothing/suit/bio_suit/cmo(src)
|
new /obj/item/clothing/suit/bio_suit/cmo(src)
|
||||||
new /obj/item/clothing/head/bio_hood/general(src)
|
new /obj/item/clothing/head/bio_hood/cmo(src)
|
||||||
new /obj/item/clothing/suit/storage/labcoat/cmo(src)
|
new /obj/item/clothing/suit/storage/labcoat/cmo(src)
|
||||||
new /obj/item/clothing/suit/storage/labcoat/cmoalt(src)
|
new /obj/item/clothing/suit/storage/labcoat/cmoalt(src)
|
||||||
new /obj/item/clothing/shoes/brown(src)
|
new /obj/item/clothing/shoes/brown(src)
|
||||||
@@ -432,6 +432,7 @@
|
|||||||
new /obj/item/device/radio/headset/headset_sec(src)
|
new /obj/item/device/radio/headset/headset_sec(src)
|
||||||
new /obj/item/clothing/shoes/brown(src)
|
new /obj/item/clothing/shoes/brown(src)
|
||||||
new /obj/item/clothing/under/det(src)
|
new /obj/item/clothing/under/det(src)
|
||||||
|
new /obj/item/weapon/camera_film(src)
|
||||||
|
|
||||||
/obj/item/wardrobe/officer
|
/obj/item/wardrobe/officer
|
||||||
name = "\improper Security Officer Wardrobe"
|
name = "\improper Security Officer Wardrobe"
|
||||||
@@ -538,7 +539,7 @@
|
|||||||
new /obj/item/device/pda/quartermaster(src)
|
new /obj/item/device/pda/quartermaster(src)
|
||||||
new /obj/item/device/radio/headset/headset_cargo(src)
|
new /obj/item/device/radio/headset/headset_cargo(src)
|
||||||
new /obj/item/clothing/shoes/black(src)
|
new /obj/item/clothing/shoes/black(src)
|
||||||
new /obj/item/clothing/under/rank/cargo(src)
|
new /obj/item/clothing/under/rank/cargotech(src)
|
||||||
|
|
||||||
/obj/item/wardrobe/mining
|
/obj/item/wardrobe/mining
|
||||||
name = "\improper Shaft Miner Wardrobe"
|
name = "\improper Shaft Miner Wardrobe"
|
||||||
|
|||||||
@@ -380,6 +380,7 @@
|
|||||||
return "I couldn't find [name]'s PDA."
|
return "I couldn't find [name]'s PDA."
|
||||||
|
|
||||||
// send message
|
// send message
|
||||||
|
if(!istype(eliza.speaker.loc.loc, /obj/item/device/pda))//Looking if we are in a PDA
|
||||||
pda.tnote += "<i><b>← From [eliza.callsign]:</b></i><br>[object]<br>"
|
pda.tnote += "<i><b>← From [eliza.callsign]:</b></i><br>[object]<br>"
|
||||||
|
|
||||||
if(prob(15) && eliza.speaker) //Give the AI a chance of intercepting the message
|
if(prob(15) && eliza.speaker) //Give the AI a chance of intercepting the message
|
||||||
@@ -396,7 +397,14 @@
|
|||||||
|
|
||||||
pda.overlays = null
|
pda.overlays = null
|
||||||
pda.overlays += image('pda.dmi', "pda-r")
|
pda.overlays += image('pda.dmi', "pda-r")
|
||||||
|
else
|
||||||
|
var/list/href_list = list()
|
||||||
|
href_list["src"] = "\ref[eliza.speaker.loc.loc]"
|
||||||
|
href_list["choice"] = "Message"
|
||||||
|
href_list["target"] = "\ref[pda]"
|
||||||
|
href_list["pAI_mess"] = "\"[object]\" \[Via pAI Unit\]"
|
||||||
|
var/obj/item/device/pda/pda_im_in = eliza.speaker.loc.loc
|
||||||
|
pda_im_in.Topic("src=\ref[eliza.speaker.loc.loc];choice=Message;target=\ref[pda];pAI_mess=\"[object] \[Via pAI Unit\]",href_list)
|
||||||
return "Told [name], [object]."
|
return "Told [name], [object]."
|
||||||
|
|
||||||
/datum/text_parser/keyword/yes
|
/datum/text_parser/keyword/yes
|
||||||
|
|||||||
165
code/WorkInProgress/animusstation/atm.dm
Normal file
165
code/WorkInProgress/animusstation/atm.dm
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
give money an actual use (QM stuff, vending machines)
|
||||||
|
send money to people (might be worth attaching money to custom database thing for this, instead of being in the ID)
|
||||||
|
log transactions
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/machinery/atm
|
||||||
|
name = "\improper NanoTrasen Automatic Teller Machine"
|
||||||
|
desc = "For all your monetary needs!"
|
||||||
|
icon = 'terminals.dmi'
|
||||||
|
icon_state = "atm"
|
||||||
|
anchored = 1
|
||||||
|
use_power = 1
|
||||||
|
idle_power_usage = 10
|
||||||
|
var
|
||||||
|
obj/item/weapon/card/id/card
|
||||||
|
obj/item/weapon/spacecash/cashes = list()
|
||||||
|
inserted = 0
|
||||||
|
accepted = 0
|
||||||
|
pincode = 0
|
||||||
|
|
||||||
|
attackby(var/obj/A, var/mob/user)
|
||||||
|
if(istype(A,/obj/item/weapon/spacecash))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += A:worth
|
||||||
|
return
|
||||||
|
if(istype(A,/obj/item/weapon/coin))
|
||||||
|
if(istype(A,/obj/item/weapon/coin/iron))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += 1
|
||||||
|
return
|
||||||
|
if(istype(A,/obj/item/weapon/coin/silver))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += 10
|
||||||
|
return
|
||||||
|
if(istype(A,/obj/item/weapon/coin/gold))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += 50
|
||||||
|
return
|
||||||
|
if(istype(A,/obj/item/weapon/coin/plasma))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += 2
|
||||||
|
return
|
||||||
|
if(istype(A,/obj/item/weapon/coin/diamond))
|
||||||
|
cashes += A
|
||||||
|
user.drop_item()
|
||||||
|
A.loc = src
|
||||||
|
inserted += 300
|
||||||
|
return
|
||||||
|
user << "You insert your [A.name] in ATM"
|
||||||
|
..()
|
||||||
|
|
||||||
|
attack_hand(var/mob/user)
|
||||||
|
if(istype(user, /mob/living/silicon))
|
||||||
|
user << "\red Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per NanoTrasen regulation #1005."
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!(stat && NOPOWER) && ishuman(user))
|
||||||
|
var/dat
|
||||||
|
user.machine = src
|
||||||
|
if(!accepted)
|
||||||
|
if(scan(user))
|
||||||
|
pincode = input(usr,"Enter a pin-code") as num
|
||||||
|
if(card.checkaccess(pincode,usr))
|
||||||
|
accepted = 1
|
||||||
|
// usr << sound('nya.mp3')
|
||||||
|
else
|
||||||
|
dat = null
|
||||||
|
dat += "<h1>NanoTrasen Automatic Teller Machine</h1><br/>"
|
||||||
|
dat += "For all your monetary needs!<br/><br/>"
|
||||||
|
dat += "Welcome, [card.registered_name]. You have [card.money] credits deposited.<br>"
|
||||||
|
dat += "Current inserted item value: [inserted] credits.<br><br>"
|
||||||
|
dat += "Please, select action<br>"
|
||||||
|
dat += "<a href=\"?src=\ref[src]&with=1\">Withdraw Physical Credits</a><br/>"
|
||||||
|
dat += "<a href=\"?src=\ref[src]&eca=1\">Eject Inserted Items</a><br/>"
|
||||||
|
dat += "<a href=\"?src=\ref[src]&ins=1\">Convert Inserted Items to Credits</a><br/>"
|
||||||
|
dat += "<a href=\"?src=\ref[src]&lock=1\">Lock ATM</a><br/>"
|
||||||
|
user << browse(dat,"window=atm")
|
||||||
|
onclose(user,"close")
|
||||||
|
proc
|
||||||
|
withdraw(var/mob/user)
|
||||||
|
if(accepted)
|
||||||
|
var/amount = input("How much would you like to withdraw?", "Amount", 0) in list(1,10,20,50,100,200,500,1000, 0)
|
||||||
|
if(amount == 0)
|
||||||
|
return
|
||||||
|
if(card.money >= amount)
|
||||||
|
card.money -= amount
|
||||||
|
switch(amount)
|
||||||
|
if(1)
|
||||||
|
new /obj/item/weapon/spacecash(loc)
|
||||||
|
if(10)
|
||||||
|
new /obj/item/weapon/spacecash/c10(loc)
|
||||||
|
if(20)
|
||||||
|
new /obj/item/weapon/spacecash/c20(loc)
|
||||||
|
if(50)
|
||||||
|
new /obj/item/weapon/spacecash/c50(loc)
|
||||||
|
if(100)
|
||||||
|
new /obj/item/weapon/spacecash/c100(loc)
|
||||||
|
if(200)
|
||||||
|
new /obj/item/weapon/spacecash/c200(loc)
|
||||||
|
if(500)
|
||||||
|
new /obj/item/weapon/spacecash/c500(loc)
|
||||||
|
if(1000)
|
||||||
|
new /obj/item/weapon/spacecash/c1000(loc)
|
||||||
|
else
|
||||||
|
user << "\red Error: Insufficient funds."
|
||||||
|
return
|
||||||
|
|
||||||
|
scan(var/mob/user)
|
||||||
|
if(istype(user,/mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = user
|
||||||
|
if(H.wear_id)
|
||||||
|
if(istype(H.wear_id, /obj/item/weapon/card/id))
|
||||||
|
card = H.wear_id
|
||||||
|
return 1
|
||||||
|
if(istype(H.wear_id,/obj/item/device/pda))
|
||||||
|
var/obj/item/device/pda/P = H.wear_id
|
||||||
|
if(istype(P.id,/obj/item/weapon/card/id))
|
||||||
|
card = P.id
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
return 0
|
||||||
|
|
||||||
|
insert()
|
||||||
|
if(accepted)
|
||||||
|
card.money += inserted
|
||||||
|
inserted = 0
|
||||||
|
|
||||||
|
Topic(href,href_list)
|
||||||
|
if (usr.machine==src && get_dist(src, usr) <= 1 || istype(usr, /mob/living/silicon/ai))
|
||||||
|
if(href_list["eca"])
|
||||||
|
if(accepted)
|
||||||
|
for(var/obj/item/weapon/spacecash/M in cashes)
|
||||||
|
M.loc = loc
|
||||||
|
inserted = 0
|
||||||
|
if(!cashes)
|
||||||
|
cashes = null
|
||||||
|
if(href_list["with"] && card)
|
||||||
|
withdraw(usr)
|
||||||
|
if(href_list["ins"] && card)
|
||||||
|
if(accepted)
|
||||||
|
card.money += inserted
|
||||||
|
inserted = 0
|
||||||
|
if(href_list["lock"])
|
||||||
|
card = null
|
||||||
|
accepted = 0
|
||||||
|
usr.machine = null
|
||||||
|
usr << browse(null,"window=atm")
|
||||||
|
src.updateUsrDialog()
|
||||||
|
else
|
||||||
|
usr.machine = null
|
||||||
|
usr << browse(null,"window=atm")
|
||||||
@@ -485,8 +485,8 @@ proc/process_ghost_teleport_locs()
|
|||||||
|
|
||||||
//PRISON
|
//PRISON
|
||||||
/area/prison
|
/area/prison
|
||||||
name = "Prison Wing"
|
name = "Prison Station"
|
||||||
icon_state = "security"
|
icon_state = "brig"
|
||||||
|
|
||||||
/area/prison/arrival_airlock
|
/area/prison/arrival_airlock
|
||||||
name = "Prison Station Airlock"
|
name = "Prison Station Airlock"
|
||||||
@@ -1058,6 +1058,10 @@ proc/process_ghost_teleport_locs()
|
|||||||
name = "Brig"
|
name = "Brig"
|
||||||
icon_state = "brig"
|
icon_state = "brig"
|
||||||
|
|
||||||
|
/area/security/prison
|
||||||
|
name = "Prison Wing"
|
||||||
|
icon_state = "security"
|
||||||
|
|
||||||
/area/security/warden
|
/area/security/warden
|
||||||
name = "Warden"
|
name = "Warden"
|
||||||
icon_state = "Warden"
|
icon_state = "Warden"
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
/obj/structure/bedsheetbin
|
/obj/structure/bedsheetbin
|
||||||
name = "linen bin"
|
name = "linen bin"
|
||||||
desc = "A bin for containing bedsheets. It looks rather cosy."
|
desc = "A small wire mesh bin full of extra bedsheets and cleaning supplies for the beds. Smells of lilacs and has a faint undertone of disinfectant."
|
||||||
icon = 'items.dmi'
|
icon = 'items.dmi'
|
||||||
icon_state = "bedbin"
|
icon_state = "bedbin"
|
||||||
var/amount = 23.0
|
var/amount = 23.0
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
var/mob/living/carbon/monkey/target = null
|
var/mob/living/carbon/monkey/target = null
|
||||||
|
|
||||||
/obj/effect/sign/securearea
|
/obj/effect/sign/securearea
|
||||||
desc = "A warning sign which reads 'SECURE AREA'"
|
desc = "A large yellow warning sign which reads 'SECURE AREA', it appears to have been painted onto the wall like that."
|
||||||
name = "SECURE AREA"
|
name = "SECURE AREA"
|
||||||
icon = 'decals.dmi'
|
icon = 'decals.dmi'
|
||||||
icon_state = "securearea"
|
icon_state = "securearea"
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
density = 0
|
density = 0
|
||||||
|
|
||||||
/obj/effect/sign/biohazard
|
/obj/effect/sign/biohazard
|
||||||
desc = "A warning sign which reads 'BIOHAZARD'"
|
desc = "A warning sign which reads 'BIOHAZARD', you think it'd be a good idea to ensure you have a properly sealed hazardsuit on."
|
||||||
name = "BIOHAZARD"
|
name = "BIOHAZARD"
|
||||||
icon = 'decals.dmi'
|
icon = 'decals.dmi'
|
||||||
icon_state = "bio"
|
icon_state = "bio"
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
density = 0
|
density = 0
|
||||||
|
|
||||||
/obj/effect/sign/electricshock
|
/obj/effect/sign/electricshock
|
||||||
desc = "A warning sign which reads 'HIGH VOLTAGE'"
|
desc = "A warning sign which reads 'HIGH VOLTAGE', it looks like it'd be a wise decision to stay away from here."
|
||||||
name = "HIGH VOLTAGE"
|
name = "HIGH VOLTAGE"
|
||||||
icon = 'decals.dmi'
|
icon = 'decals.dmi'
|
||||||
icon_state = "shock"
|
icon_state = "shock"
|
||||||
@@ -813,6 +813,7 @@
|
|||||||
density = 1
|
density = 1
|
||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
layer = 2.8
|
layer = 2.8
|
||||||
|
var/dented = 0
|
||||||
|
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -620,16 +620,16 @@
|
|||||||
/obj/item/seeds/harebell
|
/obj/item/seeds/harebell
|
||||||
name = "pack of harebell seeds"
|
name = "pack of harebell seeds"
|
||||||
desc = "These seeds grow into pretty little flowers."
|
desc = "These seeds grow into pretty little flowers."
|
||||||
icon_state = "seed"
|
icon_state = "seed-harebell"
|
||||||
mypath = "/obj/item/seeds/harebell"
|
mypath = "/obj/item/seeds/harebell"
|
||||||
species = "harebell"
|
species = "harebell"
|
||||||
plantname = "Harebells"
|
plantname = "Harebells"
|
||||||
productname = ""
|
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/harebell"
|
||||||
lifespan = 100
|
lifespan = 100
|
||||||
endurance = 20
|
endurance = 20
|
||||||
maturation = 7
|
maturation = 7
|
||||||
production = 1
|
production = 1
|
||||||
yield = -1
|
yield = 2
|
||||||
potency = 1
|
potency = 1
|
||||||
oneharvest = 1
|
oneharvest = 1
|
||||||
growthstages = 4
|
growthstages = 4
|
||||||
@@ -1058,6 +1058,7 @@
|
|||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
|
/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
|
||||||
seed = "/obj/item/seeds/poppyseed"
|
seed = "/obj/item/seeds/poppyseed"
|
||||||
name = "poppy"
|
name = "poppy"
|
||||||
|
desc = "Long-used as a symbol of rest, peace, and death."
|
||||||
icon_state = "poppy"
|
icon_state = "poppy"
|
||||||
potency = 30
|
potency = 30
|
||||||
New()
|
New()
|
||||||
@@ -1066,6 +1067,16 @@
|
|||||||
reagents.add_reagent("bicaridine", 1+round((potency / 10), 1))
|
reagents.add_reagent("bicaridine", 1+round((potency / 10), 1))
|
||||||
bitesize = 1+round(reagents.total_volume / 3, 1)
|
bitesize = 1+round(reagents.total_volume / 3, 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
|
||||||
|
seed = "obj/item/seeds/harebellseed"
|
||||||
|
name = "harebell"
|
||||||
|
desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten<65>d not thy breath.\""
|
||||||
|
icon_state = "harebell"
|
||||||
|
potency = 1
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
reagents.add_reagent("nutriment", 1+round((potency / 20), 1))
|
||||||
|
bitesize = 1+round(reagents.total_volume / 3, 1)
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato
|
/obj/item/weapon/reagent_containers/food/snacks/grown/potato
|
||||||
seed = "/obj/item/seeds/potatoseed"
|
seed = "/obj/item/seeds/potatoseed"
|
||||||
@@ -1668,6 +1679,9 @@
|
|||||||
reagents = R
|
reagents = R
|
||||||
R.my_atom = src
|
R.my_atom = src
|
||||||
|
|
||||||
|
/obj/item/weapon/grown/proc/changePotency(newValue) //-QualityVan
|
||||||
|
potency = newValue
|
||||||
|
|
||||||
/obj/item/weapon/grown/log
|
/obj/item/weapon/grown/log
|
||||||
name = "tower-cap log"
|
name = "tower-cap log"
|
||||||
desc = "It's better than bad, it's good!"
|
desc = "It's better than bad, it's good!"
|
||||||
|
|||||||
@@ -225,38 +225,6 @@
|
|||||||
idle_power_usage = 10
|
idle_power_usage = 10
|
||||||
active_power_usage = 400
|
active_power_usage = 400
|
||||||
|
|
||||||
/obj/machinery/door_control
|
|
||||||
name = "remote door-control"
|
|
||||||
desc = "It controls doors, remotely."
|
|
||||||
icon = 'stationobjs.dmi'
|
|
||||||
icon_state = "doorctrl0"
|
|
||||||
desc = "A remote control-switch for a door."
|
|
||||||
var/id = null
|
|
||||||
var/range = 10
|
|
||||||
var/normaldoorcontrol = 0
|
|
||||||
var/desiredstate = 0 // Zero is closed, 1 is open.
|
|
||||||
var/specialfunctions = 1
|
|
||||||
/*
|
|
||||||
Bitflag, 1= open
|
|
||||||
2= idscan,
|
|
||||||
4= bolts
|
|
||||||
8= shock
|
|
||||||
16= door safties
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var/exposedwires = 0
|
|
||||||
var/wires = 3
|
|
||||||
/*
|
|
||||||
Bitflag, 1=checkID
|
|
||||||
2=Network Access
|
|
||||||
*/
|
|
||||||
|
|
||||||
anchored = 1.0
|
|
||||||
use_power = 1
|
|
||||||
idle_power_usage = 2
|
|
||||||
active_power_usage = 4
|
|
||||||
|
|
||||||
/obj/machinery/driver_button
|
/obj/machinery/driver_button
|
||||||
name = "mass driver button"
|
name = "mass driver button"
|
||||||
icon = 'objects.dmi'
|
icon = 'objects.dmi'
|
||||||
|
|||||||
@@ -76,6 +76,8 @@
|
|||||||
name = "Arts and Crafts supplies"
|
name = "Arts and Crafts supplies"
|
||||||
contains = list("/obj/item/weapon/storage/crayonbox",
|
contains = list("/obj/item/weapon/storage/crayonbox",
|
||||||
"/obj/item/weapon/camera_test",
|
"/obj/item/weapon/camera_test",
|
||||||
|
"/obj/item/weapon/camera_film",
|
||||||
|
"/obj/item/weapon/camera_film",
|
||||||
"/obj/item/weapon/storage/photo_album",
|
"/obj/item/weapon/storage/photo_album",
|
||||||
"/obj/item/weapon/packageWrap",
|
"/obj/item/weapon/packageWrap",
|
||||||
"/obj/item/weapon/reagent_containers/glass/paint/red",
|
"/obj/item/weapon/reagent_containers/glass/paint/red",
|
||||||
@@ -756,7 +758,8 @@
|
|||||||
containername = "Secruity Barriers crate"
|
containername = "Secruity Barriers crate"
|
||||||
group = "Security"
|
group = "Security"
|
||||||
|
|
||||||
/datum/supply_packs/hats/
|
/datum/supply_packs/randomised
|
||||||
|
var/num_contained = 3 //number of items picked to be contained in a randomised crate
|
||||||
contains = list("/obj/item/clothing/head/collectable/chef",
|
contains = list("/obj/item/clothing/head/collectable/chef",
|
||||||
"/obj/item/clothing/head/collectable/paper",
|
"/obj/item/clothing/head/collectable/paper",
|
||||||
"/obj/item/clothing/head/collectable/tophat",
|
"/obj/item/clothing/head/collectable/tophat",
|
||||||
@@ -783,30 +786,22 @@
|
|||||||
"/obj/item/clothing/head/collectable/petehat")
|
"/obj/item/clothing/head/collectable/petehat")
|
||||||
name = "Collectable hat crate!"
|
name = "Collectable hat crate!"
|
||||||
cost = 200
|
cost = 200
|
||||||
containertype = "/obj/structure/closet/crate/hat"
|
containertype = "/obj/structure/closet/crate"
|
||||||
containername = "Collectable hats crate! Brought to you by Bass.inc!"
|
containername = "Collectable hats crate! Brought to you by Bass.inc!"
|
||||||
group = "Clothing"
|
|
||||||
|
|
||||||
/datum/supply_packs/hats/New()
|
/datum/supply_packs/randomised/New()
|
||||||
var/list/tempContains = list()
|
var/list/tempContains = list()
|
||||||
for(var/i = 0,i<min(3,contains.len),i++)
|
for(var/i = 0,i<num_contained,i++)
|
||||||
tempContains += pick(contains)
|
tempContains += pick(contains)
|
||||||
contains = tempContains
|
contains = tempContains
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|
||||||
/datum/supply_packs/contraband
|
/datum/supply_packs/randomised/contraband
|
||||||
|
num_contained = 5
|
||||||
contains = list("/obj/item/weapon/contraband/poster","/obj/item/weapon/cigpacket/dromedaryco") //We randomly pick 5 items from this list through the constructor, look below
|
contains = list("/obj/item/weapon/contraband/poster","/obj/item/weapon/cigpacket/dromedaryco") //We randomly pick 5 items from this list through the constructor, look below
|
||||||
name = "Contraband crate"
|
name = "Contraband crate"
|
||||||
cost = 30
|
cost = 30
|
||||||
containertype = "/obj/structure/closet/crate/contraband"
|
containertype = "/obj/structure/closet/crate"
|
||||||
containername = "Contraband crate"
|
containername = "Contraband crate"
|
||||||
contraband = 1
|
contraband = 1
|
||||||
group = "NanoTrasen Contraband Storage"
|
|
||||||
|
|
||||||
/datum/supply_packs/contraband/New()
|
|
||||||
var/list/tempContains = list()
|
|
||||||
for(var/i = 0,i<5,i++)
|
|
||||||
tempContains += pick(contains)
|
|
||||||
src.contains = tempContains
|
|
||||||
..()
|
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
ammo = 30
|
ammo = 30
|
||||||
|
|
||||||
/obj/item/weapon/spacecash
|
/obj/item/weapon/spacecash
|
||||||
name = "space cash"
|
name = "stack of credits"
|
||||||
desc = "It's worth 1 credit."
|
desc = "It's worth 1 credit."
|
||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
icon = 'items.dmi'
|
icon = 'items.dmi'
|
||||||
@@ -175,6 +175,7 @@
|
|||||||
var/access = list()
|
var/access = list()
|
||||||
access = access_crate_cash
|
access = access_crate_cash
|
||||||
var/worth = 1
|
var/worth = 1
|
||||||
|
var/amount = 1
|
||||||
|
|
||||||
/obj/item/weapon/spacecash/c10
|
/obj/item/weapon/spacecash/c10
|
||||||
icon_state = "spacecash10"
|
icon_state = "spacecash10"
|
||||||
@@ -211,6 +212,51 @@
|
|||||||
access = access_crate_cash
|
access = access_crate_cash
|
||||||
desc = "It's worth 1000 credits."
|
desc = "It's worth 1000 credits."
|
||||||
worth = 1000
|
worth = 1000
|
||||||
|
/obj/item/weapon/spacecash/attack_self(var/mob/user)
|
||||||
|
var/dat = "<HEAD><TITLE>Space cash stack</TITLE></HEAD>"
|
||||||
|
dat += "Credit amount - [worth * amount]<br>"
|
||||||
|
dat += "<a href='?src=\ref[src];takemoney=1'>Take amount</a><br>"
|
||||||
|
user << browse(dat,"window=money")
|
||||||
|
|
||||||
|
/obj/item/weapon/spacecash/Topic(href, href_list)
|
||||||
|
if(href_list["takemoney"])
|
||||||
|
var/a = 1
|
||||||
|
a = input(usr,"How much you want take?") as num
|
||||||
|
if((a > src.amount) || (a < 0))
|
||||||
|
usr << "\red You don't have that many credits."
|
||||||
|
return
|
||||||
|
src.amount -= a
|
||||||
|
var/obj/item/weapon/spacecash/S
|
||||||
|
if(a <= 0)
|
||||||
|
return
|
||||||
|
switch(src.worth)
|
||||||
|
if(1)
|
||||||
|
S = new /obj/item/weapon/spacecash(get_turf(src))
|
||||||
|
if(10)
|
||||||
|
S = new /obj/item/weapon/spacecash/c10(get_turf(src))
|
||||||
|
if(20)
|
||||||
|
S = new /obj/item/weapon/spacecash/c20(get_turf(src))
|
||||||
|
if(50)
|
||||||
|
S = new /obj/item/weapon/spacecash/c50(get_turf(src))
|
||||||
|
if(100)
|
||||||
|
S = new /obj/item/weapon/spacecash/c100(get_turf(src))
|
||||||
|
if(200)
|
||||||
|
S = new /obj/item/weapon/spacecash/c200(get_turf(src))
|
||||||
|
if(500)
|
||||||
|
S = new /obj/item/weapon/spacecash/c500(get_turf(src))
|
||||||
|
if(1000)
|
||||||
|
S = new /obj/item/weapon/spacecash/c1000(get_turf(src))
|
||||||
|
S.amount = a
|
||||||
|
if(src.amount == 0)
|
||||||
|
del(src)
|
||||||
|
/obj/item/weapon/spacecash/attackby(var/obj/I, var/mob/user)
|
||||||
|
if(!I)
|
||||||
|
return
|
||||||
|
if(istype(I,src))
|
||||||
|
src.amount += I:amount
|
||||||
|
user << "You add [I:amount] credits to stack."
|
||||||
|
del(I)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/mass_spectrometer
|
/obj/item/device/mass_spectrometer
|
||||||
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
|
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
|
||||||
@@ -573,11 +619,12 @@
|
|||||||
item_state = "card-id"
|
item_state = "card-id"
|
||||||
var/access = list()
|
var/access = list()
|
||||||
var/registered_name = null // The name registered_name on the card
|
var/registered_name = null // The name registered_name on the card
|
||||||
|
var/pin = 0
|
||||||
|
var/money = 0
|
||||||
var/assignment = null
|
var/assignment = null
|
||||||
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
|
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
|
||||||
var/dorm = 0 // determines if this ID has claimed a dorm already
|
var/dorm = 0 // determines if this ID has claimed a dorm already
|
||||||
|
var/obj/item/weapon/credit_card/card
|
||||||
var/blood_type = "\[UNSET\]"
|
var/blood_type = "\[UNSET\]"
|
||||||
var/dna_hash = "\[UNSET\]"
|
var/dna_hash = "\[UNSET\]"
|
||||||
var/fingerprint_hash = "\[UNSET\]"
|
var/fingerprint_hash = "\[UNSET\]"
|
||||||
@@ -741,7 +788,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/extinguisher
|
/obj/item/weapon/extinguisher
|
||||||
name = "fire extinguisher"
|
name = "fire extinguisher"
|
||||||
desc = "Contains water for fighting fires."
|
desc = "A traditional red fire extinguisher."
|
||||||
icon = 'items.dmi'
|
icon = 'items.dmi'
|
||||||
icon_state = "fire_extinguisher0"
|
icon_state = "fire_extinguisher0"
|
||||||
var/last_use = 1.0
|
var/last_use = 1.0
|
||||||
@@ -760,6 +807,7 @@
|
|||||||
name = "fire extinguisher"
|
name = "fire extinguisher"
|
||||||
desc = "A light and compact fibreglass-framed model fire extinguisher."
|
desc = "A light and compact fibreglass-framed model fire extinguisher."
|
||||||
icon_state = "miniFE0"
|
icon_state = "miniFE0"
|
||||||
|
hitsound = null //it is much lighter, after all.
|
||||||
flags = FPRINT | USEDELAY | TABLEPASS
|
flags = FPRINT | USEDELAY | TABLEPASS
|
||||||
throwforce = 5
|
throwforce = 5
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
@@ -861,6 +909,10 @@
|
|||||||
/obj/item/weapon/handcuffs/cyborg
|
/obj/item/weapon/handcuffs/cyborg
|
||||||
dispenser = 1
|
dispenser = 1
|
||||||
|
|
||||||
|
/obj/item/weapon/handcuffs/cable
|
||||||
|
name = "cable restraints"
|
||||||
|
desc = "Looks like some cables tied together. Could be used to tie something up."
|
||||||
|
icon_state = "cuff_red"
|
||||||
|
|
||||||
/obj/item/weapon/locator
|
/obj/item/weapon/locator
|
||||||
name = "locator"
|
name = "locator"
|
||||||
@@ -1511,6 +1563,7 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
|
|||||||
desc = "You can drill using this item. You dig?"
|
desc = "You can drill using this item. You dig?"
|
||||||
icon = 'surgery.dmi'
|
icon = 'surgery.dmi'
|
||||||
icon_state = "drill"
|
icon_state = "drill"
|
||||||
|
hitsound = 'circsawhit.ogg'
|
||||||
flags = FPRINT | TABLEPASS | CONDUCT
|
flags = FPRINT | TABLEPASS | CONDUCT
|
||||||
force = 15.0
|
force = 15.0
|
||||||
w_class = 1.0
|
w_class = 1.0
|
||||||
@@ -1521,6 +1574,7 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove
|
|||||||
desc = "For heavy duty cutting."
|
desc = "For heavy duty cutting."
|
||||||
icon = 'surgery.dmi'
|
icon = 'surgery.dmi'
|
||||||
icon_state = "saw3"
|
icon_state = "saw3"
|
||||||
|
hitsound = 'circsawhit.ogg'
|
||||||
flags = FPRINT | TABLEPASS | CONDUCT
|
flags = FPRINT | TABLEPASS | CONDUCT
|
||||||
force = 15.0
|
force = 15.0
|
||||||
w_class = 1.0
|
w_class = 1.0
|
||||||
|
|||||||
@@ -838,6 +838,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
|||||||
var/list/names = list()
|
var/list/names = list()
|
||||||
var/list/creatures = list()
|
var/list/creatures = list()
|
||||||
var/list/namecounts = list()
|
var/list/namecounts = list()
|
||||||
|
|
||||||
for(var/mob/M in mobs)
|
for(var/mob/M in mobs)
|
||||||
var/name = M.name
|
var/name = M.name
|
||||||
if (name in names)
|
if (name in names)
|
||||||
@@ -846,13 +847,16 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
|||||||
else
|
else
|
||||||
names.Add(name)
|
names.Add(name)
|
||||||
namecounts[name] = 1
|
namecounts[name] = 1
|
||||||
|
|
||||||
if (M.real_name && M.real_name != M.name)
|
if (M.real_name && M.real_name != M.name)
|
||||||
name += " \[[M.original_name? M.original_name : M.real_name]\]"
|
name += " \[[M.original_name? M.original_name : M.real_name]\]"
|
||||||
|
|
||||||
if (M.stat == 2)
|
if (M.stat == 2)
|
||||||
if(istype(M, /mob/dead/observer/))
|
if(istype(M, /mob/dead/observer/))
|
||||||
name += " \[ghost\]"
|
name += " \[ghost\]"
|
||||||
else
|
else
|
||||||
name += " \[dead\]"
|
name += " \[dead\]"
|
||||||
|
|
||||||
creatures[name] = M
|
creatures[name] = M
|
||||||
|
|
||||||
return creatures
|
return creatures
|
||||||
|
|||||||
@@ -179,19 +179,16 @@ proc/countJob(rank)
|
|||||||
del(W)
|
del(W)
|
||||||
return equipped
|
return equipped
|
||||||
|
|
||||||
/proc/AutoUpdateAI(obj/subject)
|
/proc/AutoUpdateAI(obj/subject) // Needed for AI's to not have to click on every computer after every change.
|
||||||
/*
|
|
||||||
if (subject!=null)
|
if (subject!=null)
|
||||||
for(var/mob/living/silicon/ai/M in world)
|
for(var/mob/living/silicon/ai/M in world)
|
||||||
if ((M.client && M.machine == subject))
|
if ((M.client && M.machine == subject))
|
||||||
subject.attack_ai(M)
|
subject.attack_ai(M)
|
||||||
*/
|
|
||||||
|
|
||||||
/proc/AutoUpdateTK(obj/subject)
|
/proc/AutoUpdateTK(obj/subject) // Commented where used due to lag.
|
||||||
/* if (subject!=null)
|
if (subject!=null)
|
||||||
for(var/obj/item/tk_grab/T in world)
|
for(var/obj/item/tk_grab/T in world)
|
||||||
if (T.host)
|
if (T.host)
|
||||||
var/mob/M = T.host
|
var/mob/M = T.host
|
||||||
if(M.client && M.machine == subject)
|
if(M.client && M.machine == subject)
|
||||||
subject.attack_hand(M)
|
subject.attack_hand(M)
|
||||||
*/
|
|
||||||
|
|||||||
@@ -3,18 +3,24 @@
|
|||||||
Announce()
|
Announce()
|
||||||
|
|
||||||
for (var/obj/machinery/power/apc/temp_apc in world)
|
for (var/obj/machinery/power/apc/temp_apc in world)
|
||||||
|
if(istype(get_area(temp_apc), /area/security/prison))
|
||||||
|
temp_apc.overload_lighting()
|
||||||
if(istype(get_area(temp_apc), /area/security/brig))
|
if(istype(get_area(temp_apc), /area/security/brig))
|
||||||
temp_apc.overload_lighting()
|
temp_apc.overload_lighting()
|
||||||
// for (var/obj/machinery/computer/prison_shuttle/temp_shuttle in world)
|
// for (var/obj/machinery/computer/prison_shuttle/temp_shuttle in world)
|
||||||
// temp_shuttle.prison_break()
|
// temp_shuttle.prison_break()
|
||||||
for (var/obj/structure/closet/secure_closet/security/temp_closet in world)
|
for (var/obj/structure/closet/secure_closet/brig/temp_closet in world)
|
||||||
if(istype(get_area(temp_closet), /area/security/brig))
|
if(istype(get_area(temp_closet), /area/security/prison))
|
||||||
temp_closet.locked = 0
|
temp_closet.locked = 0
|
||||||
temp_closet.icon_state = temp_closet.icon_closed
|
temp_closet.icon_state = temp_closet.icon_closed
|
||||||
for (var/obj/machinery/door/airlock/security/temp_airlock in world)
|
for (var/obj/machinery/door/airlock/security/temp_airlock in world)
|
||||||
|
if(istype(get_area(temp_airlock), /area/security/prison))
|
||||||
|
temp_airlock.prison_open()
|
||||||
if(istype(get_area(temp_airlock), /area/security/brig))
|
if(istype(get_area(temp_airlock), /area/security/brig))
|
||||||
temp_airlock.prison_open()
|
temp_airlock.prison_open()
|
||||||
for (var/obj/machinery/door/airlock/glass/glass_security/temp_glassairlock in world)
|
for (var/obj/machinery/door/airlock/glass/glass_security/temp_glassairlock in world)
|
||||||
|
if(istype(get_area(temp_glassairlock), /area/security/prison))
|
||||||
|
temp_glassairlock.prison_open()
|
||||||
if(istype(get_area(temp_glassairlock), /area/security/brig))
|
if(istype(get_area(temp_glassairlock), /area/security/brig))
|
||||||
temp_glassairlock.prison_open()
|
temp_glassairlock.prison_open()
|
||||||
for (var/obj/machinery/door_timer/temp_timer in world)
|
for (var/obj/machinery/door_timer/temp_timer in world)
|
||||||
|
|||||||
@@ -403,7 +403,7 @@
|
|||||||
del(usr)
|
del(usr)
|
||||||
return
|
return
|
||||||
|
|
||||||
/*
|
|
||||||
/client/proc/changeling_greater_form() // Oh shit, it's on now.
|
/client/proc/changeling_greater_form() // Oh shit, it's on now.
|
||||||
|
|
||||||
set category = "Changeling"
|
set category = "Changeling"
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
flick("h2monkey", animation)
|
flick("h2monkey", animation)
|
||||||
sleep(48)
|
sleep(48)
|
||||||
//animation = null
|
//animation = null
|
||||||
var/mob/living/carbon/human/tajaran/Emissary/O = new /mob/living/carbon/human/tajaran/Emissary( src )
|
var/mob/living/carbon/human/O = new /mob/living/carbon/human( src )//Removed Emissary shit -Sieve{R}
|
||||||
del(animation)
|
del(animation)
|
||||||
|
|
||||||
O.real_name = usr.real_name
|
O.real_name = usr.real_name
|
||||||
@@ -495,7 +495,7 @@
|
|||||||
new_objective.owner = O.mind
|
new_objective.owner = O.mind
|
||||||
O.mind.objectives += new_objective
|
O.mind.objectives += new_objective
|
||||||
|
|
||||||
spawn(0)
|
/* spawn(0)
|
||||||
while(emergency_shuttle.online == 0)
|
while(emergency_shuttle.online == 0)
|
||||||
sleep(10)
|
sleep(10)
|
||||||
command_alert("Authorization codes recieved, confirming hostile entity terminated. The emergancy shuttle is now departing.")
|
command_alert("Authorization codes recieved, confirming hostile entity terminated. The emergancy shuttle is now departing.")
|
||||||
@@ -512,8 +512,8 @@
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
if((locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/shuttle/escape/centcom)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/evac)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/control) ) )
|
if((locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/shuttle/escape/centcom)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/evac)) || (locate(/mob/living/carbon/human/tajaran/Emissary) in locate(/area/centcom/control) ) )
|
||||||
command_alert("What the fu- Shoot it! SHOOT IT! CENTRAL COMMAND TRANSMITTING DIST- *static* Nevermind previous transmission, Nanotrasen. We're all good here. Subject contained. Standing down alert status.")
|
command_alert("What the fu- Shoot it! SHOOT IT! CENTRAL COMMAND TRANSMITTING DIST- *static* Nevermind previous transmission, Nanotrasen. We're all good here. Subject contained. Standing down alert status.")
|
||||||
|
Tarjan shit, not recoding this -Sieve{R}*/
|
||||||
|
|
||||||
*/
|
|
||||||
/client/proc/changeling_fakedeath()
|
/client/proc/changeling_fakedeath()
|
||||||
set category = "Changeling"
|
set category = "Changeling"
|
||||||
set name = "Regenerative Stasis (20)"
|
set name = "Regenerative Stasis (20)"
|
||||||
|
|||||||
@@ -41,14 +41,14 @@ var/list/obj/effect/proc_holder/power/powerinstances = list()
|
|||||||
verbpath = /client/proc/changeling_lesser_form
|
verbpath = /client/proc/changeling_lesser_form
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
/obj/effect/proc_holder/power/changeling_greater_form
|
/obj/effect/proc_holder/power/changeling_greater_form
|
||||||
name = "Greater Form"
|
name = "Greater Form"
|
||||||
desc = "We become the pinnicle of evolution. We will show the humans what happens when they leave their isle of ignorance."
|
desc = "We become the pinnicle of evolution. We will show the humans what happens when they leave their isle of ignorance."
|
||||||
genomecost = 250
|
genomecost = 250
|
||||||
|
|
||||||
// verbpath = /client/proc/changeling_greater_form
|
verbpath = /client/proc/changeling_greater_form
|
||||||
|
*/
|
||||||
/obj/effect/proc_holder/power/fakedeath
|
/obj/effect/proc_holder/power/fakedeath
|
||||||
name = "Fake Death"
|
name = "Fake Death"
|
||||||
desc = "We fake our death while we heal."
|
desc = "We fake our death while we heal."
|
||||||
@@ -92,7 +92,7 @@ var/list/obj/effect/proc_holder/power/powerinstances = list()
|
|||||||
/obj/effect/proc_holder/power/silence_sting
|
/obj/effect/proc_holder/power/silence_sting
|
||||||
name = "Silence Sting"
|
name = "Silence Sting"
|
||||||
desc = "We silently sting a human, completely silencing them for a short time."
|
desc = "We silently sting a human, completely silencing them for a short time."
|
||||||
helptext = "Does not provide a warning to a victim that they've been stung, until they try to speak and can't." // Man, fuck javascript. ' == '
|
helptext = "Does not provide a warning to a victim that they have been stung, until they try to speak and can not."
|
||||||
genomecost = 2
|
genomecost = 2
|
||||||
allowduringlesserform = 1
|
allowduringlesserform = 1
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@ var/list/obj/effect/proc_holder/power/powerinstances = list()
|
|||||||
/obj/effect/proc_holder/power/LSDSting
|
/obj/effect/proc_holder/power/LSDSting
|
||||||
name = "Hallucination Sting"
|
name = "Hallucination Sting"
|
||||||
desc = "We evolve the ability to sting a target with a powerful hallunicationary chemical."
|
desc = "We evolve the ability to sting a target with a powerful hallunicationary chemical."
|
||||||
helptext = "The target does not notice they've been stung. The effect occurs after 30 to 60 seconds."
|
helptext = "The target does not notice they have been stung. The effect occurs after 30 to 60 seconds."
|
||||||
genomecost = 3
|
genomecost = 3
|
||||||
|
|
||||||
verbpath = /client/proc/changeling_lsdsting
|
verbpath = /client/proc/changeling_lsdsting
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ Stealth and Camouflage Items;
|
|||||||
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
|
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
|
||||||
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
|
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
|
||||||
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
|
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
|
||||||
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
|
|
||||||
/obj/item/device/chameleon:4:Chameleon-Projector;
|
/obj/item/device/chameleon:4:Chameleon-Projector;
|
||||||
/obj/item/weapon/stamperaser:1:Stamp Remover and Forger;
|
/obj/item/weapon/stamperaser:1:Stamp Remover and Forger;
|
||||||
Whitespace:Seperator;
|
Whitespace:Seperator;
|
||||||
@@ -56,11 +55,12 @@ Devices and Tools;
|
|||||||
/obj/item/device/encryptionkey/traitor:3:Traitor Radio Key;
|
/obj/item/device/encryptionkey/traitor:3:Traitor Radio Key;
|
||||||
/obj/item/device/encryptionkey/binary:3:Binary Translator Key;
|
/obj/item/device/encryptionkey/binary:3:Binary Translator Key;
|
||||||
/obj/item/weapon/storage/syndie_kit/space:3:Space Suit;
|
/obj/item/weapon/storage/syndie_kit/space:3:Space Suit;
|
||||||
|
/obj/item/clothing/glasses/thermal:3:Thermal Imaging Glasses;
|
||||||
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
|
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
|
||||||
/obj/item/weapon/plastique:2:C-4 (Destroys walls);
|
/obj/item/weapon/plastique:2:C-4 (Destroys walls);
|
||||||
/obj/item/weapon/syndie/c4explosive:4:Low Power Explosive Charge, with Detonator;
|
/obj/item/weapon/syndie/c4explosive:4:Low Power Explosive Charge, with Detonator;
|
||||||
/obj/item/device/powersink:5:Powersink (DANGER!);
|
/obj/item/device/powersink:5:Powersink (DANGER!);
|
||||||
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
|
/obj/item/device/radio/beacon/syndicate:7:Singularity Beacon (DANGER!);
|
||||||
/obj/item/weapon/circuitboard/teleporter:10:Teleporter Circuit Board;
|
/obj/item/weapon/circuitboard/teleporter:10:Teleporter Circuit Board;
|
||||||
Whitespace:Seperator;
|
Whitespace:Seperator;
|
||||||
Implants;
|
Implants;
|
||||||
@@ -70,8 +70,7 @@ Implants;
|
|||||||
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
|
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
|
||||||
Whitespace:Seperator;
|
Whitespace:Seperator;
|
||||||
Badassery;
|
Badassery;
|
||||||
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);
|
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
|
||||||
Whitespace:Seperator;"}
|
|
||||||
|
|
||||||
// Items removed from above:
|
// Items removed from above:
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
traitor.objectives += block_objective
|
traitor.objectives += block_objective
|
||||||
|
|
||||||
else
|
else
|
||||||
for(var/datum/objective/o in SelectObjectives((traitor.current:wear_id ? traitor.current:wear_id:assignment : traitor.assigned_role), traitor))
|
for(var/datum/objective/o in SelectObjectives((istype(traitor.current:wear_id, /obj/item/weapon/card/id) ? traitor.current:wear_id:assignment : traitor.assigned_role), traitor))
|
||||||
o.owner = traitor
|
o.owner = traitor
|
||||||
traitor.objectives += o
|
traitor.objectives += o
|
||||||
return
|
return
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
if (!R && traitor_mob.w_uniform && istype(traitor_mob.belt, /obj/item/device/radio))
|
if (!R && traitor_mob.w_uniform && istype(traitor_mob.belt, /obj/item/device/radio))
|
||||||
R = traitor_mob.belt
|
R = traitor_mob.belt
|
||||||
loc = "on your belt"
|
loc = "on your belt"
|
||||||
if (!R && istype(traitor_mob.l_ear, /obj/item/device/radio) || prob(10))
|
if (!R && istype(traitor_mob.l_ear, /obj/item/device/radio))
|
||||||
R = traitor_mob.l_ear
|
R = traitor_mob.l_ear
|
||||||
loc = "on your head"
|
loc = "on your head"
|
||||||
if (!R && istype(traitor_mob.r_ear, /obj/item/device/radio))
|
if (!R && istype(traitor_mob.r_ear, /obj/item/device/radio))
|
||||||
|
|||||||
@@ -82,28 +82,29 @@
|
|||||||
|
|
||||||
/obj/var/list/req_access = null
|
/obj/var/list/req_access = null
|
||||||
/obj/var/req_access_txt = "0"
|
/obj/var/req_access_txt = "0"
|
||||||
/obj/var/list/req_one_access = null
|
|
||||||
/obj/var/req_one_access_txt = "0"
|
/obj/var/list/req_combined_access = null
|
||||||
|
/obj/var/req_combined_access_txt = "0"
|
||||||
|
|
||||||
/obj/New()
|
/obj/New()
|
||||||
//NOTE: If a room requires more than one access (IE: Morgue + medbay) set the req_acesss_txt to "5;6" if it requires 5 and 6
|
//NOTE: If a room requires more than one access (IE: Morgue + medbay) set the req_acesss_txt to "5;6" if it requires 5 and 6
|
||||||
if(src.req_access_txt)
|
if(req_access_txt)
|
||||||
var/list/req_access_str = dd_text2list(req_access_txt,";")
|
var/list/req_access_str = dd_text2list(req_access_txt,";")
|
||||||
if(!req_access)
|
if(!req_access)
|
||||||
req_access = list()
|
req_access = list()
|
||||||
for(var/x in req_access_str)
|
for(var/x in req_access_str)
|
||||||
var/n = text2num(x)
|
var/n = text2num(x)
|
||||||
if(n)
|
if(n)
|
||||||
req_access += n
|
req_access |= n
|
||||||
|
|
||||||
if(src.req_one_access_txt)
|
if(req_combined_access_txt)
|
||||||
var/list/req_one_access_str = dd_text2list(req_one_access_txt,";")
|
var/list/req_access_str = dd_text2list(req_combined_access_txt,";")
|
||||||
if(!req_one_access)
|
if(!req_combined_access)
|
||||||
req_one_access = list()
|
req_combined_access = list()
|
||||||
for(var/x in req_one_access_str)
|
for(var/x in req_access_str)
|
||||||
var/n = text2num(x)
|
var/n = text2num(x)
|
||||||
if(n)
|
if(n)
|
||||||
req_one_access += n
|
req_combined_access |= n
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -133,40 +134,47 @@
|
|||||||
var/obj/item/device/pda/pda = I
|
var/obj/item/device/pda/pda = I
|
||||||
I = pda.id
|
I = pda.id
|
||||||
|
|
||||||
if(!src.req_access && !src.req_one_access) //no requirements
|
if(!req_access) //no requirements
|
||||||
return 1
|
return 1
|
||||||
if(!istype(src.req_access, /list)) //something's very wrong
|
if(!istype(req_access, /list)) //something's very wrong
|
||||||
return 1
|
return 1
|
||||||
|
if(!req_access.len) //no requirements
|
||||||
var/list/L = src.req_access
|
if(!req_combined_access || !islist(req_combined_access) || !req_combined_access.len)
|
||||||
if(!L.len && (!src.req_one_access || !src.req_one_access.len)) //no requirements
|
|
||||||
return 1
|
return 1
|
||||||
if(!I || !istype(I, /obj/item/weapon/card/id) || !I.access) //not ID or no access
|
if(!I || !istype(I, /obj/item/weapon/card/id) || !I.access) //not ID or no access
|
||||||
return 0
|
return 0
|
||||||
if(src.req_one_access && src.req_one_access.len)
|
for(var/req in req_access)
|
||||||
for(var/req in src.req_one_access)
|
|
||||||
if(req in I.access) //has an access from the single access list
|
if(req in I.access) //has an access from the single access list
|
||||||
return 1
|
return 1
|
||||||
for(var/req in src.req_access)
|
if(req_combined_access && req_combined_access.len)
|
||||||
if(!(req in I.access)) //doesn't have this access - Leave like this DMTG
|
for(var/req in req_combined_access)
|
||||||
|
if(!req in I.access)
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/obj/proc/check_access_list(var/list/L)
|
/obj/proc/check_access_list(var/list/L)
|
||||||
if(!src.req_access && !src.req_one_access) return 1
|
if(!req_access)
|
||||||
if(!istype(src.req_access, /list)) return 1
|
return 1
|
||||||
if(!src.req_access.len && (!src.req_one_access || !src.req_one_access.len)) return 1
|
if(!istype(req_access, /list))
|
||||||
if(!L) return 0
|
return 1
|
||||||
if(!istype(L, /list)) return 0
|
if(!req_access.len)
|
||||||
if(src.req_one_access && src.req_one_access.len)
|
if(!req_combined_access || !islist(req_combined_access) || !req_combined_access.len)
|
||||||
for(var/req in src.req_one_access)
|
return 1
|
||||||
|
if(!L)
|
||||||
|
return 0
|
||||||
|
if(!istype(L, /list))
|
||||||
|
return 0
|
||||||
|
for(var/req in req_access)
|
||||||
if(req in L) //has an access from the single access list
|
if(req in L) //has an access from the single access list
|
||||||
return 1
|
return 1
|
||||||
for(var/req in src.req_access)
|
if(req_combined_access && req_combined_access.len)
|
||||||
if(!(req in L)) //doesn't have this access - Leave like this DMTG
|
for(var/req in req_combined_access)
|
||||||
|
if(!req in L)
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/proc/get_access(job)
|
/proc/get_access(job)
|
||||||
@@ -207,9 +215,9 @@
|
|||||||
access_tox, access_tox_storage, access_chemistry, access_medical, access_genetics, access_engine,
|
access_tox, access_tox_storage, access_chemistry, access_medical, access_genetics, access_engine,
|
||||||
access_emergency_storage, access_change_ids, access_ai_upload, access_eva, access_heads,
|
access_emergency_storage, access_change_ids, access_ai_upload, access_eva, access_heads,
|
||||||
access_all_personal_lockers, access_tech_storage, access_maint_tunnels, access_bar, access_janitor,
|
access_all_personal_lockers, access_tech_storage, access_maint_tunnels, access_bar, access_janitor,
|
||||||
access_crematorium, access_kitchen, access_robotics, access_cargo, access_cargo_bot, access_hydroponics, access_lawyer,
|
access_crematorium, access_kitchen, access_robotics, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer,
|
||||||
access_theatre, access_research, access_mining, access_heads_vault, access_mining_station,
|
access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
|
||||||
access_hop, access_RC_announce, access_keycard_auth)
|
access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth)
|
||||||
if("Atmospheric Technician")
|
if("Atmospheric Technician")
|
||||||
return list(access_atmospherics, access_maint_tunnels, access_emergency_storage)
|
return list(access_atmospherics, access_maint_tunnels, access_emergency_storage)
|
||||||
if("Bartender")
|
if("Bartender")
|
||||||
@@ -231,7 +239,7 @@
|
|||||||
if("Shaft Miner")
|
if("Shaft Miner")
|
||||||
return list(access_mining, access_mint, access_mining_station)
|
return list(access_mining, access_mint, access_mining_station)
|
||||||
if("Quartermaster")
|
if("Quartermaster")
|
||||||
return list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining)
|
return list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station)
|
||||||
if("Chief Engineer")
|
if("Chief Engineer")
|
||||||
return list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
|
return list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
|
||||||
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
|
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
equip(var/mob/living/carbon/human/H)
|
equip(var/mob/living/carbon/human/H)
|
||||||
if(!H) return 0
|
if(!H) return 0
|
||||||
H.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(H), H.slot_ears)
|
H.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(H), H.slot_ears)
|
||||||
H.equip_if_possible(new /obj/item/clothing/under/rank/cargo(H), H.slot_w_uniform)
|
H.equip_if_possible(new /obj/item/clothing/under/rank/cargotech(H), H.slot_w_uniform)
|
||||||
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
||||||
H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
|
H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
|
||||||
return 1
|
return 1
|
||||||
@@ -146,6 +146,7 @@
|
|||||||
if(H.backbag == 2) H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back)
|
if(H.backbag == 2) H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back)
|
||||||
if(H.backbag == 3) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel(H), H.slot_back)
|
if(H.backbag == 3) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel(H), H.slot_back)
|
||||||
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_eng(H), H.slot_back)
|
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_eng(H), H.slot_back)
|
||||||
|
H.equip_if_possible(new /obj/item/device/pda/shaftminer(H), H.slot_belt)
|
||||||
H.equip_if_possible(new /obj/item/clothing/under/rank/miner(H), H.slot_w_uniform)
|
H.equip_if_possible(new /obj/item/clothing/under/rank/miner(H), H.slot_w_uniform)
|
||||||
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
||||||
if(H.backbag == 1)
|
if(H.backbag == 1)
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_norm(H), H.slot_back)
|
if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_norm(H), H.slot_back)
|
||||||
H.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(H), H.slot_w_uniform)
|
H.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(H), H.slot_w_uniform)
|
||||||
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
||||||
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
|
H.equip_if_possible(new /obj/item/device/pda/roboticist(H), H.slot_belt)
|
||||||
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit)
|
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit)
|
||||||
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
|
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
|
||||||
H.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(H), H.slot_l_hand)
|
H.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(H), H.slot_l_hand)
|
||||||
|
|||||||
@@ -93,7 +93,7 @@
|
|||||||
faction = "Station"
|
faction = "Station"
|
||||||
total_positions = 1
|
total_positions = 1
|
||||||
spawn_positions = 1
|
spawn_positions = 1
|
||||||
supervisors = "the chief medical officer"
|
supervisors = "the chief medical officer and research director"
|
||||||
selection_color = "#ffeef0"
|
selection_color = "#ffeef0"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -304,6 +304,11 @@ var/global/datum/controller/occupations/job_master
|
|||||||
C.assignment = title
|
C.assignment = title
|
||||||
C.name = "[C.registered_name]'s ID Card ([C.assignment])"
|
C.name = "[C.registered_name]'s ID Card ([C.assignment])"
|
||||||
C.access = get_access(rank)
|
C.access = get_access(rank)
|
||||||
|
C.pin = rand(1000,9999)
|
||||||
|
C.money = 10 * rand(50,200)
|
||||||
|
H << "<b>\blue Your station account has [C.money] credits. The pin-code is [C.pin].</b>"
|
||||||
|
if(H.mind)
|
||||||
|
H.mind.memory += "Your pin-code is - [C.pin]<br>"
|
||||||
H.equip_if_possible(C, H.slot_wear_id)
|
H.equip_if_possible(C, H.slot_wear_id)
|
||||||
if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store))
|
if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store))
|
||||||
H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_ears)
|
H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_ears)
|
||||||
|
|||||||
@@ -175,7 +175,10 @@ obj/machinery/access_button
|
|||||||
icon_state = "access_button_off"
|
icon_state = "access_button_off"
|
||||||
|
|
||||||
attack_hand(mob/user)
|
attack_hand(mob/user)
|
||||||
if(radio_connection)
|
if(!allowed(user))
|
||||||
|
user << "\red Access Denied"
|
||||||
|
|
||||||
|
else if(radio_connection)
|
||||||
var/datum/signal/signal = new
|
var/datum/signal/signal = new
|
||||||
signal.transmission_method = 1 //radio signal
|
signal.transmission_method = 1 //radio signal
|
||||||
signal.data["tag"] = master_tag
|
signal.data["tag"] = master_tag
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ var/global/list/autolathe_recipes = list( \
|
|||||||
new /obj/item/weapon/kitchenknife(), \
|
new /obj/item/weapon/kitchenknife(), \
|
||||||
new /obj/item/weapon/scalpel(), \
|
new /obj/item/weapon/scalpel(), \
|
||||||
new /obj/item/weapon/circular_saw(), \
|
new /obj/item/weapon/circular_saw(), \
|
||||||
|
new /obj/item/weapon/reagent_containers/glass/beaker(), \
|
||||||
|
new /obj/item/weapon/reagent_containers/glass/large(), \
|
||||||
new /obj/item/ammo_casing/shotgun/blank(), \
|
new /obj/item/ammo_casing/shotgun/blank(), \
|
||||||
new /obj/item/ammo_casing/shotgun/beanbag(), \
|
new /obj/item/ammo_casing/shotgun/beanbag(), \
|
||||||
new /obj/item/ammo_magazine/c38(), \
|
new /obj/item/ammo_magazine/c38(), \
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
var/active = 0
|
var/active = 0
|
||||||
var/list/holographic_items = list()
|
var/list/holographic_items = list()
|
||||||
var/damaged = 0
|
var/damaged = 0
|
||||||
|
var/last_change = 0
|
||||||
|
var/safety = 1
|
||||||
|
|
||||||
attack_ai(var/mob/user as mob)
|
attack_ai(var/mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
@@ -34,7 +35,11 @@
|
|||||||
|
|
||||||
dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.<BR>"
|
dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.<BR>"
|
||||||
|
|
||||||
if(emagged)
|
if(!safety)
|
||||||
|
if(issilicon(user) && (emagged))
|
||||||
|
dat += "<font color=red>ERROR: SAFETY PROTOCOLS UNRESPONSIVE</font><BR>"
|
||||||
|
else if(issilicon(user) && (!emagged))
|
||||||
|
dat += "<A href='?src=\ref[src];AIrelock=1'>(<font color=red>Enable Safety Protocols?</font>)</A><BR>"
|
||||||
dat += "<A href='?src=\ref[src];burntest=1'>(<font color=red>Begin Atmospheric Burn Simulation</font>)</A><BR>"
|
dat += "<A href='?src=\ref[src];burntest=1'>(<font color=red>Begin Atmospheric Burn Simulation</font>)</A><BR>"
|
||||||
dat += "Ensure the holodeck is empty before testing.<BR>"
|
dat += "Ensure the holodeck is empty before testing.<BR>"
|
||||||
dat += "<BR>"
|
dat += "<BR>"
|
||||||
@@ -42,12 +47,11 @@
|
|||||||
dat += "Ensure the holodeck is empty before testing.<BR>"
|
dat += "Ensure the holodeck is empty before testing.<BR>"
|
||||||
dat += "<BR>"
|
dat += "<BR>"
|
||||||
dat += "Safety Protocols are <font color=red> DISABLED </font><BR>"
|
dat += "Safety Protocols are <font color=red> DISABLED </font><BR>"
|
||||||
else
|
else if(safety)
|
||||||
if(issilicon(user))
|
if(issilicon(user))
|
||||||
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=red>Override Safety Protocols?</font>)</A><BR>"
|
dat += "<A href='?src=\ref[src];AIoverride=1'>(<font color=red>Disable Safety Protocols?</font>)</A><BR>"
|
||||||
dat += "<BR>"
|
dat += "<BR>"
|
||||||
dat += "Safety Protocols are <font color=green> ENABLED </font><BR>"
|
dat += "Safety Protocols are <font color=green> ENABLED </font><BR>"
|
||||||
|
|
||||||
user << browse(dat, "window=computer;size=400x500")
|
user << browse(dat, "window=computer;size=400x500")
|
||||||
onclose(user, "computer")
|
onclose(user, "computer")
|
||||||
|
|
||||||
@@ -100,7 +104,13 @@
|
|||||||
|
|
||||||
else if(href_list["AIoverride"])
|
else if(href_list["AIoverride"])
|
||||||
if(!issilicon(usr)) return
|
if(!issilicon(usr)) return
|
||||||
emagged = 1
|
safety = 0
|
||||||
|
log_admin("[usr] ([usr.ckey]) disabled Holodeck Safeties.")
|
||||||
|
message_admins("[usr] ([usr.ckey]) disabled Holodeck Safeties.")
|
||||||
|
|
||||||
|
else if(href_list["AIrelock"])
|
||||||
|
if(!issilicon(usr)) return
|
||||||
|
safety = 1
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
@@ -140,8 +150,11 @@
|
|||||||
if(istype(D, /obj/item/weapon/card/emag) && !emagged)
|
if(istype(D, /obj/item/weapon/card/emag) && !emagged)
|
||||||
playsound(src.loc, 'sparks4.ogg', 75, 1)
|
playsound(src.loc, 'sparks4.ogg', 75, 1)
|
||||||
emagged = 1
|
emagged = 1
|
||||||
|
safety = 0
|
||||||
user << "\blue You vastly increase projector power and override the safety and security protocols."
|
user << "\blue You vastly increase projector power and override the safety and security protocols."
|
||||||
user << "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintence and do not use the simulator."
|
user << "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintence and do not use the simulator."
|
||||||
|
log_admin("[user] ([user.ckey]) emagged Holodeck Safeties.")
|
||||||
|
message_admins("[user] ([user.ckey]) emagged Holodeck Safeties.")
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -233,6 +246,15 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
|
/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
|
||||||
|
|
||||||
|
if(world.time < (last_change + 25))
|
||||||
|
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
|
||||||
|
return
|
||||||
|
for(var/mob/M in range(3,src))
|
||||||
|
M.show_message("\b ERROR. Recalibrating projetion apparatus.")
|
||||||
|
last_change = world.time
|
||||||
|
return
|
||||||
|
|
||||||
|
last_change = world.time
|
||||||
active = 1
|
active = 1
|
||||||
|
|
||||||
for(var/item in holographic_items)
|
for(var/item in holographic_items)
|
||||||
@@ -330,7 +352,64 @@
|
|||||||
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
||||||
var/obj/item/weapon/grab/G = W
|
var/obj/item/weapon/grab/G = W
|
||||||
if(G.state<2)
|
if(G.state<2)
|
||||||
user << "\red You need a better grip to do that!"
|
if(ishuman(G.affecting))
|
||||||
|
var/mob/living/carbon/human/H = G.affecting
|
||||||
|
var/datum/organ/external/affecting = H.get_organ("head")
|
||||||
|
//Fucking hacky, but whatever.
|
||||||
|
var/obj/machinery/computer/HolodeckControl/HC = locate() in world
|
||||||
|
if(istype(HC) && HC.safety) //If the computer exists, and the safety is active...
|
||||||
|
if(prob(25))
|
||||||
|
add_blood(G.affecting)
|
||||||
|
H.halloss += rand(10, 15)
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src] with enough force to engage \the [src]'s safeties!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src] with enough force to engage \the [src]'s safeties!",\
|
||||||
|
"\red You hear a whine as \the [src]'s engage.")
|
||||||
|
else
|
||||||
|
H.halloss += rand(5, 10)
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You hear a whine as \the [src]'s is hit by something dense.")
|
||||||
|
H.UpdateDamageIcon()
|
||||||
|
H.updatehealth()
|
||||||
|
playsound(src.loc, 'tablehit1.ogg', 50, 1, -3)
|
||||||
|
else //Lets do REAL DAMAGE, YEAH!
|
||||||
|
G.affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been smashed on a table by [G.assailant.name] ([G.assailant.ckey])</font>")
|
||||||
|
G.assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Smashed [G.affecting.name] ([G.affecting.ckey]) on a table.</font>")
|
||||||
|
|
||||||
|
log_admin("ATTACK: [G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.")
|
||||||
|
message_admins("ATTACK: [G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.")
|
||||||
|
log_attack("<font color='red'>[G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.</font>")
|
||||||
|
if(prob(25))
|
||||||
|
add_blood(G.affecting)
|
||||||
|
affecting.take_damage(rand(10,15), 0)
|
||||||
|
H.Weaken(2)
|
||||||
|
if(prob(20)) // One chance in 20 to DENT THE TABLE
|
||||||
|
affecting.take_damage(rand(0,5), 0) //Extra damage
|
||||||
|
if(dented)
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src] with enough force to further deform \the [src]!\nYou wish you could unhear that sound.",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src] with enough force to leave another dent!\n[prob(50)?"That was a satisfying noise." : "That sound will haunt your nightmares"]",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the squeal of said metal deforming.")
|
||||||
|
else
|
||||||
|
dented = 1
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src] so hard it left a dent!\nYou wish you could unhear that sound.",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src] with enough force to leave a dent!\n[prob(5)?"That was a satisfying noise." : "That sound will haunt your nightmares"]",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the squeal of said metal deforming.")
|
||||||
|
else if(prob(50))
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] bone and cartilage making a loud crunch!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] bone and cartilage making a loud crunch!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal, the noise echoing through the room.")
|
||||||
|
else
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] nose smashed and face bloodied!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] nose smashed and face bloodied!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the gurgling gasp of someone who is trying to breathe through their own blood.")
|
||||||
|
else
|
||||||
|
affecting.take_damage(rand(5,10), 0)
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal.")
|
||||||
|
H.UpdateDamageIcon()
|
||||||
|
H.updatehealth()
|
||||||
|
playsound(src.loc, 'tablehit1.ogg', 50, 1, -3)
|
||||||
return
|
return
|
||||||
G.affecting.loc = src.loc
|
G.affecting.loc = src.loc
|
||||||
G.affecting.Weaken(5)
|
G.affecting.Weaken(5)
|
||||||
|
|||||||
@@ -42,20 +42,34 @@
|
|||||||
dat += "<A HREF='?src=\ref[user];mach_close=op'>Close</A><br><br>" //| <A HREF='?src=\ref[user];update=1'>Update</A>"
|
dat += "<A HREF='?src=\ref[user];mach_close=op'>Close</A><br><br>" //| <A HREF='?src=\ref[user];update=1'>Update</A>"
|
||||||
if(src.table && (src.table.check_victim()))
|
if(src.table && (src.table.check_victim()))
|
||||||
src.victim = src.table.victim
|
src.victim = src.table.victim
|
||||||
|
if(istype(victim))
|
||||||
dat += {"
|
dat += {"
|
||||||
<B>Patient Information:</B><BR>
|
<B>Patient Information:</B><BR>
|
||||||
<BR>
|
<BR>
|
||||||
<B>Name:</B> [src.victim.real_name]<BR>
|
<B>Name:</B> [src.victim.real_name]<BR>
|
||||||
<B>Age:</B> [src.victim.age]<BR>
|
<B>Age:</B> [src.victim.age]<BR>
|
||||||
<B>Blood Type:</B> [src.victim.dna.b_type]<BR>
|
<B>Blood Type:</B> [(victim.dna? victim.dna.b_type : "ERROR")]<BR>
|
||||||
<BR>
|
<BR>
|
||||||
<B>Health:</B> [src.victim.health]<BR>
|
<B>Health:</B> [src.victim.health]<BR>
|
||||||
<B>Brute Damage:</B> [src.victim.getBruteLoss()]<BR>
|
<B>Brute Damage:</B> [src.victim.getBruteLoss()]<BR>
|
||||||
<B>Toxins Damage:</B> [src.victim.getToxLoss()]<BR>
|
<B>Toxins Damage:</B> [src.victim.getToxLoss()]<BR>
|
||||||
<B>Fire Damage:</B> [src.victim.getFireLoss()]<BR>
|
<B>Fire Damage:</B> [src.victim.getFireLoss()]<BR>
|
||||||
<B>Suffocation Damage:</B> [src.victim.getOxyLoss()]<BR>
|
<B>Suffocation Damage:</B> [src.victim.getOxyLoss()]<BR>
|
||||||
<B>Patient Status:</B> [src.victim.stat ? "Non-Responsive" : "Stable"]<BR>
|
<B>Patient Status:</B> [src.victim.stat ? "Non-Responsive" : "Stable"]<BR>
|
||||||
"}
|
"}
|
||||||
|
else if(istype(victim, /mob/living))
|
||||||
|
dat += {"
|
||||||
|
<B>Patient Information:</B><BR>
|
||||||
|
<BR>
|
||||||
|
<B>Name:</B> [src.victim.real_name]<BR>
|
||||||
|
<B>Age:</B> [src.victim.age]<BR>
|
||||||
|
<B>Health:</B> [src.victim.health]<BR>
|
||||||
|
<B>Brute Damage:</B> [src.victim.getBruteLoss()]<BR>
|
||||||
|
<B>Toxins Damage:</B> [src.victim.getToxLoss()]<BR>
|
||||||
|
<B>Fire Damage:</B> [src.victim.getFireLoss()]<BR>
|
||||||
|
<B>Suffocation Damage:</B> [src.victim.getOxyLoss()]<BR>
|
||||||
|
<B>Patient Status:</B> [src.victim.stat ? "Non-Responsive" : "Stable"]<BR>
|
||||||
|
"}
|
||||||
else
|
else
|
||||||
src.victim = null
|
src.victim = null
|
||||||
dat += {"
|
dat += {"
|
||||||
|
|||||||
@@ -257,7 +257,7 @@
|
|||||||
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
|
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
|
||||||
var/obj/item/weapon/circuitboard/B = P
|
var/obj/item/weapon/circuitboard/B = P
|
||||||
if(B.board_type == "computer")
|
if(B.board_type == "computer")
|
||||||
if(B.build_path != "")
|
if(B.build_path != "" && !isnull(B.build_path))
|
||||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
user << "\blue You place the circuit board inside the frame."
|
user << "\blue You place the circuit board inside the frame."
|
||||||
src.icon_state = "1"
|
src.icon_state = "1"
|
||||||
@@ -324,7 +324,8 @@
|
|||||||
if(istype(P, /obj/item/weapon/screwdriver))
|
if(istype(P, /obj/item/weapon/screwdriver))
|
||||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
||||||
user << "\blue You connect the monitor."
|
user << "\blue You connect the monitor."
|
||||||
var/B = new src.circuit.build_path ( src.loc )
|
if(circuit && circuit.build_path)
|
||||||
|
var/B = new circuit.build_path (loc)
|
||||||
if(circuit.powernet) B:powernet = circuit.powernet
|
if(circuit.powernet) B:powernet = circuit.powernet
|
||||||
if(circuit.id) B:id = circuit.id
|
if(circuit.id) B:id = circuit.id
|
||||||
if(circuit.records) B:records = circuit.records
|
if(circuit.records) B:records = circuit.records
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
if (I && istype(I))
|
if (I && istype(I))
|
||||||
if(src.check_access(I))
|
if(src.check_access(I))
|
||||||
authenticated = 1
|
authenticated = 1
|
||||||
if(20 in I.access)
|
if((access_hop in I.access) || (access_captain in I.access))
|
||||||
authenticated = 2
|
authenticated = 2
|
||||||
if("logout")
|
if("logout")
|
||||||
authenticated = 0
|
authenticated = 0
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
var/obj/item/device/pda/pda = I
|
var/obj/item/device/pda/pda = I
|
||||||
I = pda.id
|
I = pda.id
|
||||||
if (I && istype(I))
|
if (I && istype(I))
|
||||||
if(access_captain in I.access)
|
if((access_hop in I.access) || (access_captain in I.access))
|
||||||
var/old_level = security_level
|
var/old_level = security_level
|
||||||
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
|
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
|
||||||
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
|
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
//only load blast doors for map-defined departments for the moment
|
//only load blast doors for map-defined departments for the moment
|
||||||
switch(department)
|
switch(department)
|
||||||
if("SinguloEngineering-Antiqua")
|
if("Engineering")
|
||||||
connectedDoorIds.Add("Engineering Primary Access")
|
connectedDoorIds.Add("Engineering Primary Access")
|
||||||
connectedDoorIds.Add("Engineering Secondary Access")
|
connectedDoorIds.Add("Engineering Secondary Access")
|
||||||
connectedDoorIds.Add("Fore Maintenance Access")
|
connectedDoorIds.Add("Fore Maintenance Access")
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
connectedDoorIds.Add("Central aft shell access")
|
connectedDoorIds.Add("Central aft shell access")
|
||||||
connectedDoorIds.Add("Port aft shell access")
|
connectedDoorIds.Add("Port aft shell access")
|
||||||
connectedDoorIds.Add("Starboard aft shell access")
|
connectedDoorIds.Add("Starboard aft shell access")
|
||||||
if("Medbay-Exodus")
|
if("Medbay")
|
||||||
connectedDoorIds.Add("Genetics Outer Shutters")
|
connectedDoorIds.Add("Genetics Outer Shutters")
|
||||||
connectedDoorIds.Add("Genetics Inner Shutters")
|
connectedDoorIds.Add("Genetics Inner Shutters")
|
||||||
connectedDoorIds.Add("Chemistry Outer Shutters")
|
connectedDoorIds.Add("Chemistry Outer Shutters")
|
||||||
|
|||||||
@@ -86,6 +86,8 @@
|
|||||||
background = "'background-color:#CD853F;'"
|
background = "'background-color:#CD853F;'"
|
||||||
if("Released")
|
if("Released")
|
||||||
background = "'background-color:#3BB9FF;'"
|
background = "'background-color:#3BB9FF;'"
|
||||||
|
if("Deceased")
|
||||||
|
background = "'background-color:#CD853F;'"
|
||||||
if("None")
|
if("None")
|
||||||
background = "'background-color:#00FF7F;'"
|
background = "'background-color:#00FF7F;'"
|
||||||
if("")
|
if("")
|
||||||
@@ -171,6 +173,8 @@
|
|||||||
background = "'background-color:#CD853F;'"
|
background = "'background-color:#CD853F;'"
|
||||||
if("Released")
|
if("Released")
|
||||||
background = "'background-color:#3BB9FF;'"
|
background = "'background-color:#3BB9FF;'"
|
||||||
|
if("Deceased")
|
||||||
|
background = "'background-color:#CD853F;'"
|
||||||
if("None")
|
if("None")
|
||||||
background = "'background-color:#00FF7F;'"
|
background = "'background-color:#00FF7F;'"
|
||||||
if("")
|
if("")
|
||||||
@@ -472,6 +476,7 @@ What a mess.*/
|
|||||||
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=incarcerated'>Incarcerated</a></li>"
|
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=incarcerated'>Incarcerated</a></li>"
|
||||||
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=parolled'>Parolled</a></li>"
|
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=parolled'>Parolled</a></li>"
|
||||||
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=released'>Released</a></li>"
|
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=released'>Released</a></li>"
|
||||||
|
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=deceased'>Deceased</a></li>"
|
||||||
temp += "</ul>"
|
temp += "</ul>"
|
||||||
if("rank")
|
if("rank")
|
||||||
var/list/L = list( "Head of Personnel", "Captain", "AI" )
|
var/list/L = list( "Head of Personnel", "Captain", "AI" )
|
||||||
@@ -525,6 +530,8 @@ What a mess.*/
|
|||||||
active2.fields["criminal"] = "Parolled"
|
active2.fields["criminal"] = "Parolled"
|
||||||
if("released")
|
if("released")
|
||||||
active2.fields["criminal"] = "Released"
|
active2.fields["criminal"] = "Released"
|
||||||
|
if("deceased")
|
||||||
|
active2.fields["criminal"] = "Deceased"
|
||||||
|
|
||||||
if ("Delete Record (Security) Execute")
|
if ("Delete Record (Security) Execute")
|
||||||
if (active2)
|
if (active2)
|
||||||
|
|||||||
@@ -1,3 +1,35 @@
|
|||||||
|
/obj/machinery/door_control
|
||||||
|
name = "remote door-control"
|
||||||
|
desc = "It controls doors, remotely."
|
||||||
|
icon = 'stationobjs.dmi'
|
||||||
|
icon_state = "doorctrl0"
|
||||||
|
desc = "A remote control-switch for a door."
|
||||||
|
var/id = null
|
||||||
|
var/range = 10
|
||||||
|
var/normaldoorcontrol = 0
|
||||||
|
var/desiredstate = 0 // Zero is closed, 1 is open.
|
||||||
|
var/specialfunctions = 1
|
||||||
|
/*
|
||||||
|
Bitflag, 1= open
|
||||||
|
2= idscan,
|
||||||
|
4= bolts
|
||||||
|
8= shock
|
||||||
|
16= door safties
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
var/exposedwires = 0
|
||||||
|
var/wires = 3
|
||||||
|
/*
|
||||||
|
Bitflag, 1=checkID
|
||||||
|
2=Network Access
|
||||||
|
*/
|
||||||
|
|
||||||
|
anchored = 1.0
|
||||||
|
use_power = 1
|
||||||
|
idle_power_usage = 2
|
||||||
|
active_power_usage = 4
|
||||||
|
|
||||||
/obj/machinery/door_control/attack_ai(mob/user as mob)
|
/obj/machinery/door_control/attack_ai(mob/user as mob)
|
||||||
if(wires & 2)
|
if(wires & 2)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
@@ -31,6 +63,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(!allowed(user) && (wires & 1))
|
if(!allowed(user) && (wires & 1))
|
||||||
|
user << "\red Access Denied"
|
||||||
flick("doorctrl-denied",src)
|
flick("doorctrl-denied",src)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -49,8 +82,8 @@
|
|||||||
if(specialfunctions & IDSCAN)
|
if(specialfunctions & IDSCAN)
|
||||||
D.aiDisabledIdScanner = 1
|
D.aiDisabledIdScanner = 1
|
||||||
if(specialfunctions & BOLTS)
|
if(specialfunctions & BOLTS)
|
||||||
spawn(5)
|
|
||||||
D.locked = 1
|
D.locked = 1
|
||||||
|
D.update_icon()
|
||||||
if(specialfunctions & SHOCK)
|
if(specialfunctions & SHOCK)
|
||||||
D.secondsElectrified = -1
|
D.secondsElectrified = -1
|
||||||
|
|
||||||
@@ -63,8 +96,8 @@
|
|||||||
if(specialfunctions & IDSCAN)
|
if(specialfunctions & IDSCAN)
|
||||||
D.aiDisabledIdScanner = 0
|
D.aiDisabledIdScanner = 0
|
||||||
if(specialfunctions & BOLTS)
|
if(specialfunctions & BOLTS)
|
||||||
spawn(5)
|
|
||||||
D.locked = 0
|
D.locked = 0
|
||||||
|
D.update_icon()
|
||||||
if(specialfunctions & SHOCK)
|
if(specialfunctions & SHOCK)
|
||||||
D.secondsElectrified = 0
|
D.secondsElectrified = 0
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
dat += "<a href='?src=\ref[src];timing=1'>Activate Timer and close door</a><br/>"
|
dat += "<a href='?src=\ref[src];timing=1'>Activate Timer and close door</a><br/>"
|
||||||
|
|
||||||
dat += "Time Left: [(minute ? text("[minute]:") : null)][second] <br/>"
|
dat += "Time Left: [(minute ? text("[minute]:") : null)][second] <br/>"
|
||||||
dat += "<a href='?src=\ref[src];tp=-600'>-</a> <a href='?src=\ref[src];tp=-60'>-</a> <a href='?src=\ref[src];tp=-1'>-</a> <a href='?src=\ref[src];tp=1'>+</a> <A href='?src=\ref[src];tp=60'>+</a><br/> <A href='?src=\ref[src];tp=600'>+</a><br/>"
|
dat += "<a href='?src=\ref[src];tp=-600'>-</a> <a href='?src=\ref[src];tp=-60'>-</a> <a href='?src=\ref[src];tp=-1'>-</a> <a href='?src=\ref[src];tp=1'>+</a> <A href='?src=\ref[src];tp=60'>+</a> <A href='?src=\ref[src];tp=600'>+</a><br/>"
|
||||||
|
|
||||||
for(var/obj/machinery/flasher/F in targets)
|
for(var/obj/machinery/flasher/F in targets)
|
||||||
if(F.last_flash && (F.last_flash + 150) > world.time)
|
if(F.last_flash && (F.last_flash + 150) > world.time)
|
||||||
|
|||||||
@@ -820,7 +820,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|||||||
var/t_amount = 0
|
var/t_amount = 0
|
||||||
|
|
||||||
while ( t_amount < (yield * parent.yieldmod ))
|
while ( t_amount < (yield * parent.yieldmod ))
|
||||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new produce(user.loc, potency) // User gets a consumable
|
var/obj/item/weapon/grown/t_prod = new produce(user.loc, potency) // User gets a consumable -QualityVan
|
||||||
t_prod.seed = mypath
|
t_prod.seed = mypath
|
||||||
t_prod.species = species
|
t_prod.species = species
|
||||||
t_prod.lifespan = lifespan
|
t_prod.lifespan = lifespan
|
||||||
@@ -828,7 +828,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|||||||
t_prod.maturation = maturation
|
t_prod.maturation = maturation
|
||||||
t_prod.production = production
|
t_prod.production = production
|
||||||
t_prod.yield = yield
|
t_prod.yield = yield
|
||||||
t_prod.potency = potency
|
t_prod.changePotency(potency) // -QualityVan
|
||||||
t_prod.plant_type = plant_type
|
t_prod.plant_type = plant_type
|
||||||
t_amount++
|
t_amount++
|
||||||
|
|
||||||
@@ -840,7 +840,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|||||||
var/t_amount = 0
|
var/t_amount = 0
|
||||||
|
|
||||||
while ( t_amount < (yield * parent.yieldmod ))
|
while ( t_amount < (yield * parent.yieldmod ))
|
||||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new produce(user.loc, potency) // User gets a consumable
|
var/obj/item/weapon/grown/t_prod = new produce(user.loc, potency) // User gets a consumable -QualityVan
|
||||||
t_prod.seed = mypath
|
t_prod.seed = mypath
|
||||||
t_prod.species = species
|
t_prod.species = species
|
||||||
t_prod.lifespan = lifespan
|
t_prod.lifespan = lifespan
|
||||||
@@ -848,7 +848,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|||||||
t_prod.maturation = maturation
|
t_prod.maturation = maturation
|
||||||
t_prod.production = production
|
t_prod.production = production
|
||||||
t_prod.yield = yield
|
t_prod.yield = yield
|
||||||
t_prod.potency = potency
|
t_prod.changePotency(potency) // -QualityVan
|
||||||
t_prod.plant_type = plant_type
|
t_prod.plant_type = plant_type
|
||||||
t_amount++
|
t_amount++
|
||||||
|
|
||||||
|
|||||||
@@ -677,10 +677,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
|
|||||||
var/scribble=""
|
var/scribble=""
|
||||||
var/scribble_page = null
|
var/scribble_page = null
|
||||||
|
|
||||||
/*obj/item/weapon/newspaper/attack_hand(mob/user as mob)
|
|
||||||
..()
|
|
||||||
world << "derp"*/
|
|
||||||
|
|
||||||
obj/item/weapon/newspaper/attack_self(mob/user as mob)
|
obj/item/weapon/newspaper/attack_self(mob/user as mob)
|
||||||
if(ishuman(user))
|
if(ishuman(user))
|
||||||
var/mob/living/carbon/human/human_user = user
|
var/mob/living/carbon/human/human_user = user
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ datum/controller/game_controller
|
|||||||
|
|
||||||
setupgenetics()
|
setupgenetics()
|
||||||
|
|
||||||
for(var/i = 0, i < max_secret_rooms, i++)
|
// for(var/i = 0, i < max_secret_rooms, i++)
|
||||||
make_mining_asteroid_secret()
|
// make_mining_asteroid_secret()
|
||||||
|
// Because energy cutlasses, facehuggers, and empty rooms are silly. FOR NOW. - Erthilo
|
||||||
syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round.
|
syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round.
|
||||||
syndicate_code_response = generate_code_phrase()
|
syndicate_code_response = generate_code_phrase()
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
A.yo = targloc.y - curloc.y
|
A.yo = targloc.y - curloc.y
|
||||||
A.xo = targloc.x - curloc.x
|
A.xo = targloc.x - curloc.x
|
||||||
chassis.use_power(energy_drain)
|
chassis.use_power(energy_drain)
|
||||||
A.process()
|
A.fired()
|
||||||
chassis.log_message("Fired from [src.name], targeting [target].")
|
chassis.log_message("Fired from [src.name], targeting [target].")
|
||||||
do_after_cooldown()
|
do_after_cooldown()
|
||||||
return
|
return
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
A.yo = targloc.y - curloc.y
|
A.yo = targloc.y - curloc.y
|
||||||
A.xo = targloc.x - curloc.x
|
A.xo = targloc.x - curloc.x
|
||||||
set_ready_state(0)
|
set_ready_state(0)
|
||||||
A.process()
|
A.fired()
|
||||||
log_message("Fired from [src.name], targeting [target].")
|
log_message("Fired from [src.name], targeting [target].")
|
||||||
do_after_cooldown()
|
do_after_cooldown()
|
||||||
return
|
return
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
A.current = curloc
|
A.current = curloc
|
||||||
A.yo = targloc.y - curloc.y
|
A.yo = targloc.y - curloc.y
|
||||||
A.xo = targloc.x - curloc.x
|
A.xo = targloc.x - curloc.x
|
||||||
A.process()
|
A.fired()
|
||||||
sleep(2)
|
sleep(2)
|
||||||
set_ready_state(0)
|
set_ready_state(0)
|
||||||
log_message("Fired from [src.name], targeting [target].")
|
log_message("Fired from [src.name], targeting [target].")
|
||||||
|
|||||||
@@ -1,87 +1,57 @@
|
|||||||
|
|
||||||
/obj/structure/closet/extinguisher
|
/obj/structure/closet/extinguisher
|
||||||
name = "extinguisher closet"
|
name = "extinguisher cabinet"
|
||||||
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
|
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
|
||||||
icon_state = "extinguisher10"
|
icon = 'closet.dmi'
|
||||||
icon_opened = "extinguisher11"
|
icon_state = "extinguisher_closed"
|
||||||
icon_closed = "extinguisher10"
|
|
||||||
opened = 1
|
|
||||||
anchored = 1
|
anchored = 1
|
||||||
density = 0
|
density = 0
|
||||||
var/obj/item/weapon/extinguisher/EXTINGUISHER = new/obj/item/weapon/extinguisher
|
var/obj/item/weapon/extinguisher/has_extinguisher = new/obj/item/weapon/extinguisher
|
||||||
var/localopened = 1
|
|
||||||
|
|
||||||
open()
|
|
||||||
return
|
|
||||||
|
|
||||||
close()
|
|
||||||
return
|
|
||||||
|
|
||||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
/obj/structure/closet/extinguisher/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
if (isrobot(usr))
|
if (isrobot(usr))
|
||||||
return
|
return
|
||||||
if (istype(O, /obj/item/weapon/extinguisher))
|
if (istype(O, /obj/item/weapon/extinguisher))
|
||||||
if(!EXTINGUISHER)
|
if(!has_extinguisher && opened)
|
||||||
user.drop_item(O)
|
user.drop_item(O)
|
||||||
src.contents += O
|
src.contents += O
|
||||||
EXTINGUISHER = O
|
has_extinguisher = O
|
||||||
user << "\blue You place the extinguisher in the [src.name]."
|
user << "\blue You place the extinguisher in the [src.name]."
|
||||||
else
|
else
|
||||||
localopened = !localopened
|
opened = !opened
|
||||||
else
|
else
|
||||||
localopened = !localopened
|
opened = !opened
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
|
||||||
if(localopened)
|
|
||||||
if(EXTINGUISHER)
|
/obj/structure/closet/extinguisher/attack_hand(mob/user as mob)
|
||||||
user.put_in_hand(EXTINGUISHER)
|
if(has_extinguisher)
|
||||||
EXTINGUISHER = null
|
user.put_in_hand(has_extinguisher)
|
||||||
|
has_extinguisher = null
|
||||||
user << "\blue You take the extinguisher from the [name]."
|
user << "\blue You take the extinguisher from the [name]."
|
||||||
|
opened = 1
|
||||||
else
|
else
|
||||||
localopened = !localopened
|
opened = !opened
|
||||||
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
verb/toggle_openness() //nice name, huh? HUH?!
|
|
||||||
set name = "Open/Close"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
|
|
||||||
localopened = !localopened
|
/obj/structure/closet/extinguisher/attack_paw(mob/user as mob)
|
||||||
update_icon()
|
|
||||||
|
|
||||||
verb/remove_extinguisher()
|
|
||||||
set name = "Remove Extinguisher"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
|
|
||||||
if (localopened)
|
|
||||||
if(EXTINGUISHER)
|
|
||||||
usr.put_in_hand(EXTINGUISHER)
|
|
||||||
EXTINGUISHER = null
|
|
||||||
usr << "\blue You take the extinguisher from the [name]."
|
|
||||||
else
|
|
||||||
usr << "\blue The [name] is empty."
|
|
||||||
else
|
|
||||||
usr << "\blue The [name] is closed."
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
attack_paw(mob/user as mob)
|
|
||||||
attack_hand(user)
|
attack_hand(user)
|
||||||
return
|
return
|
||||||
|
|
||||||
attack_ai(mob/user as mob)
|
|
||||||
return
|
|
||||||
|
|
||||||
update_icon()
|
|
||||||
var/hasextinguisher = 0
|
/obj/structure/closet/extinguisher/update_icon()
|
||||||
if(EXTINGUISHER)
|
if(!opened)
|
||||||
hasextinguisher = 1
|
icon_state = "extinguisher_closed"
|
||||||
icon_state = text("extinguisher[][]",hasextinguisher,src.localopened)
|
return
|
||||||
|
if(has_extinguisher)
|
||||||
|
if(istype(has_extinguisher, /obj/item/weapon/extinguisher/mini))
|
||||||
|
icon_state = "extinguisher_mini"
|
||||||
|
else
|
||||||
|
icon_state = "extinguisher_full"
|
||||||
|
else
|
||||||
|
icon_state = "extinguisher_empty"
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
sleep(2)
|
sleep(2)
|
||||||
new /obj/item/clothing/under/rank/cargo(src)
|
new /obj/item/clothing/under/rank/cargotech(src)
|
||||||
new /obj/item/clothing/shoes/brown(src)
|
new /obj/item/clothing/shoes/brown(src)
|
||||||
new /obj/item/device/radio/headset/headset_cargo(src)
|
new /obj/item/device/radio/headset/headset_cargo(src)
|
||||||
new /obj/item/clothing/gloves/black(src)
|
new /obj/item/clothing/gloves/black(src)
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
new /obj/item/clothing/under/rank/hydroponics(src)
|
new /obj/item/clothing/under/rank/hydroponics(src)
|
||||||
new /obj/item/clothing/suit/storage/apron(src)
|
new /obj/item/clothing/suit/storage/apron(src)
|
||||||
new /obj/item/clothing/under/rank/hydroponics(src)
|
new /obj/item/clothing/under/rank/hydroponics(src)
|
||||||
new /obj/item/clothing/head/helmet/greenbandana(src)
|
|
||||||
new /obj/item/device/analyzer/plant_analyzer(src)
|
new /obj/item/device/analyzer/plant_analyzer(src)
|
||||||
|
new /obj/item/clothing/head/helmet/greenbandana(src)
|
||||||
|
new /obj/item/weapon/minihoe(src)
|
||||||
new /obj/item/weapon/hatchet(src)
|
new /obj/item/weapon/hatchet(src)
|
||||||
return
|
return
|
||||||
@@ -72,6 +72,20 @@
|
|||||||
new /obj/item/device/pda/medical(src)
|
new /obj/item/device/pda/medical(src)
|
||||||
new /obj/item/weapon/storage/firstaid/regular(src)
|
new /obj/item/weapon/storage/firstaid/regular(src)
|
||||||
new /obj/item/device/flashlight/pen(src)
|
new /obj/item/device/flashlight/pen(src)
|
||||||
|
switch(pick(list("blue", "green", "purple")))
|
||||||
|
if ("blue")
|
||||||
|
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||||
|
if ("green")
|
||||||
|
new /obj/item/clothing/under/rank/medical/green(src)
|
||||||
|
if ("purple")
|
||||||
|
new /obj/item/clothing/under/rank/medical/purple(src)
|
||||||
|
switch(pick(list("blue", "green", "purple")))
|
||||||
|
if ("blue")
|
||||||
|
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||||
|
if ("green")
|
||||||
|
new /obj/item/clothing/under/rank/medical/green(src)
|
||||||
|
if ("purple")
|
||||||
|
new /obj/item/clothing/under/rank/medical/purple(src)
|
||||||
new /obj/item/weapon/cartridge/medical(src)
|
new /obj/item/weapon/cartridge/medical(src)
|
||||||
new /obj/item/device/radio/headset/headset_med(src)
|
new /obj/item/device/radio/headset/headset_med(src)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -144,9 +144,9 @@
|
|||||||
new /obj/item/device/pda/security(src)
|
new /obj/item/device/pda/security(src)
|
||||||
new /obj/item/device/radio/headset/headset_sec(src)
|
new /obj/item/device/radio/headset/headset_sec(src)
|
||||||
new /obj/item/weapon/storage/belt/security(src)
|
new /obj/item/weapon/storage/belt/security(src)
|
||||||
new /obj/item/weapon/flashbang(src)
|
|
||||||
new /obj/item/weapon/pepperspray(src)
|
|
||||||
new /obj/item/device/flash(src)
|
new /obj/item/device/flash(src)
|
||||||
|
new /obj/item/weapon/pepperspray(src)
|
||||||
|
new /obj/item/weapon/flashbang(src)
|
||||||
new /obj/item/weapon/melee/baton(src)
|
new /obj/item/weapon/melee/baton(src)
|
||||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -110,6 +110,9 @@
|
|||||||
default_cartridge = /obj/item/weapon/cartridge/quartermaster
|
default_cartridge = /obj/item/weapon/cartridge/quartermaster
|
||||||
icon_state = "pda-q"
|
icon_state = "pda-q"
|
||||||
|
|
||||||
|
/obj/item/device/pda/shaftminer
|
||||||
|
icon_state = "pda-miner"
|
||||||
|
|
||||||
/obj/item/device/pda/syndicate
|
/obj/item/device/pda/syndicate
|
||||||
default_cartridge = /obj/item/weapon/cartridge/syndicate
|
default_cartridge = /obj/item/weapon/cartridge/syndicate
|
||||||
icon_state = "pda-syn"
|
icon_state = "pda-syn"
|
||||||
@@ -129,6 +132,11 @@
|
|||||||
//default_cartridge = /obj/item/weapon/cartridge/botanist
|
//default_cartridge = /obj/item/weapon/cartridge/botanist
|
||||||
icon_state = "pda-hydro"
|
icon_state = "pda-hydro"
|
||||||
|
|
||||||
|
/obj/item/device/pda/roboticist
|
||||||
|
icon_state = "pda-robot"
|
||||||
|
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case."
|
||||||
|
note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Turbo Edition!"
|
||||||
|
|
||||||
/obj/item/device/pda/librarian
|
/obj/item/device/pda/librarian
|
||||||
icon_state = "pda-libb"
|
icon_state = "pda-libb"
|
||||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
|
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
|
||||||
@@ -500,11 +508,15 @@
|
|||||||
U << browse(null, "window=pda")
|
U << browse(null, "window=pda")
|
||||||
return
|
return
|
||||||
if("Message")
|
if("Message")
|
||||||
var/t = input(U, "Please enter message", name, null) as text
|
var/t
|
||||||
|
if(!href_list["pAI_mess"])
|
||||||
|
t = input(U, "Please enter message", name, null) as text
|
||||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
||||||
|
else
|
||||||
|
t = href_list["pAI_mess"]
|
||||||
if (!t)
|
if (!t)
|
||||||
return
|
return
|
||||||
if (!in_range(src, U) && loc != U)
|
if (!in_range(src, U) && loc != U && !href_list["pAI_mess"])
|
||||||
return
|
return
|
||||||
|
|
||||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||||
@@ -697,7 +709,7 @@
|
|||||||
honkamt--
|
honkamt--
|
||||||
playsound(loc, 'bikehorn.ogg', 30, 1)
|
playsound(loc, 'bikehorn.ogg', 30, 1)
|
||||||
|
|
||||||
if(U.machine == src)//Final safety.
|
if(U.machine == src && !href_list["pAI_mess"])//Final safety.
|
||||||
attack_self(U)//It auto-closes the menu prior if the user is not in range and so on.
|
attack_self(U)//It auto-closes the menu prior if the user is not in range and so on.
|
||||||
else
|
else
|
||||||
U.machine = null
|
U.machine = null
|
||||||
|
|||||||
@@ -411,13 +411,14 @@ steam.start() -- spawns the effect
|
|||||||
var/obj/R = new /obj()
|
var/obj/R = new /obj()
|
||||||
R.reagents = new/datum/reagents(500)
|
R.reagents = new/datum/reagents(500)
|
||||||
R.reagents.my_atom = R
|
R.reagents.my_atom = R
|
||||||
|
if(reagents)
|
||||||
reagents.trans_to(R, reagents.total_volume/divisor)
|
reagents.trans_to(R, reagents.total_volume/divisor)
|
||||||
for(var/atom/A in view(1, src))
|
for(var/atom/A in view(1, src))
|
||||||
if(reagents.has_reagent("radium")||reagents.has_reagent("uranium")||reagents.has_reagent("carbon")||reagents.has_reagent("thermite"))//Prevents unholy radium spam by reducing the number of 'greenglows' down to something reasonable -Sieve
|
if(reagents.has_reagent("radium")||reagents.has_reagent("uranium")||reagents.has_reagent("carbon")||reagents.has_reagent("thermite"))//Prevents unholy radium spam by reducing the number of 'greenglows' down to something reasonable -Sieve
|
||||||
if(prob(5))
|
if(prob(5))
|
||||||
R.reagents.reaction(A)
|
R.reagents.reaction(A)
|
||||||
del(R)
|
del(R)
|
||||||
else
|
else if(R && R.reagents)
|
||||||
R.reagents.reaction(A)
|
R.reagents.reaction(A)
|
||||||
del(R)
|
del(R)
|
||||||
return
|
return
|
||||||
@@ -1033,7 +1034,8 @@ steam.start() -- spawns the effect
|
|||||||
user << "\blue You hit the metal foam to no effect."
|
user << "\blue You hit the metal foam to no effect."
|
||||||
|
|
||||||
CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
|
CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
|
||||||
if(air_group) return 0
|
if(!istype(mover))
|
||||||
|
return 0
|
||||||
return !density
|
return !density
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,9 @@
|
|||||||
O.place = "handcuff"
|
O.place = "handcuff"
|
||||||
M.requests += O
|
M.requests += O
|
||||||
spawn( 0 )
|
spawn( 0 )
|
||||||
|
if(istype(src, /obj/item/weapon/handcuffs/cable))
|
||||||
|
playsound(src.loc, 'cablecuff.ogg', 30, 1, -2)
|
||||||
|
else
|
||||||
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
|
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
|
||||||
O.process()
|
O.process()
|
||||||
return
|
return
|
||||||
@@ -77,6 +80,9 @@
|
|||||||
O.place = "handcuff"
|
O.place = "handcuff"
|
||||||
M.requests += O
|
M.requests += O
|
||||||
spawn( 0 )
|
spawn( 0 )
|
||||||
|
if(istype(src, /obj/item/weapon/handcuffs/cable))
|
||||||
|
playsound(src.loc, 'cablecuff.ogg', 30, 1, -2)
|
||||||
|
else
|
||||||
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
|
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
|
||||||
O.process()
|
O.process()
|
||||||
return
|
return
|
||||||
@@ -372,7 +378,7 @@
|
|||||||
|
|
||||||
if(M:brain_op_stage == 4.0)
|
if(M:brain_op_stage == 4.0)
|
||||||
for(var/mob/O in viewers(M, null))
|
for(var/mob/O in viewers(M, null))
|
||||||
if(O == (user || M))
|
if(O == user || O == M)
|
||||||
continue
|
continue
|
||||||
if(M == user)
|
if(M == user)
|
||||||
O.show_message(text("\red [user] inserts [src] into his head!"), 1)
|
O.show_message(text("\red [user] inserts [src] into his head!"), 1)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
/obj/item/weapon/camera_test
|
/obj/item/weapon/camera_test
|
||||||
name = "camera"
|
name = "camera"
|
||||||
icon = 'items.dmi'
|
icon = 'items.dmi'
|
||||||
desc = "A one use - polaroid camera. 10 photos left."
|
desc = "A polaroid camera. It has 30 photos left."
|
||||||
icon_state = "camera"
|
icon_state = "camera"
|
||||||
item_state = "electropack"
|
item_state = "electropack"
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
throwforce = 5
|
throwforce = 5
|
||||||
throw_speed = 4
|
throw_speed = 4
|
||||||
throw_range = 10
|
throw_range = 10
|
||||||
|
var/pictures_max = 30
|
||||||
var/pictures_left = 30
|
var/pictures_left = 30
|
||||||
var/can_use = 1
|
var/can_use = 1
|
||||||
|
|
||||||
@@ -60,6 +61,13 @@
|
|||||||
var/icon/img //Big photo image
|
var/icon/img //Big photo image
|
||||||
var/scribble //Scribble on the back.
|
var/scribble //Scribble on the back.
|
||||||
|
|
||||||
|
/obj/item/weapon/camera_film
|
||||||
|
name = "film cartridge"
|
||||||
|
icon = 'items.dmi'
|
||||||
|
desc = "A camera film cartridge. Insert it into a camera to reload it."
|
||||||
|
icon_state = "film"
|
||||||
|
item_state = "electropack"
|
||||||
|
w_class = 1.0
|
||||||
|
|
||||||
/obj/item/weapon/photo/attack_self(var/mob/user as mob)
|
/obj/item/weapon/photo/attack_self(var/mob/user as mob)
|
||||||
..()
|
..()
|
||||||
@@ -145,9 +153,11 @@
|
|||||||
if (can_use)
|
if (can_use)
|
||||||
can_use = 0
|
can_use = 0
|
||||||
icon_state = "camera_off"
|
icon_state = "camera_off"
|
||||||
|
usr << "\red You turn the camera off."
|
||||||
else
|
else
|
||||||
can_use = 1
|
can_use = 1
|
||||||
icon_state = "camera"
|
icon_state = "camera"
|
||||||
|
usr << "\blue You turn the camera on."
|
||||||
|
|
||||||
/obj/item/weapon/camera_test/proc/get_mobs(turf/the_turf as turf)
|
/obj/item/weapon/camera_test/proc/get_mobs(turf/the_turf as turf)
|
||||||
var/mob_detail
|
var/mob_detail
|
||||||
@@ -209,7 +219,7 @@
|
|||||||
playsound(src.loc, pick('polaroid1.ogg','polaroid2.ogg'), 75, 1, -3)
|
playsound(src.loc, pick('polaroid1.ogg','polaroid2.ogg'), 75, 1, -3)
|
||||||
|
|
||||||
pictures_left--
|
pictures_left--
|
||||||
src.desc = "A one use - polaroid camera. [pictures_left] photos left."
|
src.desc = "A polaroid camera. It has [pictures_left] photos left."
|
||||||
user << "\blue [pictures_left] photos left."
|
user << "\blue [pictures_left] photos left."
|
||||||
can_use = 0
|
can_use = 0
|
||||||
icon_state = "camera_off"
|
icon_state = "camera_off"
|
||||||
@@ -217,4 +227,16 @@
|
|||||||
can_use = 1
|
can_use = 1
|
||||||
icon_state = "camera"
|
icon_state = "camera"
|
||||||
|
|
||||||
|
/obj/item/weapon/camera_test/attackby(A as obj, mob/user as mob)
|
||||||
|
if (istype(A, /obj/item/weapon/camera_film))
|
||||||
|
if (src.pictures_left >= pictures_max)
|
||||||
|
user << "\blue It's already full!"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
del(A)
|
||||||
|
src.pictures_left = src.pictures_max
|
||||||
|
src.desc = "A polaroid camera. It has [pictures_left] photos left."
|
||||||
|
user << text("\blue You reload the camera film!",)
|
||||||
|
user.update_clothing()
|
||||||
|
return 1
|
||||||
|
return
|
||||||
|
|||||||
@@ -107,6 +107,12 @@ FINGERPRINT CARD
|
|||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/item/weapon/card/id/proc/checkaccess(p,var/mob/user)
|
||||||
|
if(p == pin)
|
||||||
|
user << "\green Access granted"
|
||||||
|
return 1
|
||||||
|
user << "\red Access denied"
|
||||||
|
return 0
|
||||||
|
|
||||||
// FINGERPRINT HOLDER
|
// FINGERPRINT HOLDER
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,10 @@ Craftables (Cob pipes, potato batteries, pumpkinheads)
|
|||||||
usr << "All the leaves have fallen off the nettle from violent whacking."
|
usr << "All the leaves have fallen off the nettle from violent whacking."
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
/obj/item/weapon/grown/nettle/changePotency(newValue) //-QualityVan
|
||||||
|
potency = newValue
|
||||||
|
force = round((5+potency/5), 1)
|
||||||
|
|
||||||
|
|
||||||
// Deathnettle
|
// Deathnettle
|
||||||
|
|
||||||
@@ -137,6 +141,10 @@ Craftables (Cob pipes, potato batteries, pumpkinheads)
|
|||||||
usr << "All the leaves have fallen off the deathnettle from violent whacking."
|
usr << "All the leaves have fallen off the deathnettle from violent whacking."
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
/obj/item/weapon/grown/deathnettle/changePotency(newValue) //-QualityVan
|
||||||
|
potency = newValue
|
||||||
|
force = round((5+potency/2.5), 1)
|
||||||
|
|
||||||
//Crafting
|
//Crafting
|
||||||
|
|
||||||
/obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
|
|||||||
@@ -164,10 +164,10 @@ KNIFE
|
|||||||
playsound(M, 'trayhit2.ogg', 50, 1) //sound playin'
|
playsound(M, 'trayhit2.ogg', 50, 1) //sound playin'
|
||||||
return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3
|
return //it always returns, but I feel like adding an extra return just for safety's sakes. EDIT; Oh well I won't :3
|
||||||
|
|
||||||
var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later.
|
var/mob/living/carbon/human/H = M // Let's have this ready for later.
|
||||||
|
|
||||||
|
|
||||||
if(!(user.zone_sel.selecting == ("eyes" || "head"))) //////////////hitting anything else other than the eyes
|
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") //hitting anything else other than the eyes
|
||||||
if(prob(33))
|
if(prob(33))
|
||||||
src.add_blood(H)
|
src.add_blood(H)
|
||||||
var/turf/location = H.loc
|
var/turf/location = H.loc
|
||||||
|
|||||||
@@ -27,18 +27,17 @@ MEDICAL
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
var/stoppedblood = 0
|
var/stoppedblood = 0
|
||||||
if(ishuman(M))
|
if(hasorgans(M))
|
||||||
var/mob/living/carbon/human/H = M
|
var/datum/organ/external/affecting = M:get_organ("chest")
|
||||||
var/datum/organ/external/affecting = H.get_organ("chest")
|
|
||||||
|
|
||||||
if(istype(user, /mob/living/carbon/human))
|
if(istype(user, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/user2 = user
|
var/mob/living/carbon/human/user2 = user
|
||||||
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
|
affecting = M:get_organ(check_zone(user2.zone_sel.selecting))
|
||||||
else
|
else
|
||||||
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||||
affecting = H.get_organ("head")
|
affecting = M:get_organ("head")
|
||||||
if(affecting.destroyed && !affecting.gauzed)
|
if(affecting.destroyed && !affecting.gauzed)
|
||||||
user.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does [user.gender == MALE? "his" : "her"] best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
user.visible_message("\red You do your best to stop the bleeding from [M]'s stump.", "\red [user] does [user.gender == MALE? "his" : "her"] best to stem [M]'s bleeding from [M.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
||||||
affecting.gauzed = 1
|
affecting.gauzed = 1
|
||||||
use(1)
|
use(1)
|
||||||
return
|
return
|
||||||
@@ -69,7 +68,7 @@ MEDICAL
|
|||||||
|
|
||||||
if (user && stoppedblood)
|
if (user && stoppedblood)
|
||||||
if (M != user)
|
if (M != user)
|
||||||
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] [H]'s [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [M]'s cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] [M]'s [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
||||||
else
|
else
|
||||||
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.gender == MALE? "his" : "her"] own cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.gender == MALE? "his" : "her"] own cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
||||||
else if(user)
|
else if(user)
|
||||||
@@ -146,18 +145,17 @@ MEDICAL
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
var/stoppedblood = 0
|
var/stoppedblood = 0
|
||||||
if(ishuman(M))
|
if(hasorgans(M))
|
||||||
var/mob/living/carbon/human/H = M
|
var/datum/organ/external/affecting = M:get_organ("chest")
|
||||||
var/datum/organ/external/affecting = H.get_organ("chest")
|
|
||||||
|
|
||||||
if(istype(user, /mob/living/carbon/human))
|
if(istype(user, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/user2 = user
|
var/mob/living/carbon/human/user2 = user
|
||||||
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
|
affecting = M:get_organ(check_zone(user2.zone_sel.selecting))
|
||||||
else
|
else
|
||||||
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||||
affecting = H.get_organ("head")
|
affecting = M:get_organ("head")
|
||||||
if(affecting.destroyed && !affecting.gauzed)
|
if(affecting.destroyed && !affecting.gauzed)
|
||||||
H.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does their best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
M.visible_message("\red You do your best to stop the bleeding from [M]'s stump.", "\red [user] does their best to stem [M]'s bleeding from [M.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
||||||
affecting.gauzed = 1
|
affecting.gauzed = 1
|
||||||
use(1)
|
use(1)
|
||||||
return
|
return
|
||||||
@@ -179,7 +177,7 @@ MEDICAL
|
|||||||
|
|
||||||
if (user && stoppedblood)
|
if (user && stoppedblood)
|
||||||
if (M != user)
|
if (M != user)
|
||||||
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] [H]'s [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [M]'s cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] [M]'s [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
||||||
else
|
else
|
||||||
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.gender == MALE? "his" : "her"] own cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
user.visible_message("\red [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.gender == MALE? "his" : "her"] own cuts with [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
|
||||||
else if(user)
|
else if(user)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
/obj/item/robot_parts/l_arm/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
/obj/item/robot_parts/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
||||||
|
var/limbloc = null
|
||||||
|
|
||||||
if(!istype(M))
|
if(!istype(M))
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -8,7 +10,18 @@
|
|||||||
if(!istype(M, /mob/living/carbon/human))
|
if(!istype(M, /mob/living/carbon/human))
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
if(user.zone_sel.selecting == "l_arm")
|
if((user.zone_sel.selecting == "l_arm") && (istype(src, /obj/item/robot_parts/l_arm)))
|
||||||
|
limbloc = "l_hand"
|
||||||
|
else if((user.zone_sel.selecting == "r_arm") && (istype(src, /obj/item/robot_parts/r_arm)))
|
||||||
|
limbloc = "r_hand"
|
||||||
|
else if((user.zone_sel.selecting == "r_leg") && (istype(src, /obj/item/robot_parts/r_leg)))
|
||||||
|
limbloc = "r_foot"
|
||||||
|
else if((user.zone_sel.selecting == "l_leg") && (istype(src, /obj/item/robot_parts/l_leg)))
|
||||||
|
limbloc = "l_foot"
|
||||||
|
else
|
||||||
|
user << "\red That doesn't fit there!"
|
||||||
|
return ..()
|
||||||
|
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
||||||
if(S.destroyed)
|
if(S.destroyed)
|
||||||
@@ -17,12 +30,12 @@
|
|||||||
return 0
|
return 0
|
||||||
if(M != user)
|
if(M != user)
|
||||||
M.visible_message( \
|
M.visible_message( \
|
||||||
"\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \
|
"\red [user] is beginning to attach \the [src] where [H]'s [S.display_name] used to be.", \
|
||||||
"\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].")
|
"\red [user] begins to attach \the [src] where your [S.display_name] used to be.")
|
||||||
else
|
else
|
||||||
M.visible_message( \
|
M.visible_message( \
|
||||||
"\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \
|
"\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \
|
||||||
"\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].")
|
"\red You begin to attach \the [src] where your [S.display_name] used to be.")
|
||||||
|
|
||||||
if(do_mob(user, H, 100))
|
if(do_mob(user, H, 100))
|
||||||
if(M != user)
|
if(M != user)
|
||||||
@@ -42,196 +55,14 @@
|
|||||||
S.attachable = 0
|
S.attachable = 0
|
||||||
S.destroyed = 0
|
S.destroyed = 0
|
||||||
S.robot = 1
|
S.robot = 1
|
||||||
var/datum/organ/external/T = H.organs["l_hand"]
|
var/datum/organ/external/T = H.organs[limbloc]
|
||||||
T.attachable = 0
|
T.attachable = 0
|
||||||
T.destroyed = 0
|
T.destroyed = 0
|
||||||
T.broken = 0
|
T.broken = 0
|
||||||
T.robot = 1
|
T.robot = 1
|
||||||
user.drop_item()
|
del(src)
|
||||||
M.update_body()
|
M.update_body()
|
||||||
M.updatehealth()
|
M.updatehealth()
|
||||||
M.UpdateDamageIcon()
|
M.UpdateDamageIcon()
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
else
|
|
||||||
user << "\red That doesn't fit there!."
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/robot_parts/r_arm/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
|
||||||
if(!istype(M))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66))))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!istype(M, /mob/living/carbon/human))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(user.zone_sel.selecting == "r_arm")
|
|
||||||
var/mob/living/carbon/human/H = M
|
|
||||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
|
||||||
if(S.destroyed)
|
|
||||||
if(!S.attachable)
|
|
||||||
user << "\red The wound is not ready for a replacement!"
|
|
||||||
return 0
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \
|
|
||||||
"\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \
|
|
||||||
"\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].")
|
|
||||||
|
|
||||||
if(do_mob(user, H, 100))
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching [H]'s new [S.display_name].", \
|
|
||||||
"\red [user] finishes attaching your new [S.display_name].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching \his new [S.display_name].", \
|
|
||||||
"\red You finish attaching your new [S.display_name].")
|
|
||||||
|
|
||||||
if(H == user && prob(25))
|
|
||||||
user << "\red You mess up!"
|
|
||||||
S.take_damage(15)
|
|
||||||
|
|
||||||
S.broken = 0
|
|
||||||
S.attachable = 0
|
|
||||||
S.destroyed = 0
|
|
||||||
S.robot = 1
|
|
||||||
var/datum/organ/external/T = H.organs["r_hand"]
|
|
||||||
T.attachable = 0
|
|
||||||
T.destroyed = 0
|
|
||||||
T.broken = 0
|
|
||||||
T.robot = 1
|
|
||||||
user.drop_item()
|
|
||||||
M.update_body()
|
|
||||||
M.updatehealth()
|
|
||||||
M.UpdateDamageIcon()
|
|
||||||
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
user << "\red That doesn't fit there!."
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/item/robot_parts/l_leg/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
|
||||||
if(!istype(M))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66))))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!istype(M, /mob/living/carbon/human))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(user.zone_sel.selecting == "l_leg")
|
|
||||||
var/mob/living/carbon/human/H = M
|
|
||||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
|
||||||
if(S.destroyed)
|
|
||||||
if(!S.attachable)
|
|
||||||
user << "\red The wound is not ready for a replacement!"
|
|
||||||
return 0
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \
|
|
||||||
"\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \
|
|
||||||
"\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].")
|
|
||||||
|
|
||||||
if(do_mob(user, H, 100))
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching [H]'s new [S.display_name].", \
|
|
||||||
"\red [user] finishes attaching your new [S.display_name].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching \his new [S.display_name].", \
|
|
||||||
"\red You finish attaching your new [S.display_name].")
|
|
||||||
|
|
||||||
if(H == user && prob(25))
|
|
||||||
user << "\red You mess up!"
|
|
||||||
S.take_damage(15)
|
|
||||||
|
|
||||||
S.broken = 0
|
|
||||||
S.attachable = 0
|
|
||||||
S.destroyed = 0
|
|
||||||
S.robot = 1
|
|
||||||
var/datum/organ/external/T = H.organs["l_foot"]
|
|
||||||
T.attachable = 0
|
|
||||||
T.destroyed = 0
|
|
||||||
T.broken = 0
|
|
||||||
T.robot = 1
|
|
||||||
user.drop_item()
|
|
||||||
M.update_body()
|
|
||||||
M.updatehealth()
|
|
||||||
M.UpdateDamageIcon()
|
|
||||||
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
user << "\red That doesn't fit there!."
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/robot_parts/r_leg/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
|
||||||
if(!istype(M))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/stool/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66))))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(!istype(M, /mob/living/carbon/human))
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
if(user.zone_sel.selecting == "r_leg")
|
|
||||||
var/mob/living/carbon/human/H = M
|
|
||||||
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
|
|
||||||
if(S.destroyed)
|
|
||||||
if(!S.attachable)
|
|
||||||
user << "\red The wound is not ready for a replacement!"
|
|
||||||
return 0
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] is beginning to attach a robotic limb where [H]'s [S.display_name] used to be with [src].", \
|
|
||||||
"\red [user] begins to attach a robotic limb where [S.display_name] used to be with [src].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \
|
|
||||||
"\red You begin to attach a robotic limb where your [S.display_name] used to be with [src].")
|
|
||||||
|
|
||||||
if(do_mob(user, H, 100))
|
|
||||||
if(M != user)
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching [H]'s new [S.display_name].", \
|
|
||||||
"\red [user] finishes attaching your new [S.display_name].")
|
|
||||||
else
|
|
||||||
M.visible_message( \
|
|
||||||
"\red [user] finishes attaching \his new [S.display_name].", \
|
|
||||||
"\red You finish attaching your new [S.display_name].")
|
|
||||||
|
|
||||||
if(H == user && prob(25))
|
|
||||||
user << "\red You mess up!"
|
|
||||||
S.take_damage(15)
|
|
||||||
|
|
||||||
S.broken = 0
|
|
||||||
S.attachable = 0
|
|
||||||
S.destroyed = 0
|
|
||||||
S.robot = 1
|
|
||||||
var/datum/organ/external/T = H.organs["r_foot"]
|
|
||||||
T.attachable = 0
|
|
||||||
T.destroyed = 0
|
|
||||||
T.broken = 0
|
|
||||||
T.robot = 1
|
|
||||||
user.drop_item()
|
|
||||||
M.update_body()
|
|
||||||
M.updatehealth()
|
|
||||||
M.UpdateDamageIcon()
|
|
||||||
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
user << "\red That doesn't fit there!."
|
|
||||||
return ..()
|
|
||||||
@@ -16,6 +16,14 @@ RACK PARTS
|
|||||||
new /obj/item/stack/sheet/metal( src.loc )
|
new /obj/item/stack/sheet/metal( src.loc )
|
||||||
//SN src = null
|
//SN src = null
|
||||||
del(src)
|
del(src)
|
||||||
|
if (istype(W, /obj/item/stack/rods))
|
||||||
|
if (W:amount >= 4)
|
||||||
|
new /obj/item/weapon/table_parts/reinforced( user.loc )
|
||||||
|
user << "\blue You reinforce the [name]."
|
||||||
|
W:use(4)
|
||||||
|
del(src)
|
||||||
|
else if (W:amount < 4)
|
||||||
|
user << "\red You need at least four rods to do this."
|
||||||
|
|
||||||
/obj/item/weapon/table_parts/attack_self(mob/user as mob)
|
/obj/item/weapon/table_parts/attack_self(mob/user as mob)
|
||||||
var/obj/structure/table/T = new /obj/structure/table( user.loc )
|
var/obj/structure/table/T = new /obj/structure/table( user.loc )
|
||||||
@@ -29,8 +37,6 @@ RACK PARTS
|
|||||||
new /obj/item/stack/sheet/wood( src.loc )
|
new /obj/item/stack/sheet/wood( src.loc )
|
||||||
//SN src = null
|
//SN src = null
|
||||||
del(src)
|
del(src)
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
|
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
|
||||||
new /obj/structure/table/woodentable( user.loc )
|
new /obj/structure/table/woodentable( user.loc )
|
||||||
@@ -40,9 +46,9 @@ RACK PARTS
|
|||||||
|
|
||||||
// REINFORCED TABLE PARTS
|
// REINFORCED TABLE PARTS
|
||||||
/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
..()
|
|
||||||
if (istype(W, /obj/item/weapon/wrench))
|
if (istype(W, /obj/item/weapon/wrench))
|
||||||
new /obj/item/stack/sheet/plasteel( src.loc )
|
new /obj/item/stack/sheet/metal( src.loc )
|
||||||
|
new /obj/item/stack/rods( src.loc )
|
||||||
//SN src = null
|
//SN src = null
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
|||||||
@@ -263,6 +263,9 @@ WELDINGTOOOL
|
|||||||
attack(mob/M as mob, mob/user as mob)
|
attack(mob/M as mob, mob/user as mob)
|
||||||
if(hasorgans(M))
|
if(hasorgans(M))
|
||||||
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
|
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
|
||||||
|
if(S)
|
||||||
|
message_admins("It appears [M] has \"null\" where there should be a [user.zone_sel.selecting]. Check into this, and tell SkyMarshal: \"[M.type]\"")
|
||||||
|
return ..()
|
||||||
if(!S.robot || user.a_intent != "help")
|
if(!S.robot || user.a_intent != "help")
|
||||||
return ..()
|
return ..()
|
||||||
if(S.brute_dam)
|
if(S.brute_dam)
|
||||||
@@ -321,3 +324,14 @@ WELDINGTOOOL
|
|||||||
New()
|
New()
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
icon_state = "cutters-y"
|
icon_state = "cutters-y"
|
||||||
|
|
||||||
|
/obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob)
|
||||||
|
if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable)))
|
||||||
|
M.visible_message("You cut \the [M]'s restraints with \the [src]!",\
|
||||||
|
"\The [usr] cuts \the [M]'s restraints with \the [src]!",\
|
||||||
|
"You hear cable being cut.")
|
||||||
|
M.handcuffed = null
|
||||||
|
M.update_clothing()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
..()
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
src.attack_ai(usr)
|
src.attack_ai(usr)
|
||||||
|
|
||||||
// check for TK users
|
// check for TK users
|
||||||
AutoUpdateTK(src)
|
//AutoUpdateTK(src)
|
||||||
if (istype(usr, /mob/living/carbon/human))
|
if (istype(usr, /mob/living/carbon/human))
|
||||||
if(istype(usr.l_hand, /obj/item/tk_grab) || istype(usr.r_hand, /obj/item/tk_grab/))
|
if(istype(usr.l_hand, /obj/item/tk_grab) || istype(usr.r_hand, /obj/item/tk_grab/))
|
||||||
if(!(usr in nearby))
|
if(!(usr in nearby))
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
var/code = "electronic"
|
var/code = "electronic"
|
||||||
origin_tech = "bluespace=1"
|
origin_tech = "bluespace=1"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/radio/beacon/hear_talk()
|
/obj/item/device/radio/beacon/hear_talk()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -32,3 +31,19 @@
|
|||||||
proc/digest_delay()
|
proc/digest_delay()
|
||||||
spawn(600)
|
spawn(600)
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
|
||||||
|
// SINGULO BEACON SPAWNER
|
||||||
|
|
||||||
|
/obj/item/device/radio/beacon/syndicate
|
||||||
|
name = "suspicious beacon"
|
||||||
|
desc = "A label on it reads: <i>Activate to have a singularity beacon teleported to your location</i>."
|
||||||
|
origin_tech = "bluespace=1;syndicate=7"
|
||||||
|
|
||||||
|
/obj/item/device/radio/beacon/syndicate/attack_self(mob/user as mob)
|
||||||
|
if(user)
|
||||||
|
user << "\blue Locked In"
|
||||||
|
new /obj/machinery/singularity_beacon/syndicate( user.loc )
|
||||||
|
playsound(src, 'pop.ogg', 100, 1, 1)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
@@ -83,6 +83,9 @@ SHARDS
|
|||||||
if("full (2 sheets)")
|
if("full (2 sheets)")
|
||||||
if(!src) return 1
|
if(!src) return 1
|
||||||
if(src.loc != user) return 1
|
if(src.loc != user) return 1
|
||||||
|
if(src.amount < 2)
|
||||||
|
user << "\red You need more glass to do that."
|
||||||
|
return 1
|
||||||
if(locate(/obj/structure/window) in user.loc)
|
if(locate(/obj/structure/window) in user.loc)
|
||||||
user << "\red There is a window in the way."
|
user << "\red There is a window in the way."
|
||||||
return 1
|
return 1
|
||||||
@@ -142,6 +145,9 @@ SHARDS
|
|||||||
if("full (2 sheets)")
|
if("full (2 sheets)")
|
||||||
if(!src) return 1
|
if(!src) return 1
|
||||||
if(src.loc != user) return 1
|
if(src.loc != user) return 1
|
||||||
|
if(src.amount < 2)
|
||||||
|
user << "\red You need more glass to do that."
|
||||||
|
return 1
|
||||||
if(locate(/obj/structure/window) in user.loc)
|
if(locate(/obj/structure/window) in user.loc)
|
||||||
user << "\red There is a window in the way."
|
user << "\red There is a window in the way."
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
|||||||
|
|
||||||
// /datum/stack_recipe/New(title, result_type, req_amount, res_amount, max_res_amount, time, one_per_turf, on_floor = 0)
|
// /datum/stack_recipe/New(title, result_type, req_amount, res_amount, max_res_amount, time, one_per_turf, on_floor = 0)
|
||||||
var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||||
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/reinforced, 2), \
|
|
||||||
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, one_per_turf = 1), \
|
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, one_per_turf = 1), \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,18 @@
|
|||||||
icon_state = "down"
|
icon_state = "down"
|
||||||
anchored = 0
|
anchored = 0
|
||||||
|
|
||||||
|
/obj/item/roller
|
||||||
|
name = "roller bed"
|
||||||
|
desc = "A collapsed roller bed that can be carried around."
|
||||||
|
icon = 'rollerbed.dmi'
|
||||||
|
icon_state = "folded"
|
||||||
|
w_class = 4.0 // Can't be put in backpacks. Oh well.
|
||||||
|
|
||||||
|
attack_self(mob/user)
|
||||||
|
var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc)
|
||||||
|
R.add_fingerprint(user)
|
||||||
|
del(src)
|
||||||
|
|
||||||
//obj/structure/stool/bed/roller/Move()
|
//obj/structure/stool/bed/roller/Move()
|
||||||
/obj/structure/stool/bed/Move()
|
/obj/structure/stool/bed/Move()
|
||||||
..()
|
..()
|
||||||
@@ -181,7 +193,20 @@
|
|||||||
buckled_mob.pixel_y = 0
|
buckled_mob.pixel_y = 0
|
||||||
buckled_mob.anchored = 0
|
buckled_mob.anchored = 0
|
||||||
buckled_mob.buckled = null
|
buckled_mob.buckled = null
|
||||||
|
buckled_mob = null
|
||||||
density = 0
|
density = 0
|
||||||
icon_state = "down"
|
icon_state = "down"
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location)
|
||||||
|
..()
|
||||||
|
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||||
|
if(!ishuman(usr)) return
|
||||||
|
if(buckled_mob) return 0
|
||||||
|
visible_message("[usr] collapses \the [src.name]")
|
||||||
|
new/obj/item/roller(get_turf(src))
|
||||||
|
spawn(0)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,7 @@
|
|||||||
"/obj/item/weapon/melee/baton",
|
"/obj/item/weapon/melee/baton",
|
||||||
"/obj/item/weapon/melee/classic_baton",
|
"/obj/item/weapon/melee/classic_baton",
|
||||||
"/obj/item/weapon/camera_test",
|
"/obj/item/weapon/camera_test",
|
||||||
|
"/obj/item/weapon/camera_film",
|
||||||
"/obj/item/weapon/cigpacket",
|
"/obj/item/weapon/cigpacket",
|
||||||
"/obj/item/weapon/zippo",
|
"/obj/item/weapon/zippo",
|
||||||
"/obj/item/device/taperecorder",
|
"/obj/item/device/taperecorder",
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
|
if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
|
||||||
return
|
return
|
||||||
if(src.contents.len >= 2)
|
if(src.contents.len >= 2)
|
||||||
user << "You have nowhere to place that"
|
user << "\red There's nowhere to place that!"
|
||||||
return
|
return
|
||||||
user.u_equip(W)
|
user.u_equip(W)
|
||||||
W.loc = src
|
W.loc = src
|
||||||
@@ -84,42 +84,62 @@
|
|||||||
if (src.loc == user)
|
if (src.loc == user)
|
||||||
if (user.s_active)
|
if (user.s_active)
|
||||||
user.s_active.close(user)
|
user.s_active.close(user)
|
||||||
view_inv(user)
|
src.show_to(user)
|
||||||
orient2hud(user)
|
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
for(var/mob/M in range(1))
|
for(var/mob/M in range(1))
|
||||||
if (M.s_active == src)
|
if (M.s_active == src)
|
||||||
src.close(M)
|
src.close(M)
|
||||||
|
src.orient2hud(user)
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob)
|
/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob)
|
||||||
if (src == user.l_hand)
|
if (src == user.l_hand)
|
||||||
src.orient_objs(3, 5, 3, 3)
|
src.orient_objs(3, 4, 3, 3)
|
||||||
else if (src == user.r_hand)
|
else if (src == user.r_hand)
|
||||||
src.orient_objs(1, 5, 1, 3)
|
src.orient_objs(1, 4, 1, 3)
|
||||||
else if (istype(user,/mob/living/carbon/human) && src == user:wear_suit)
|
else if (istype(user,/mob/living/carbon/human) && src == user:wear_suit)
|
||||||
src.orient_objs(1, 3, 3, 3)
|
src.orient_objs(1, 3, 2, 3)
|
||||||
else
|
else
|
||||||
src.orient_objs(4, 4, 4, 2)
|
src.orient_objs(4, 3, 4, 2)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my)
|
/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my)
|
||||||
|
|
||||||
var/cx = tx
|
var/cx = tx
|
||||||
var/cy = ty
|
var/cy = ty
|
||||||
src.boxes.screen_loc = text("[],[] to [],[]", tx, ty, mx, my)
|
src.boxes.screen_loc = "[tx],[ty] to [mx],[my]"
|
||||||
for(var/obj/O in src.contents)
|
for(var/obj/O in src.contents)
|
||||||
O.screen_loc = text("[],[]", cx, cy)
|
O.screen_loc = "[cx],[cy]"
|
||||||
O.layer = 20
|
O.layer = 20
|
||||||
cx++
|
cx++
|
||||||
if (cx > mx)
|
if (cx > mx)
|
||||||
cx = tx
|
cx = tx
|
||||||
cy--
|
cy--
|
||||||
//Foreach goto(56)
|
src.closer.screen_loc = "[mx+1],[my]"
|
||||||
src.closer.screen_loc = text("[],[]", mx+1, my)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/storage/proc/show_to(mob/user as mob)
|
||||||
|
for(var/obj/item/weapon/mousetrap/MT in src)
|
||||||
|
if(MT.armed)
|
||||||
|
for(var/mob/O in viewers(user, null))
|
||||||
|
if(O == user)
|
||||||
|
user.show_message(text("\red <B>You reach into the [src.name], but there was a live mousetrap in there!</B>"), 1)
|
||||||
|
else
|
||||||
|
user.show_message(text("\red <B>[user] reaches into the [src.name] and sets off a hidden mousetrap!</B>"), 1)
|
||||||
|
MT.loc = user.loc
|
||||||
|
MT.triggered(user, user.hand ? "l_hand" : "r_hand")
|
||||||
|
MT.layer = OBJ_LAYER
|
||||||
|
return
|
||||||
|
user.client.screen -= src.boxes
|
||||||
|
user.client.screen -= src.closer
|
||||||
|
user.client.screen -= src.contents
|
||||||
|
user.client.screen += src.boxes
|
||||||
|
user.client.screen += src.closer
|
||||||
|
user.client.screen += src.contents
|
||||||
|
user.s_active = src
|
||||||
|
return
|
||||||
|
|
||||||
/*/obj/item/clothing/suit/storage/New()
|
/*/obj/item/clothing/suit/storage/New()
|
||||||
|
|
||||||
src.boxes = new /obj/screen/storage( )
|
src.boxes = new /obj/screen/storage( )
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
icon_opened = "trashcartopen"
|
icon_opened = "trashcartopen"
|
||||||
icon_closed = "trashcart"
|
icon_closed = "trashcart"
|
||||||
|
|
||||||
|
/*these aren't needed anymore
|
||||||
/obj/structure/closet/crate/hat
|
/obj/structure/closet/crate/hat
|
||||||
desc = "A crate filled with Valuable Collector's Hats!."
|
desc = "A crate filled with Valuable Collector's Hats!."
|
||||||
name = "Hat Crate"
|
name = "Hat Crate"
|
||||||
@@ -39,15 +40,6 @@
|
|||||||
icon_closed = "crate"
|
icon_closed = "crate"
|
||||||
|
|
||||||
/obj/structure/closet/crate/contraband
|
/obj/structure/closet/crate/contraband
|
||||||
name = "Contraband crate"
|
|
||||||
desc = "A random assortment of items manufactured by providers NOT listed under Nanotrasen's whitelist."
|
|
||||||
icon = 'storage.dmi'
|
|
||||||
icon_state = "crate"
|
|
||||||
density = 1
|
|
||||||
icon_opened = "crateopen"
|
|
||||||
icon_closed = "crate"
|
|
||||||
|
|
||||||
/obj/structure/closet/crate/poster
|
|
||||||
name = "Poster crate"
|
name = "Poster crate"
|
||||||
desc = "A random assortment of posters manufactured by providers NOT listed under Nanotrasen's whitelist."
|
desc = "A random assortment of posters manufactured by providers NOT listed under Nanotrasen's whitelist."
|
||||||
icon = 'storage.dmi'
|
icon = 'storage.dmi'
|
||||||
@@ -55,15 +47,7 @@
|
|||||||
density = 1
|
density = 1
|
||||||
icon_opened = "crateopen"
|
icon_opened = "crateopen"
|
||||||
icon_closed = "crate"
|
icon_closed = "crate"
|
||||||
|
*/
|
||||||
/obj/structure/closet/crate/cigarettes
|
|
||||||
name = "DromedaryCo cigarettes crate"
|
|
||||||
desc = "A crate of cigarettes manufactured by the notorious DromedaryCo company."
|
|
||||||
icon = 'storage.dmi'
|
|
||||||
icon_state = "crate"
|
|
||||||
density = 1
|
|
||||||
icon_opened = "crateopen"
|
|
||||||
icon_closed = "crate"
|
|
||||||
|
|
||||||
/obj/structure/closet/crate/medical
|
/obj/structure/closet/crate/medical
|
||||||
desc = "A medical crate."
|
desc = "A medical crate."
|
||||||
|
|||||||
@@ -316,7 +316,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/storage/box/syndicate/New()
|
/obj/item/weapon/storage/box/syndicate/New()
|
||||||
..()
|
..()
|
||||||
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1)))
|
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1)))
|
||||||
if ("bloodyspai")
|
if ("bloodyspai")
|
||||||
new /obj/item/clothing/under/chameleon(src)
|
new /obj/item/clothing/under/chameleon(src)
|
||||||
new /obj/item/clothing/mask/gas/voice(src)
|
new /obj/item/clothing/mask/gas/voice(src)
|
||||||
@@ -352,6 +352,19 @@
|
|||||||
U.imp = new /obj/item/weapon/implant/uplink(U)
|
U.imp = new /obj/item/weapon/implant/uplink(U)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if ("hacker")
|
||||||
|
new /obj/item/weapon/aiModule/syndicate(src)
|
||||||
|
new /obj/item/weapon/card/emag(src)
|
||||||
|
new /obj/item/device/encryptionkey/binary(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
if ("lordsingulo")
|
||||||
|
new /obj/item/device/radio/beacon/syndicate(src)
|
||||||
|
new /obj/item/clothing/suit/space/syndicate(src)
|
||||||
|
new /obj/item/clothing/head/helmet/space/syndicate(src)
|
||||||
|
new /obj/item/weapon/card/emag(src)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/weapon/storage/dice/New()
|
/obj/item/weapon/storage/dice/New()
|
||||||
new /obj/item/weapon/dice( src )
|
new /obj/item/weapon/dice( src )
|
||||||
new /obj/item/weapon/dice/d20( src )
|
new /obj/item/weapon/dice/d20( src )
|
||||||
|
|||||||
@@ -149,7 +149,47 @@ TABLE AND RACK OBJECT INTERATIONS
|
|||||||
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
||||||
var/obj/item/weapon/grab/G = W
|
var/obj/item/weapon/grab/G = W
|
||||||
if(G.state<2)
|
if(G.state<2)
|
||||||
user << "\red You need a better grip to do that!"
|
if(ishuman(G.affecting))
|
||||||
|
G.affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been smashed on a table by [G.assailant.name] ([G.assailant.ckey])</font>")
|
||||||
|
G.assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Smashed [G.affecting.name] ([G.affecting.ckey]) on a table.</font>")
|
||||||
|
|
||||||
|
log_admin("ATTACK: [G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.")
|
||||||
|
message_admins("ATTACK: [G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.")
|
||||||
|
log_attack("<font color='red'>[G.assailant] ([G.assailant.ckey]) smashed [G.affecting] ([G.affecting.ckey]) on a table.</font>")
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = G.affecting
|
||||||
|
var/datum/organ/external/affecting = H.get_organ("head")
|
||||||
|
if(prob(25))
|
||||||
|
add_blood(G.affecting)
|
||||||
|
affecting.take_damage(rand(10,15), 0)
|
||||||
|
H.Weaken(2)
|
||||||
|
if(prob(20)) // One chance in 20 to DENT THE TABLE
|
||||||
|
affecting.take_damage(rand(0,5), 0) //Extra damage
|
||||||
|
if(dented)
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src] with enough force to further deform \the [src]!\nYou wish you could unhear that sound.",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src] with enough force to leave another dent!\n[prob(50)?"That was a satisfying noise." : "That sound will haunt your nightmares"]",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the squeal of said metal deforming.")
|
||||||
|
else
|
||||||
|
dented = 1
|
||||||
|
G.assailant.visible_message("\red \The [G.assailant] smashes \the [H]'s head on \the [src] so hard it left a dent!\nYou wish you could unhear that sound.",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src] with enough force to leave a dent!\n[prob(5)?"That was a satisfying noise." : "That sound will haunt your nightmares"]",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the squeal of said metal deforming.")
|
||||||
|
else if(prob(50))
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] bone and cartilage making a loud crunch!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] bone and cartilage making a loud crunch!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal, the noise echoing through the room.")
|
||||||
|
else
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] nose smashed and face bloodied!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src], [H.gender == MALE? "his" : "her"] nose smashed and face bloodied!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal and the gurgling gasp of someone who is trying to breathe through their own blood.")
|
||||||
|
else
|
||||||
|
affecting.take_damage(rand(5,10), 0)
|
||||||
|
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You smash \the [H]'s head on \the [src]!",\
|
||||||
|
"\red You hear the nauseating crunch of bone and gristle on solid metal.")
|
||||||
|
H.UpdateDamageIcon()
|
||||||
|
H.updatehealth()
|
||||||
|
playsound(src.loc, 'tablehit1.ogg', 50, 1, -3)
|
||||||
return
|
return
|
||||||
G.affecting.loc = src.loc
|
G.affecting.loc = src.loc
|
||||||
G.affecting.Weaken(5)
|
G.affecting.Weaken(5)
|
||||||
|
|||||||
72
code/game/objects/watercloset.dm
Normal file
72
code/game/objects/watercloset.dm
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
//todo: flushing, flushing heads, showers actually cleaning people
|
||||||
|
|
||||||
|
/obj/structure/toilet
|
||||||
|
name = "toilet"
|
||||||
|
desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean."
|
||||||
|
icon = 'watercloset.dmi'
|
||||||
|
icon_state = "toilet0"
|
||||||
|
density = 0
|
||||||
|
anchored = 1
|
||||||
|
var/open = 0
|
||||||
|
|
||||||
|
/obj/structure/toilet/New()
|
||||||
|
open = round(rand(0, 1))
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/structure/toilet/attack_hand()
|
||||||
|
open = !open
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/structure/toilet/update_icon()
|
||||||
|
icon_state = "toilet[open]"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/structure/urinal
|
||||||
|
name = "urinal"
|
||||||
|
desc = "The HU-452, an experimental urinal."
|
||||||
|
icon = 'watercloset.dmi'
|
||||||
|
icon_state = "urinal"
|
||||||
|
density = 0
|
||||||
|
anchored = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/structure/shower
|
||||||
|
name = "shower"
|
||||||
|
desc = "The HS-451. Installed in the 2550s by the Nanotrasen Hygiene Division."
|
||||||
|
icon = 'watercloset.dmi'
|
||||||
|
icon_state = "shower"
|
||||||
|
density = 0
|
||||||
|
anchored = 1
|
||||||
|
var/on = 0
|
||||||
|
var/mist = 0 //needs a var so we can make it linger~
|
||||||
|
|
||||||
|
//add heat controls? when emagged, you can freeze to death in it?
|
||||||
|
|
||||||
|
/obj/structure/shower/attack_hand()
|
||||||
|
on = !on
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/structure/shower/update_icon()
|
||||||
|
overlays = null
|
||||||
|
if(on)
|
||||||
|
overlays += image('watercloset.dmi', src, "water", MOB_LAYER + 1, dir)
|
||||||
|
spawn(50)
|
||||||
|
if(src && on)
|
||||||
|
overlays += image('watercloset.dmi', src, "mist", MOB_LAYER + 1, dir)
|
||||||
|
mist = 1
|
||||||
|
else if(mist)
|
||||||
|
overlays += image('watercloset.dmi', src, "mist", MOB_LAYER + 1, dir)
|
||||||
|
spawn(100)
|
||||||
|
if(src && !on)
|
||||||
|
overlays = null
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/bikehorn/rubberducky
|
||||||
|
name = "rubber ducky"
|
||||||
|
desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl
|
||||||
|
icon = 'watercloset.dmi'
|
||||||
|
icon_state = "rubberducky"
|
||||||
|
item_state = "rubberducky"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/obj/structure/shuttle
|
/obj/structure/shuttle
|
||||||
name = "shuttle"
|
name = "shuttle"
|
||||||
icon = 'shuttle.dmi'
|
icon = 'shuttle.dmi'
|
||||||
@@ -11,6 +10,9 @@
|
|||||||
opacity = 0
|
opacity = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
|
||||||
|
CanPass(atom/movable/mover, turf/target, height, air_group)
|
||||||
|
if(!height || air_group) return 0
|
||||||
|
else return ..()
|
||||||
|
|
||||||
/obj/structure/shuttle/engine
|
/obj/structure/shuttle/engine
|
||||||
name = "engine"
|
name = "engine"
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
s["host"] = host ? host : null
|
s["host"] = host ? host : null
|
||||||
s["players"] = list()
|
s["players"] = list()
|
||||||
s["admins"] = 0
|
s["admins"] = 0
|
||||||
var/admins = 0
|
|
||||||
var/n = 0
|
var/n = 0
|
||||||
|
|
||||||
for(var/client/C)
|
for(var/client/C)
|
||||||
@@ -30,6 +29,5 @@
|
|||||||
s["end"] = "#end"
|
s["end"] = "#end"
|
||||||
|
|
||||||
// 7 + s["players"] + 1 = index of s["revinfo"]
|
// 7 + s["players"] + 1 = index of s["revinfo"]
|
||||||
s["admins"] = admins
|
|
||||||
|
|
||||||
return list2params(s)
|
return list2params(s)
|
||||||
|
|||||||
@@ -353,6 +353,7 @@ obj/machinery/computer/forensic_scanning
|
|||||||
scan_data = null
|
scan_data = null
|
||||||
updateDialog()
|
updateDialog()
|
||||||
return
|
return
|
||||||
|
if(scanning)
|
||||||
scan_process = 0
|
scan_process = 0
|
||||||
scan_name = scanning.name
|
scan_name = scanning.name
|
||||||
scan_data = "<u>[scanning]</u><br><br>"
|
scan_data = "<u>[scanning]</u><br><br>"
|
||||||
@@ -467,7 +468,7 @@ obj/machinery/computer/forensic_scanning
|
|||||||
if(!blood[main_blood])
|
if(!blood[main_blood])
|
||||||
blood[main_blood] = atom_blood_DNA[blood]
|
blood[main_blood] = atom_blood_DNA[blood]
|
||||||
return 1
|
return 1
|
||||||
var/list/templist[2]
|
var/list/templist[3]
|
||||||
templist[1] = atom_suit_fibers
|
templist[1] = atom_suit_fibers
|
||||||
templist[2] = atom_blood_DNA
|
templist[2] = atom_blood_DNA
|
||||||
templist[3] = atom_name
|
templist[3] = atom_name
|
||||||
|
|||||||
@@ -2267,8 +2267,7 @@ var/global/BSACooldown = 0
|
|||||||
if("maint_access_engiebrig")
|
if("maint_access_engiebrig")
|
||||||
for(var/obj/machinery/door/airlock/maintenance/M in world)
|
for(var/obj/machinery/door/airlock/maintenance/M in world)
|
||||||
if (access_maint_tunnels in M.req_access)
|
if (access_maint_tunnels in M.req_access)
|
||||||
M.req_access = list()
|
M.req_access = list(access_brig,access_engine)
|
||||||
M.req_one_access = list(access_brig,access_engine)
|
|
||||||
message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
|
message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
|
||||||
if("infinite_sec")
|
if("infinite_sec")
|
||||||
var/datum/job/J = job_master.GetJob("Security Officer")
|
var/datum/job/J = job_master.GetJob("Security Officer")
|
||||||
@@ -2729,17 +2728,12 @@ var/global/BSACooldown = 0
|
|||||||
dat += "<center><B>Voting</B></center><hr>\n"
|
dat += "<center><B>Voting</B></center><hr>\n"
|
||||||
|
|
||||||
if(lvl > 0)
|
if(lvl > 0)
|
||||||
// if(lvl >= 2 )
|
|
||||||
dat += {"
|
dat += {"
|
||||||
<A href='?src=\ref[src];votekill=1'>Abort Vote</A><br>
|
<A href='?src=\ref[src];votekill=1'>Abort Vote</A><br>
|
||||||
<A href='?src=\ref[src];vmode=1'>Start Vote</A><br>
|
<A href='?src=\ref[src];vmode=1'>Start Vote</A><br>
|
||||||
<A href='?src=\ref[src];voteres=1'>Toggle Voting</A><br>
|
<A href='?src=\ref[src];voteres=1'>Toggle Voting</A><br>
|
||||||
"}
|
"}
|
||||||
|
|
||||||
// if(lvl >= 3 )
|
|
||||||
// if(lvl >= 5)
|
|
||||||
// if(lvl == 6 )
|
|
||||||
|
|
||||||
usr << browse(dat, "window=admin2;size=210x160")
|
usr << browse(dat, "window=admin2;size=210x160")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2751,11 +2745,11 @@ var/global/BSACooldown = 0
|
|||||||
|
|
||||||
/obj/admins/proc/vmode()
|
/obj/admins/proc/vmode()
|
||||||
set category = "Server"
|
set category = "Server"
|
||||||
set name = "Start Vote"
|
set hidden = 1 // It doesn't have a cancel button, so it shouldn't be autocompleted. Should be started via Voting() instead
|
||||||
set desc="Starts vote"
|
|
||||||
if (!usr.client.holder)
|
if (!usr.client.holder)
|
||||||
return
|
return
|
||||||
var/confirm = alert("What vote would you like to start?", "Vote", "Restart", "Custom Vote", "Change Game Mode", "Cancel")
|
|
||||||
|
var/confirm = alert("What vote would you like to start?", "Vote", "Restart", "Custom Vote", "Change Game Mode")
|
||||||
switch(confirm)
|
switch(confirm)
|
||||||
if("Cancel")
|
if("Cancel")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -210,6 +210,7 @@
|
|||||||
verbs += /obj/admins/proc/adspawn //toggle admin item spawning
|
verbs += /obj/admins/proc/adspawn //toggle admin item spawning
|
||||||
verbs += /client/proc/debug_variables
|
verbs += /client/proc/debug_variables
|
||||||
verbs += /client/proc/cmd_modify_ticker_variables
|
verbs += /client/proc/cmd_modify_ticker_variables
|
||||||
|
verbs += /client/proc/cmd_modify_ref_variables
|
||||||
verbs += /client/proc/Debug2 //debug toggle switch
|
verbs += /client/proc/Debug2 //debug toggle switch
|
||||||
verbs += /client/proc/toggle_view_range
|
verbs += /client/proc/toggle_view_range
|
||||||
verbs += /client/proc/Getmob
|
verbs += /client/proc/Getmob
|
||||||
@@ -291,7 +292,8 @@
|
|||||||
verbs += /client/proc/only_one
|
verbs += /client/proc/only_one
|
||||||
verbs += /client/proc/deadmin_self
|
verbs += /client/proc/deadmin_self
|
||||||
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
|
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
|
||||||
verbs += /client/proc/cinematic //used by coders to retrieve runtime logs
|
verbs += /client/proc/cinematic //show a cinematic sequence
|
||||||
|
verbs += /client/proc/startSinglo //Used to prevent the station from losing power while testing stuff out.
|
||||||
verbs += /client/proc/enable_debug_verbs
|
verbs += /client/proc/enable_debug_verbs
|
||||||
verbs += /client/proc/kill_air
|
verbs += /client/proc/kill_air
|
||||||
verbs += /client/proc/callprocgen
|
verbs += /client/proc/callprocgen
|
||||||
@@ -432,6 +434,7 @@
|
|||||||
verbs -= /client/proc/radioalert
|
verbs -= /client/proc/radioalert
|
||||||
verbs -= /client/proc/rnd_check_designs
|
verbs -= /client/proc/rnd_check_designs
|
||||||
verbs -= /client/proc/CarbonCopy
|
verbs -= /client/proc/CarbonCopy
|
||||||
|
verbs -= /client/proc/cmd_modify_ref_variables
|
||||||
verbs -= /proc/possess
|
verbs -= /proc/possess
|
||||||
verbs -= /proc/release
|
verbs -= /proc/release
|
||||||
//verbs -= /client/proc/give_spell --Merged with view variables
|
//verbs -= /client/proc/give_spell --Merged with view variables
|
||||||
|
|||||||
@@ -95,20 +95,24 @@
|
|||||||
else
|
else
|
||||||
alert("Admin jumping disabled")
|
alert("Admin jumping disabled")
|
||||||
|
|
||||||
/client/proc/Getmob(var/mob/M)
|
/client/proc/Getmob(var/mob/M in world)
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
set name = "Get Mob"
|
set name = "Get Mob"
|
||||||
set desc = "Mob to teleport"
|
set desc = "Mob to teleport"
|
||||||
|
|
||||||
if(!src.holder)
|
if(!src.holder)
|
||||||
src << "Only administrators may use this command."
|
src << "Only administrators may use this command."
|
||||||
return
|
return
|
||||||
|
|
||||||
if(config.allow_admin_jump)
|
if(config.allow_admin_jump)
|
||||||
if(!M || !istype(M))
|
if(!M || !istype(M))
|
||||||
var/mobs = getmobs()
|
var/mobs = getmobs()
|
||||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||||
M = mobs[selection]
|
if(!selection)
|
||||||
if(!istype(M))
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
M = mobs[selection]
|
||||||
|
|
||||||
var/mob/A = src.mob
|
var/mob/A = src.mob
|
||||||
var/turf/T = get_turf(A)
|
var/turf/T = get_turf(A)
|
||||||
if(T && isturf(T))
|
if(T && isturf(T))
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
set name = "Del-All"
|
set name = "Del-All"
|
||||||
|
|
||||||
// to prevent REALLY stupid deletions
|
// to prevent REALLY stupid deletions
|
||||||
var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human)
|
var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human, /mob/dead, /mob/dead/observer, /mob/living/silicon, /mob/living/silicon/robot, /mob/living/silicon/ai)
|
||||||
var/hsbitem = input(usr, "Choose an object to delete.", "Delete:") as null|anything in typesof(/obj) + typesof(/mob) - blocked
|
var/hsbitem = input(usr, "Choose an object to delete.", "Delete:") as null|anything in typesof(/obj) + typesof(/mob) - blocked
|
||||||
if(hsbitem)
|
if(hsbitem)
|
||||||
for(var/atom/O in world)
|
for(var/atom/O in world)
|
||||||
@@ -897,11 +897,15 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
M.update_clothing()
|
M.update_clothing()
|
||||||
|
|
||||||
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
|
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
|
||||||
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode]..", 1)
|
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1)
|
||||||
return
|
return
|
||||||
|
|
||||||
/client/proc/startSinglo()
|
/client/proc/startSinglo()
|
||||||
|
|
||||||
|
set category = "Debug"
|
||||||
|
set name = "Start Singularity"
|
||||||
|
set desc = "Sets up the singularity and all machines to get power flowing through the station"
|
||||||
|
|
||||||
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,17 @@ var/list/forbidden_varedit_object_types = list(
|
|||||||
src.modify_variables(O)
|
src.modify_variables(O)
|
||||||
//feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
//feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
|
/client/proc/cmd_modify_ref_variables(var/target as text)
|
||||||
|
set category = "Debug"
|
||||||
|
set name = "Edit Variables (Reference)"
|
||||||
|
set desc="(target) Edit a target item's variables"
|
||||||
|
var/obj/I = locate(target)
|
||||||
|
if(!I)
|
||||||
|
usr << "ERROR: Object could not be located!"
|
||||||
|
return
|
||||||
|
src.modify_variables(I)
|
||||||
|
//feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
/client/proc/cmd_modify_ticker_variables()
|
/client/proc/cmd_modify_ticker_variables()
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set name = "Edit Ticker Variables"
|
set name = "Edit Ticker Variables"
|
||||||
|
|||||||
@@ -102,7 +102,9 @@ datum
|
|||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
color = "#C80000" // rgb: 200, 0, 0
|
color = "#C80000" // rgb: 200, 0, 0
|
||||||
on_mob_life(var/mob/living/M)
|
on_mob_life(var/mob/living/M)
|
||||||
if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
if(!data || !data["blood_type"])
|
||||||
|
..()
|
||||||
|
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
||||||
M.adjustToxLoss(rand(0.5,1.5))
|
M.adjustToxLoss(rand(0.5,1.5))
|
||||||
M.adjustOxyLoss(rand(1,1.5))
|
M.adjustOxyLoss(rand(1,1.5))
|
||||||
..()
|
..()
|
||||||
@@ -694,10 +696,11 @@ datum
|
|||||||
id = "sugar"
|
id = "sugar"
|
||||||
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
|
||||||
reagent_state = SOLID
|
reagent_state = SOLID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#808080" // rgb: 128, 128, 128
|
color = "#808080" // rgb: 128, 128, 128
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2234,7 +2237,6 @@ datum
|
|||||||
M:nutrition += nutriment_factor
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getOxyLoss() && prob(30)) M:adjustOxyLoss(-1)
|
if(M:getOxyLoss() && prob(30)) M:adjustOxyLoss(-1)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2250,7 +2252,6 @@ datum
|
|||||||
M:nutrition += nutriment_factor
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getFireLoss() && prob(20)) M:heal_organ_damage(0,1)
|
if(M:getFireLoss() && prob(20)) M:heal_organ_damage(0,1)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2266,7 +2267,6 @@ datum
|
|||||||
M:nutrition += nutriment_factor
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1)
|
if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2418,12 +2418,13 @@ datum
|
|||||||
id = "milk"
|
id = "milk"
|
||||||
description = "An opaque white liquid produced by the mammary glands of mammals."
|
description = "An opaque white liquid produced by the mammary glands of mammals."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1.5 * REAGENTS_METABOLISM
|
||||||
color = "#DFDFDF" // rgb: 223, 223, 223
|
color = "#DFDFDF" // rgb: 223, 223, 223
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2432,12 +2433,13 @@ datum
|
|||||||
id = "soymilk"
|
id = "soymilk"
|
||||||
description = "An opaque white liquid made from soybeans."
|
description = "An opaque white liquid made from soybeans."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1.2 * REAGENTS_METABOLISM
|
||||||
color = "#DFDFC7" // rgb: 223, 223, 199
|
color = "#DFDFC7" // rgb: 223, 223, 199
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2541,13 +2543,14 @@ datum
|
|||||||
id = "cola"
|
id = "cola"
|
||||||
description = "A refreshing beverage."
|
description = "A refreshing beverage."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#100800" // rgb: 16, 8, 0
|
color = "#100800" // rgb: 16, 8, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
M:drowsyness = max(0,M:drowsyness-5)
|
M:drowsyness = max(0,M:drowsyness-5)
|
||||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2556,6 +2559,7 @@ datum
|
|||||||
id = "nuka_cola"
|
id = "nuka_cola"
|
||||||
description = "Cola, cola never changes."
|
description = "Cola, cola never changes."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#100800" // rgb: 16, 8, 0
|
color = "#100800" // rgb: 16, 8, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
@@ -2567,7 +2571,7 @@ datum
|
|||||||
M:sleeping = max(0,M.sleeping-2)
|
M:sleeping = max(0,M.sleeping-2)
|
||||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2576,6 +2580,7 @@ datum
|
|||||||
id = "spacemountainwind"
|
id = "spacemountainwind"
|
||||||
description = "Blows right through you like a space wind."
|
description = "Blows right through you like a space wind."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#102000" // rgb: 16, 32, 0
|
color = "#102000" // rgb: 16, 32, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
@@ -2585,7 +2590,7 @@ datum
|
|||||||
if (M.bodytemperature > 310)
|
if (M.bodytemperature > 310)
|
||||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||||
M.make_jittery(1)
|
M.make_jittery(1)
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2594,13 +2599,14 @@ datum
|
|||||||
id = "dr_gibb"
|
id = "dr_gibb"
|
||||||
description = "A delicious blend of 42 different flavours"
|
description = "A delicious blend of 42 different flavours"
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#102000" // rgb: 16, 32, 0
|
color = "#102000" // rgb: 16, 32, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
M:drowsyness = max(0,M:drowsyness-6)
|
M:drowsyness = max(0,M:drowsyness-6)
|
||||||
if (M.bodytemperature > 310)
|
if (M.bodytemperature > 310)
|
||||||
M.bodytemperature = max(310, M.bodytemperature-5) //310 is the normal bodytemp. 310.055
|
M.bodytemperature = max(310, M.bodytemperature-5) //310 is the normal bodytemp. 310.055
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2609,12 +2615,13 @@ datum
|
|||||||
id = "space_up"
|
id = "space_up"
|
||||||
description = "Tastes like a hull breach in your mouth."
|
description = "Tastes like a hull breach in your mouth."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#202800" // rgb: 32, 40, 0
|
color = "#202800" // rgb: 32, 40, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
if (M.bodytemperature > 310)
|
if (M.bodytemperature > 310)
|
||||||
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2623,12 +2630,13 @@ datum
|
|||||||
description = "A tangy substance made of 0.5% natural citrus!"
|
description = "A tangy substance made of 0.5% natural citrus!"
|
||||||
id = "lemon_lime"
|
id = "lemon_lime"
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#878F00" // rgb: 135, 40, 0
|
color = "#878F00" // rgb: 135, 40, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
if (M.bodytemperature > 310)
|
if (M.bodytemperature > 310)
|
||||||
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055
|
||||||
M:nutrition += 1
|
M:nutrition += nutriment_factor
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -2662,6 +2670,7 @@ datum
|
|||||||
id = "ethanol"
|
id = "ethanol"
|
||||||
description = "A well-known alcohol with a variety of applications."
|
description = "A well-known alcohol with a variety of applications."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
|
||||||
color = "#404030" // rgb: 64, 64, 48
|
color = "#404030" // rgb: 64, 64, 48
|
||||||
var
|
var
|
||||||
dizzy_adj = 3
|
dizzy_adj = 3
|
||||||
@@ -2673,6 +2682,7 @@ datum
|
|||||||
pass_out = 325 //amount absorbed after which mob starts passing out
|
pass_out = 325 //amount absorbed after which mob starts passing out
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
if(!src.data) data = 1
|
if(!src.data) data = 1
|
||||||
src.data++
|
src.data++
|
||||||
|
|
||||||
@@ -2704,13 +2714,13 @@ datum
|
|||||||
name = "Beer"
|
name = "Beer"
|
||||||
id = "beer"
|
id = "beer"
|
||||||
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
|
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
|
||||||
|
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
// slur_start = 25 //amount absorbed after which mob starts slurring
|
// slur_start = 25 //amount absorbed after which mob starts slurring
|
||||||
// confused_start = 40 //amount absorbed after which mob starts confusing directions //This is quite silly - Erthilo
|
// confused_start = 40 //amount absorbed after which mob starts confusing directions //This is quite silly - Erthilo
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
..()
|
..()
|
||||||
M:jitteriness = max(M:jitteriness-3,0)
|
M:jitteriness = max(M:jitteriness-3,0)
|
||||||
M:nutrition += 2
|
|
||||||
return
|
return
|
||||||
|
|
||||||
whiskey
|
whiskey
|
||||||
@@ -2799,13 +2809,13 @@ datum
|
|||||||
color = "#102000" // rgb: 16, 32, 0
|
color = "#102000" // rgb: 16, 32, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
M:drowsyness = max(0,M:drowsyness-7)
|
M:drowsyness = max(0,M:drowsyness-7)
|
||||||
if(!M:sleeping_willingly)
|
if(!M:sleeping_willingly)
|
||||||
M:sleeping = max(0,M.sleeping-2)
|
M:sleeping = max(0,M.sleeping-2)
|
||||||
if (M.bodytemperature > 310)
|
if (M.bodytemperature > 310)
|
||||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||||
M.make_jittery(1)
|
M.make_jittery(1)
|
||||||
M:nutrition += 1
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -2949,9 +2959,11 @@ datum
|
|||||||
id = "doctorsdelight"
|
id = "doctorsdelight"
|
||||||
description = "A gulp a day keeps the MediBot away. That's probably for the best."
|
description = "A gulp a day keeps the MediBot away. That's probably for the best."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2)
|
if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2)
|
||||||
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
|
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
|
||||||
@@ -3113,6 +3125,7 @@ datum
|
|||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
..()
|
||||||
if (M.bodytemperature < 360)
|
if (M.bodytemperature < 360)
|
||||||
M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055
|
M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055
|
||||||
return
|
return
|
||||||
@@ -3146,6 +3159,7 @@ datum
|
|||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
..()
|
||||||
if (M.bodytemperature < 270)
|
if (M.bodytemperature < 270)
|
||||||
M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055
|
M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055
|
||||||
return
|
return
|
||||||
@@ -3193,6 +3207,7 @@ datum
|
|||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
..()
|
||||||
M.stunned = 4
|
M.stunned = 4
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -3204,6 +3219,7 @@ datum
|
|||||||
color = "#2E2E61" // rgb: 46, 46, 97
|
color = "#2E2E61" // rgb: 46, 46, 97
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
..()
|
||||||
if(!M) M = holder.my_atom
|
if(!M) M = holder.my_atom
|
||||||
M:adjustOxyLoss(0.5)
|
M:adjustOxyLoss(0.5)
|
||||||
M:adjustOxyLoss(0.5)
|
M:adjustOxyLoss(0.5)
|
||||||
@@ -3233,15 +3249,8 @@ datum
|
|||||||
color = "#2E6671" // rgb: 46, 102, 113
|
color = "#2E6671" // rgb: 46, 102, 113
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
if(!data) data = 1
|
|
||||||
data++
|
|
||||||
M.dizziness +=5
|
|
||||||
if(data >= 55 && data <115)
|
|
||||||
if (!M.slurring) M.slurring = 1
|
|
||||||
M.slurring += 5
|
|
||||||
else if(data >= 115 && prob(33))
|
|
||||||
M.confused = max(M:confused+15,15)
|
|
||||||
..()
|
..()
|
||||||
|
M.dizziness +=5
|
||||||
return
|
return
|
||||||
|
|
||||||
irishcarbomb
|
irishcarbomb
|
||||||
@@ -3252,15 +3261,8 @@ datum
|
|||||||
color = "#2E6671" // rgb: 46, 102, 113
|
color = "#2E6671" // rgb: 46, 102, 113
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
if(!data) data = 1
|
|
||||||
data++
|
|
||||||
M.dizziness +=5
|
|
||||||
if(data >= 55 && data <115)
|
|
||||||
if (!M.slurring) M.slurring = 1
|
|
||||||
M.slurring += 5
|
|
||||||
else if(data >= 115 && prob(33))
|
|
||||||
M.confused = max(M:confused+15,15)
|
|
||||||
..()
|
..()
|
||||||
|
M.dizziness +=5
|
||||||
return
|
return
|
||||||
|
|
||||||
syndicatebomb
|
syndicatebomb
|
||||||
@@ -3350,10 +3352,12 @@ datum
|
|||||||
id = "soy_latte"
|
id = "soy_latte"
|
||||||
description = "A nice and tasty beverage while you are reading your hippie books."
|
description = "A nice and tasty beverage while you are reading your hippie books."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
|
||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
..()
|
..()
|
||||||
|
M:nutrition += nutriment_factor
|
||||||
M.dizziness = max(0,M.dizziness-5)
|
M.dizziness = max(0,M.dizziness-5)
|
||||||
M:drowsyness = max(0,M:drowsyness-3)
|
M:drowsyness = max(0,M:drowsyness-3)
|
||||||
M:sleeping = 0
|
M:sleeping = 0
|
||||||
@@ -3361,7 +3365,6 @@ datum
|
|||||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||||
M.make_jittery(5)
|
M.make_jittery(5)
|
||||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||||
M:nutrition++
|
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -3370,10 +3373,10 @@ datum
|
|||||||
id = "cafe_latte"
|
id = "cafe_latte"
|
||||||
description = "A nice, strong and tasty beverage while you are reading."
|
description = "A nice, strong and tasty beverage while you are reading."
|
||||||
reagent_state = LIQUID
|
reagent_state = LIQUID
|
||||||
|
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||||
color = "#664300" // rgb: 102, 67, 0
|
color = "#664300" // rgb: 102, 67, 0
|
||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
..()
|
|
||||||
M.dizziness = max(0,M.dizziness-5)
|
M.dizziness = max(0,M.dizziness-5)
|
||||||
M:drowsyness = max(0,M:drowsyness-3)
|
M:drowsyness = max(0,M:drowsyness-3)
|
||||||
M:sleeping = 0
|
M:sleeping = 0
|
||||||
@@ -3381,8 +3384,6 @@ datum
|
|||||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||||
M.make_jittery(5)
|
M.make_jittery(5)
|
||||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||||
M:nutrition++
|
|
||||||
..()
|
|
||||||
return
|
return
|
||||||
|
|
||||||
hippies_delight
|
hippies_delight
|
||||||
|
|||||||
@@ -616,10 +616,26 @@
|
|||||||
for(var/mob/living/carbon/M in D.loc)
|
for(var/mob/living/carbon/M in D.loc)
|
||||||
if(!istype(M,/mob/living/carbon)) continue
|
if(!istype(M,/mob/living/carbon)) continue
|
||||||
if(M == user) continue
|
if(M == user) continue
|
||||||
|
//Syring gune attack logging by Yvarov
|
||||||
|
var/R
|
||||||
|
for(var/datum/reagent/A in D.reagents.reagent_list)
|
||||||
|
R += A.id + " ("
|
||||||
|
R += num2text(A.volume) + "),"
|
||||||
|
if (istype(M, /mob))
|
||||||
|
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||||
|
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||||
|
log_attack("<font color='red'>[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])</font>")
|
||||||
|
log_admin("ATTACK: [user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]).")
|
||||||
|
message_admins("ATTACK: [user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]).")
|
||||||
|
else
|
||||||
|
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||||
|
log_attack("<font color='red'>UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R])</font>")
|
||||||
|
log_admin("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]).")
|
||||||
|
message_admins("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]).")
|
||||||
D.reagents.trans_to(M, 15)
|
D.reagents.trans_to(M, 15)
|
||||||
M.take_organ_damage(5)
|
M.take_organ_damage(5)
|
||||||
for(var/mob/O in viewers(world.view, D))
|
for(var/mob/O in viewers(world.view, D))
|
||||||
O.show_message(text("\red [] was hit by the syringe!", M), 1)
|
O.show_message(text("\red [] is hit by the syringe!", M.name), 1)
|
||||||
|
|
||||||
del(D)
|
del(D)
|
||||||
if(D)
|
if(D)
|
||||||
@@ -1936,6 +1952,8 @@
|
|||||||
icon = 'chemical.dmi'
|
icon = 'chemical.dmi'
|
||||||
icon_state = "beaker0"
|
icon_state = "beaker0"
|
||||||
item_state = "beaker"
|
item_state = "beaker"
|
||||||
|
m_amt = 0
|
||||||
|
g_amt = 500
|
||||||
|
|
||||||
pickup(mob/user)
|
pickup(mob/user)
|
||||||
on_reagent_change(user)
|
on_reagent_change(user)
|
||||||
@@ -2015,6 +2033,8 @@
|
|||||||
icon = 'chemical.dmi'
|
icon = 'chemical.dmi'
|
||||||
icon_state = "beakerlarge"
|
icon_state = "beakerlarge"
|
||||||
item_state = "beaker"
|
item_state = "beaker"
|
||||||
|
m_amt = 0
|
||||||
|
g_amt = 5000
|
||||||
volume = 100
|
volume = 100
|
||||||
amount_per_transfer_from_this = 10
|
amount_per_transfer_from_this = 10
|
||||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||||
|
|||||||
@@ -116,6 +116,7 @@
|
|||||||
item_state = "syndicate"
|
item_state = "syndicate"
|
||||||
see_face = 0.0
|
see_face = 0.0
|
||||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||||
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||||
|
|
||||||
/obj/item/clothing/head/chaplain_hood
|
/obj/item/clothing/head/chaplain_hood
|
||||||
name = "chaplain's hood"
|
name = "chaplain's hood"
|
||||||
@@ -142,4 +143,5 @@
|
|||||||
item_state = "cardborg_h"
|
item_state = "cardborg_h"
|
||||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
|
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||||
see_face = 0.0
|
see_face = 0.0
|
||||||
|
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||||
|
|||||||
@@ -32,8 +32,6 @@
|
|||||||
item_state = "thunderdome"
|
item_state = "thunderdome"
|
||||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/welding
|
/obj/item/clothing/head/helmet/welding
|
||||||
name = "welding helmet"
|
name = "welding helmet"
|
||||||
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
|
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
|
||||||
|
|||||||
@@ -273,7 +273,7 @@
|
|||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||||
|
|
||||||
/obj/item/clothing/under/rank/medical
|
/obj/item/clothing/under/rank/medical
|
||||||
desc = "It's made of a special fiber that provides minor protection against biohazards. it has a cross on the chest denoting that the wearer is trained medical personnel."
|
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||||
name = "medical doctor's jumpsuit"
|
name = "medical doctor's jumpsuit"
|
||||||
icon_state = "medical"
|
icon_state = "medical"
|
||||||
item_state = "w_suit"
|
item_state = "w_suit"
|
||||||
@@ -281,12 +281,32 @@
|
|||||||
permeability_coefficient = 0.50
|
permeability_coefficient = 0.50
|
||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||||
|
|
||||||
|
//SKRUBS
|
||||||
|
|
||||||
|
/obj/item/clothing/under/rank/medical/blue
|
||||||
|
name = "medical scrubs"
|
||||||
|
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
|
||||||
|
icon_state = "scrubsblue"
|
||||||
|
color = "scrubsblue"
|
||||||
|
|
||||||
|
/obj/item/clothing/under/rank/medical/green
|
||||||
|
name = "medical scrubs"
|
||||||
|
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
|
||||||
|
icon_state = "scrubsgreen"
|
||||||
|
color = "scrubsgreen"
|
||||||
|
|
||||||
|
/obj/item/clothing/under/rank/medical/purple
|
||||||
|
name = "medical scrubs"
|
||||||
|
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
|
||||||
|
icon_state = "scrubspurple"
|
||||||
|
color = "scrubspurple"
|
||||||
|
|
||||||
/obj/item/clothing/under/rank/chief_medical_officer
|
/obj/item/clothing/under/rank/chief_medical_officer
|
||||||
desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection."
|
desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection."
|
||||||
name = "chief medical officer's jumpsuit"
|
name = "chief medical officer's jumpsuit"
|
||||||
icon_state = "medical"
|
icon_state = "cmo"
|
||||||
item_state = "w_suit"
|
item_state = "w_suit"
|
||||||
color = "medical"
|
color = "cmo"
|
||||||
permeability_coefficient = 0.50
|
permeability_coefficient = 0.50
|
||||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 10, rad = 0)
|
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 10, rad = 0)
|
||||||
|
|
||||||
@@ -301,17 +321,17 @@
|
|||||||
|
|
||||||
/obj/item/clothing/under/rank/cargo
|
/obj/item/clothing/under/rank/cargo
|
||||||
name = "quartermaster's jumpsuit"
|
name = "quartermaster's jumpsuit"
|
||||||
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by heavy lifting."
|
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
|
||||||
icon_state = "lightbrown"
|
icon_state = "qm"
|
||||||
item_state = "lb_suit"
|
item_state = "lb_suit"
|
||||||
color = "cargo"
|
color = "qm"
|
||||||
|
|
||||||
/obj/item/clothing/under/rank/cargotech
|
/obj/item/clothing/under/rank/cargotech
|
||||||
name = "cargotech's jumpsuit"
|
name = "cargo technician's jumpsuit"
|
||||||
desc = "<i>'Shooooorts! They're comfy and easy to wear!'</i>"
|
desc = "Shooooorts! They're comfy and easy to wear!"
|
||||||
icon_state = "cargotech"
|
icon_state = "cargotech"
|
||||||
item_state = "cargotech"
|
item_state = "lb_suit"
|
||||||
color = "cargotech"
|
color = "cargo"
|
||||||
|
|
||||||
/obj/item/clothing/under/rank/mailman
|
/obj/item/clothing/under/rank/mailman
|
||||||
name = "mailman's jumpsuit"
|
name = "mailman's jumpsuit"
|
||||||
@@ -532,6 +552,7 @@
|
|||||||
armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100)
|
armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100)
|
||||||
|
|
||||||
// Cheerleader outfits or something
|
// Cheerleader outfits or something
|
||||||
|
|
||||||
/obj/item/clothing/under/cheerleader
|
/obj/item/clothing/under/cheerleader
|
||||||
name = "cheerleader uniform"
|
name = "cheerleader uniform"
|
||||||
desc = "Looks breezy."
|
desc = "Looks breezy."
|
||||||
@@ -552,6 +573,7 @@
|
|||||||
/obj/item/clothing/under/cheerleader/white
|
/obj/item/clothing/under/cheerleader/white
|
||||||
icon_state = "white_cheer"
|
icon_state = "white_cheer"
|
||||||
color = "white_cheer"
|
color = "white_cheer"
|
||||||
|
|
||||||
//End of cheerleaders
|
//End of cheerleaders
|
||||||
|
|
||||||
/obj/item/clothing/under/captainmal
|
/obj/item/clothing/under/captainmal
|
||||||
|
|||||||
@@ -62,6 +62,9 @@
|
|||||||
/obj/item/clothing/suit/bio_suit/cmo
|
/obj/item/clothing/suit/bio_suit/cmo
|
||||||
icon_state = "bio_cmo"
|
icon_state = "bio_cmo"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/bio_hood/cmo
|
||||||
|
icon_state = "bio_cmo"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
|
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
|
||||||
name = "Plague doctor suit"
|
name = "Plague doctor suit"
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
/obj/item/clothing/head/bomb_hood
|
/obj/item/clothing/head/bomb_hood
|
||||||
name = "bomb hood"
|
name = "bomb hood"
|
||||||
desc = "Use in case of bomb."
|
desc = "A hood that protect from explosions. Also provides moderate protection."
|
||||||
icon_state = "bombsuit"
|
icon_state = "bombsuit"
|
||||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||||
|
|
||||||
/obj/item/clothing/suit/bomb_suit
|
/obj/item/clothing/suit/bomb_suit
|
||||||
name = "bomb suit"
|
name = "bomb suit"
|
||||||
desc = "A suit designed for safety when handling explosives."
|
desc = "A suit used for safely disposing explosives. Also provides moderate protection."
|
||||||
icon_state = "bombsuit"
|
icon_state = "bombsuit"
|
||||||
item_state = "bombsuit"
|
item_state = "bombsuit"
|
||||||
w_class = 4//bulky item
|
w_class = 4//bulky item
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
heat_transfer_coefficient = 0.30
|
heat_transfer_coefficient = 0.30
|
||||||
flags = FPRINT | TABLEPASS
|
flags = FPRINT | TABLEPASS
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
slowdown = 2
|
slowdown = 3.5 //To compensate for the extra armour.
|
||||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||||
flags_inv = HIDEJUMPSUIT
|
flags_inv = HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,14 +15,14 @@
|
|||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/bluetag
|
/obj/item/clothing/suit/bluetag
|
||||||
name = "blue laser tag armour"
|
name = "blue laser tag armour"
|
||||||
desc = "Blue Pride, Station Wide"
|
desc = "Blue Pride, Station Wide"
|
||||||
icon_state = "bluetag"
|
icon_state = "bluetag"
|
||||||
item_state = "bluetag"
|
item_state = "bluetag"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
|
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/redtag
|
/obj/item/clothing/suit/redtag
|
||||||
name = "red laser tag armour"
|
name = "red laser tag armour"
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
icon_state = "redtag"
|
icon_state = "redtag"
|
||||||
item_state = "redtag"
|
item_state = "redtag"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
|
allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/apron
|
/obj/item/clothing/suit/storage/apron
|
||||||
|
|||||||
@@ -46,6 +46,12 @@
|
|||||||
icon_state = "steve_johnson_1"
|
icon_state = "steve_johnson_1"
|
||||||
item_state = "steve_johnson_1"
|
item_state = "steve_johnson_1"
|
||||||
|
|
||||||
|
/obj/item/fluff/david_fanning_1 //sicktrigger: David Fanning
|
||||||
|
name = "golden scalpel"
|
||||||
|
desc = "A fine surgical cutting tool covered in thin gold leaf. Does not seem able to cut anything."
|
||||||
|
icon_state = "david_fanning_1"
|
||||||
|
item_state = "david_fanning_1"
|
||||||
|
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
////////// Usable Items //////////
|
////////// Usable Items //////////
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
@@ -118,13 +124,19 @@
|
|||||||
icon_state = "orangecamera"
|
icon_state = "orangecamera"
|
||||||
pictures_left = 30
|
pictures_left = 30
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/card/id/fluff/lifetime //fastler: Fastler Greay; it seemed like something multiple people would have
|
/obj/item/weapon/card/id/fluff/lifetime //fastler: Fastler Greay; it seemed like something multiple people would have
|
||||||
name = "Lifetime ID Card"
|
name = "Lifetime ID Card"
|
||||||
desc = "A modified ID card given only to those people who have devoted their lives to the better interests of NanoTrasen. It sparkles blue."
|
desc = "A modified ID card given only to those people who have devoted their lives to the better interests of NanoTrasen. It sparkles blue."
|
||||||
icon = 'custom_items.dmi'
|
icon = 'custom_items.dmi'
|
||||||
icon_state = "lifetimeid"
|
icon_state = "lifetimeid"
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask //lexusjjss: Lexus Langg & Zachary Tomlinson
|
||||||
|
name = "shiny flask"
|
||||||
|
desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it."
|
||||||
|
icon = 'custom_items.dmi'
|
||||||
|
icon_state = "shinyflask"
|
||||||
|
volume = 50
|
||||||
|
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//////////// Clothing ////////////
|
//////////// Clothing ////////////
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
@@ -176,6 +188,13 @@
|
|||||||
icon = 'custom_items.dmi'
|
icon = 'custom_items.dmi'
|
||||||
icon_state = "taryn_kifer_1"
|
icon_state = "taryn_kifer_1"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/enos_adlai_1 //roaper: Enos Adlai
|
||||||
|
name = "comfy cap"
|
||||||
|
desc = "Because when you're the toughest Mother Hubbard on the station, nobody's criticizing your fashion sense."
|
||||||
|
icon = 'custom_items.dmi'
|
||||||
|
icon_state = "enos_adlai_1"
|
||||||
|
flags = FPRINT|TABLEPASS
|
||||||
|
|
||||||
//////////// Suits ////////////
|
//////////// Suits ////////////
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/labcoat/fluff/pink //spaceman96: Trenna Seber
|
/obj/item/clothing/suit/storage/labcoat/fluff/pink //spaceman96: Trenna Seber
|
||||||
|
|||||||
@@ -29,25 +29,7 @@
|
|||||||
|
|
||||||
handle_regular_hud_updates()
|
handle_regular_hud_updates()
|
||||||
|
|
||||||
if (src.stat == 2 || src.mutations & XRAY)
|
..() //-Yvarov
|
||||||
src.sight |= SEE_TURFS
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight |= SEE_OBJS
|
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = 2
|
|
||||||
else if (src.stat != 2)
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight |= SEE_TURFS
|
|
||||||
src.sight &= ~SEE_OBJS
|
|
||||||
src.see_in_dark = 5
|
|
||||||
src.see_invisible = 2
|
|
||||||
|
|
||||||
if (src.sleep)
|
|
||||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
|
||||||
src.sleep.overlays = null
|
|
||||||
if(src.sleeping_willingly)
|
|
||||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
|
||||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
|
||||||
|
|
||||||
if (src.healths)
|
if (src.healths)
|
||||||
if (src.stat != 2)
|
if (src.stat != 2)
|
||||||
@@ -86,7 +68,7 @@
|
|||||||
|
|
||||||
if(src.sleeping)
|
if(src.sleeping)
|
||||||
Paralyse(3)
|
Paralyse(3)
|
||||||
if (prob(10) && health) spawn(0) emote("snore")
|
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||||
if(!src.sleeping_willingly)
|
if(!src.sleeping_willingly)
|
||||||
src.sleeping--
|
src.sleeping--
|
||||||
|
|
||||||
|
|||||||
@@ -29,25 +29,7 @@
|
|||||||
|
|
||||||
handle_regular_hud_updates()
|
handle_regular_hud_updates()
|
||||||
|
|
||||||
if (src.stat == 2 || src.mutations & XRAY)
|
..() //-Yvarov
|
||||||
src.sight |= SEE_TURFS
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight |= SEE_OBJS
|
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = 2
|
|
||||||
else if (src.stat != 2)
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight &= SEE_TURFS
|
|
||||||
src.sight &= ~SEE_OBJS
|
|
||||||
src.see_in_dark = 7
|
|
||||||
src.see_invisible = 3
|
|
||||||
|
|
||||||
if (src.sleep)
|
|
||||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
|
||||||
src.sleep.overlays = null
|
|
||||||
if(src.sleeping_willingly)
|
|
||||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
|
||||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
|
||||||
|
|
||||||
if (src.healths)
|
if (src.healths)
|
||||||
if (src.stat != 2)
|
if (src.stat != 2)
|
||||||
@@ -87,7 +69,7 @@
|
|||||||
|
|
||||||
if(src.sleeping)
|
if(src.sleeping)
|
||||||
Paralyse(3)
|
Paralyse(3)
|
||||||
if (prob(10) && health) spawn(0) emote("snore")
|
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||||
if(!src.sleeping_willingly)
|
if(!src.sleeping_willingly)
|
||||||
src.sleeping--
|
src.sleeping--
|
||||||
|
|
||||||
|
|||||||
@@ -404,7 +404,7 @@
|
|||||||
|
|
||||||
if(src.sleeping)
|
if(src.sleeping)
|
||||||
Paralyse(3)
|
Paralyse(3)
|
||||||
if (prob(10) && health) spawn(0) emote("snore")
|
//if (prob(10) && health) emote("snore") //Invalid emote for aliens, but it might be worth making sleep noticeable somehow -Yvarov
|
||||||
if(!src.sleeping_willingly)
|
if(!src.sleeping_willingly)
|
||||||
src.sleeping--
|
src.sleeping--
|
||||||
|
|
||||||
|
|||||||
@@ -32,25 +32,7 @@
|
|||||||
|
|
||||||
handle_regular_hud_updates()
|
handle_regular_hud_updates()
|
||||||
|
|
||||||
if (src.stat == 2 || src.mutations & XRAY)
|
..() //-Yvarov
|
||||||
src.sight |= SEE_TURFS
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight |= SEE_OBJS
|
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = 2
|
|
||||||
else if (src.stat != 2)
|
|
||||||
src.sight |= SEE_MOBS
|
|
||||||
src.sight |= SEE_TURFS
|
|
||||||
src.sight &= ~SEE_OBJS
|
|
||||||
src.see_in_dark = 8
|
|
||||||
src.see_invisible = 2
|
|
||||||
|
|
||||||
if (src.sleep)
|
|
||||||
src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0)
|
|
||||||
src.sleep.overlays = null
|
|
||||||
if(src.sleeping_willingly)
|
|
||||||
src.sleep.overlays += icon(src.sleep.icon, "sleep_willing")
|
|
||||||
if (src.rest) src.rest.icon_state = text("rest[]", src.resting)
|
|
||||||
|
|
||||||
if (src.healths)
|
if (src.healths)
|
||||||
if (src.stat != 2)
|
if (src.stat != 2)
|
||||||
@@ -88,7 +70,7 @@
|
|||||||
|
|
||||||
if(src.sleeping)
|
if(src.sleeping)
|
||||||
Paralyse(3)
|
Paralyse(3)
|
||||||
if (prob(10) && health) spawn(0) emote("snore")
|
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||||
if(!src.sleeping_willingly)
|
if(!src.sleeping_willingly)
|
||||||
src.sleeping--
|
src.sleeping--
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@
|
|||||||
|
|
||||||
if(sleeping)
|
if(sleeping)
|
||||||
Paralyse(3)
|
Paralyse(3)
|
||||||
if (prob(10) && health) spawn(0) emote("snore")
|
//if (prob(10) && health) spawn(0) emote("snore") Invalid Emote
|
||||||
if(!src.sleeping_willingly)
|
if(!src.sleeping_willingly)
|
||||||
src.sleeping--
|
src.sleeping--
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,10 @@
|
|||||||
|
|
||||||
//handcuffed?
|
//handcuffed?
|
||||||
if (src.handcuffed)
|
if (src.handcuffed)
|
||||||
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
|
if(istype(src.handcuffed, /obj/item/weapon/handcuffs/cable))
|
||||||
|
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] restrained with cable!</span>\n"
|
||||||
|
else
|
||||||
|
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] handcuffed!</span>\n"
|
||||||
|
|
||||||
//belt
|
//belt
|
||||||
if (src.belt)
|
if (src.belt)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user