mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 22:42:26 +01:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into dev
This commit is contained in:
@@ -144,8 +144,10 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/cmd_debug_tog_aliens,
|
||||
/client/proc/air_report,
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/reload_mentors,
|
||||
/client/proc/reload_mentors,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/remake_distribution_map,
|
||||
/client/proc/show_distribution_map,
|
||||
/client/proc/enable_debug_verbs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/toggledebuglogs,
|
||||
@@ -585,22 +587,22 @@ var/list/admin_verbs_mentor = list(
|
||||
feedback_add_details("admin_verb","GD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].")
|
||||
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1)
|
||||
|
||||
|
||||
/client/proc/give_disease2(mob/T as mob in mob_list) // -- Giacom
|
||||
set category = "Fun"
|
||||
set name = "Give Disease"
|
||||
set desc = "Gives a Disease to a mob."
|
||||
|
||||
|
||||
var/datum/disease2/disease/D = new /datum/disease2/disease()
|
||||
|
||||
|
||||
var/greater = ((input("Is this a lesser or greater disease?", "Give Disease") in list("Lesser", "Greater")) == "Greater")
|
||||
|
||||
|
||||
D.makerandom(greater)
|
||||
if (!greater)
|
||||
D.infectionchance = 1
|
||||
|
||||
|
||||
D.infectionchance = input("How virulent is this disease? (1-100)", "Give Disease", D.infectionchance) as num
|
||||
|
||||
|
||||
if(istype(T,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = T
|
||||
if (H.species)
|
||||
@@ -609,7 +611,7 @@ var/list/admin_verbs_mentor = list(
|
||||
var/mob/living/carbon/monkey/M = T
|
||||
D.affected_species = list(M.greaterform)
|
||||
infect_virus2(T,D,1)
|
||||
|
||||
|
||||
feedback_add_details("admin_verb","GD2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].")
|
||||
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].", 1)
|
||||
|
||||
@@ -158,9 +158,7 @@ var/global/sent_strike_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(src), slot_r_hand)
|
||||
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)//Here you go Deuryn
|
||||
L.imp_in = src
|
||||
L.implanted = 1
|
||||
implant_loyalty(src)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -367,6 +367,7 @@ proc/populate_gear_list()
|
||||
display_name = "engineering bandana"
|
||||
path = /obj/item/clothing/head/helmet/greenbandana/fluff/taryn_kifer_1
|
||||
cost = 2
|
||||
slot = slot_head
|
||||
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer")
|
||||
|
||||
//Science
|
||||
@@ -381,12 +382,14 @@ proc/populate_gear_list()
|
||||
display_name = "Zhan-Khazan furs"
|
||||
path = /obj/item/clothing/suit/tajaran/furs
|
||||
cost = 3
|
||||
slot = slot_wear_suit
|
||||
whitelisted = "Tajaran"
|
||||
|
||||
/datum/gear/zhan_scarf
|
||||
display_name = "Zhan-Khazan headscarf"
|
||||
path = /obj/item/clothing/head/tajaran/scarf
|
||||
cost = 2
|
||||
slot = slot_head
|
||||
whitelisted = "Tajaran"
|
||||
|
||||
/datum/gear/unathi_robe
|
||||
|
||||
@@ -405,4 +405,8 @@ BLIND // can't see anything
|
||||
sensor_mode = pick(0,1,2,3)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/emp_act(severity)
|
||||
if (hastie)
|
||||
hastie.emp_act(severity)
|
||||
..()
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/obj/item/clothing/head/chefhat
|
||||
name = "chef's hat"
|
||||
desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work."
|
||||
icon_state = "chef"
|
||||
icon_state = "chefhat"
|
||||
item_state = "chefhat"
|
||||
desc = "The commander in chef's head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
@@ -13,7 +13,7 @@ datum/event/organ_failure/announce()
|
||||
datum/event/organ_failure/start()
|
||||
var/list/candidates = list() //list of candidate keys
|
||||
for(var/mob/living/carbon/human/G in player_list)
|
||||
if(G.mind && G.mind.current && G.mind.current.stat != DEAD && G.health > 70)
|
||||
if(G.mind && G.mind.current && G.mind.current.stat != DEAD && G.health > 70 && G.internal_organs)
|
||||
candidates += G
|
||||
if(!candidates.len) return
|
||||
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
|
||||
@@ -24,8 +24,7 @@ datum/event/organ_failure/start()
|
||||
var/acute = prob(15)
|
||||
if (prob(75))
|
||||
//internal organ infection
|
||||
var/O = pick(C.internal_organs)
|
||||
var/datum/organ/internal/I = C.internal_organs[O]
|
||||
var/datum/organ/internal/I = pick(C.internal_organs)
|
||||
|
||||
if (acute)
|
||||
I.germ_level = max(INFECTION_LEVEL_TWO, I.germ_level)
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
H.concealed = 1
|
||||
H.update_icon()
|
||||
usr.visible_message("\The [usr] deals a card to \the [M].")
|
||||
H.throw_at(get_step(M,M.dir),10,1)
|
||||
H.throw_at(get_step(M,M.dir),10,1,H)
|
||||
|
||||
/obj/item/weapon/hand/attackby(obj/O as obj, mob/user as mob)
|
||||
if(istype(O,/obj/item/weapon/hand))
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
#define MAX_DEEP_COUNT 300
|
||||
#define ITERATE_BEFORE_FAIL 200
|
||||
|
||||
#define RESOURCE_HIGH_MAX 3
|
||||
#define RESOURCE_HIGH_MIN 0
|
||||
#define RESOURCE_MID_MAX 2
|
||||
#define RESOURCE_HIGH_MAX 4
|
||||
#define RESOURCE_HIGH_MIN 2
|
||||
#define RESOURCE_MID_MAX 3
|
||||
#define RESOURCE_MID_MIN 1
|
||||
#define RESOURCE_LOW_MAX 1
|
||||
#define RESOURCE_LOW_MIN 0
|
||||
@@ -103,6 +103,14 @@ Deep minerals:
|
||||
for(var/y = 1, y <= real_size, y++)
|
||||
map[MAP_CELL] = 0
|
||||
|
||||
/datum/ore_distribution/proc/print_distribution_map()
|
||||
var/line = ""
|
||||
for(var/x = 1, x <= real_size, x++)
|
||||
for(var/y = 1, y <= real_size, y++)
|
||||
line += num2text(round(map[MAP_CELL]/25.5))
|
||||
world << line
|
||||
line = ""
|
||||
|
||||
/datum/ore_distribution/proc/generate_distribution_map(var/x,var/y,var/input_size)
|
||||
|
||||
var/size = input_size
|
||||
@@ -157,36 +165,37 @@ Deep minerals:
|
||||
if(target_turf && target_turf.has_resources)
|
||||
|
||||
target_turf.resources = list()
|
||||
target_turf.resources["silicates"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["carbonaceous rock"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["silicates"] = rand(3,5)
|
||||
target_turf.resources["carbonaceous rock"] = rand(3,5)
|
||||
|
||||
if(map[MAP_CELL] > (range*0.60))
|
||||
target_turf.resources["iron"] = 0
|
||||
target_turf.resources["gold"] = 0
|
||||
target_turf.resources["silver"] = 0
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["diamond"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["phoron"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["osmium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["hydrogen"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
else if(map[MAP_CELL] > (range*0.40))
|
||||
target_turf.resources["iron"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["gold"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["silver"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["diamond"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["phoron"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["osmium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["hydrogen"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
else
|
||||
target_turf.resources["iron"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["gold"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["silver"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["diamond"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["phoron"] = 0
|
||||
target_turf.resources["osmium"] = 0
|
||||
target_turf.resources["hydrogen"] = 0
|
||||
switch(map[MAP_CELL])
|
||||
if(0 to 100)
|
||||
target_turf.resources["iron"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["gold"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["silver"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["diamond"] = 0
|
||||
target_turf.resources["phoron"] = 0
|
||||
target_turf.resources["osmium"] = 0
|
||||
target_turf.resources["hydrogen"] = 0
|
||||
if(100 to 124)
|
||||
target_turf.resources["iron"] = 0
|
||||
target_turf.resources["gold"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["silver"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["diamond"] = 0
|
||||
target_turf.resources["phoron"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["osmium"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
target_turf.resources["hydrogen"] = 0
|
||||
if(125 to 255)
|
||||
target_turf.resources["iron"] = 0
|
||||
target_turf.resources["gold"] = 0
|
||||
target_turf.resources["silver"] = 0
|
||||
target_turf.resources["uranium"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["diamond"] = rand(RESOURCE_LOW_MIN,RESOURCE_LOW_MAX)
|
||||
target_turf.resources["phoron"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["osmium"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX)
|
||||
target_turf.resources["hydrogen"] = rand(RESOURCE_MID_MIN,RESOURCE_MID_MAX)
|
||||
|
||||
tx += chunk_size
|
||||
tx = origin_x
|
||||
|
||||
@@ -265,13 +265,13 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/mining/drill/proc/get_harvest_capacity()
|
||||
return 3 * (cutter ? cutter.rating : 0)
|
||||
return (cutter ? cutter.rating : 0)
|
||||
|
||||
/obj/machinery/mining/drill/proc/get_storage_capacity()
|
||||
return 100 * (storage ? storage.rating : 0)
|
||||
return 200 * (storage ? storage.rating : 0)
|
||||
|
||||
/obj/machinery/mining/drill/proc/get_charge_use()
|
||||
return 100 - (20 * (cellmount ? cellmount.rating : 0))
|
||||
return 50 - (10 * (cellmount ? cellmount.rating : 0))
|
||||
|
||||
/obj/machinery/mining/drill/proc/get_resource_field()
|
||||
|
||||
@@ -346,6 +346,11 @@
|
||||
/obj/machinery/mining/brace/proc/connect()
|
||||
|
||||
var/turf/T = get_step(get_turf(src), src.dir)
|
||||
|
||||
if(!T.has_resources)
|
||||
src.visible_message("\red The terrain near the brace is unsuitable!")
|
||||
return
|
||||
|
||||
for(var/thing in T.contents)
|
||||
if(istype(thing,/obj/machinery/mining/drill))
|
||||
connected = thing
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/obj/item/weapon/mining_scanner
|
||||
name = "ore detector"
|
||||
desc = "A complex device used to locate ore deep underground."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "forensic0-old" //GET A BETTER SPRITE.
|
||||
item_state = "electronic"
|
||||
matter = list("metal" = 150)
|
||||
|
||||
origin_tech = "magnets=1;engineering=1"
|
||||
|
||||
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
|
||||
|
||||
user << "You begin sweeping \the [src] about, scanning for metal deposits."
|
||||
|
||||
if(!do_after(user,50)) return
|
||||
|
||||
if(!user || !src) return
|
||||
|
||||
var/list/metals = list(
|
||||
"surface minerals" = 0,
|
||||
"precious metals" = 0,
|
||||
"nuclear fuel" = 0,
|
||||
"exotic matter" = 0
|
||||
)
|
||||
|
||||
for(var/turf/T in oview(3,get_turf(user)))
|
||||
|
||||
if(!T.has_resources)
|
||||
continue
|
||||
|
||||
for(var/metal in T.resources)
|
||||
|
||||
var/ore_type
|
||||
|
||||
switch(metal)
|
||||
if("silicates" || "carbonaceous rock" || "iron") ore_type = "surface minerals"
|
||||
if("gold" || "silver" || "diamond") ore_type = "precious metals"
|
||||
if("uranium") ore_type = "nuclear fuel"
|
||||
if("phoron" || "osmium" || "hydrogen") ore_type = "exotic matter"
|
||||
|
||||
if(ore_type) metals[ore_type] += T.resources[metal]
|
||||
|
||||
user << "\icon[src] \blue The scanner beeps and displays a readout."
|
||||
|
||||
for(var/ore_type in metals)
|
||||
|
||||
var/result = "no sign"
|
||||
|
||||
switch(metals[ore_type])
|
||||
if(1 to 50) result = "trace amounts"
|
||||
if(51 to 150) result = "significant amounts"
|
||||
if(151 to INFINITY) result = "huge quantities"
|
||||
|
||||
user << "- [result] of [ore_type]."
|
||||
@@ -142,10 +142,20 @@
|
||||
|
||||
/obj/machinery/mineral/processing_unit/process()
|
||||
|
||||
if (!active || !src.output || !src.input) return
|
||||
if (!src.output || !src.input) return
|
||||
|
||||
var/list/tick_alloys = list()
|
||||
|
||||
//Grab some more ore to process this tick.
|
||||
for(var/i = 0,i<sheets_per_tick,i++)
|
||||
var/obj/item/weapon/ore/O = locate() in input.loc
|
||||
if(!O) break
|
||||
if(!isnull(ores_stored[O.oretag])) ores_stored[O.oretag]++
|
||||
O.loc = null
|
||||
|
||||
if(!active)
|
||||
return
|
||||
|
||||
//Process our stored ores and spit out sheets.
|
||||
var/sheets = 0
|
||||
for(var/metal in ores_stored)
|
||||
@@ -221,11 +231,4 @@
|
||||
else
|
||||
continue
|
||||
|
||||
//Grab some more ore to process next tick.
|
||||
for(var/i = 0,i<sheets_per_tick,i++)
|
||||
var/obj/item/weapon/ore/O = locate() in input.loc
|
||||
if(!O) break
|
||||
if(!isnull(ores_stored[O.oretag])) ores_stored[O.oretag]++
|
||||
O.loc = null
|
||||
|
||||
console.updateUsrDialog()
|
||||
@@ -107,6 +107,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
if(stat == CONSCIOUS)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
Attach(hit_atom)
|
||||
throwing = 0
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/Attach(M as mob)
|
||||
if( (!iscorgi(M) && !iscarbon(M)) || isalien(M))
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/mob/living/carbon/brain/Login()
|
||||
return ..()
|
||||
..()
|
||||
sleeping = 0
|
||||
@@ -330,7 +330,7 @@
|
||||
*/
|
||||
|
||||
|
||||
item.throw_at(target, item.throw_range, item.throw_speed)
|
||||
item.throw_at(target, item.throw_range, item.throw_speed, src)
|
||||
|
||||
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
..()
|
||||
|
||||
@@ -58,7 +58,6 @@
|
||||
dizziness = 0
|
||||
jitteriness = 0
|
||||
|
||||
|
||||
hud_updateflag |= 1 << HEALTH_HUD
|
||||
hud_updateflag |= 1 << STATUS_HUD
|
||||
|
||||
@@ -117,8 +116,6 @@
|
||||
ticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now
|
||||
return ..(gibbed)
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/makeSkeleton()
|
||||
if(SKELETON in src.mutations) return
|
||||
|
||||
|
||||
@@ -66,8 +66,10 @@
|
||||
return custom_emote(m_type, message)
|
||||
|
||||
if ("me")
|
||||
if(silent)
|
||||
return
|
||||
|
||||
//if(silent && silent > 0 && findtext(message,"\"",1, null) > 0)
|
||||
// return //This check does not work and I have no idea why, I'm leaving it in for reference.
|
||||
|
||||
if (src.client)
|
||||
if (client.prefs.muted & MUTE_IC)
|
||||
src << "\red You cannot send IC messages (muted)."
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
if(display_gloves)
|
||||
msg += "<span class='warning'><b>[src] has blood running from under [t_his] gloves!</b></span>\n"
|
||||
|
||||
for(var/implant in get_visible_implants(1))
|
||||
for(var/implant in get_visible_implants(0))
|
||||
msg += "<span class='warning'><b>[src] has \a [implant] sticking out of [t_his] flesh!</span>\n"
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] repulsively uncanny!\n"
|
||||
|
||||
@@ -317,6 +317,16 @@
|
||||
if(armor >= 2) return
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/implant_loyalty(mob/living/carbon/human/M, override = FALSE) // Won't override by default.
|
||||
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
|
||||
L.imp_in = M
|
||||
L.implanted = 1
|
||||
var/datum/organ/external/affected = M.organs_by_name["head"]
|
||||
affected.implants += L
|
||||
L.part = affected
|
||||
|
||||
/mob/living/carbon/human/proc/is_loyalty_implanted(mob/living/carbon/human/M)
|
||||
for(var/L in M.contents)
|
||||
if(istype(L, /obj/item/weapon/implant/loyalty))
|
||||
@@ -1086,8 +1096,7 @@
|
||||
H.brainmob.mind.transfer_to(src)
|
||||
del(H)
|
||||
|
||||
for(var/E in internal_organs)
|
||||
var/datum/organ/internal/I = internal_organs[E]
|
||||
for(var/datum/organ/internal/I in internal_organs)
|
||||
I.damage = 0
|
||||
|
||||
for (var/datum/disease/virus in viruses)
|
||||
@@ -1099,11 +1108,11 @@
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/proc/is_lung_ruptured()
|
||||
var/datum/organ/internal/lungs/L = internal_organs["lungs"]
|
||||
var/datum/organ/internal/lungs/L = internal_organs_by_name["lungs"]
|
||||
return L.is_bruised()
|
||||
|
||||
/mob/living/carbon/human/proc/rupture_lung()
|
||||
var/datum/organ/internal/lungs/L = internal_organs["lungs"]
|
||||
var/datum/organ/internal/lungs/L = internal_organs_by_name["lungs"]
|
||||
|
||||
if(!L.is_bruised())
|
||||
src.custom_pain("You feel a stabbing pain in your chest!", 1)
|
||||
@@ -1166,7 +1175,7 @@
|
||||
var/list/visible_implants = list()
|
||||
for(var/datum/organ/external/organ in src.organs)
|
||||
for(var/obj/item/weapon/O in organ.implants)
|
||||
if(!istype(O,/obj/item/weapon/implant) && O.w_class > class)
|
||||
if(!istype(O,/obj/item/weapon/implant) && (O.w_class > class) && !istype(O,/obj/item/weapon/shard/shrapnel))
|
||||
visible_implants += O
|
||||
|
||||
return(visible_implants)
|
||||
@@ -1384,7 +1393,7 @@
|
||||
status_flags |= LEAPING
|
||||
|
||||
src.visible_message("<span class='warning'><b>\The [src]</b> leaps at [T]!</span>")
|
||||
src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1)
|
||||
src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1, src)
|
||||
playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1)
|
||||
|
||||
sleep(5)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
/mob/living/carbon/human/getBrainLoss()
|
||||
var/res = brainloss
|
||||
var/datum/organ/internal/brain/sponge = internal_organs["brain"]
|
||||
var/datum/organ/internal/brain/sponge = internal_organs_by_name["brain"]
|
||||
if (sponge.is_bruised())
|
||||
res += 20
|
||||
if (sponge.is_broken())
|
||||
@@ -307,9 +307,8 @@ This function restores all organs.
|
||||
var/embed_threshold = sharp? 5*W.w_class : 15*W.w_class
|
||||
|
||||
//Sharp objects will always embed if they do enough damage.
|
||||
if((sharp && damage > (10*W.w_class)) || (sharp && !ismob(W.loc)) || (damage > embed_threshold && prob(embed_chance)))
|
||||
//Thrown objects have some momentum already and have a small chance to embed even if the damage is below the threshold
|
||||
if((sharp && damage > (10*W.w_class)) || (sharp && !ismob(W.loc) && prob(damage/(10*W.w_class)*100)) || (damage > embed_threshold && prob(embed_chance)))
|
||||
organ.embed(W)
|
||||
else if( (damage > (5*W.w_class)) && ((!ismob(W.loc) && !sharp)) || (prob((damage - 2)/W.w_class) ) )
|
||||
organ.embed(W)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -51,11 +51,6 @@ emp_act
|
||||
|
||||
return -1 // complete projectile permutation
|
||||
|
||||
if(check_shields(P.damage, "the [P.name]"))
|
||||
P.on_hit(src, 2, def_zone)
|
||||
handle_suit_punctures(P.damage_type, P.damage)
|
||||
return 2
|
||||
|
||||
//BEGIN BOOK'S TASER NERF.
|
||||
if(istype(P, /obj/item/projectile/beam/stun))
|
||||
var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy!
|
||||
@@ -89,6 +84,10 @@ emp_act
|
||||
return
|
||||
//END TASER NERF
|
||||
|
||||
if(check_shields(P.damage, "the [P.name]"))
|
||||
P.on_hit(src, 2, def_zone)
|
||||
return 2
|
||||
|
||||
var/datum/organ/external/organ = get_organ(check_zone(def_zone))
|
||||
|
||||
var/armor = getarmor_organ(organ, "bullet")
|
||||
@@ -190,7 +189,8 @@ emp_act
|
||||
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
|
||||
if(!I || !user) return 0
|
||||
|
||||
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
||||
var/target_zone = def_zone? def_zone : get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
||||
|
||||
if(user == src) // Attacking yourself can't miss
|
||||
target_zone = user.zone_sel.selecting
|
||||
if(!target_zone)
|
||||
@@ -229,7 +229,7 @@ emp_act
|
||||
var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].")
|
||||
var/weapon_sharp = is_sharp(I)
|
||||
var/weapon_edge = has_edge(I)
|
||||
if ((weapon_sharp || weapon_edge) && prob(getarmor(def_zone, "melee")))
|
||||
if ((weapon_sharp || weapon_edge) && prob(getarmor(target_zone, "melee")))
|
||||
weapon_sharp = 0
|
||||
weapon_edge = 0
|
||||
|
||||
@@ -282,6 +282,77 @@ emp_act
|
||||
bloody_body(src)
|
||||
return 1
|
||||
|
||||
//this proc handles being hit by a thrown atom
|
||||
/mob/living/carbon/human/hitby(atom/movable/AM as mob|obj,var/speed = 5)
|
||||
if(istype(AM,/obj/))
|
||||
var/obj/O = AM
|
||||
var/dtype = BRUTE
|
||||
if(istype(O,/obj/item/weapon))
|
||||
var/obj/item/weapon/W = O
|
||||
dtype = W.damtype
|
||||
var/throw_damage = O.throwforce*(speed/5)
|
||||
|
||||
var/zone
|
||||
if (istype(O.thrower, /mob/living))
|
||||
var/mob/living/L = O.thrower
|
||||
zone = check_zone(L.zone_sel.selecting)
|
||||
else
|
||||
zone = ran_zone("chest",75) //Hits a random part of the body, geared towards the chest
|
||||
|
||||
//check if we hit
|
||||
if (O.throw_source)
|
||||
var/distance = get_dist(O.throw_source, loc)
|
||||
zone = get_zone_with_miss_chance(zone, src, min(15*(distance-2), 0))
|
||||
else
|
||||
zone = get_zone_with_miss_chance(zone, src, 15)
|
||||
|
||||
if(!zone)
|
||||
visible_message("\blue \The [O] misses [src] narrowly!")
|
||||
return
|
||||
|
||||
O.throwing = 0 //it hit, so stop moving
|
||||
|
||||
if ((O.thrower != src) && check_shields(throw_damage, "[O]"))
|
||||
return
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(zone)
|
||||
var/hit_area = affecting.display_name
|
||||
|
||||
src.visible_message("\red [src] has been hit in the [hit_area] by [O].")
|
||||
var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].") //I guess "melee" is the best fit here
|
||||
|
||||
if(armor < 2)
|
||||
apply_damage(throw_damage, dtype, zone, armor, is_sharp(O), has_edge(O), O)
|
||||
|
||||
if(ismob(O.thrower))
|
||||
var/mob/M = O.thrower
|
||||
var/client/assailant = M.client
|
||||
if(assailant)
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a [O], thrown by [M.name] ([assailant.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with a thrown [O]</font>")
|
||||
if(!istype(src,/mob/living/simple_animal/mouse))
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
|
||||
// Begin BS12 momentum-transfer code.
|
||||
if(O.throw_source && speed >= 15)
|
||||
var/obj/item/weapon/W = O
|
||||
var/momentum = speed/2
|
||||
var/dir = get_dir(O.throw_source, src)
|
||||
|
||||
visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!")
|
||||
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
|
||||
|
||||
if(!W || !src) return
|
||||
|
||||
if(W.loc == src && W.sharp) //Projectile is embedded and suitable for pinning.
|
||||
var/turf/T = near_wall(dir,2)
|
||||
|
||||
if(T)
|
||||
src.loc = T
|
||||
visible_message("<span class='warning'>[src] is pinned to the wall by [O]!</span>","<span class='warning'>You are pinned to the wall by [O]!</span>")
|
||||
src.anchored = 1
|
||||
src.pinned += O
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
|
||||
if (gloves)
|
||||
gloves.add_blood(source)
|
||||
|
||||
@@ -690,6 +690,7 @@
|
||||
loc_temp = environment.temperature
|
||||
|
||||
if(adjusted_pressure < species.warning_high_pressure && adjusted_pressure > species.warning_low_pressure && abs(loc_temp - bodytemperature) < 20 && bodytemperature < species.heat_level_1 && bodytemperature > species.cold_level_1 && environment.phoron < MOLES_PHORON_VISIBLE)
|
||||
pressure_alert = 0
|
||||
return // Temperatures are within normal ranges, fuck all this processing. ~Ccomp
|
||||
|
||||
//Body temperature adjusts depending on surrounding atmosphere based on your thermal protection
|
||||
@@ -1098,6 +1099,9 @@
|
||||
return //TODO: DEFERRED
|
||||
|
||||
proc/handle_regular_status_updates()
|
||||
|
||||
if(status_flags & GODMODE) return 0
|
||||
|
||||
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
|
||||
blinded = 1
|
||||
silent = 0
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
breath_type = "nitrogen"
|
||||
poison_type = "oxygen"
|
||||
|
||||
flags = NO_SCAN | IS_WHITELISTED
|
||||
flags = NO_SCAN
|
||||
|
||||
blood_color = "#2299FC"
|
||||
flesh_color = "#808D11"
|
||||
|
||||
@@ -65,58 +65,69 @@
|
||||
P.on_hit(src, absorb, def_zone)
|
||||
return absorb
|
||||
|
||||
//this proc handles being hit by a thrown atom
|
||||
/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = 5)//Standardization and logging -Sieve
|
||||
if(istype(AM,/obj/))
|
||||
var/obj/O = AM
|
||||
var/zone = ran_zone("chest",75)//Hits a random part of the body, geared towards the chest
|
||||
var/dtype = BRUTE
|
||||
if(istype(O,/obj/item/weapon))
|
||||
var/obj/item/weapon/W = O
|
||||
dtype = W.damtype
|
||||
var/throw_damage = O.throwforce*(speed/5)
|
||||
|
||||
var/miss_chance = 15
|
||||
if (O.throw_source)
|
||||
var/distance = get_dist(O.throw_source, loc)
|
||||
miss_chance = min(15*(distance-2), 0)
|
||||
|
||||
if (prob(miss_chance))
|
||||
visible_message("\blue \The [O] misses [src] narrowly!")
|
||||
return
|
||||
|
||||
src.visible_message("\red [src] has been hit by [O].")
|
||||
var/armor = run_armor_check(zone, "melee", "Your armor has protected your [zone].", "Your armor has softened hit to your [zone].")
|
||||
var/armor = run_armor_check(null, "melee")
|
||||
|
||||
if(armor < 2)
|
||||
apply_damage(O.throwforce*(speed/5), dtype, zone, armor, is_sharp(O), has_edge(O), O)
|
||||
apply_damage(throw_damage, dtype, null, armor, is_sharp(O), has_edge(O), O)
|
||||
|
||||
if(!O.fingerprintslast)
|
||||
return
|
||||
O.throwing = 0 //it hit, so stop moving
|
||||
|
||||
if(ismob(O.thrower))
|
||||
var/mob/M = O.thrower
|
||||
var/client/assailant = M.client
|
||||
if(assailant)
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a [O], thrown by [M.name] ([assailant.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with a thrown [O]</font>")
|
||||
if(!istype(src,/mob/living/simple_animal/mouse))
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
|
||||
var/client/assailant = directory[ckey(O.fingerprintslast)]
|
||||
if(assailant && assailant.mob && istype(assailant.mob,/mob))
|
||||
var/mob/M = assailant.mob
|
||||
// Begin BS12 momentum-transfer code.
|
||||
if(O.throw_source && speed >= 15)
|
||||
var/obj/item/weapon/W = O
|
||||
var/momentum = speed/2
|
||||
var/dir = get_dir(O.throw_source, src)
|
||||
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been hit with a thrown [O], last touched by [M.name] ([assailant.ckey])</font>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Hit [src.name] ([src.ckey]) with a thrown [O]</font>")
|
||||
if(!istype(src,/mob/living/simple_animal/mouse))
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a thrown [O], last touched by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!")
|
||||
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
|
||||
|
||||
// Begin BS12 momentum-transfer code.
|
||||
if(!W || !src) return
|
||||
|
||||
if(W.sharp) //Projectile is suitable for pinning.
|
||||
//Handles embedding for non-humans and simple_animals.
|
||||
O.loc = src
|
||||
src.embedded += O
|
||||
|
||||
if(speed >= 15)
|
||||
var/obj/item/weapon/W = O
|
||||
var/momentum = speed/2
|
||||
var/dir = get_dir(M,src)
|
||||
var/turf/T = near_wall(dir,2)
|
||||
|
||||
visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!")
|
||||
src.throw_at(get_edge_target_turf(src,dir),1,momentum)
|
||||
|
||||
if(!W || !src) return
|
||||
|
||||
if(istype(W.loc,/mob/living) && W.sharp) //Projectile is embedded and suitable for pinning.
|
||||
|
||||
if(!istype(src,/mob/living/carbon/human)) //Handles embedding for non-humans and simple_animals.
|
||||
O.loc = src
|
||||
src.embedded += O
|
||||
|
||||
var/turf/T = near_wall(dir,2)
|
||||
|
||||
if(T)
|
||||
src.loc = T
|
||||
visible_message("<span class='warning'>[src] is pinned to the wall by [O]!</span>","<span class='warning'>You are pinned to the wall by [O]!</span>")
|
||||
src.anchored = 1
|
||||
src.pinned += O
|
||||
if(T)
|
||||
src.loc = T
|
||||
visible_message("<span class='warning'>[src] is pinned to the wall by [O]!</span>","<span class='warning'>You are pinned to the wall by [O]!</span>")
|
||||
src.anchored = 1
|
||||
src.pinned += O
|
||||
|
||||
//This is called when the mob is thrown into a dense turf
|
||||
/mob/living/proc/turf_collision(var/turf/T, var/speed)
|
||||
src.take_organ_damage(speed*5)
|
||||
|
||||
/mob/living/proc/near_wall(var/direction,var/distance=1)
|
||||
var/turf/T = get_step(get_turf(src),direction)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#define SAY_MINIMUM_PRESSURE 10
|
||||
var/list/department_radio_keys = list(
|
||||
":r" = "right ear", "#r" = "right ear", ".r" = "right ear",
|
||||
":l" = "left ear", "#l" = "left ear", ".l" = "left ear",
|
||||
@@ -84,35 +83,36 @@ var/list/department_radio_keys = list(
|
||||
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list(), var/sound/speech_sound, var/sound_vol)
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
|
||||
//handle nonverbal and sign languages here
|
||||
if (speaking)
|
||||
if (speaking.flags & NONVERBAL)
|
||||
if (prob(30))
|
||||
src.custom_emote(1, "[pick(speaking.signlang_verb)].")
|
||||
|
||||
|
||||
if (speaking.flags & SIGNLANG)
|
||||
say_signlang(message, pick(speaking.signlang_verb), speaking)
|
||||
return
|
||||
|
||||
|
||||
//speaking into radios
|
||||
if(used_radios.len)
|
||||
italics = 1
|
||||
message_range = 1
|
||||
|
||||
for(var/mob/living/M in hearers(5, src))
|
||||
if(M != src)
|
||||
M.show_message("<span class='notice'>[src] talks into [used_radios.len ? used_radios[1] : "the radio."]</span>")
|
||||
if (speech_sound)
|
||||
src.playsound_local(get_turf(src), speech_sound, sound_vol * 0.5, 1)
|
||||
|
||||
|
||||
if (!istype(src, /mob/living/silicon/ai)) // Atlantis: Prevents nearby people from hearing the AI when it talks using it's integrated radio.
|
||||
for(var/mob/living/M in hearers(5, src))
|
||||
if(M != src)
|
||||
M.show_message("<span class='notice'>[src] talks into [used_radios.len ? used_radios[1] : "the radio."]</span>")
|
||||
if (speech_sound)
|
||||
src.playsound_local(get_turf(src), speech_sound, sound_vol * 0.5, 1)
|
||||
|
||||
speech_sound = null //so we don't play it twice.
|
||||
|
||||
//make sure the air can transmit speech
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
if(environment)
|
||||
var/pressure = environment.return_pressure()
|
||||
if(pressure < SAY_MINIMUM_PRESSURE)
|
||||
if(pressure < SOUND_MINIMUM_PRESSURE)
|
||||
italics = 1
|
||||
message_range = 1
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ var/list/ai_list = list()
|
||||
var/icon/holo_icon//Default is assigned when AI is created.
|
||||
var/obj/item/device/pda/ai/aiPDA = null
|
||||
var/obj/item/device/multitool/aiMulti = null
|
||||
var/obj/item/device/radio/headset/heads/ai_integrated/aiRadio = null
|
||||
var/custom_sprite = 0 //For our custom sprites
|
||||
//Hud stuff
|
||||
|
||||
@@ -87,12 +88,14 @@ var/list/ai_list = list()
|
||||
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
|
||||
|
||||
aiMulti = new(src)
|
||||
aiRadio = new(src)
|
||||
aiRadio.myAi = src
|
||||
|
||||
if (istype(loc, /turf))
|
||||
verbs.Add(/mob/living/silicon/ai/proc/ai_call_shuttle,/mob/living/silicon/ai/proc/ai_camera_track, \
|
||||
/mob/living/silicon/ai/proc/ai_camera_list, /mob/living/silicon/ai/proc/ai_network_change, \
|
||||
/mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \
|
||||
/mob/living/silicon/ai/proc/toggle_camera_light)
|
||||
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/control_integrateed_radio)
|
||||
|
||||
//Languages
|
||||
add_language("Sol Common", 0)
|
||||
@@ -738,3 +741,12 @@ var/list/ai_list = list()
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/silicon/ai/proc/control_integrateed_radio()
|
||||
set name = "Radio Settings"
|
||||
set desc = "Allows you to change settings of your radio."
|
||||
set category = "AI Commands"
|
||||
|
||||
src << "Accessing Subspace Transceiver control..."
|
||||
if (src.aiRadio)
|
||||
src.aiRadio.interact(src)
|
||||
@@ -1,4 +1,5 @@
|
||||
/mob/living/silicon/Login()
|
||||
sleeping = 0
|
||||
if(mind && ticker && ticker.mode)
|
||||
ticker.mode.remove_cultist(mind, 1)
|
||||
ticker.mode.remove_revolutionary(mind, 1)
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
/obj/item/weapon/robot_module/proc/add_languages(var/mob/living/silicon/robot/R)
|
||||
R.add_language("Tradeband", 1)
|
||||
R.add_language("Sol Common", 1)
|
||||
R.add_language("Gutter", 0)
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/standard
|
||||
|
||||
@@ -109,7 +109,11 @@
|
||||
if("general")
|
||||
switch(bot_type)
|
||||
if(IS_AI)
|
||||
src << "Yeah, not yet, sorry"
|
||||
if (AI.aiRadio.disabledAi)
|
||||
src << "\red System Error - Transceiver Disabled"
|
||||
else
|
||||
log_say("[key_name(src)] : [message]")
|
||||
AI.aiRadio.talk_into(src,message,null,verb,speaking)
|
||||
if(IS_ROBOT)
|
||||
log_say("[key_name(src)] : [message]")
|
||||
R.radio.talk_into(src,message,null,verb,speaking)
|
||||
@@ -122,8 +126,11 @@
|
||||
if(message_mode && message_mode in radiochannels)
|
||||
switch(bot_type)
|
||||
if(IS_AI)
|
||||
src << "You don't have this function yet, I'm working on it"
|
||||
return
|
||||
if (AI.aiRadio.disabledAi)
|
||||
src << "\red System Error - Transceiver Disabled"
|
||||
else
|
||||
log_say("[key_name(src)] : [message]")
|
||||
AI.aiRadio.talk_into(src,message,message_mode,verb,speaking)
|
||||
if(IS_ROBOT)
|
||||
log_say("[key_name(src)] : [message]")
|
||||
R.radio.talk_into(src,message,message_mode,verb,speaking)
|
||||
|
||||
@@ -950,7 +950,7 @@ mob/proc/yank_out_object()
|
||||
if(S == U)
|
||||
self = 1 // Removing object from yourself.
|
||||
|
||||
valid_objects = get_visible_implants(1)
|
||||
valid_objects = get_visible_implants(0)
|
||||
if(!valid_objects.len)
|
||||
if(self)
|
||||
src << "You have nothing stuck in your body that is large enough to remove."
|
||||
@@ -961,9 +961,9 @@ mob/proc/yank_out_object()
|
||||
var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects
|
||||
|
||||
if(self)
|
||||
src << "<span class='warning'>You attempt to get a good grip on the [selection] in your body.</span>"
|
||||
src << "<span class='warning'>You attempt to get a good grip on [selection] in your body.</span>"
|
||||
else
|
||||
U << "<span class='warning'>You attempt to get a good grip on the [selection] in [S]'s body.</span>"
|
||||
U << "<span class='warning'>You attempt to get a good grip on [selection] in [S]'s body.</span>"
|
||||
|
||||
if(!do_after(U, 80))
|
||||
return
|
||||
|
||||
@@ -142,7 +142,11 @@ proc/hasorgans(A)
|
||||
*/
|
||||
return zone
|
||||
|
||||
|
||||
// Returns zone with a certain probability.
|
||||
// If the probability misses, returns "chest" instead.
|
||||
// If "chest" was passed in as zone, then on a "miss" will return "head", "l_arm", or "r_arm"
|
||||
// Do not use this if someone is intentionally trying to hit a specific body part.
|
||||
// Use get_zone_with_miss_chance() for that.
|
||||
/proc/ran_zone(zone, probability)
|
||||
zone = check_zone(zone)
|
||||
if(!probability) probability = 90
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
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
|
||||
@@ -143,6 +144,11 @@
|
||||
src << alert("You are currently not whitelisted to play [client.prefs.species].")
|
||||
return 0
|
||||
|
||||
var/datum/species/S = all_species[client.prefs.species]
|
||||
if(!(S.flags & IS_WHITELISTED))
|
||||
src << alert("Your current species,[client.prefs.species], is not available for play on the station.")
|
||||
return 0
|
||||
|
||||
LateChoices()
|
||||
|
||||
if(href_list["manifest"])
|
||||
@@ -159,6 +165,11 @@
|
||||
src << alert("You are currently not whitelisted to play [client.prefs.species].")
|
||||
return 0
|
||||
|
||||
var/datum/species/S = all_species[client.prefs.species]
|
||||
if(!(S.flags & IS_WHITELISTED))
|
||||
src << alert("Your current species,[client.prefs.species], is not available for play on the station.")
|
||||
return 0
|
||||
|
||||
AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint)
|
||||
return
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ datum/skill/management
|
||||
datum/skill/knowledge/law
|
||||
ID = "law"
|
||||
name = "NanoTrasen Law"
|
||||
desc = "Your knowledge of NanoTrasen law and procedures. This includes Space Law, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for captains."
|
||||
desc = "Your knowledge of NanoTrasen law and procedures. This includes Corporate Regulations, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for captains."
|
||||
field = "Security"
|
||||
secondary = 1
|
||||
|
||||
@@ -232,4 +232,4 @@ mob/living/carbon/human/verb/show_skills()
|
||||
set category = "IC"
|
||||
set name = "Show Own Skills"
|
||||
|
||||
show_skill_window(src, src)
|
||||
show_skill_window(src, src)
|
||||
|
||||
@@ -63,7 +63,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
// Damaged heart virtually reduces the blood volume, as the blood isn't
|
||||
// being pumped properly anymore.
|
||||
var/datum/organ/internal/heart/heart = internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/heart = internal_organs_by_name["heart"]
|
||||
|
||||
if(heart.damage > 1 && heart.damage < heart.min_bruised_damage)
|
||||
blood_volume *= 0.8
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/datum/organ/proc/handle_antibiotics()
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
|
||||
if (antibiotics < 5)
|
||||
if (!germ_level || antibiotics < 5)
|
||||
return
|
||||
|
||||
if (germ_level < INFECTION_LEVEL_ONE)
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
var/damage_msg = "\red You feel an intense pain"
|
||||
var/broken_description
|
||||
|
||||
var/vital //Lose a vital limb, die immediately.
|
||||
var/status = 0
|
||||
var/open = 0
|
||||
var/stage = 0
|
||||
@@ -90,15 +91,8 @@
|
||||
brute *= brmod //~2/3 damage for ROBOLIMBS
|
||||
burn *= bumod //~2/3 damage for ROBOLIMBS
|
||||
|
||||
//If limb took enough damage, try to cut or tear it off
|
||||
if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you.
|
||||
if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
|
||||
if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) )
|
||||
droplimb(1)
|
||||
return
|
||||
|
||||
// High brute damage or sharp objects may damage internal organs
|
||||
if(internal_organs != null) if( (sharp && brute >= 5) || brute >= 10) if(prob(5))
|
||||
if(internal_organs && ( (sharp && brute >= 5) || brute >= 10) && prob(5))
|
||||
// Damage an internal organ
|
||||
var/datum/organ/internal/I = pick(internal_organs)
|
||||
I.take_damage(brute / 2)
|
||||
@@ -161,6 +155,14 @@
|
||||
|
||||
// sync the organ's damage with its wounds
|
||||
src.update_damages()
|
||||
|
||||
//If limb took enough damage, try to cut or tear it off
|
||||
if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you.
|
||||
if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
|
||||
if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) )
|
||||
droplimb(1)
|
||||
return
|
||||
|
||||
owner.updatehealth()
|
||||
|
||||
var/result = update_icon()
|
||||
@@ -363,7 +365,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs
|
||||
//** Syncing germ levels with external wounds
|
||||
handle_germ_sync()
|
||||
|
||||
|
||||
//** Handle antibiotics and curing infections
|
||||
handle_antibiotics()
|
||||
|
||||
@@ -386,10 +388,10 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
/datum/organ/external/proc/handle_germ_effects()
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
|
||||
if (germ_level < INFECTION_LEVEL_ONE && prob(60)) //this could be an else clause, but it looks cleaner this way
|
||||
|
||||
if (germ_level > 0 && germ_level < INFECTION_LEVEL_ONE && prob(60)) //this could be an else clause, but it looks cleaner this way
|
||||
germ_level-- //since germ_level increases at a rate of 1 per second with dirty wounds, prob(60) should give us about 5 minutes before level one.
|
||||
|
||||
|
||||
if(germ_level >= INFECTION_LEVEL_ONE)
|
||||
//having an infection raises your body temperature
|
||||
var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/INFECTION_LEVEL_THREE, 1) + owner.species.body_temperature
|
||||
@@ -400,7 +402,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(prob(round(germ_level/10)))
|
||||
if (antibiotics < 5)
|
||||
germ_level++
|
||||
|
||||
|
||||
if (prob(5)) //adjust this to tweak how fast people take toxin damage from infections
|
||||
owner.adjustToxLoss(1)
|
||||
|
||||
@@ -411,7 +413,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if (I.germ_level > 0 && I.germ_level < min(germ_level, INFECTION_LEVEL_TWO)) //once the organ reaches whatever we can give it, or level two, switch to a different one
|
||||
if (!target_organ || I.germ_level > target_organ.germ_level) //choose the organ with the highest germ_level
|
||||
target_organ = I
|
||||
|
||||
|
||||
if (!target_organ)
|
||||
//figure out which organs we can spread germs to and pick one at random
|
||||
var/list/candidate_organs = list()
|
||||
@@ -420,7 +422,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
candidate_organs += I
|
||||
if (candidate_organs.len)
|
||||
target_organ = pick(candidate_organs)
|
||||
|
||||
|
||||
if (target_organ)
|
||||
target_organ.germ_level++
|
||||
|
||||
@@ -666,6 +668,9 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
// OK so maybe your limb just flew off, but if it was attached to a pair of cuffs then hooray! Freedom!
|
||||
release_restraints()
|
||||
|
||||
if(vital)
|
||||
owner.death()
|
||||
|
||||
/****************************************************
|
||||
HELPERS
|
||||
****************************************************/
|
||||
@@ -800,8 +805,8 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
owner.u_equip(c_hand)
|
||||
owner.emote("me", 1, "drops what they were holding, their [hand_name] malfunctioning!")
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
spark_system.set_up(5, 0, owner)
|
||||
spark_system.attach(owner)
|
||||
spark_system.start()
|
||||
spawn(10)
|
||||
del(spark_system)
|
||||
@@ -829,7 +834,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
max_damage = 75
|
||||
min_broken_damage = 40
|
||||
body_part = UPPER_TORSO
|
||||
|
||||
vital = 1
|
||||
|
||||
/datum/organ/external/groin
|
||||
name = "groin"
|
||||
@@ -838,6 +843,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
max_damage = 50
|
||||
min_broken_damage = 30
|
||||
body_part = LOWER_TORSO
|
||||
vital = 1
|
||||
|
||||
/datum/organ/external/l_arm
|
||||
name = "l_arm"
|
||||
@@ -931,6 +937,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
min_broken_damage = 40
|
||||
body_part = HEAD
|
||||
var/disfigured = 0
|
||||
vital = 1
|
||||
|
||||
/datum/organ/external/head/get_icon()
|
||||
if (!owner)
|
||||
|
||||
@@ -27,14 +27,12 @@
|
||||
var/datum/organ/external/E = H.organs_by_name[src.parent_organ]
|
||||
if(E.internal_organs == null)
|
||||
E.internal_organs = list()
|
||||
E.internal_organs += src
|
||||
H.internal_organs[src.name] = src
|
||||
E.internal_organs |= src
|
||||
H.internal_organs |= src
|
||||
src.owner = H
|
||||
|
||||
/datum/organ/internal/process()
|
||||
//Process infections
|
||||
if (!germ_level)
|
||||
return
|
||||
|
||||
if (robotic >= 2 || (owner.species && owner.species.flags & IS_PLANT)) //TODO make robotic internal and external organs separate types of organ instead of a flag
|
||||
germ_level = 0
|
||||
@@ -47,7 +45,7 @@
|
||||
//** Handle the effects of infections
|
||||
var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin")
|
||||
|
||||
if (germ_level < INFECTION_LEVEL_ONE/2 && prob(30))
|
||||
if (germ_level > 0 && germ_level < INFECTION_LEVEL_ONE/2 && prob(30))
|
||||
germ_level--
|
||||
|
||||
if (germ_level >= INFECTION_LEVEL_ONE/2)
|
||||
|
||||
@@ -102,8 +102,7 @@ mob/living/carbon/human/proc/handle_pain()
|
||||
pain(damaged_organ.display_name, maxdam, 0)
|
||||
|
||||
// Damage to internal organs hurts a lot.
|
||||
for(var/organ_name in internal_organs)
|
||||
var/datum/organ/internal/I = internal_organs[organ_name]
|
||||
for(var/datum/organ/internal/I in internal_organs)
|
||||
if(I.damage > 2) if(prob(2))
|
||||
var/datum/organ/external/parent = get_organ(I.parent_organ)
|
||||
src.custom_pain("You feel a sharp pain in your [parent.display_name]", 1)
|
||||
|
||||
@@ -1288,6 +1288,7 @@
|
||||
chargecount++
|
||||
else
|
||||
chargecount = 0
|
||||
charging = 0
|
||||
|
||||
if(chargecount == 10)
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
user.visible_message("\red [user] fires [src]!", "\red You fire [src]!")
|
||||
spike.loc = get_turf(src)
|
||||
spike.throw_at(target,10,fire_force)
|
||||
spike.throw_at(target,10,fire_force,user)
|
||||
spike = null
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
|
||||
var/obj/item/weapon/arrow/A = arrow
|
||||
A.loc = get_turf(user)
|
||||
A.throw_at(target,10,tension*release_speed)
|
||||
A.throw_at(target,10,tension*release_speed,user)
|
||||
arrow = null
|
||||
tension = 0
|
||||
icon_state = "crossbow"
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
user.visible_message("<span class='danger'>[user] fires [src] and launches [object] at [target]!</span>","<span class='danger'>You fire [src] and launch [object] at [target]!</span>")
|
||||
|
||||
src.remove_from_storage(object,user.loc)
|
||||
object.throw_at(target,10,speed)
|
||||
object.throw_at(target,10,speed,user)
|
||||
|
||||
var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100)
|
||||
var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
var/obj/item/missile/M = new projectile(user.loc)
|
||||
playsound(user.loc, 'sound/effects/bang.ogg', 50, 1)
|
||||
M.primed = 1
|
||||
M.throw_at(target, missile_range, missile_speed)
|
||||
M.throw_at(target, missile_range, missile_speed,user)
|
||||
message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).")
|
||||
rockets -= I
|
||||
|
||||
@@ -15,8 +15,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet // "rubber" bullets
|
||||
damage = 10
|
||||
stun = 5
|
||||
weaken = 5
|
||||
agony = 40
|
||||
embed = 0
|
||||
sharp = 0
|
||||
|
||||
@@ -28,8 +27,6 @@
|
||||
|
||||
/obj/item/projectile/bullet/midbullet
|
||||
damage = 20
|
||||
stun = 5
|
||||
weaken = 5
|
||||
|
||||
/obj/item/projectile/bullet/midbullet2
|
||||
damage = 25
|
||||
@@ -56,8 +53,7 @@
|
||||
/obj/item/projectile/bullet/stunshot
|
||||
name = "stunshot"
|
||||
damage = 5
|
||||
stun = 10
|
||||
weaken = 10
|
||||
agony = 80
|
||||
stutter = 10
|
||||
embed = 0
|
||||
sharp = 0
|
||||
@@ -67,4 +63,4 @@
|
||||
|
||||
/obj/item/projectile/bullet/chameleon
|
||||
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
|
||||
embed = 0 // nope
|
||||
embed = 0 // nope
|
||||
|
||||
@@ -1312,7 +1312,7 @@ datum
|
||||
M.eye_blind = max(M.eye_blind-5 , 0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/eyes/E = H.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
if(istype(E))
|
||||
if(E.damage > 0)
|
||||
E.damage -= 1
|
||||
@@ -1332,8 +1332,9 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/chest/C = H.get_organ("chest")
|
||||
for(var/datum/organ/internal/I in C.internal_organs)
|
||||
|
||||
//Peridaxon is hard enough to get, it's probably fair to make this all internal organs
|
||||
for(var/datum/organ/internal/I in H.internal_organs)
|
||||
if(I.damage > 0)
|
||||
I.damage -= 0.20
|
||||
..()
|
||||
@@ -3036,7 +3037,7 @@ datum
|
||||
M:drowsyness = max(M:drowsyness, 30)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/liver/L = H.internal_organs["liver"]
|
||||
var/datum/organ/internal/liver/L = H.internal_organs_by_name["liver"]
|
||||
if (istype(L))
|
||||
L.take_damage(0.1, 1)
|
||||
H.adjustToxLoss(0.1)
|
||||
@@ -3273,13 +3274,13 @@ datum
|
||||
if(prob(30)) M.adjustToxLoss(2)
|
||||
if(prob(5)) if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/heart/L = H.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/L = H.internal_organs_by_name["heart"]
|
||||
if (istype(L))
|
||||
L.take_damage(5, 0)
|
||||
if (300 to INFINITY)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/heart/L = H.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/L = H.internal_organs_by_name["heart"]
|
||||
if (istype(L))
|
||||
L.take_damage(100, 0)
|
||||
holder.remove_reagent(src.id, FOOD_METABOLISM)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta!
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
F.throw_at(target, 30, 2, user)
|
||||
message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a grenade ([src.name]).")
|
||||
F.active = 1
|
||||
|
||||
@@ -6,7 +6,29 @@
|
||||
volume = 50 //Sets the default container amount for all food items.
|
||||
var/filling_color = "#FFFFFF" //Used by sandwiches.
|
||||
|
||||
var/list/center_of_mass = newlist() //Center of mass
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/New()
|
||||
..()
|
||||
src.pixel_x = rand(-10.0, 10) //Randomizes postion
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
..()
|
||||
if (!pixel_x && !pixel_y)
|
||||
src.pixel_x = rand(-6.0, 6) //Randomizes postion
|
||||
src.pixel_y = rand(-6.0, 6)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/afterattack(atom/A, mob/user, proximity, params)
|
||||
if(proximity && params && istype(A, /obj/structure/table) && center_of_mass.len)
|
||||
//Places the item on a grid
|
||||
var/list/mouse_control = params2list(params)
|
||||
var/cellnumber = 4
|
||||
|
||||
var/mouse_x = text2num(mouse_control["icon-x"])
|
||||
var/mouse_y = text2num(mouse_control["icon-y"])
|
||||
|
||||
var/grid_x = round(mouse_x, 32/cellnumber)
|
||||
var/grid_y = round(mouse_y, 32/cellnumber)
|
||||
|
||||
if(mouse_control["icon-x"])
|
||||
var/sign = mouse_x - grid_x != 0 ? sign(mouse_x - grid_x) : -1 //positive if rounded down, else negative
|
||||
pixel_x = grid_x - center_of_mass["x"] + sign*16/cellnumber //center of the cell
|
||||
if(mouse_control["icon-y"])
|
||||
var/sign = mouse_y - grid_y != 0 ? sign(mouse_y - grid_y) : -1
|
||||
pixel_y = grid_y - center_of_mass["y"] + sign*16/cellnumber
|
||||
@@ -32,7 +32,7 @@
|
||||
return 1
|
||||
else if( istype(M, /mob/living/carbon/human) )
|
||||
if (canopened == 0)
|
||||
user << "<span class='notice'> You need to open the drink!</span>"
|
||||
user << "<span class='notice'>You need to open the drink!</span>"
|
||||
return
|
||||
|
||||
else if (canopened == 1)
|
||||
@@ -66,6 +66,9 @@
|
||||
if(!proximity) return
|
||||
|
||||
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
if (canopened == 0)
|
||||
user << "<span class='notice'>You need to open the drink!</span>"
|
||||
return
|
||||
|
||||
if(!target.reagents.total_volume)
|
||||
user << "\red [target] is empty."
|
||||
@@ -77,10 +80,19 @@
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
user << "\blue You fill [src] with [trans] units of the contents of [target]."
|
||||
if (canopened == 0)
|
||||
user << "<span class='notice'>You need to open the drink!</span>"
|
||||
|
||||
|
||||
else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
|
||||
if (canopened == 0)
|
||||
user << "<span class='notice'>You need to open the drink!</span>"
|
||||
return
|
||||
|
||||
if (istype(target, /obj/item/weapon/reagent_containers/food/drinks/cans))
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/cans/cantarget = target
|
||||
if(cantarget.canopened == 0)
|
||||
user << "<span class='notice'>You need to open the drink you want to pour into!</span>"
|
||||
return
|
||||
|
||||
if(!reagents.total_volume)
|
||||
user << "\red [src] is empty."
|
||||
return
|
||||
@@ -135,129 +147,118 @@
|
||||
name = "Space Cola"
|
||||
desc = "Cola. in space."
|
||||
icon_state = "cola"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cola", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle
|
||||
name = "Bottled Water"
|
||||
desc = "Introduced to the vending machines by Skrellian request, this water comes straight from the Martian poles."
|
||||
icon_state = "waterbottle"
|
||||
center_of_mass = list("x"=15, "y"=8)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("water", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/beer
|
||||
name = "Space Beer"
|
||||
desc = "Contains only water, malt and hops."
|
||||
icon_state = "beer"
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("beer", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/ale
|
||||
name = "Magm-Ale"
|
||||
desc = "A true dorf's drink of choice."
|
||||
icon_state = "alebottle"
|
||||
item_state = "beer"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ale", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind
|
||||
name = "Space Mountain Wind"
|
||||
desc = "Blows right through you like a space wind."
|
||||
icon_state = "space_mountain_wind"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("spacemountainwind", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko
|
||||
name = "Thirteen Loko"
|
||||
desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly."
|
||||
icon_state = "thirteen_loko"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("thirteenloko", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb
|
||||
name = "Dr. Gibb"
|
||||
desc = "A delicious mixture of 42 different flavors."
|
||||
icon_state = "dr_gibb"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("dr_gibb", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/starkist
|
||||
name = "Star-kist"
|
||||
desc = "The taste of a star in liquid form. And, a bit of tuna...?"
|
||||
icon_state = "starkist"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cola", 15)
|
||||
reagents.add_reagent("orangejuice", 15)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up
|
||||
name = "Space-Up"
|
||||
desc = "Tastes like a hull breach in your mouth."
|
||||
icon_state = "space-up"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("space_up", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime
|
||||
name = "Lemon-Lime"
|
||||
desc = "You wanted ORANGE. It gave you Lemon Lime."
|
||||
icon_state = "lemon-lime"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("lemon_lime", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea
|
||||
name = "Vrisk Serket Iced Tea"
|
||||
desc = "That sweet, refreshing southern earthy flavor. That's where it's from, right? South Earth?"
|
||||
icon_state = "ice_tea_can"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("icetea", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice
|
||||
name = "Grapel Juice"
|
||||
desc = "500 pages of rules of how to appropriately enter into a combat with this juice!"
|
||||
icon_state = "purple_can"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("grapejuice", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/tonic
|
||||
name = "T-Borg's Tonic Water"
|
||||
desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
||||
icon_state = "tonic"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("tonic", 50)
|
||||
@@ -266,6 +267,7 @@
|
||||
name = "Soda Water"
|
||||
desc = "A can of soda water. Still water's more refreshing cousin."
|
||||
icon_state = "sodawater"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sodawater", 50)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
icon_state = "emptycondiment"
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
possible_transfer_amounts = list(1,5,10)
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
volume = 50
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -90,37 +91,46 @@
|
||||
name = "Ketchup"
|
||||
desc = "You feel more American already."
|
||||
icon_state = "ketchup"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("capsaicin")
|
||||
name = "Hotsauce"
|
||||
desc = "You can almost TASTE the stomach ulcers now!"
|
||||
icon_state = "hotsauce"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("enzyme")
|
||||
name = "Universal Enzyme"
|
||||
desc = "Used in cooking various dishes."
|
||||
icon_state = "enzyme"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("soysauce")
|
||||
name = "Soy Sauce"
|
||||
desc = "A salty soy-based flavoring."
|
||||
icon_state = "soysauce"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("frostoil")
|
||||
name = "Coldsauce"
|
||||
desc = "Leaves the tongue numb in its passage."
|
||||
icon_state = "coldsauce"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("sodiumchloride")
|
||||
name = "Salt Shaker"
|
||||
desc = "Salt. From space oceans, presumably."
|
||||
icon_state = "saltshaker"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("blackpepper")
|
||||
name = "Pepper Mill"
|
||||
desc = "Often used to flavor food or make people sneeze."
|
||||
icon_state = "peppermillsmall"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("cornoil")
|
||||
name = "Corn Oil"
|
||||
desc = "A delicious oil used in cooking. Made from corn."
|
||||
icon_state = "oliveoil"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("sugar")
|
||||
name = "Sugar"
|
||||
desc = "Tastey space sugar!"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
else
|
||||
name = "Misc Condiment Bottle"
|
||||
if (reagents.reagent_list.len==1)
|
||||
@@ -128,10 +138,12 @@
|
||||
else
|
||||
desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them."
|
||||
icon_state = "mixedcondiments"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
else
|
||||
icon_state = "emptycondiment"
|
||||
name = "Condiment Bottle"
|
||||
desc = "An empty condiment bottle."
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/enzyme
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
reagents.add_reagent(refill, trans)
|
||||
user << "Cyborg [src] refilled."
|
||||
|
||||
return
|
||||
return ..()
|
||||
|
||||
examine()
|
||||
set src in view()
|
||||
@@ -169,11 +169,10 @@
|
||||
desc = "It's milk. White and nutritious goodness!"
|
||||
icon_state = "milk"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("milk", 50)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/* Flour is no longer a reagent
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flour
|
||||
@@ -194,63 +193,57 @@
|
||||
desc = "It's soy milk. White and nutritious goodness!"
|
||||
icon_state = "soymilk"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("soymilk", 50)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/coffee
|
||||
name = "Robust Coffee"
|
||||
desc = "Careful, the beverage you're about to enjoy is extremely hot."
|
||||
icon_state = "coffee"
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("coffee", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/tea
|
||||
name = "Duke Purple Tea"
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
icon_state = "teacup"
|
||||
item_state = "coffee"
|
||||
center_of_mass = list("x"=16, "y"=14)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("tea", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(0, 20) // the teacup is very low on the 32x32 grid so if it's -y then it clips into the tile below it.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ice
|
||||
name = "Ice Cup"
|
||||
desc = "Careful, cold ice, do not chew."
|
||||
icon_state = "coffee"
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ice", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate
|
||||
name = "Dutch Hot Coco"
|
||||
desc = "Made in Space South America."
|
||||
icon_state = "hot_coco"
|
||||
item_state = "coffee"
|
||||
center_of_mass = list("x"=15, "y"=13)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("hot_coco", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen
|
||||
name = "Cup Ramen"
|
||||
desc = "Just add 10ml water, self heats! A taste that reminds you of your school years."
|
||||
icon_state = "ramen"
|
||||
center_of_mass = list("x"=16, "y"=11)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("dry_ramen", 30)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/sillycup
|
||||
@@ -259,10 +252,9 @@
|
||||
icon_state = "water_cup_e"
|
||||
possible_transfer_amounts = null
|
||||
volume = 10
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
New()
|
||||
..()
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
on_reagent_change()
|
||||
if(reagents.total_volume)
|
||||
icon_state = "water_cup"
|
||||
@@ -281,33 +273,39 @@
|
||||
icon_state = "shaker"
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 100
|
||||
center_of_mass = list("x"=17, "y"=10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask
|
||||
name = "Captain's Flask"
|
||||
desc = "A metal flask belonging to the captain"
|
||||
icon_state = "flask"
|
||||
volume = 60
|
||||
center_of_mass = list("x"=17, "y"=7)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
|
||||
name = "Detective's Flask"
|
||||
desc = "A metal flask with a leather band and golden badge belonging to the detective."
|
||||
icon_state = "detflask"
|
||||
volume = 60
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/barflask
|
||||
name = "flask"
|
||||
desc = "For those who can't be bothered to hang out at the bar to drink."
|
||||
icon_state = "barflask"
|
||||
volume = 60
|
||||
center_of_mass = list("x"=17, "y"=7)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask
|
||||
name = "vacuum flask"
|
||||
desc = "Keeping your drinks at the perfect temperature since 1892."
|
||||
icon_state = "vacuumflask"
|
||||
volume = 60
|
||||
center_of_mass = list("x"=15, "y"=4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/britcup
|
||||
name = "cup"
|
||||
desc = "A cup with the British flag emblazoned on it."
|
||||
icon_state = "britcup"
|
||||
volume = 30
|
||||
center_of_mass = list("x"=15, "y"=13)
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
name = "Griffeater Gin"
|
||||
desc = "A bottle of high quality gin, produced in the New London Space Station."
|
||||
icon_state = "ginbottle"
|
||||
center_of_mass = list("x"=16, "y"=4)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("gin", 100)
|
||||
@@ -146,6 +147,7 @@
|
||||
name = "Uncle Git's Special Reserve"
|
||||
desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES."
|
||||
icon_state = "whiskeybottle"
|
||||
center_of_mass = list("x"=16, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("whiskey", 100)
|
||||
@@ -154,6 +156,7 @@
|
||||
name = "Tunguska Triple Distilled"
|
||||
desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide."
|
||||
icon_state = "vodkabottle"
|
||||
center_of_mass = list("x"=17, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("vodka", 100)
|
||||
@@ -162,6 +165,7 @@
|
||||
name = "Caccavo Guaranteed Quality Tequilla"
|
||||
desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!"
|
||||
icon_state = "tequillabottle"
|
||||
center_of_mass = list("x"=16, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("tequilla", 100)
|
||||
@@ -170,6 +174,7 @@
|
||||
name = "Bottle of Nothing"
|
||||
desc = "A bottle filled with nothing"
|
||||
icon_state = "bottleofnothing"
|
||||
center_of_mass = list("x"=17, "y"=5)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nothing", 100)
|
||||
@@ -178,6 +183,7 @@
|
||||
name = "Wrapp Artiste Patron"
|
||||
desc = "Silver laced tequilla, served in space night clubs across the galaxy."
|
||||
icon_state = "patronbottle"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("patron", 100)
|
||||
@@ -186,6 +192,7 @@
|
||||
name = "Captain Pete's Cuban Spiced Rum"
|
||||
desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle."
|
||||
icon_state = "rumbottle"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("rum", 100)
|
||||
@@ -194,6 +201,7 @@
|
||||
name = "Flask of Holy Water"
|
||||
desc = "A flask of the chaplain's holy water."
|
||||
icon_state = "holyflask"
|
||||
center_of_mass = list("x"=17, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("holywater", 100)
|
||||
@@ -202,6 +210,7 @@
|
||||
name = "Goldeneye Vermouth"
|
||||
desc = "Sweet, sweet dryness~"
|
||||
icon_state = "vermouthbottle"
|
||||
center_of_mass = list("x"=17, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("vermouth", 100)
|
||||
@@ -210,6 +219,7 @@
|
||||
name = "Robert Robust's Coffee Liqueur"
|
||||
desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK"
|
||||
icon_state = "kahluabottle"
|
||||
center_of_mass = list("x"=17, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("kahlua", 100)
|
||||
@@ -218,6 +228,7 @@
|
||||
name = "College Girl Goldschlager"
|
||||
desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps."
|
||||
icon_state = "goldschlagerbottle"
|
||||
center_of_mass = list("x"=15, "y"=3)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("goldschlager", 100)
|
||||
@@ -226,6 +237,7 @@
|
||||
name = "Chateau De Baton Premium Cognac"
|
||||
desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time."
|
||||
icon_state = "cognacbottle"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cognac", 100)
|
||||
@@ -234,6 +246,7 @@
|
||||
name = "Doublebeard Bearded Special Wine"
|
||||
desc = "A faint aura of unease and asspainery surrounds the bottle."
|
||||
icon_state = "winebottle"
|
||||
center_of_mass = list("x"=16, "y"=4)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("wine", 100)
|
||||
@@ -242,6 +255,7 @@
|
||||
name = "Jailbreaker Verte"
|
||||
desc = "One sip of this and you just know you're gonna have a good time."
|
||||
icon_state = "absinthebottle"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("absinthe", 100)
|
||||
@@ -250,6 +264,7 @@
|
||||
name = "Emeraldine Melon Liquor"
|
||||
desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light."
|
||||
icon_state = "alco-green" //Placeholder.
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("melonliquor", 100)
|
||||
@@ -258,6 +273,7 @@
|
||||
name = "Miss Blue Curacao"
|
||||
desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic."
|
||||
icon_state = "alco-blue" //Placeholder.
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bluecuracao", 100)
|
||||
@@ -266,6 +282,7 @@
|
||||
name = "Briar Rose Grenadine Syrup"
|
||||
desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks."
|
||||
icon_state = "grenadinebottle"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("grenadine", 100)
|
||||
@@ -274,6 +291,7 @@
|
||||
name = "Warlock's Velvet"
|
||||
desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!"
|
||||
icon_state = "pwinebottle"
|
||||
center_of_mass = list("x"=16, "y"=4)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("pwine", 100)
|
||||
@@ -285,6 +303,7 @@
|
||||
desc = "Full of vitamins and deliciousness!"
|
||||
icon_state = "orangejuice"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
isGlass = 0
|
||||
New()
|
||||
..()
|
||||
@@ -295,6 +314,7 @@
|
||||
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
|
||||
icon_state = "cream"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
isGlass = 0
|
||||
New()
|
||||
..()
|
||||
@@ -305,6 +325,7 @@
|
||||
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
|
||||
icon_state = "tomatojuice"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
isGlass = 0
|
||||
New()
|
||||
..()
|
||||
@@ -315,6 +336,7 @@
|
||||
desc = "Sweet-sour goodness."
|
||||
icon_state = "limejuice"
|
||||
item_state = "carton"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
isGlass = 0
|
||||
New()
|
||||
..()
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass
|
||||
name = "glass"
|
||||
desc = "Your standard drinking glass."
|
||||
icon_state = "glass_empty"
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 50
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
|
||||
on_reagent_change()
|
||||
/*if(reagents.reagent_list.len > 1 )
|
||||
@@ -22,142 +23,177 @@
|
||||
icon_state = "beerglass"
|
||||
name = "Beer glass"
|
||||
desc = "A freezing pint of beer"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("beer2")
|
||||
icon_state = "beerglass"
|
||||
name = "Beer glass"
|
||||
desc = "A freezing pint of beer"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("ale")
|
||||
icon_state = "aleglass"
|
||||
name = "Ale glass"
|
||||
desc = "A freezing pint of delicious Ale"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("milk")
|
||||
icon_state = "glass_white"
|
||||
name = "Glass of milk"
|
||||
desc = "White and nutritious goodness!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("cream")
|
||||
icon_state = "glass_white"
|
||||
name = "Glass of cream"
|
||||
desc = "Ewwww..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("chocolate")
|
||||
icon_state = "chocolateglass"
|
||||
name = "Glass of chocolate"
|
||||
desc = "Tasty"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("lemonjuice")
|
||||
icon_state = "lemonglass"
|
||||
name = "Glass of lemonjuice"
|
||||
desc = "Sour..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("cola")
|
||||
icon_state = "glass_brown"
|
||||
name = "Glass of Space Cola"
|
||||
desc = "A glass of refreshing Space Cola"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("nuka_cola")
|
||||
icon_state = "nuka_colaglass"
|
||||
name = "Nuka Cola"
|
||||
desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if("orangejuice")
|
||||
icon_state = "glass_orange"
|
||||
name = "Glass of Orange juice"
|
||||
desc = "Vitamins! Yay!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("tomatojuice")
|
||||
icon_state = "glass_red"
|
||||
name = "Glass of Tomato juf"
|
||||
desc = "Are you sure this is tomato juice?"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("blood")
|
||||
icon_state = "glass_red"
|
||||
name = "Glass of Tomato juice"
|
||||
desc = "Are you sure this is tomato juice?"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("limejuice")
|
||||
icon_state = "glass_green"
|
||||
name = "Glass of Lime juice"
|
||||
desc = "A glass of sweet-sour lime juice."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("whiskey")
|
||||
icon_state = "whiskeyglass"
|
||||
name = "Glass of whiskey"
|
||||
desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("gin")
|
||||
icon_state = "ginvodkaglass"
|
||||
name = "Glass of gin"
|
||||
desc = "A crystal clear glass of Griffeater gin."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("vodka")
|
||||
icon_state = "ginvodkaglass"
|
||||
name = "Glass of vodka"
|
||||
desc = "The glass contain wodka. Xynta."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("sake")
|
||||
icon_state = "ginvodkaglass"
|
||||
name = "Glass of Sake"
|
||||
desc = "A glass of Sake."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("goldschlager")
|
||||
icon_state = "ginvodkaglass"
|
||||
name = "Glass of goldschlager"
|
||||
desc = "100 proof that teen girls will drink anything with gold in it."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("wine")
|
||||
icon_state = "wineglass"
|
||||
name = "Glass of wine"
|
||||
desc = "A very classy looking drink."
|
||||
center_of_mass = list("x"=15, "y"=7)
|
||||
if("cognac")
|
||||
icon_state = "cognacglass"
|
||||
name = "Glass of cognac"
|
||||
desc = "Damn, you feel like some kind of French aristocrat just by holding this."
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
if ("kahlua")
|
||||
icon_state = "kahluaglass"
|
||||
name = "Glass of RR coffee Liquor"
|
||||
desc = "DAMN, THIS THING LOOKS ROBUST"
|
||||
center_of_mass = list("x"=15, "y"=7)
|
||||
if("vermouth")
|
||||
icon_state = "vermouthglass"
|
||||
name = "Glass of Vermouth"
|
||||
desc = "You wonder why you're even drinking this straight."
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("tequilla")
|
||||
icon_state = "tequillaglass"
|
||||
name = "Glass of Tequilla"
|
||||
desc = "Now all that's missing is the weird colored shades!"
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("patron")
|
||||
icon_state = "patronglass"
|
||||
name = "Glass of Patron"
|
||||
desc = "Drinking patron in the bar, with all the subpar ladies."
|
||||
center_of_mass = list("x"=7, "y"=8)
|
||||
if("rum")
|
||||
icon_state = "rumglass"
|
||||
name = "Glass of Rum"
|
||||
desc = "Now you want to Pray for a pirate suit, don't you?"
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("gintonic")
|
||||
icon_state = "gintonicglass"
|
||||
name = "Gin and Tonic"
|
||||
desc = "A mild but still great cocktail. Drink up, like a true Englishman."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("whiskeycola")
|
||||
icon_state = "whiskeycolaglass"
|
||||
name = "Whiskey Cola"
|
||||
desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("whiterussian")
|
||||
icon_state = "whiterussianglass"
|
||||
name = "White Russian"
|
||||
desc = "A very nice looking drink. But that's just, like, your opinion, man."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("screwdrivercocktail")
|
||||
icon_state = "screwdriverglass"
|
||||
name = "Screwdriver"
|
||||
desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
if("bloodymary")
|
||||
icon_state = "bloodymaryglass"
|
||||
name = "Bloody Mary"
|
||||
desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("martini")
|
||||
icon_state = "martiniglass"
|
||||
name = "Classic Martini"
|
||||
desc = "Damn, the bartender even stirred it, not shook it."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("vodkamartini")
|
||||
icon_state = "martiniglass"
|
||||
name = "Vodka martini"
|
||||
desc ="A bastardisation of the classic martini. Still great."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("gargleblaster")
|
||||
icon_state = "gargleblasterglass"
|
||||
name = "Pan-Galactic Gargle Blaster"
|
||||
desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy."
|
||||
center_of_mass = list("x"=17, "y"=6)
|
||||
if("bravebull")
|
||||
icon_state = "bravebullglass"
|
||||
name = "Brave Bull"
|
||||
desc = "Tequilla and Coffee liquor, brought together in a mouthwatering mixture. Drink up."
|
||||
center_of_mass = list("x"=15, "y"=8)
|
||||
if("tequillasunrise")
|
||||
icon_state = "tequillasunriseglass"
|
||||
name = "Tequilla Sunrise"
|
||||
desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("phoronspecial")
|
||||
icon_state = "phoronspecialglass"
|
||||
name = "Toxins Special"
|
||||
@@ -166,330 +202,412 @@
|
||||
icon_state = "beepskysmashglass"
|
||||
name = "Beepsky Smash"
|
||||
desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
|
||||
center_of_mass = list("x"=18, "y"=10)
|
||||
if("doctorsdelight")
|
||||
icon_state = "doctorsdelightglass"
|
||||
name = "Doctor's Delight"
|
||||
desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("manlydorf")
|
||||
icon_state = "manlydorfglass"
|
||||
name = "The Manly Dorf"
|
||||
desc = "A manly concotion made from Ale and Beer. Intended for true men only."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("irishcream")
|
||||
icon_state = "irishcreamglass"
|
||||
name = "Irish Cream"
|
||||
desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("cubalibre")
|
||||
icon_state = "cubalibreglass"
|
||||
name = "Cuba Libre"
|
||||
desc = "A classic mix of rum and cola."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("b52")
|
||||
icon_state = "b52glass"
|
||||
name = "B-52"
|
||||
desc = "Kahlua, Irish Cream, and congac. You will get bombed."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("atomicbomb")
|
||||
icon_state = "atomicbombglass"
|
||||
name = "Atomic Bomb"
|
||||
desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing."
|
||||
center_of_mass = list("x"=15, "y"=7)
|
||||
if("longislandicedtea")
|
||||
icon_state = "longislandicedteaglass"
|
||||
name = "Long Island Iced Tea"
|
||||
desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("threemileisland")
|
||||
icon_state = "threemileislandglass"
|
||||
name = "Three Mile Island Ice Tea"
|
||||
desc = "A glass of this is sure to prevent a meltdown."
|
||||
center_of_mass = list("x"=16, "y"=2)
|
||||
if("margarita")
|
||||
icon_state = "margaritaglass"
|
||||
name = "Margarita"
|
||||
desc = "On the rocks with salt on the rim. Arriba~!"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("blackrussian")
|
||||
icon_state = "blackrussianglass"
|
||||
name = "Black Russian"
|
||||
desc = "For the lactose-intolerant. Still as classy as a White Russian."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("vodkatonic")
|
||||
icon_state = "vodkatonicglass"
|
||||
name = "Vodka and Tonic"
|
||||
desc = "For when a gin and tonic isn't russian enough."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("manhattan")
|
||||
icon_state = "manhattanglass"
|
||||
name = "Manhattan"
|
||||
desc = "The Detective's undercover drink of choice. He never could stomach gin..."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("manhattan_proj")
|
||||
icon_state = "proj_manhattanglass"
|
||||
name = "Manhattan Project"
|
||||
desc = "A scienitst drink of choice, for thinking how to blow up the station."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("ginfizz")
|
||||
icon_state = "ginfizzglass"
|
||||
name = "Gin Fizz"
|
||||
desc = "Refreshingly lemony, deliciously dry."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("irishcoffee")
|
||||
icon_state = "irishcoffeeglass"
|
||||
name = "Irish Coffee"
|
||||
desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
if("hooch")
|
||||
icon_state = "glass_brown2"
|
||||
name = "Hooch"
|
||||
desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("whiskeysoda")
|
||||
icon_state = "whiskeysodaglass2"
|
||||
name = "Whiskey Soda"
|
||||
desc = "Ultimate refreshment."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("tonic")
|
||||
icon_state = "glass_clear"
|
||||
name = "Glass of Tonic Water"
|
||||
desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("sodawater")
|
||||
icon_state = "glass_clear"
|
||||
name = "Glass of Soda Water"
|
||||
desc = "Soda water. Why not make a scotch and soda?"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("water")
|
||||
icon_state = "glass_clear"
|
||||
name = "Glass of Water"
|
||||
desc = "The father of all refreshments."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("spacemountainwind")
|
||||
icon_state = "Space_mountain_wind_glass"
|
||||
name = "Glass of Space Mountain Wind"
|
||||
desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("thirteenloko")
|
||||
icon_state = "thirteen_loko_glass"
|
||||
name = "Glass of Thirteen Loko"
|
||||
desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("dr_gibb")
|
||||
icon_state = "dr_gibb_glass"
|
||||
name = "Glass of Dr. Gibb"
|
||||
desc = "Dr. Gibb. Not as dangerous as the name might imply."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("space_up")
|
||||
icon_state = "space-up_glass"
|
||||
name = "Glass of Space-up"
|
||||
desc = "Space-up. It helps keep your cool."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("moonshine")
|
||||
icon_state = "glass_clear"
|
||||
name = "Moonshine"
|
||||
desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("soymilk")
|
||||
icon_state = "glass_white"
|
||||
name = "Glass of soy milk"
|
||||
desc = "White and nutritious soy goodness!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("berryjuice")
|
||||
icon_state = "berryjuice"
|
||||
name = "Glass of berry juice"
|
||||
desc = "Berry juice. Or maybe its jam. Who cares?"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("poisonberryjuice")
|
||||
icon_state = "poisonberryjuice"
|
||||
name = "Glass of poison berry juice"
|
||||
desc = "A glass of deadly juice."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("carrotjuice")
|
||||
icon_state = "carrotjuice"
|
||||
name = "Glass of carrot juice"
|
||||
desc = "It is just like a carrot but without crunching."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("banana")
|
||||
icon_state = "banana"
|
||||
name = "Glass of banana juice"
|
||||
desc = "The raw essence of a banana. HONK"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("bahama_mama")
|
||||
icon_state = "bahama_mama"
|
||||
name = "Bahama Mama"
|
||||
desc = "Tropic cocktail"
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
if("singulo")
|
||||
icon_state = "singulo"
|
||||
name = "Singulo"
|
||||
desc = "A blue-space beverage."
|
||||
center_of_mass = list("x"=17, "y"=4)
|
||||
if("alliescocktail")
|
||||
icon_state = "alliescocktail"
|
||||
name = "Allies cocktail"
|
||||
desc = "A drink made from your allies."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("antifreeze")
|
||||
icon_state = "antifreeze"
|
||||
name = "Anti-freeze"
|
||||
desc = "The ultimate refreshment."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("barefoot")
|
||||
icon_state = "b&p"
|
||||
name = "Barefoot"
|
||||
desc = "Barefoot and pregnant"
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("demonsblood")
|
||||
icon_state = "demonsblood"
|
||||
name = "Demons Blood"
|
||||
desc = "Just looking at this thing makes the hair at the back of your neck stand up."
|
||||
center_of_mass = list("x"=16, "y"=2)
|
||||
if("booger")
|
||||
icon_state = "booger"
|
||||
name = "Booger"
|
||||
desc = "Ewww..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("snowwhite")
|
||||
icon_state = "snowwhite"
|
||||
name = "Snow White"
|
||||
desc = "A cold refreshment."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("aloe")
|
||||
icon_state = "aloe"
|
||||
name = "Aloe"
|
||||
desc = "Very, very, very good."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("andalusia")
|
||||
icon_state = "andalusia"
|
||||
name = "Andalusia"
|
||||
desc = "A nice, strange named drink."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("sbiten")
|
||||
icon_state = "sbitenglass"
|
||||
name = "Sbiten"
|
||||
desc = "A spicy mix of Vodka and Spice. Very hot."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("red_mead")
|
||||
icon_state = "red_meadglass"
|
||||
name = "Red Mead"
|
||||
desc = "A True Vikings Beverage, though its color is strange."
|
||||
center_of_mass = list("x"=17, "y"=10)
|
||||
if("mead")
|
||||
icon_state = "meadglass"
|
||||
name = "Mead"
|
||||
desc = "A Vikings Beverage, though a cheap one."
|
||||
center_of_mass = list("x"=17, "y"=10)
|
||||
if("iced_beer")
|
||||
icon_state = "iced_beerglass"
|
||||
name = "Iced Beer"
|
||||
desc = "A beer so frosty, the air around it freezes."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("grog")
|
||||
icon_state = "grogglass"
|
||||
name = "Grog"
|
||||
desc = "A fine and cepa drink for Space."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("soy_latte")
|
||||
icon_state = "soy_latte"
|
||||
name = "Soy Latte"
|
||||
desc = "A nice and refrshing beverage while you are reading."
|
||||
center_of_mass = list("x"=15, "y"=9)
|
||||
if("cafe_latte")
|
||||
icon_state = "cafe_latte"
|
||||
name = "Cafe Latte"
|
||||
desc = "A nice, strong and refreshing beverage while you are reading."
|
||||
center_of_mass = list("x"=15, "y"=9)
|
||||
if("acidspit")
|
||||
icon_state = "acidspitglass"
|
||||
name = "Acid Spit"
|
||||
desc = "A drink from Nanotrasen. Made from live aliens."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("amasec")
|
||||
icon_state = "amasecglass"
|
||||
name = "Amasec"
|
||||
desc = "Always handy before COMBAT!!!"
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("neurotoxin")
|
||||
icon_state = "neurotoxinglass"
|
||||
name = "Neurotoxin"
|
||||
desc = "A drink that is guaranteed to knock you silly."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("hippiesdelight")
|
||||
icon_state = "hippiesdelightglass"
|
||||
name = "Hippie's Delight"
|
||||
desc = "A drink enjoyed by people during the 1960's."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("bananahonk")
|
||||
icon_state = "bananahonkglass"
|
||||
name = "Banana Honk"
|
||||
desc = "A drink from Banana Heaven."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("silencer")
|
||||
icon_state = "silencerglass"
|
||||
name = "Silencer"
|
||||
desc = "A drink from mime Heaven."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("nothing")
|
||||
icon_state = "nothing"
|
||||
name = "Nothing"
|
||||
desc = "Absolutely nothing."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("devilskiss")
|
||||
icon_state = "devilskiss"
|
||||
name = "Devils Kiss"
|
||||
desc = "Creepy time!"
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("changelingsting")
|
||||
icon_state = "changelingsting"
|
||||
name = "Changeling Sting"
|
||||
desc = "A stingy drink."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("irishcarbomb")
|
||||
icon_state = "irishcarbomb"
|
||||
name = "Irish Car Bomb"
|
||||
desc = "An irish car bomb."
|
||||
center_of_mass = list("x"=16, "y"=8)
|
||||
if("syndicatebomb")
|
||||
icon_state = "syndicatebomb"
|
||||
name = "Syndicate Bomb"
|
||||
desc = "A syndicate bomb."
|
||||
center_of_mass = list("x"=16, "y"=4)
|
||||
if("erikasurprise")
|
||||
icon_state = "erikasurprise"
|
||||
name = "Erika Surprise"
|
||||
desc = "The surprise is, it's green!"
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("driestmartini")
|
||||
icon_state = "driestmartiniglass"
|
||||
name = "Driest Martini"
|
||||
desc = "Only for the experienced. You think you see sand floating in the glass."
|
||||
center_of_mass = list("x"=17, "y"=8)
|
||||
if("ice")
|
||||
icon_state = "iceglass"
|
||||
name = "Glass of ice"
|
||||
desc = "Generally, you're supposed to put something else in there too..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("icecoffee")
|
||||
icon_state = "icedcoffeeglass"
|
||||
name = "Iced Coffee"
|
||||
desc = "A drink to perk you up and refresh you!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("coffee")
|
||||
icon_state = "glass_brown"
|
||||
name = "Glass of coffee"
|
||||
desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("bilk")
|
||||
icon_state = "glass_brown"
|
||||
name = "Glass of bilk"
|
||||
desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("fuel")
|
||||
icon_state = "dr_gibb_glass"
|
||||
name = "Glass of welder fuel"
|
||||
desc = "Unless you are an industrial tool, this is probably not safe for consumption."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("brownstar")
|
||||
icon_state = "brownstar"
|
||||
name = "Brown Star"
|
||||
desc = "It's not what it sounds like..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("grapejuice")
|
||||
icon_state = "grapejuice"
|
||||
name = "Glass of grape juice"
|
||||
desc = "It's grrrrrape!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("grapesoda")
|
||||
icon_state = "grapesoda"
|
||||
name = "Can of Grape Soda"
|
||||
desc = "Looks like a delicious drank!"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("icetea")
|
||||
icon_state = "icedteaglass"
|
||||
name = "Iced Tea"
|
||||
desc = "No relation to a certain rap artist/ actor."
|
||||
center_of_mass = list("x"=15, "y"=10)
|
||||
if("grenadine")
|
||||
icon_state = "grenadineglass"
|
||||
name = "Glass of grenadine syrup"
|
||||
desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks."
|
||||
center_of_mass = list("x"=17, "y"=6)
|
||||
if("milkshake")
|
||||
icon_state = "milkshake"
|
||||
name = "Milkshake"
|
||||
desc = "Glorious brainfreezing mixture."
|
||||
center_of_mass = list("x"=16, "y"=7)
|
||||
if("lemonade")
|
||||
icon_state = "lemonadeglass"
|
||||
name = "Lemonade"
|
||||
desc = "Oh the nostalgia..."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
if("kiraspecial")
|
||||
icon_state = "kiraspecial"
|
||||
name = "Kira Special"
|
||||
desc = "Long live the guy who everyone had mistaken for a girl. Baka!"
|
||||
center_of_mass = list("x"=16, "y"=12)
|
||||
if("rewriter")
|
||||
icon_state = "rewriter"
|
||||
name = "Rewriter"
|
||||
desc = "The secret of the sanctuary of the Libarian..."
|
||||
center_of_mass = list("x"=16, "y"=9)
|
||||
if("suidream")
|
||||
icon_state = "sdreamglass"
|
||||
name = "Sui Dream"
|
||||
desc = "A froofy, fruity, and sweet mixed drink. Understanding the name only brings shame."
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
if("melonliquor")
|
||||
icon_state = "emeraldglass"
|
||||
name = "Glass of Melon Liquor"
|
||||
desc = "A relatively sweet and fruity 46 proof liquor."
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
if("bluecuracao")
|
||||
icon_state = "curacaoglass"
|
||||
name = "Glass of Blue Curacao"
|
||||
desc = "Exotically blue, fruity drink, distilled from oranges."
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
if("absinthe")
|
||||
icon_state = "absintheglass"
|
||||
name = "Glass of Absinthe"
|
||||
desc = "Wormwood, anise, oh my."
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
if("pwine")
|
||||
icon_state = "pwineglass"
|
||||
name = "Glass of ???"
|
||||
desc = "A black ichor with an oily purple sheer on top. Are you sure you should drink this?"
|
||||
center_of_mass = list("x"=16, "y"=5)
|
||||
else
|
||||
icon_state ="glass_brown"
|
||||
name = "Glass of ..what?"
|
||||
desc = "You can't really tell what this is."
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
else
|
||||
icon_state = "glass_empty"
|
||||
name = "Drinking glass"
|
||||
desc = "Your standard drinking glass"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
return
|
||||
|
||||
// for /obj/machinery/vending/sovietsoda
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
desc = "A jar. You're not sure what it's supposed to hold."
|
||||
icon_state = "jar"
|
||||
item_state = "beaker"
|
||||
center_of_mass = list("x"=15, "y"=8)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("slime", 50)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/trash = null
|
||||
var/slice_path
|
||||
var/slices_num
|
||||
center_of_mass = list("x"=15, "y"=15)
|
||||
|
||||
//Placeholder for effect that trigger on eating that aren't tied to reagents.
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M)
|
||||
@@ -107,7 +108,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user, proximity)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/examine()
|
||||
set src in view()
|
||||
|
||||
@@ -1358,6 +1358,7 @@ datum/design/nanopaste
|
||||
materials = list("$metal" = 7000, "$glass" = 7000)
|
||||
build_path = "/obj/item/stack/nanopaste"
|
||||
|
||||
/* // Removal of loyalty implants. Can't think of a way to add this to the config option.
|
||||
datum/design/implant_loyal
|
||||
name = "loyalty implant"
|
||||
desc = "Makes you loyal or such."
|
||||
@@ -1366,6 +1367,7 @@ datum/design/implant_loyal
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 7000, "$glass" = 7000)
|
||||
build_path = "/obj/item/weapon/implant/loyalty"
|
||||
*/
|
||||
|
||||
datum/design/implant_chem
|
||||
name = "chemical implant"
|
||||
|
||||
@@ -123,20 +123,22 @@
|
||||
shift_light(5, warning_color)
|
||||
if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY)
|
||||
var/stability = num2text(round((damage / explosion_point) * 100))
|
||||
var/alert_msg
|
||||
|
||||
if(damage > emergency_point)
|
||||
shift_light(7, emergency_color)
|
||||
radio.autosay(addtext(emergency_alert, " Instability: ",stability,"%"), "Supermatter Monitor")
|
||||
alert_msg = addtext(emergency_alert, " Instability: ",stability,"%")
|
||||
lastwarning = world.timeofday
|
||||
|
||||
else if(damage >= damage_archived) // The damage is still going up
|
||||
radio.autosay(addtext(warning_alert," Instability: ",stability,"%"), "Supermatter Monitor")
|
||||
alert_msg = addtext(warning_alert," Instability: ",stability,"%")
|
||||
lastwarning = world.timeofday - 150
|
||||
|
||||
else // Phew, we're safe
|
||||
radio.autosay(safe_alert, "Supermatter Monitor")
|
||||
else // Phew, we're safe
|
||||
alert_msg = safe_alert
|
||||
lastwarning = world.timeofday
|
||||
|
||||
if(!istype(L, /turf/space) && alert_msg)
|
||||
radio.autosay(alert_msg, "Supermatter Monitor")
|
||||
|
||||
if(damage > explosion_point)
|
||||
for(var/mob/living/mob in living_mob_list)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
B.transfer_identity(target)
|
||||
|
||||
target.internal_organs -= B
|
||||
target.internal_organs_by_name -= "brain"
|
||||
|
||||
target:brain_op_stage = 4.0
|
||||
target.death()//You want them to die after the brain was transferred, so not to trigger client death() twice.
|
||||
@@ -173,7 +174,7 @@
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("\blue [user] mends hematoma in [target]'s brain with \the [tool].", \
|
||||
"\blue You mend hematoma in [target]'s brain with \the [tool].")
|
||||
var/datum/organ/internal/brain/sponge = target.internal_organs["brain"]
|
||||
var/datum/organ/internal/brain/sponge = target.internal_organs_by_name["brain"]
|
||||
if (sponge)
|
||||
sponge.damage = 0
|
||||
|
||||
@@ -187,9 +188,12 @@
|
||||
// SLIME CORE EXTRACTION //
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/slime/
|
||||
/datum/surgery_step/slime
|
||||
is_valid_target(mob/living/carbon/slime/target)
|
||||
return istype(target, /mob/living/carbon/slime/)
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/slime/target, target_zone, obj/item/tool)
|
||||
return istype(target, /mob/living/carbon/slime/) && target.stat == 2
|
||||
return target.stat == 2
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh
|
||||
allowed_tools = list(
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
target.blinded += 1.5
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\red [user]'s hand slips, slicing [target]'s eyes wth \the [tool]!" , \
|
||||
"\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" )
|
||||
@@ -69,7 +69,7 @@
|
||||
target.op_stage.eyes = 2
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\red [user]'s hand slips, damaging [target]'s eyes with \the [tool]!", \
|
||||
"\red Your hand slips, damaging [target]'s eyes with \the [tool]!")
|
||||
@@ -100,7 +100,7 @@
|
||||
target.op_stage.eyes = 3
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\red [user]'s hand slips, stabbing \the [tool] into [target]'s eye!", \
|
||||
"\red Your hand slips, stabbing \the [tool] into [target]'s eye!")
|
||||
@@ -126,7 +126,7 @@
|
||||
"You are beginning to cauterize the incision around [target]'s eyes with \the [tool].")
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
|
||||
user.visible_message("\blue [user] cauterizes the incision around [target]'s eyes with \the [tool].", \
|
||||
"\blue You cauterize the incision around [target]'s eyes with \the [tool].")
|
||||
if (target.op_stage.eyes == 3)
|
||||
@@ -136,7 +136,7 @@
|
||||
target.op_stage.eyes = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
|
||||
var/datum/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("\red [user]'s hand slips, searing [target]'s eyes with \the [tool]!", \
|
||||
"\red Your hand slips, searing [target]'s eyes with \the [tool]!")
|
||||
|
||||
@@ -202,9 +202,10 @@
|
||||
|
||||
var/is_chest_organ_damaged = 0
|
||||
var/datum/organ/external/chest/chest = target.get_organ("chest")
|
||||
for(var/datum/organ/internal/I in chest.internal_organs) if(I.damage > 0)
|
||||
is_chest_organ_damaged = 1
|
||||
break
|
||||
for(var/datum/organ/internal/I in chest.internal_organs)
|
||||
if(I.damage > 0)
|
||||
is_chest_organ_damaged = 1
|
||||
break
|
||||
return ..() && is_chest_organ_damaged && target.op_stage.ribcage == 2
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -285,7 +286,7 @@
|
||||
return 0
|
||||
|
||||
var/is_chest_organ_damaged = 0
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs_by_name["heart"]
|
||||
var/datum/organ/external/chest/chest = target.get_organ("chest")
|
||||
for(var/datum/organ/internal/I in chest.internal_organs) if(I.damage > 0)
|
||||
is_chest_organ_damaged = 1
|
||||
@@ -293,7 +294,7 @@
|
||||
return ..() && is_chest_organ_damaged && heart.robotic == 2 && target.op_stage.ribcage == 2
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs_by_name["heart"]
|
||||
|
||||
if(heart.damage > 0)
|
||||
user.visible_message("[user] starts mending the mechanisms on [target]'s heart with \the [tool].", \
|
||||
@@ -302,14 +303,14 @@
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs_by_name["heart"]
|
||||
if(heart.damage > 0)
|
||||
user.visible_message("\blue [user] repairs [target]'s heart with \the [tool].", \
|
||||
"\blue You repair [target]'s heart with \the [tool]." )
|
||||
heart.damage = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
|
||||
var/datum/organ/internal/heart/heart = target.internal_organs_by_name["heart"]
|
||||
user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!!" , \
|
||||
"\red Your hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!")
|
||||
heart.take_damage(5, 0)
|
||||
|
||||
@@ -25,8 +25,10 @@
|
||||
return allowed_tools[T]
|
||||
return 0
|
||||
|
||||
// Checks if this step applies to the mutantrace of the user.
|
||||
proc/is_valid_mutantrace(mob/living/carbon/human/target)
|
||||
// Checks if this step applies to the user mob at all
|
||||
proc/is_valid_target(mob/living/carbon/human/target)
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
if(allowed_species)
|
||||
for(var/species in allowed_species)
|
||||
@@ -40,6 +42,7 @@
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
// checks whether this step can be applied with the given user and target
|
||||
proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
return 0
|
||||
@@ -81,7 +84,7 @@ proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
|
||||
return 0
|
||||
for(var/datum/surgery_step/S in surgery_steps)
|
||||
//check if tool is right or close enough and if this step is possible
|
||||
if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_mutantrace(M))
|
||||
if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_target(M))
|
||||
S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it
|
||||
//We had proper tools! (or RNG smiled.) and User did not move or change hands.
|
||||
if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = mob
|
||||
var/datum/organ/internal/brain/B = H.internal_organs["brain"]
|
||||
var/datum/organ/internal/brain/B = H.internal_organs_by_name["brain"]
|
||||
if (B.damage < B.min_broken_damage)
|
||||
B.take_damage(5)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user