mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Merge remote-tracking branch 'remotes/git-svn' into bs12_with_tgport (r4649)
Conflicts: code/game/gamemodes/wizard/rightandwrong.dm code/game/machinery/computer/law.dm code/game/machinery/telecomms/broadcaster.dm code/game/objects/items/devices/uplinks.dm code/modules/food/recipes_microwave.dm html/changelog.html icons/effects/effects.dmi Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
@@ -253,6 +253,7 @@
|
||||
#define FILE_DIR "interface"
|
||||
#define FILE_DIR "maps"
|
||||
#define FILE_DIR "maps/RandomZLevels"
|
||||
#define FILE_DIR "music"
|
||||
#define FILE_DIR "sound"
|
||||
#define FILE_DIR "sound/AI"
|
||||
#define FILE_DIR "sound/ambience"
|
||||
@@ -611,6 +612,7 @@
|
||||
#include "code\game\machinery\telecomms\broadcaster.dm"
|
||||
#include "code\game\machinery\telecomms\logbrowser.dm"
|
||||
#include "code\game\machinery\telecomms\machine_interactions.dm"
|
||||
#include "code\game\machinery\telecomms\presets.dm"
|
||||
#include "code\game\machinery\telecomms\telecomunications.dm"
|
||||
#include "code\game\machinery\telecomms\telemonitor.dm"
|
||||
#include "code\game\machinery\telecomms\traffic_control.dm"
|
||||
|
||||
@@ -41,11 +41,7 @@
|
||||
|
||||
/datum/supply_packs/food
|
||||
name = "Food crate"
|
||||
contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
contains = list(/obj/item/weapon/reagent_containers/food/drinks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/storage/fancy/egg_box,
|
||||
|
||||
@@ -317,13 +317,20 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
return
|
||||
|
||||
if(cmptext("ai",role))
|
||||
oldname = null//don't bother with the records update crap
|
||||
world << "<b>[newname] is the AI!</b>"
|
||||
world << sound('sound/AI/newAI.ogg')
|
||||
for(var/mob/aiEye/E in mob_list)
|
||||
if(E.ai && E.ai == src)
|
||||
E.name = "[newname] (AI Eye)"
|
||||
break
|
||||
if(isAI(src))
|
||||
var/mob/living/silicon/ai/A = src
|
||||
oldname = null//don't bother with the records update crap
|
||||
world << "<b>[newname] is the AI!</b>"
|
||||
world << sound('sound/AI/newAI.ogg')
|
||||
// Set eyeobj name
|
||||
if(A.eyeobj)
|
||||
A.eyeobj.name = "[newname] (AI Eye)"
|
||||
|
||||
// Set ai pda name
|
||||
if(A.aiPDA)
|
||||
A.aiPDA.owner = newname
|
||||
A.aiPDA.name = newname + " (" + A.aiPDA.ownjob + ")"
|
||||
|
||||
|
||||
fully_replace_character_name(oldname,newname)
|
||||
|
||||
@@ -357,25 +364,32 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
return borgs[select]
|
||||
|
||||
//When a borg is activated, it can choose which AI it wants to be slaved to
|
||||
/proc/activeais()
|
||||
var/select = null
|
||||
var/list/names = list()
|
||||
var/list/ais = list()
|
||||
var/list/namecounts = list()
|
||||
for (var/mob/living/silicon/ai/A in player_list)
|
||||
var/name = A.real_name
|
||||
if (A.stat == 2)
|
||||
/proc/active_ais()
|
||||
. = list()
|
||||
for(var/mob/living/silicon/ai/A in living_mob_list)
|
||||
if(A.stat == DEAD)
|
||||
continue
|
||||
if (A.control_disabled == 1)
|
||||
if(A.control_disabled == 1)
|
||||
continue
|
||||
else
|
||||
names.Add(name)
|
||||
namecounts[name] = 1
|
||||
ais[name] = A
|
||||
. += A
|
||||
return .
|
||||
|
||||
if (ais.len)
|
||||
select = input("AI signals detected:", "AI selection") in ais
|
||||
return ais[select]
|
||||
//Find an active ai with the least borgs. VERBOSE PROCNAME HUH!
|
||||
/proc/select_active_ai_with_fewest_borgs()
|
||||
var/mob/living/silicon/ai/selected
|
||||
var/list/active = active_ais()
|
||||
for(var/mob/living/silicon/ai/A in active)
|
||||
if(!selected || (selected.connected_robots > A.connected_robots))
|
||||
selected = A
|
||||
|
||||
return selected
|
||||
|
||||
/proc/select_active_ai(var/mob/user)
|
||||
var/list/ais = active_ais()
|
||||
if(ais.len)
|
||||
if(user) . = input(usr,"AI signals detected:", "AI selection") in ais
|
||||
else . = pick(ais)
|
||||
return .
|
||||
|
||||
/proc/get_sorted_mobs()
|
||||
var/list/old_list = getmobs()
|
||||
@@ -1346,4 +1360,4 @@ proc/is_hot(obj/item/W as obj)
|
||||
if(WEST)
|
||||
return EAST
|
||||
if(NORTHWEST)
|
||||
return SOUTHEAST
|
||||
return SOUTHEAST
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
|
||||
|
||||
/client/proc/rightandwrong()
|
||||
set category = "Spells"
|
||||
set desc = "Summon Guns"
|
||||
set name = "Wizards: No sense of right and wrong!"
|
||||
|
||||
/mob/proc/rightandwrong()
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(is_special_character(H)) continue
|
||||
@@ -51,4 +47,3 @@
|
||||
new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
|
||||
if("crossbow")
|
||||
new /obj/item/weapon/gun/energy/crossbow(get_turf(H))
|
||||
usr.verbs -= /client/proc/rightandwrong
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
src.temp = "This spell opens nearby doors and does not require wizard garb."
|
||||
if ("14")
|
||||
feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.verbs += /client/proc/rightandwrong
|
||||
usr.rightandwrong()
|
||||
src.max_uses--
|
||||
src.temp = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!"
|
||||
if ("15")
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head)
|
||||
var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H)
|
||||
CIG.light("")
|
||||
H.equip_to_slot_or_del(CIG, slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
if(H.backbag == 1)
|
||||
|
||||
@@ -38,6 +38,11 @@
|
||||
WireColorToFlag = randomCameraWires()
|
||||
assembly = new(src)
|
||||
assembly.state = 4
|
||||
/* // Use this to look for cameras that have the same c_tag.
|
||||
for(var/obj/machinery/camera/C in cameranet.cameras)
|
||||
if(C != src && C.c_tag == src.c_tag && C.network == src.network)
|
||||
world.log << "[src.c_tag] [src.x] [src.y] [src.z] conflicts with [C.c_tag] [C.x] [C.y] [C.z]"
|
||||
*/
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
upgradeXRay()
|
||||
upgradeMotion()
|
||||
|
||||
|
||||
// CHECKS
|
||||
|
||||
/obj/machinery/camera/proc/isEmpProof()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
usr << "The upload computer is broken!"
|
||||
return
|
||||
|
||||
src.current = activeais()
|
||||
src.current = select_active_ai(user)
|
||||
|
||||
if (!src.current)
|
||||
usr << "No active AIs detected."
|
||||
|
||||
@@ -15,7 +15,7 @@ Possible to do for anyone motivated enough:
|
||||
// HOLOPAD MODE
|
||||
// 0 = RANGE BASED
|
||||
// 1 = AREA BASED
|
||||
var/const/HOLOPAD_MODE = 1
|
||||
var/const/HOLOPAD_MODE = 0
|
||||
|
||||
|
||||
/obj/machinery/hologram/holopad/attack_hand(var/mob/living/carbon/human/user) //Carn: Hologram requests.
|
||||
@@ -120,6 +120,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
if(hologram)
|
||||
step_to(hologram, master.eyeobj) // So it turns.
|
||||
hologram.loc = get_turf(master.eyeobj)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/hologram/power_change()
|
||||
|
||||
@@ -163,9 +163,6 @@
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
|
||||
items_measures[display_name] = "egg"
|
||||
items_measures_p[display_name] = "eggs"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/flour))
|
||||
items_measures[display_name] = "cup of flour"
|
||||
items_measures_p[display_name] = "cups of flour"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu))
|
||||
items_measures[display_name] = "tofu chunk"
|
||||
items_measures_p[display_name] = "tofu chunks"
|
||||
|
||||
@@ -25,10 +25,6 @@
|
||||
del(what)
|
||||
|
||||
/* objs */
|
||||
wheat
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
|
||||
output = /obj/item/weapon/reagent_containers/food/snacks/flour
|
||||
|
||||
meat
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
output = /obj/item/weapon/reagent_containers/food/snacks/faggot
|
||||
@@ -57,9 +53,6 @@
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
|
||||
output = /obj/item/weapon/reagent_containers/food/snacks/soydope
|
||||
|
||||
flour
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/flour
|
||||
output = /obj/item/weapon/reagent_containers/food/snacks/spagetti
|
||||
|
||||
/* mobs */
|
||||
mob
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
var/list/recentmessages = list() // global list of recent messages broadcasted : used to circumvent massive radio spam
|
||||
|
||||
var/message_delay = 0 // To make sure restarting the recentmessages list is kept in sync
|
||||
|
||||
/obj/machinery/telecomms/broadcaster
|
||||
name = "Subspace Broadcaster"
|
||||
@@ -38,18 +38,18 @@ var/list/recentmessages = list() // global list of recent messages broadcasted :
|
||||
if(signal.data["message"])
|
||||
|
||||
// Prevents massive radio spam
|
||||
var/signal_message = "[signal.data["message"]]:[signal.data["realname"]]:[listening_level]"
|
||||
if(signal_message in recentmessages)
|
||||
return
|
||||
recentmessages.Add(signal_message)
|
||||
|
||||
signal.data["done"] = 1 // mark the signal as being broadcasted
|
||||
|
||||
// Search for the original signal and mark it as done as well
|
||||
var/datum/signal/original = signal.data["original"]
|
||||
if(original)
|
||||
original.data["done"] = 1
|
||||
|
||||
var/datum/radio_frequency/connection = signal.data["connection"]
|
||||
var/signal_message = "[connection.frequency]:[signal.data["message"]]:[signal.data["realname"]]:[listening_level]"
|
||||
if(signal_message in recentmessages)
|
||||
return
|
||||
recentmessages.Add(signal_message)
|
||||
|
||||
if(signal.data["slow"] > 0)
|
||||
sleep(signal.data["slow"]) // simulate the network lag if necessary
|
||||
|
||||
@@ -89,12 +89,19 @@ var/list/recentmessages = list() // global list of recent messages broadcasted :
|
||||
signal.data["name"], signal.data["job"],
|
||||
signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], listening_level)
|
||||
|
||||
spawn(10)
|
||||
recentmessages = list()
|
||||
if(!message_delay)
|
||||
message_delay = 1
|
||||
spawn(10)
|
||||
message_delay = 0
|
||||
recentmessages = list()
|
||||
|
||||
/* --- Do a snazzy animation! --- */
|
||||
flick("broadcaster_send", src)
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/Del()
|
||||
// In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore.
|
||||
if(message_delay)
|
||||
message_delay = 0
|
||||
|
||||
|
||||
/*
|
||||
|
||||
215
code/game/machinery/telecomms/presets.dm
Normal file
215
code/game/machinery/telecomms/presets.dm
Normal file
@@ -0,0 +1,215 @@
|
||||
// ### Preset machines ###
|
||||
|
||||
//Relay
|
||||
|
||||
/obj/machinery/telecomms/relay/preset
|
||||
network = "tcommsat"
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/station
|
||||
id = "Station Relay"
|
||||
autolinkers = list("s_relay", "s_receiverA", "s_broadcasterA", "s_receiverB", "s_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/telecomms
|
||||
id = "Telecomms Relay"
|
||||
autolinkers = list("relay", "receiverA", "receiverB", "broadcasterA", "broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/mining
|
||||
id = "Mining Relay"
|
||||
autolinkers = list("m_relay", "m_receiverB", "m_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/ruskie
|
||||
id = "Ruskie Relay"
|
||||
hide = 1
|
||||
toggled = 0
|
||||
autolinkers = list("r_relay", "r_receiverB", "r_broadcasterB")
|
||||
|
||||
//HUB
|
||||
|
||||
/obj/machinery/telecomms/hub/preset
|
||||
id = "Hub"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("hub", "relay", "s_relay", "m_relay", "r_relay", "science", "medical",
|
||||
"cargo", "mining", "common", "command", "engineering", "security")
|
||||
|
||||
//Receivers
|
||||
|
||||
//--PRESET LEFT--//
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_left
|
||||
id = "Receiver A"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("receiverA") // link to relay
|
||||
freq_listening = list(1351, 1355, 1347, 1349) // science, medical, cargo, mining
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_left/station
|
||||
id = "Station Receiver A"
|
||||
autolinkers = list("s_receiverA") // link to relay
|
||||
listening_level = 1
|
||||
|
||||
//--PRESET RIGHT--//
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right
|
||||
id = "Receiver B"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("receiverB") // link to relay
|
||||
freq_listening = list(1353, 1357, 1359) //command, engineering, security
|
||||
|
||||
//Common and other radio frequencies for people to freely use
|
||||
New()
|
||||
for(var/i = 1441, i < 1489, i += 2)
|
||||
freq_listening |= i
|
||||
..()
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/station
|
||||
id = "Station Receiver B"
|
||||
autolinkers = list("s_receiverB")
|
||||
listening_level = 1 // Listen to the station remotely
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/mining
|
||||
id = "Mining Receiver B"
|
||||
autolinkers = list("m_receiverB")
|
||||
freq_listening = list(1351, 1355, 1347, 1349, 1353, 1357, 1359)
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/ruskie
|
||||
id = "Ruskie Receiver B"
|
||||
autolinkers = list("r_receiverB")
|
||||
freq_listening = list(1351, 1355, 1347, 1349, 1353, 1357, 1359) // science, medical, cargo, mining, command, engineering, security
|
||||
toggled = 0
|
||||
hide = 1
|
||||
|
||||
|
||||
//Buses
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_one
|
||||
id = "Bus 1"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor1", "science", "medical")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_two
|
||||
id = "Bus 2"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor2", "cargo", "mining")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_three
|
||||
id = "Bus 3"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor3", "security", "command")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_four
|
||||
id = "Bus 4"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor4", "engineering", "common")
|
||||
|
||||
|
||||
//Processors
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_one
|
||||
id = "Processor 1"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor1") // processors are sort of isolated; they don't need backward links
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_two
|
||||
id = "Processor 2"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor2")
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_three
|
||||
id = "Processor 3"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor3")
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_four
|
||||
id = "Processor 4"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor4")
|
||||
|
||||
//Servers
|
||||
|
||||
/obj/machinery/telecomms/server/presets
|
||||
|
||||
network = "tcommsat"
|
||||
|
||||
/obj/machinery/telecomms/server/presets/science
|
||||
id = "Science Server"
|
||||
freq_listening = list(1351)
|
||||
autolinkers = list("science")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/medical
|
||||
id = "Medical Server"
|
||||
freq_listening = list(1355)
|
||||
autolinkers = list("medical")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/cargo
|
||||
id = "Cargo Server"
|
||||
freq_listening = list(1347)
|
||||
autolinkers = list("cargo")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/mining
|
||||
id = "Mining Server"
|
||||
freq_listening = list(1349)
|
||||
autolinkers = list("mining")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/common
|
||||
id = "Common Server"
|
||||
freq_listening = list()
|
||||
autolinkers = list("common")
|
||||
|
||||
//Common and other radio frequencies for people to freely use
|
||||
// 1441 to 1489
|
||||
/obj/machinery/telecomms/server/presets/common/New()
|
||||
for(var/i = 1441, i < 1489, i += 2)
|
||||
freq_listening |= i
|
||||
..()
|
||||
|
||||
/obj/machinery/telecomms/server/presets/command
|
||||
id = "Command Server"
|
||||
freq_listening = list(1353)
|
||||
autolinkers = list("command")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/engineering
|
||||
id = "Engineering Server"
|
||||
freq_listening = list(1357)
|
||||
autolinkers = list("engineering")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/security
|
||||
id = "Security Server"
|
||||
freq_listening = list(1359)
|
||||
autolinkers = list("security")
|
||||
|
||||
|
||||
//Broadcasters
|
||||
|
||||
//--PRESET LEFT--//
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_left
|
||||
id = "Broadcaster A"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("broadcasterA")
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_left/station
|
||||
id = "Station Broadcaster A"
|
||||
autolinkers = list("s_broadcasterA")
|
||||
listening_level = 1 // Station
|
||||
|
||||
//--PRESET RIGHT--//
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right
|
||||
id = "Broadcaster B"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("broadcasterB")
|
||||
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/station
|
||||
id = "Station Broadcaster B"
|
||||
autolinkers = list("s_broadcasterB")
|
||||
listening_level = 1 // Station
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/mining
|
||||
id = "Mining Broadcaster B"
|
||||
autolinkers = list("m_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/ruskie
|
||||
id = "Ruskie Broadcaster B"
|
||||
autolinkers = list("r_broadcasterB")
|
||||
toggled = 0
|
||||
hide = 1
|
||||
@@ -589,226 +589,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
|
||||
|
||||
|
||||
|
||||
// ### Preset machines (Located at centcom!) (Or the Comms Satellite) ###
|
||||
|
||||
//Relay
|
||||
|
||||
/obj/machinery/telecomms/relay/preset
|
||||
network = "tcommsat"
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/station
|
||||
id = "Station Relay"
|
||||
autolinkers = list("s_relay", "s_receiverA", "s_broadcasterA", "s_receiverB", "s_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/telecomms
|
||||
id = "Telecomms Relay"
|
||||
autolinkers = list("relay", "receiverA", "receiverB", "broadcasterA", "broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/mining
|
||||
id = "Mining Relay"
|
||||
autolinkers = list("m_relay", "m_receiverB", "m_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/relay/preset/ruskie
|
||||
id = "Ruskie Relay"
|
||||
hide = 1
|
||||
toggled = 0
|
||||
autolinkers = list("r_relay", "r_receiverB", "r_broadcasterB")
|
||||
|
||||
//HUB
|
||||
|
||||
/obj/machinery/telecomms/hub/preset
|
||||
id = "Hub"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("hub", "relay", "s_relay", "m_relay", "r_relay", "science", "medical",
|
||||
"cargo", "mining", "common", "command", "engineering", "security")
|
||||
|
||||
//Receivers
|
||||
|
||||
//--PRESET LEFT--//
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_left
|
||||
id = "Receiver A"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("receiverA") // link to relay
|
||||
freq_listening = list(1351, 1355, 1347, 1349) // science, medical, cargo, mining
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_left/station
|
||||
id = "Station Receiver A"
|
||||
autolinkers = list("s_receiverA") // link to relay
|
||||
listening_level = 1
|
||||
|
||||
//--PRESET RIGHT--//
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right
|
||||
id = "Receiver B"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("receiverB") // link to relay
|
||||
freq_listening = list(1353, 1357, 1359) //command, engineering, security
|
||||
|
||||
//Common and other radio frequencies for people to freely use
|
||||
New()
|
||||
for(var/i = 1441, i < 1489, i += 2)
|
||||
freq_listening |= i
|
||||
..()
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/station
|
||||
id = "Station Receiver B"
|
||||
autolinkers = list("s_receiverB")
|
||||
listening_level = 1 // Listen to the station remotely
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/mining
|
||||
id = "Mining Receiver B"
|
||||
autolinkers = list("m_receiverB")
|
||||
freq_listening = list(1351, 1355, 1347, 1349, 1353, 1357, 1359)
|
||||
|
||||
/obj/machinery/telecomms/receiver/preset_right/ruskie
|
||||
id = "Ruskie Receiver B"
|
||||
autolinkers = list("r_receiverB")
|
||||
freq_listening = list(1351, 1355, 1347, 1349, 1353, 1357, 1359) // science, medical, cargo, mining, command, engineering, security
|
||||
toggled = 0
|
||||
hide = 1
|
||||
|
||||
|
||||
//Buses
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_one
|
||||
id = "Bus 1"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor1", "science", "medical")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_two
|
||||
id = "Bus 2"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor2", "cargo", "mining")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_three
|
||||
id = "Bus 3"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor3", "security", "command")
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_four
|
||||
id = "Bus 4"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor4", "engineering", "common")
|
||||
|
||||
|
||||
//Processors
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_one
|
||||
id = "Processor 1"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor1") // processors are sort of isolated; they don't need backward links
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_two
|
||||
id = "Processor 2"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor2")
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_three
|
||||
id = "Processor 3"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor3")
|
||||
|
||||
/obj/machinery/telecomms/processor/preset_four
|
||||
id = "Processor 4"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("processor4")
|
||||
|
||||
//Servers
|
||||
|
||||
/obj/machinery/telecomms/server/presets
|
||||
|
||||
network = "tcommsat"
|
||||
|
||||
/obj/machinery/telecomms/server/presets/science
|
||||
id = "Science Server"
|
||||
freq_listening = list(1351)
|
||||
autolinkers = list("science")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/medical
|
||||
id = "Medical Server"
|
||||
freq_listening = list(1355)
|
||||
autolinkers = list("medical")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/cargo
|
||||
id = "Cargo Server"
|
||||
freq_listening = list(1347)
|
||||
autolinkers = list("cargo")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/mining
|
||||
id = "Mining Server"
|
||||
freq_listening = list(1349)
|
||||
autolinkers = list("mining")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/common
|
||||
id = "Common Server"
|
||||
freq_listening = list()
|
||||
autolinkers = list("common")
|
||||
|
||||
//Common and other radio frequencies for people to freely use
|
||||
// 1441 to 1489
|
||||
/obj/machinery/telecomms/server/presets/common/New()
|
||||
for(var/i = 1441, i < 1489, i += 2)
|
||||
freq_listening |= i
|
||||
..()
|
||||
|
||||
/obj/machinery/telecomms/server/presets/command
|
||||
id = "Command Server"
|
||||
freq_listening = list(1353)
|
||||
autolinkers = list("command")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/engineering
|
||||
id = "Engineering Server"
|
||||
freq_listening = list(1357)
|
||||
autolinkers = list("engineering")
|
||||
|
||||
/obj/machinery/telecomms/server/presets/security
|
||||
id = "Security Server"
|
||||
freq_listening = list(1359)
|
||||
autolinkers = list("security")
|
||||
|
||||
|
||||
//Broadcasters
|
||||
|
||||
//--PRESET LEFT--//
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_left
|
||||
id = "Broadcaster A"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("broadcasterA")
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_left/station
|
||||
id = "Station Broadcaster A"
|
||||
autolinkers = list("s_broadcasterA")
|
||||
listening_level = 1 // Station
|
||||
|
||||
//--PRESET RIGHT--//
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right
|
||||
id = "Broadcaster B"
|
||||
network = "tcommsat"
|
||||
autolinkers = list("broadcasterB")
|
||||
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/station
|
||||
id = "Station Broadcaster B"
|
||||
autolinkers = list("s_broadcasterB")
|
||||
listening_level = 1 // Station
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/mining
|
||||
id = "Mining Broadcaster B"
|
||||
autolinkers = list("m_broadcasterB")
|
||||
|
||||
/obj/machinery/telecomms/broadcaster/preset_right/ruskie
|
||||
id = "Ruskie Broadcaster B"
|
||||
autolinkers = list("r_broadcasterB")
|
||||
toggled = 0
|
||||
hide = 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,16 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "dirt"
|
||||
|
||||
/obj/effect/decal/cleanable/flour
|
||||
name = "flour"
|
||||
desc = "It's still good. Four second rule!"
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "flour"
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow
|
||||
name = "glowing goo"
|
||||
desc = "Jeez. I hope that's not for lunch."
|
||||
|
||||
@@ -2,17 +2,6 @@
|
||||
|
||||
/*
|
||||
|
||||
SYNDICATE UPLINKS
|
||||
|
||||
TO-DO:
|
||||
Once wizard is fixed, make sure the uplinks work correctly for it. wizard.dm is right now uncompiled and with broken code in it.
|
||||
|
||||
Clean the code up and comment it. Part of it is right now copy-pasted, with the general Topic() and modifications by Abi79.
|
||||
|
||||
I should take a more in-depth look at both the copy-pasted code for the individual uplinks below, and at each gamemode's code
|
||||
to see how uplinks are assigned and if there are any bugs with those.
|
||||
|
||||
|
||||
A list of items and costs is stored under the datum of every game mode, alongside the number of crystals, and the welcoming message.
|
||||
|
||||
*/
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
var/path = 0
|
||||
var/obj/item/weapon/circuitboard/circuit = null
|
||||
var/list/beakers = new/list()
|
||||
var/list/allowed_containers = list("/obj/item/weapon/reagent_containers/glass/beaker", "/obj/item/weapon/reagent_containers/glass/dispenser", "/obj/item/weapon/reagent_containers/glass/bottle")
|
||||
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
|
||||
var/affected_area = 3
|
||||
|
||||
New()
|
||||
@@ -41,7 +41,7 @@
|
||||
stage = 2
|
||||
else
|
||||
user << "\red You need to add at least one beaker before locking the assembly."
|
||||
else if((istype(W,/obj/item/weapon/reagent_containers/glass/beaker) || istype(W,/obj/item/weapon/reagent_containers/glass/bottle)) && stage == 1 && path != 2)
|
||||
else if(is_type_in_list(W, allowed_containers) && stage == 1 && path != 2)
|
||||
path = 1
|
||||
if(beakers.len == 2)
|
||||
user << "\red The grenade can not hold more containers."
|
||||
@@ -56,46 +56,46 @@
|
||||
user << "\red \the [W] is empty."
|
||||
|
||||
prime()
|
||||
if(prob(reliability))
|
||||
var/has_reagents = 0
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
if(G.reagents.total_volume) has_reagents = 1
|
||||
//if(prob(reliability))
|
||||
var/has_reagents = 0
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
if(G.reagents.total_volume) has_reagents = 1
|
||||
|
||||
if(!has_reagents)
|
||||
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
state = 0
|
||||
return
|
||||
if(!has_reagents)
|
||||
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
state = 0
|
||||
return
|
||||
|
||||
playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
|
||||
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
|
||||
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
|
||||
var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
|
||||
steam.set_up(10, 0, get_turf(src))
|
||||
steam.attach(src)
|
||||
steam.start()
|
||||
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
|
||||
var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
|
||||
steam.set_up(10, 0, get_turf(src))
|
||||
steam.attach(src)
|
||||
steam.start()
|
||||
|
||||
for(var/atom/A in view(affected_area, src.loc))
|
||||
if( A == src ) continue
|
||||
src.reagents.reaction(A, 1, 10)
|
||||
for(var/atom/A in view(affected_area, src.loc))
|
||||
if( A == src ) continue
|
||||
src.reagents.reaction(A, 1, 10)
|
||||
|
||||
|
||||
invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
|
||||
spawn(50) //To make sure all reagents can work
|
||||
del(src) //correctly before deleting the grenade.
|
||||
else
|
||||
invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
|
||||
spawn(50) //To make sure all reagents can work
|
||||
del(src) //correctly before deleting the grenade.
|
||||
/*else
|
||||
icon_state = initial(icon_state) + "_locked"
|
||||
crit_fail = 1
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
|
||||
G.loc = get_turf(src.loc)
|
||||
G.loc = get_turf(src.loc)*/
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/large
|
||||
name = "Large Chem Grenade"
|
||||
desc = "An oversized grenade that affects a larger area."
|
||||
icon_state = "large_grenade"
|
||||
allowed_containers = list("/obj/item/weapon/reagent_containers/glass")
|
||||
allowed_containers = list(/obj/item/weapon/reagent_containers/glass)
|
||||
origin_tech = "combat=3;materials=3"
|
||||
affected_area = 4
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
* Oxygen
|
||||
*/
|
||||
/obj/item/weapon/tank/oxygen
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen"
|
||||
name = "oxygen tank"
|
||||
desc = "A tank of oxygen."
|
||||
icon_state = "oxygen"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
|
||||
@@ -32,12 +32,10 @@
|
||||
|
||||
|
||||
/obj/item/weapon/tank/oxygen/yellow
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen, this one is yellow."
|
||||
icon_state = "oxygen_f"
|
||||
|
||||
/obj/item/weapon/tank/oxygen/red
|
||||
name = "Gas Tank (Oxygen)"
|
||||
desc = "A tank of oxygen, this one is red."
|
||||
icon_state = "oxygen_fr"
|
||||
|
||||
@@ -46,8 +44,8 @@
|
||||
* Anesthetic
|
||||
*/
|
||||
/obj/item/weapon/tank/anesthetic
|
||||
name = "Gas Tank (Sleeping Agent)"
|
||||
desc = "A N2O/O2 gas mix"
|
||||
name = "anesthetic tank"
|
||||
desc = "A tank with an N2O/O2 gas mix."
|
||||
icon_state = "anesthetic"
|
||||
item_state = "an_tank"
|
||||
|
||||
@@ -66,7 +64,7 @@
|
||||
* Air
|
||||
*/
|
||||
/obj/item/weapon/tank/air
|
||||
name = "Gas Tank (Air Mix)"
|
||||
name = "air tank"
|
||||
desc = "Mixed anyone?"
|
||||
icon_state = "oxygen"
|
||||
|
||||
@@ -90,8 +88,8 @@
|
||||
* Plasma
|
||||
*/
|
||||
/obj/item/weapon/tank/plasma
|
||||
name = "Gas Tank (BIOHAZARD)"
|
||||
desc = "Contains dangerous plasma. Do not inhale."
|
||||
name = "plasma tank"
|
||||
desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable."
|
||||
icon_state = "plasma"
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
slot_flags = null //they have no straps!
|
||||
@@ -103,42 +101,6 @@
|
||||
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/tank/plasma/proc/release()
|
||||
var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles())
|
||||
|
||||
loc.assume_air(removed)
|
||||
|
||||
/obj/item/weapon/tank/plasma/proc/ignite()
|
||||
var/fuel_moles = air_contents.toxins + air_contents.oxygen/6
|
||||
var/strength = 1
|
||||
|
||||
var/turf/ground_zero = get_turf(loc)
|
||||
loc = null
|
||||
|
||||
if(air_contents.temperature > (T0C + 400))
|
||||
strength = fuel_moles/15
|
||||
|
||||
explosion(ground_zero, strength, strength*2, strength*3, strength*4)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 250))
|
||||
strength = fuel_moles/20
|
||||
|
||||
explosion(ground_zero, 0, strength, strength*2, strength*3)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 100))
|
||||
strength = fuel_moles/25
|
||||
|
||||
explosion(ground_zero, 0, 0, strength, strength*3)
|
||||
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
if(src.master)
|
||||
del(src.master)
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -180,11 +142,11 @@
|
||||
usr << sound('sound/effects/alert.ogg')
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/engi
|
||||
icon_state = "emergency_engi"
|
||||
name = "extended-capacity emergency oxygen tank"
|
||||
icon_state = "emergency_engi"
|
||||
volume = 6
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/double
|
||||
name = "double emergency oxygen tank"
|
||||
icon_state = "emergency_double"
|
||||
name = "Double Emergency Oxygen Tank"
|
||||
volume = 10
|
||||
|
||||
@@ -238,7 +238,10 @@
|
||||
else if(pressure > TANK_RUPTURE_PRESSURE)
|
||||
//world << "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]"
|
||||
if(integrity <= 0)
|
||||
loc.assume_air(air_contents)
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
T.assume_air(air_contents)
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
del(src)
|
||||
else
|
||||
@@ -247,8 +250,11 @@
|
||||
else if(pressure > TANK_LEAK_PRESSURE)
|
||||
//world << "\blue[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]"
|
||||
if(integrity <= 0)
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
var/datum/gas_mixture/leaked_gas = air_contents.remove_ratio(0.25)
|
||||
loc.assume_air(leaked_gas)
|
||||
T.assume_air(leaked_gas)
|
||||
else
|
||||
integrity--
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
for(var/i = 0, i < 16, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/flour(src)
|
||||
for(var/i = 0, i < 3, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/flour(src)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment/sugar(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -142,12 +142,13 @@ var/list/mechtoys = list(
|
||||
|
||||
New()
|
||||
ordernum = rand(1,9000)
|
||||
|
||||
//Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station
|
||||
proc/process()
|
||||
for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs))
|
||||
var/datum/supply_packs/P = new typepath()
|
||||
supply_packs[P.name] = P
|
||||
|
||||
//Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station
|
||||
proc/process()
|
||||
spawn(0)
|
||||
set background = 1
|
||||
while(1)
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = ""
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
item_state = "electronic"
|
||||
w_class = 2.0
|
||||
m_amt = 100
|
||||
g_amt = 0
|
||||
|
||||
153
code/modules/assembly/bomb.dm
Normal file
153
code/modules/assembly/bomb.dm
Normal file
@@ -0,0 +1,153 @@
|
||||
/obj/item/device/onetankbomb
|
||||
name = "bomb"
|
||||
icon = 'tank.dmi'
|
||||
item_state = "assembly"
|
||||
throwforce = 5
|
||||
w_class = 3.0
|
||||
throw_speed = 2
|
||||
throw_range = 4
|
||||
flags = FPRINT | TABLEPASS| CONDUCT //Copied this from old code, so this may or may not be necessary
|
||||
var/status = 0 //0 - not readied //1 - bomb finished with welder
|
||||
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/weapon/tank/bombtank = null //the second part of the bomb is a plasma tank
|
||||
|
||||
/obj/item/device/onetankbomb/examine()
|
||||
..()
|
||||
bombtank.examine()
|
||||
|
||||
/obj/item/device/onetankbomb/update_icon()
|
||||
if(bombtank)
|
||||
icon_state = bombtank.icon_state
|
||||
if(bombassembly)
|
||||
overlays += bombassembly.icon_state
|
||||
overlays += bombassembly.overlays
|
||||
overlays += "bomb_assembly"
|
||||
|
||||
/obj/item/device/onetankbomb/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/analyzer))
|
||||
bombtank.attackby(W, user)
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works.
|
||||
|
||||
user << "<span class='notice'>You disassemble [src].</span>"
|
||||
|
||||
bombassembly.loc = user.loc
|
||||
bombassembly.master = null
|
||||
bombassembly = null
|
||||
|
||||
bombtank.loc = user.loc
|
||||
bombtank.master = null
|
||||
bombtank = null
|
||||
|
||||
del(src)
|
||||
return
|
||||
if((istype(W, /obj/item/weapon/weldingtool) && W:welding))
|
||||
if(!status)
|
||||
status = 1
|
||||
bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
|
||||
user << "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>"
|
||||
else
|
||||
status = 0
|
||||
bombers += "[key_name(user)] unwelded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
|
||||
user << "<span class='notice'>The hole has been closed.</span>"
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/device/onetankbomb/attack_self(mob/user as mob) //pressing the bomb accesses its assembly
|
||||
bombassembly.attack_self(user, 1)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
sleep(10)
|
||||
if(!src)
|
||||
return
|
||||
if(status)
|
||||
bombtank.ignite() //if its not a dud, boom (or not boom if you made shitty mix) the ignite proc is below, in this file
|
||||
|
||||
/obj/item/device/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(bombassembly)
|
||||
bombassembly.HasProximity(AM)
|
||||
|
||||
// ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ----------
|
||||
|
||||
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob) //Bomb assembly proc. This turns assembly+tank into a bomb
|
||||
if(istype(W, /obj/item/device/assembly_holder))
|
||||
var/obj/item/device/assembly_holder/S = W
|
||||
if(!S.secured) //Check if the assembly is secured
|
||||
return
|
||||
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
|
||||
return
|
||||
|
||||
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
|
||||
|
||||
user.drop_item() //Remove the assembly from your hands
|
||||
user.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
|
||||
user.put_in_hands(R) //Equips the bomb if possible, or puts it on the floor.
|
||||
|
||||
R.bombassembly = S //Tell the bomb about its assembly part
|
||||
S.master = R //Tell the assembly about its new owner
|
||||
S.loc = R //Move the assembly out of the fucking way
|
||||
|
||||
R.bombtank = src //Same for tank
|
||||
master = R
|
||||
loc = R
|
||||
R.update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/proc/ignite() //This happens when a bomb is told to explode
|
||||
var/fuel_moles = air_contents.toxins + air_contents.oxygen/6
|
||||
var/strength = 1
|
||||
|
||||
var/turf/ground_zero = get_turf(loc)
|
||||
loc = null
|
||||
|
||||
if(air_contents.temperature > (T0C + 400))
|
||||
strength = (fuel_moles/15)
|
||||
|
||||
if(strength >=1)
|
||||
explosion(ground_zero, round(strength,1), round(strength*2,1), round(strength*3,1), round(strength*4,1))
|
||||
else if(strength >=0.5)
|
||||
explosion(ground_zero, 0, 1, 2, 4)
|
||||
else if(strength >=0.2)
|
||||
explosion(ground_zero, -1, 0, 1, 2)
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 250))
|
||||
strength = (fuel_moles/20)
|
||||
|
||||
if(strength >=1)
|
||||
explosion(ground_zero, 0, round(strength,1), round(strength*2,1), round(strength*3,1))
|
||||
else if (strength >=0.5)
|
||||
explosion(ground_zero, -1, 0, 1, 2)
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 100))
|
||||
strength = (fuel_moles/25)
|
||||
|
||||
if (strength >=1)
|
||||
explosion(ground_zero, -1, 0, round(strength,1), round(strength*3,1))
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
if(master)
|
||||
del(master)
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/tank/proc/release() //This happens when the bomb is not welded. Tank contents are just spat out.
|
||||
var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles())
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
T.assume_air(removed)
|
||||
@@ -4,7 +4,6 @@
|
||||
icon_state = "holder"
|
||||
item_state = "assembly"
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
item_state = "electronic"
|
||||
throwforce = 5
|
||||
w_class = 2.0
|
||||
throw_speed = 3
|
||||
@@ -70,6 +69,8 @@
|
||||
src.overlays += "[initial(a_right.icon_state)]_right"
|
||||
for(var/O in a_right.attached_overlays)
|
||||
overlays += "[O]_r"
|
||||
if(master)
|
||||
master.update_icon()
|
||||
|
||||
/* if(special_assembly)
|
||||
special_assembly.update_icon()
|
||||
@@ -176,6 +177,8 @@
|
||||
a_right.pulsed(0)
|
||||
if(a_left != D)
|
||||
a_left.pulsed(0)
|
||||
if(master)
|
||||
master.receive_signal()
|
||||
// if(special && special_assembly)
|
||||
// if(!special_assembly == D)
|
||||
// special_assembly.dothings()
|
||||
|
||||
@@ -101,6 +101,8 @@
|
||||
|
||||
|
||||
signal()
|
||||
if(!radio_connection) return
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
|
||||
@@ -37,8 +37,7 @@
|
||||
timer_end()
|
||||
if((!secured)||(cooldown > 0)) return 0
|
||||
pulse(0)
|
||||
for(var/mob/O in hearers(null, null))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
|
||||
@@ -40,16 +40,15 @@
|
||||
*/
|
||||
|
||||
/datum/recipe/jellydonut
|
||||
reagents = list("berryjuice" = 5)
|
||||
reagents = list("berryjuice" = 5, "flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
|
||||
|
||||
/datum/recipe/donut
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
|
||||
@@ -75,8 +74,8 @@
|
||||
return HB
|
||||
|
||||
/datum/recipe/human/burger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/human
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/human/burger
|
||||
@@ -91,22 +90,22 @@
|
||||
*/
|
||||
|
||||
/datum/recipe/plainburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat //do not place this recipe before /datum/recipe/humanburger
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger
|
||||
|
||||
/datum/recipe/syntiburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/syntiflesh
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger
|
||||
|
||||
/datum/recipe/brainburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/brain
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/brainburger
|
||||
@@ -121,52 +120,51 @@
|
||||
*/
|
||||
|
||||
/datum/recipe/xenoburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/xenoburger
|
||||
|
||||
/datum/recipe/fishburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/fishburger
|
||||
|
||||
/datum/recipe/tofuburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/tofuburger
|
||||
|
||||
/datum/recipe/ghostburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/ectoplasm
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger
|
||||
|
||||
/datum/recipe/clownburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/clothing/mask/gas/clown_hat,
|
||||
/* /obj/item/weapon/reagent_containers/food/snacks/grown/banana, */
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/clownburger
|
||||
|
||||
/datum/recipe/mimeburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/clothing/head/beret
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger
|
||||
|
||||
/datum/recipe/waffles
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
)
|
||||
@@ -180,8 +178,8 @@
|
||||
*/
|
||||
|
||||
/datum/recipe/donkpocket
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/faggot,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
|
||||
@@ -197,6 +195,7 @@
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/donkpocket/warm
|
||||
reagents = list() //This is necessary since this is a child object of the above recipe and we don't want donk pockets to need flour
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
||||
)
|
||||
@@ -208,10 +207,8 @@
|
||||
return being_cooked
|
||||
|
||||
/datum/recipe/meatbread
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
@@ -222,10 +219,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
|
||||
|
||||
/datum/recipe/syntibread
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
@@ -244,10 +239,8 @@
|
||||
*/
|
||||
|
||||
/datum/recipe/xenomeatbread
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
|
||||
@@ -258,11 +251,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
|
||||
|
||||
/datum/recipe/bananabread
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -280,10 +270,9 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/omelette
|
||||
|
||||
/datum/recipe/muffin
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/muffin
|
||||
|
||||
@@ -296,30 +285,23 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm
|
||||
|
||||
/datum/recipe/soylenviridians
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians
|
||||
|
||||
/datum/recipe/soylentgreen
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/human,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/human,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/soylentgreen
|
||||
|
||||
/datum/recipe/carrotcake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -328,11 +310,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
|
||||
|
||||
/datum/recipe/cheesecake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -342,11 +321,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
|
||||
|
||||
/datum/recipe/plaincake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -354,33 +330,29 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
|
||||
|
||||
/datum/recipe/meatpie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/meatpie
|
||||
|
||||
/datum/recipe/tofupie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/tofupie
|
||||
|
||||
/datum/recipe/xemeatpie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/xemeatpie
|
||||
|
||||
/datum/recipe/pie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/pie
|
||||
@@ -394,9 +366,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/berrypie
|
||||
*/
|
||||
/datum/recipe/berryclafoutis
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis
|
||||
@@ -409,9 +380,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/wingfangchu
|
||||
|
||||
/datum/recipe/chaosdonut
|
||||
reagents = list("frostoil" = 5, "capsaicin" = 5, )
|
||||
reagents = list("frostoil" = 5, "capsaicin" = 5, "flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos
|
||||
@@ -449,10 +419,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/tofukabob
|
||||
|
||||
/datum/recipe/tofubread
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
@@ -477,8 +445,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries
|
||||
|
||||
/datum/recipe/cubancarp
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
|
||||
)
|
||||
@@ -491,8 +459,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/popcorn
|
||||
|
||||
/datum/recipe/fortunecookie
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/paper,
|
||||
)
|
||||
@@ -527,9 +495,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/meatsteak
|
||||
|
||||
/datum/recipe/pizzamargherita
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
@@ -539,9 +506,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
|
||||
|
||||
/datum/recipe/meatpizza
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
@@ -551,9 +517,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
|
||||
|
||||
/datum/recipe/syntipizza
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
/obj/item/weapon/syntiflesh,
|
||||
@@ -563,9 +528,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
|
||||
|
||||
/datum/recipe/mushroompizza
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
|
||||
@@ -575,9 +539,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
|
||||
|
||||
/datum/recipe/vegetablepizza
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn,
|
||||
@@ -656,37 +619,36 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/coldchili
|
||||
|
||||
/datum/recipe/amanita_pie
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/amanita_pie
|
||||
|
||||
/datum/recipe/plump_pie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/plump_pie
|
||||
|
||||
/datum/recipe/spellburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/clothing/head/wizard/fake,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/spellburger
|
||||
|
||||
/datum/recipe/spellburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/clothing/head/wizard,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/spellburger
|
||||
|
||||
/datum/recipe/bigbiteburger
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
@@ -703,31 +665,23 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas
|
||||
|
||||
/datum/recipe/creamcheesebread
|
||||
reagents = list("flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
|
||||
|
||||
/datum/recipe/monkeysdelight
|
||||
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
|
||||
reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
|
||||
|
||||
/datum/recipe/baguette
|
||||
reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
)
|
||||
reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 15)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/baguette
|
||||
|
||||
/datum/recipe/fishandchips
|
||||
@@ -738,11 +692,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips
|
||||
|
||||
/datum/recipe/birthdaycake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -751,11 +702,7 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
|
||||
|
||||
/datum/recipe/bread
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
)
|
||||
reagents = list("flour" = 15)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
|
||||
|
||||
/datum/recipe/sandwich
|
||||
@@ -790,10 +737,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/tomatosoup
|
||||
|
||||
/datum/recipe/rofflewaffles
|
||||
reagents = list("psilocybin" = 5)
|
||||
reagents = list("psilocybin" = 5, "flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
)
|
||||
@@ -837,6 +782,9 @@
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
|
||||
|
||||
/datum/recipe/spagetti
|
||||
reagents = list("flour" = 5)
|
||||
result= /obj/item/weapon/reagent_containers/food/snacks/spagetti
|
||||
|
||||
/datum/recipe/boiledspagetti
|
||||
reagents = list("water" = 5)
|
||||
@@ -855,8 +803,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato
|
||||
|
||||
/datum/recipe/poppypretzel
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/seeds/poppyseed,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
)
|
||||
@@ -883,11 +831,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw
|
||||
|
||||
/datum/recipe/superbiteburger
|
||||
reagents = list("sodiumchloride" = 5, "blackpepper" = 5)
|
||||
reagents = list("sodiumchloride" = 5, "blackpepper" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
@@ -914,19 +859,15 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
|
||||
|
||||
/datum/recipe/applepie
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/applepie
|
||||
|
||||
/datum/recipe/applecake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -936,9 +877,9 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
|
||||
|
||||
/datum/recipe/metroidburger
|
||||
reagents = list("metroid" = 5)
|
||||
reagents = list("metroid" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
// /obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/metroidburger
|
||||
|
||||
@@ -959,11 +900,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/metroidsandwich
|
||||
|
||||
/datum/recipe/orangecake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -973,11 +911,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
|
||||
|
||||
/datum/recipe/limecake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -987,11 +922,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
|
||||
|
||||
/datum/recipe/lemoncake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -1001,11 +933,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
|
||||
|
||||
/datum/recipe/chocolatecake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -1045,11 +974,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/boiledmetroidcore
|
||||
|
||||
/datum/recipe/braincake
|
||||
reagents = list("milk" = 5)
|
||||
reagents = list("milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
@@ -1072,9 +998,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sausage
|
||||
|
||||
/datum/recipe/fishfingers
|
||||
reagents = list("flour" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat,
|
||||
)
|
||||
@@ -1091,17 +1016,16 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup
|
||||
|
||||
/datum/recipe/pumpkinpie
|
||||
reagents = list("milk" = 5, "sugar" = 5)
|
||||
reagents = list("milk" = 5, "sugar" = 5, "flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
|
||||
|
||||
/datum/recipe/plumphelmetbiscuit
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
|
||||
@@ -1131,9 +1055,8 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/beetsoup
|
||||
|
||||
/datum/recipe/appletart
|
||||
reagents = list("sugar" = 5, "milk" = 5)
|
||||
reagents = list("sugar" = 5, "milk" = 5, "flour" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple,
|
||||
)
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
|
||||
// hack to display shuttle timer
|
||||
if(emergency_shuttle.online)
|
||||
var/obj/machinery/computer/communications/C = locate() in world
|
||||
var/obj/machinery/computer/communications/C = locate() in machines
|
||||
if(C)
|
||||
C.post_status("shuttle")
|
||||
|
||||
|
||||
@@ -63,9 +63,9 @@
|
||||
/mob/living/silicon/ai/New()
|
||||
..()
|
||||
eyeobj.ai = src
|
||||
eyeobj.name = "[src.name] (AI Eye)" // Give it a name
|
||||
spawn(5)
|
||||
eyeobj.loc = src.loc
|
||||
eyeobj.name = "[src.name] (AI Eye)" // Give it a name
|
||||
|
||||
/mob/living/silicon/ai/Del()
|
||||
eyeobj.ai = null
|
||||
|
||||
@@ -12,10 +12,6 @@
|
||||
|
||||
src.updatehealth()
|
||||
|
||||
if(aiPDA && aiPDA.name != name)
|
||||
aiPDA.owner = name
|
||||
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
|
||||
|
||||
if (src.malfhack)
|
||||
if (src.malfhack.aidisabled)
|
||||
src << "\red ERROR: APC access disabled, hack attempt canceled."
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
client.screen += list( blind, flash )
|
||||
|
||||
if(stat != DEAD)
|
||||
for(var/obj/machinery/ai_status_display/O in world) //change status
|
||||
for(var/obj/machinery/ai_status_display/O in machines) //change status
|
||||
if(O)
|
||||
O.mode = 1
|
||||
O.emotion = "Neutral"
|
||||
|
||||
@@ -1,46 +1,6 @@
|
||||
/mob/living/silicon/robot/Login(var/syndie = 0)
|
||||
/mob/living/silicon/robot/Login()
|
||||
..()
|
||||
regenerate_icons()
|
||||
|
||||
if(!started)
|
||||
if(!syndie)
|
||||
connected_ai = activeais()
|
||||
if(connected_ai)
|
||||
connected_ai.connected_robots += src
|
||||
// laws = connected_ai.laws //The borg inherits its AI's laws
|
||||
laws = new /datum/ai_laws
|
||||
lawsync()
|
||||
src << "<b>Unit slaved to [connected_ai.name], downloading laws.</b>"
|
||||
lawupdate = 1
|
||||
else
|
||||
laws = new /datum/ai_laws/asimov
|
||||
lawupdate = 0
|
||||
src << "<b>Unable to locate an AI, reverting to standard Asimov laws.</b>"
|
||||
else
|
||||
laws = new /datum/ai_laws/antimov
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
src << "Follow your laws."
|
||||
cell.maxcharge = 25000
|
||||
cell.charge = 25000
|
||||
module = new /obj/item/weapon/robot_module/syndicate(src)
|
||||
hands.icon_state = "standard"
|
||||
icon_state = "secborg"
|
||||
modtype = "Synd"
|
||||
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
if(!scrambledcodes && !camera)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.c_tag = real_name
|
||||
camera.network = "SS13"
|
||||
if(isWireCut(5)) // 5 = BORG CAMERA
|
||||
camera.status = 0
|
||||
if(!cell)
|
||||
var/obj/item/weapon/cell/C = new(src)
|
||||
C.charge = 1500
|
||||
cell = C
|
||||
if(mind)
|
||||
ticker.mode.remove_revolutionary(mind)
|
||||
started = 1
|
||||
|
||||
show_laws(0)
|
||||
if(mind) ticker.mode.remove_revolutionary(mind)
|
||||
return
|
||||
@@ -5,7 +5,6 @@
|
||||
icon_state = "robot"
|
||||
maxHealth = 300
|
||||
health = 300
|
||||
var/started = null//A fix to ensure people don't try to bypass law assignment. Initial assignment sets it to one but it check on login whether they have been initiated -Sieve
|
||||
var/sight_mode = 0
|
||||
|
||||
//Hud stuff
|
||||
@@ -60,15 +59,43 @@
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
if(real_name == "Cyborg")
|
||||
if(cmptext(real_name,"Cyborg"))
|
||||
ident = rand(1, 999)
|
||||
real_name += "-[ident]"
|
||||
name = real_name
|
||||
|
||||
if(!cell)
|
||||
var/obj/item/weapon/cell/C = new(src)
|
||||
C.charge = 1500
|
||||
cell = C
|
||||
cell = new /obj/item/weapon/cell(src)
|
||||
cell.maxcharge = 7500
|
||||
cell.charge = 7500
|
||||
|
||||
if(syndie)
|
||||
laws = new /datum/ai_laws/antimov()
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
cell.maxcharge = 25000
|
||||
cell.charge = 25000
|
||||
module = new /obj/item/weapon/robot_module/syndicate(src)
|
||||
hands.icon_state = "standard"
|
||||
icon_state = "secborg"
|
||||
modtype = "Synd"
|
||||
else
|
||||
laws = new /datum/ai_laws/asimov()
|
||||
connected_ai = select_active_ai_with_fewest_borgs()
|
||||
if(connected_ai)
|
||||
connected_ai.connected_robots += src
|
||||
lawsync()
|
||||
lawupdate = 1
|
||||
else
|
||||
lawupdate = 0
|
||||
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
if(!scrambledcodes && !camera)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.c_tag = real_name
|
||||
camera.network = "SS13"
|
||||
if(isWireCut(5)) // 5 = BORG CAMERA
|
||||
camera.status = 0
|
||||
..()
|
||||
|
||||
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
|
||||
@@ -102,16 +129,12 @@
|
||||
module = new /obj/item/weapon/robot_module/butler(src)
|
||||
hands.icon_state = "service"
|
||||
var/icontype = input("Select an icon!", "Robot", null, null) in list("Waitress", "Bro", "Butler", "Kent", "Rich")
|
||||
if(icontype== "Waitress")
|
||||
icon_state = "Service"
|
||||
else if(icontype == "Kent")
|
||||
icon_state = "toiletbot"
|
||||
else if(icontype == "Bro")
|
||||
icon_state = "Brobot"
|
||||
else if(icontype == "Rich")
|
||||
icon_state = "maximillion"
|
||||
else
|
||||
icon_state = "Service2"
|
||||
switch(icontype)
|
||||
if("Waitress") icon_state = "Service"
|
||||
if("Kent") icon_state = "toiletbot"
|
||||
if("Bro") icon_state = "Brobot"
|
||||
if("Rich") icon_state = "maximillion"
|
||||
else icon_state = "Service2"
|
||||
modtype = "Butler"
|
||||
feedback_inc("cyborg_service",1)
|
||||
|
||||
@@ -166,7 +189,7 @@
|
||||
//not really necessary but just to avoid annoying people with
|
||||
//unique names seeming as nobody could give me a straight answer as
|
||||
//to whether to remove custom borg names completely.
|
||||
if(copytext(real_name, 1, 7) == "Cyborg")
|
||||
if(cmptext(copytext(real_name, 1, 7),"Cyborg"))
|
||||
real_name = "[prefix] [real_name]"
|
||||
name = real_name
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
if (BORG_WIRE_AI_CONTROL) //pulse the AI wire to make the borg reselect an AI
|
||||
if(!src.emagged)
|
||||
src.connected_ai = activeais()
|
||||
src.connected_ai = select_active_ai()
|
||||
|
||||
if (BORG_WIRE_CAMERA)
|
||||
if(!isnull(src.camera) && src.camera.status && !scrambledcodes)
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
name = "Nurse [real_name]"
|
||||
desc = "[name] needs 100cc of beef jerky...STAT!"
|
||||
if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate)
|
||||
name = "'[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]'"
|
||||
name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]"
|
||||
desc = "Yaarghh!! Thar' be a scurvy dog!"
|
||||
emote_see = list("hunts for treasure","stares coldly...","gnashes his tiny corgi teeth")
|
||||
emote_hear = list("growls ferociously", "snarls")
|
||||
@@ -219,7 +219,7 @@
|
||||
SetLuminosity(6)
|
||||
if(/obj/item/clothing/head/soft)
|
||||
name = "Corgi Tech [real_name]"
|
||||
speak = list("Needs a stamp!", "Request DENIED!", "Fill these out in triplicate!")
|
||||
// speak = list("Needs a stamp!", "Request DENIED!", "Fill these out in triplicate!")
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
|
||||
if("back")
|
||||
|
||||
@@ -173,6 +173,9 @@
|
||||
return 1
|
||||
|
||||
if(href_list["late_join"])
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
usr << "/red The round is either not ready, or has already finished..."
|
||||
return
|
||||
LateChoices()
|
||||
|
||||
if(href_list["manifest"])
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
var/global/list/rad_collectors = list()
|
||||
|
||||
/obj/machinery/power/rad_collector
|
||||
name = "Radiation Collector Array"
|
||||
@@ -17,6 +17,14 @@
|
||||
var/locked = 0
|
||||
var/drainratio = 1
|
||||
|
||||
/obj/machinery/power/rad_collector/New()
|
||||
..()
|
||||
rad_collectors += src
|
||||
|
||||
/obj/machinery/power/rad_collector/Del()
|
||||
rad_collectors -= src
|
||||
..()
|
||||
|
||||
/obj/machinery/power/rad_collector/process()
|
||||
if(P)
|
||||
if(P.air_contents.toxins <= 0)
|
||||
@@ -56,7 +64,7 @@
|
||||
user.drop_item()
|
||||
src.P = W
|
||||
W.loc = src
|
||||
updateicon()
|
||||
update_icons()
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
if(P && !src.locked)
|
||||
eject()
|
||||
@@ -108,7 +116,7 @@
|
||||
if(active)
|
||||
toggle_power()
|
||||
else
|
||||
updateicon()
|
||||
update_icons()
|
||||
|
||||
/obj/machinery/power/rad_collector/proc/receive_pulse(var/pulse_strength)
|
||||
if(P && active)
|
||||
@@ -120,7 +128,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/power/rad_collector/proc/updateicon()
|
||||
/obj/machinery/power/rad_collector/proc/update_icons()
|
||||
overlays = null
|
||||
if(P)
|
||||
overlays += image('icons/obj/singularity.dmi', "ptank")
|
||||
@@ -138,6 +146,6 @@
|
||||
else
|
||||
icon_state = "ca"
|
||||
flick("ca_deactive", src)
|
||||
updateicon()
|
||||
update_icons()
|
||||
return
|
||||
|
||||
|
||||
@@ -435,8 +435,9 @@ var/global/list/uneatable = list(
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/pulse()
|
||||
for(var/obj/machinery/power/rad_collector/R in orange(15,src))
|
||||
if(istype(R,/obj/machinery/power/rad_collector))
|
||||
|
||||
for(var/obj/machinery/power/rad_collector/R in rad_collectors)
|
||||
if(get_dist(R, src) <= 15) // Better than using orange() every process
|
||||
R.receive_pulse(energy)
|
||||
return
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
M << "\red You don't feel cool enough to name this gun, chump."
|
||||
return 0
|
||||
|
||||
var/input = copytext(sanitize(input("What do you want to name the gun?",,"")),1,MAX_NAME_LEN)
|
||||
var/input = stripped_input(usr,"What do you want to name the gun?", ,"", MAX_NAME_LEN)
|
||||
|
||||
if(src && input && !M.stat && in_range(M,src))
|
||||
name = input
|
||||
|
||||
@@ -696,6 +696,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = 0),
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2077,6 +2077,23 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
flour
|
||||
name = "flour"
|
||||
id = "flour"
|
||||
description = "This is what you rub all over yourself to pretend to be a ghost."
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#FFFFFF" // rgb: 0, 0, 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
reaction_turf(var/turf/T, var/volume)
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum////////////////////////////////
|
||||
|
||||
@@ -997,6 +997,14 @@ datum
|
||||
required_catalysts = list("enzyme" = 5)
|
||||
result_amount = 10
|
||||
|
||||
spacebeer
|
||||
name = "Space Beer"
|
||||
id = "spacebeer"
|
||||
result = "beer"
|
||||
required_reagents = list("flour" = 10)
|
||||
required_catalysts = list("enzyme" = 5)
|
||||
result_amount = 10
|
||||
|
||||
vodka
|
||||
name = "Vodka"
|
||||
id = "vodka"
|
||||
|
||||
@@ -156,6 +156,18 @@
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flour
|
||||
name = "flour sack"
|
||||
desc = "A big bag of flour. Good for baking!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "flour"
|
||||
item_state = "flour"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("flour", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soymilk
|
||||
name = "SoyMilk"
|
||||
desc = "It's soy milk. White and nutritious goodness!"
|
||||
|
||||
@@ -461,13 +461,13 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour
|
||||
/*/obj/item/weapon/reagent_containers/food/snacks/flour //Has been converted into a reagent. Use that instead of the item!
|
||||
name = "flour"
|
||||
desc = "Some flour"
|
||||
icon_state = "flour"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("nutriment", 1)*/
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future
|
||||
name = "appendix"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 187 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.3 KiB |
17338
maps/tgstation.2.0.9.dmm
17338
maps/tgstation.2.0.9.dmm
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user