mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-28 23:51:17 +01:00
Merge branch 'master' into development
This commit is contained in:
@@ -325,6 +325,7 @@
|
||||
#include "code\game\dna\dna_modifier.dm"
|
||||
#include "code\game\dna\genes\disabilities.dm"
|
||||
#include "code\game\dna\genes\gene.dm"
|
||||
#include "code\game\dna\genes\monkey.dm"
|
||||
#include "code\game\dna\genes\powers.dm"
|
||||
#include "code\game\gamemodes\antagspawner.dm"
|
||||
#include "code\game\gamemodes\events.dm"
|
||||
|
||||
@@ -51,7 +51,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/storage/box/swabs,
|
||||
/obj/item/weapon/storage/box/swabs,
|
||||
/obj/item/weapon/storage/box/slides,
|
||||
/obj/item/weapon/reagent_containers/spray/luminol)
|
||||
/obj/item/weapon/reagent_containers/spray/luminol,
|
||||
/obj/item/device/uv_light)
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Auxiliary forensic tools"
|
||||
@@ -138,6 +139,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/sarezhiwine,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
|
||||
/obj/item/weapon/lipstick/random,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale,
|
||||
@@ -206,6 +208,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Atmospherics"
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/supply_packs/inflatable
|
||||
name = "Inflatable barriers"
|
||||
contains = list(/obj/item/weapon/storage/briefcase/inflatable,
|
||||
@@ -1092,6 +1096,22 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
containername = "Sterile equipment crate"
|
||||
group = "Medical"
|
||||
|
||||
/datum/supply_packs/beer
|
||||
contains = list(/obj/structure/reagent_dispensers/beerkeg)
|
||||
name = "Beer Keg"
|
||||
cost = 10
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "Beer Crate"
|
||||
group = "Hospitality"
|
||||
|
||||
/datum/supply_packs/xuizi
|
||||
contains = list(/obj/structure/reagent_dispensers/xuizikeg)
|
||||
name = "Xuizi Juice Keg"
|
||||
cost = 20
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "Xuizi Juice Crate"
|
||||
group = "Hospitality"
|
||||
|
||||
/datum/supply_packs/randomised/pizza
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/pizzabox/margherita,
|
||||
|
||||
+23
-165
@@ -1,175 +1,33 @@
|
||||
/datum/dna/gene/monkey
|
||||
name="Monkey"
|
||||
name = "Monkey"
|
||||
|
||||
/datum/dna/gene/monkey/New()
|
||||
block=MONKEYBLOCK
|
||||
block = MONKEYBLOCK
|
||||
|
||||
/datum/dna/gene/monkey/can_activate(var/mob/M,var/flags)
|
||||
return istype(M, /mob/living/carbon/human) || istype(M,/mob/living/carbon/monkey)
|
||||
return ishuman(M)
|
||||
|
||||
/datum/dna/gene/monkey/activate(var/mob/living/M, var/connected, var/flags)
|
||||
if(!istype(M,/mob/living/carbon/human))
|
||||
//testing("Cannot monkey-ify [M], type is [M.type].")
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.transforming = 1
|
||||
var/list/implants = list() //Try to preserve implants.
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
W.loc = null
|
||||
|
||||
if(!connected)
|
||||
for(var/obj/item/W in (H.contents-implants))
|
||||
if (W==H.w_uniform) // will be teared
|
||||
continue
|
||||
H.drop_from_inventory(W)
|
||||
M.transforming = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/atom/movable/overlay/animation = new( M.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("h2monkey", animation)
|
||||
sleep(48)
|
||||
qdel(animation)
|
||||
|
||||
|
||||
var/mob/living/carbon/monkey/O = null
|
||||
if(H.species.primitive)
|
||||
O = new H.species.primitive(src)
|
||||
/datum/dna/gene/monkey/activate(var/mob/living/carbon/C)
|
||||
var/mob/living/carbon/human/H
|
||||
if(ishuman(C))
|
||||
H = C
|
||||
else
|
||||
return
|
||||
if(!islesserform(H))
|
||||
H = H.monkeyize(1)
|
||||
H.name = H.species.get_random_name() // keep the realname
|
||||
|
||||
/datum/dna/gene/monkey/deactivate(var/mob/living/carbon/C)
|
||||
var/mob/living/carbon/human/H
|
||||
if(ishuman(C))
|
||||
H = C
|
||||
else
|
||||
H.gib() //Trying to change the species of a creature with no primitive var set is messy.
|
||||
return
|
||||
|
||||
if(M)
|
||||
if (M.dna)
|
||||
O.dna = M.dna.Clone()
|
||||
M.dna = null
|
||||
if(islesserform(H))
|
||||
H = H.humanize(1) // woo transform procs!
|
||||
|
||||
if (M.suiciding)
|
||||
O.suiciding = M.suiciding
|
||||
M.suiciding = null
|
||||
|
||||
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
O.viruses += D
|
||||
D.affected_mob = O
|
||||
M.viruses -= D
|
||||
|
||||
|
||||
for(var/obj/T in (M.contents-implants))
|
||||
qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(O) //transfer our mind to the cute little monkey
|
||||
|
||||
if (connected) //inside dna thing
|
||||
var/obj/machinery/dna_scannernew/C = connected
|
||||
O.loc = C
|
||||
C.occupant = O
|
||||
connected = null
|
||||
O.real_name = text("monkey ([])",copytext(md5(M.real_name), 2, 6))
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss() + 20)
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
O.a_intent = I_HURT
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
/datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags)
|
||||
if(!istype(M,/mob/living/carbon/monkey))
|
||||
//testing("Cannot humanize [M], type is [M.type].")
|
||||
return
|
||||
var/mob/living/carbon/monkey/Mo = M
|
||||
Mo.transforming = 1
|
||||
var/list/implants = list() //Still preserving implants
|
||||
for(var/obj/item/weapon/implant/W in Mo)
|
||||
implants += W
|
||||
W.loc = null
|
||||
if(!connected)
|
||||
for(var/obj/item/W in (Mo.contents-implants))
|
||||
Mo.drop_from_inventory(W)
|
||||
M.transforming = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/atom/movable/overlay/animation = new( M.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
qdel(animation)
|
||||
|
||||
var/mob/living/carbon/human/O
|
||||
if(Mo.greaterform)
|
||||
O = new(src, Mo.greaterform)
|
||||
else
|
||||
O = new(src)
|
||||
|
||||
if (M.dna.GetUIState(DNA_UI_GENDER))
|
||||
O.gender = FEMALE
|
||||
else
|
||||
O.gender = MALE
|
||||
|
||||
if (M)
|
||||
if (M.dna)
|
||||
O.dna = M.dna.Clone()
|
||||
M.dna = null
|
||||
|
||||
if (M.suiciding)
|
||||
O.suiciding = M.suiciding
|
||||
M.suiciding = null
|
||||
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
O.viruses += D
|
||||
D.affected_mob = O
|
||||
M.viruses -= D
|
||||
|
||||
//for(var/obj/T in M)
|
||||
// qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(O) //transfer our mind to the human
|
||||
|
||||
if (connected) //inside dna thing
|
||||
var/obj/machinery/dna_scannernew/C = connected
|
||||
O.loc = C
|
||||
C.occupant = O
|
||||
connected = null
|
||||
|
||||
var/i
|
||||
while (!i)
|
||||
var/randomname
|
||||
if (O.gender == MALE)
|
||||
randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names)))
|
||||
else
|
||||
randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names)))
|
||||
if (findname(randomname))
|
||||
continue
|
||||
else
|
||||
O.real_name = randomname
|
||||
O.dna.real_name = randomname
|
||||
i++
|
||||
O.UpdateAppearance()
|
||||
O.take_overall_damage(M.getBruteLoss(), M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss())
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
qdel(M)
|
||||
return
|
||||
if(!H.dna.real_name)
|
||||
var/randomname = H.species.get_random_name()
|
||||
H.real_name = randomname
|
||||
H.dna.real_name = randomname
|
||||
@@ -92,32 +92,89 @@
|
||||
if(!ability_prechecks(user, price))
|
||||
return
|
||||
|
||||
var/title = input("Select message title: ")
|
||||
var/text = input("Select message text: ")
|
||||
if(!title || !text || !ability_pay(user, price))
|
||||
user << "Hack Aborted"
|
||||
return
|
||||
var/reporttitle
|
||||
var/reportbody
|
||||
var/reporttype = input(usr, "Choose whether to use a template or custom report.", "Create Command Report") in list("Template", "Custom", "Cancel")
|
||||
switch(reporttype)
|
||||
if("Template")
|
||||
establish_db_connection(dbcon)
|
||||
if (!dbcon.IsConnected())
|
||||
src << "<span class='notice'>Unable to connect to the database.</span>"
|
||||
return
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT title, message FROM ss13_ccia_general_notice_list WHERE deleted_at IS NULL")
|
||||
query.Execute()
|
||||
|
||||
log_ability_use(user, "advanced encryption hack")
|
||||
var/list/template_names = list()
|
||||
var/list/templates = list()
|
||||
|
||||
if(prob(50) && user.hack_can_fail)
|
||||
user << "Hack Failed."
|
||||
if(prob(5))
|
||||
user.hack_fails ++
|
||||
announce_hack_failure(user, "quantum message relay")
|
||||
log_ability_use(user, "elite encryption hack (CRITFAIL - title: [title])")
|
||||
while (query.NextRow())
|
||||
template_names += query.item[1]
|
||||
templates[query.item[1]] = query.item[2]
|
||||
|
||||
// Catch empty list
|
||||
if (!templates.len)
|
||||
src << "<span class='notice'>There are no templates in the database.</span>"
|
||||
return
|
||||
|
||||
reporttitle = input(usr, "Please select a command report template.", "Create Command Report") in template_names
|
||||
reportbody = templates[reporttitle]
|
||||
|
||||
if("Custom")
|
||||
reporttitle = sanitizeSafe(input(usr, "Pick a title for the report.", "Title") as text|null)
|
||||
if(!reporttitle)
|
||||
reporttitle = "NanoTrasen Update"
|
||||
reportbody = sanitize(input(usr, "Please enter anything you want. Anything. Serious.", "Body", "") as message|null, extra = 0)
|
||||
if(!reportbody)
|
||||
return
|
||||
else
|
||||
return
|
||||
log_ability_use(user, "elite encryption hack (FAIL - title: [title])")
|
||||
return
|
||||
log_ability_use(user, "elite encryption hack (SUCCESS - title: [title])")
|
||||
command_announcement.Announce(text, title)
|
||||
for (var/obj/machinery/computer/communications/C in machines)
|
||||
if(! (C.stat & (BROKEN|NOPOWER) ) )
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc )
|
||||
P.name = "[command_name()] Update"
|
||||
P.info = replacetext(text, "\n", "<br/>")
|
||||
P.update_space(P.info)
|
||||
P.update_icon()
|
||||
|
||||
if (reporttype == "Template")
|
||||
sanitizeSafe(alert(usr, "Would you like it to appear as if CCIAMS made the report?",,"Yes","No"))
|
||||
if ("Yes")
|
||||
reportbody += "\n\n- CCIAMS, [commstation_name()]"
|
||||
else
|
||||
|
||||
switch(alert("Should this be announced to the general population?",,"Yes","No"))
|
||||
if("Yes")
|
||||
if(!reporttitle || !reportbody || !ability_pay(user, price))
|
||||
user << "Hack Aborted due to no title, no body message, or you do not have enough CPU for this action."
|
||||
return
|
||||
|
||||
log_ability_use(user, "advanced encryption hack")
|
||||
|
||||
if(prob(50) && user.hack_can_fail)
|
||||
user << "Hack Failed."
|
||||
if(prob(5))
|
||||
user.hack_fails ++
|
||||
announce_hack_failure(user, "quantum message relay")
|
||||
log_ability_use(user, "advanced encryption hack (CRITFAIL - title: [reporttitle])")
|
||||
return
|
||||
log_ability_use(user, "advanced encryption hack (FAIL - title: [reporttitle])")
|
||||
return
|
||||
log_ability_use(user, "advanced encryption hack (SUCCESS - title: [reporttitle])")
|
||||
command_announcement.Announce("[reportbody]", reporttitle, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
|
||||
|
||||
if("No")
|
||||
if(!reporttitle || !reportbody || !ability_pay(user, price))
|
||||
user << "Hack Aborted due to no title, no body message, or you do not have enough CPU for this action."
|
||||
return
|
||||
|
||||
log_ability_use(user, "advanced encryption hack")
|
||||
|
||||
if(prob(50) && user.hack_can_fail)
|
||||
user << "Hack Failed."
|
||||
if(prob(5))
|
||||
user.hack_fails ++
|
||||
announce_hack_failure(user, "quantum message relay")
|
||||
log_ability_use(user, "advanced encryption hack (CRITFAIL - title: [reporttitle])")
|
||||
return
|
||||
log_ability_use(user, "advanced encryption hack (FAIL - title: [reporttitle])")
|
||||
return
|
||||
log_ability_use(user, "advanced encryption hack (SUCCESS - title: [reporttitle])")
|
||||
world << "\red New [company_name] Update available at all communication consoles."
|
||||
world << sound('sound/AI/commandreport.ogg')
|
||||
post_comm_message(reporttitle, reportbody)
|
||||
|
||||
/datum/game_mode/malfunction/verb/elite_encryption_hack()
|
||||
set category = "Software"
|
||||
@@ -219,4 +276,4 @@
|
||||
user.verbs += new/datum/game_mode/malfunction/verb/ai_destroy_station()
|
||||
|
||||
|
||||
// END ABILITY VERBS
|
||||
// END ABILITY VERBS
|
||||
|
||||
@@ -680,7 +680,7 @@
|
||||
T.mind.vampire.master = src
|
||||
vampire.thralls += T
|
||||
T << "<span class='notice'>You have been forced into a blood bond by [T.mind.vampire.master], and are thus their thrall. While a thrall may feel a myriad of emotions towards their master, ranging from fear, to hate, to love; the supernatural bond between them still forces the thrall to obey their master, and to listen to the master's commands.<br><br>You must obey your master's orders, you must protect them, you cannot harm them.</span>"
|
||||
|
||||
src << "<span class='notice'>You have completed the thralling process. They are now your slave and will obey your commands.</span>"
|
||||
admin_attack_log(src, T, "enthralled [key_name(T)]", "was enthralled by [key_name(src)]", "successfully enthralled")
|
||||
|
||||
vampire.use_blood(150)
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
economic_modifier = 5
|
||||
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks)
|
||||
minimal_player_age = 5
|
||||
minimal_player_age = 7
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
@@ -106,7 +106,7 @@
|
||||
economic_modifier = 5
|
||||
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels)
|
||||
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels)
|
||||
minimal_player_age = 3
|
||||
minimal_player_age = 7
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
|
||||
@@ -153,7 +153,7 @@
|
||||
economic_modifier = 4
|
||||
access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_external_airlocks)
|
||||
minimal_player_age = 3
|
||||
minimal_player_age = 7
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
target << "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered."
|
||||
target.ResetSecurityCodes()
|
||||
else
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] detonated [target.name]!</span>")
|
||||
message_admins("[key_name_admin(usr)] detonated [target.name]!")
|
||||
log_game("[key_name(usr)] detonated [target.name]!",ckey=key_name(usr))
|
||||
target << "<span class='danger'>Self-destruct command received.</span>"
|
||||
spawn(10)
|
||||
@@ -92,15 +92,10 @@
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] [target.canmove ? "locked down" : "released"] [target.name]!</span>")
|
||||
log_game("[key_name(usr)] [target.canmove ? "locked down" : "released"] [target.name]!",ckey=key_name(usr))
|
||||
target.canmove = !target.canmove
|
||||
if (target.lockcharge)
|
||||
target.lockcharge = !target.lockcharge
|
||||
target << "Your lockdown has been lifted!"
|
||||
else
|
||||
target.lockcharge = !target.lockcharge
|
||||
target << "You have been locked down!"
|
||||
target.SetLockdown(!target.lockcharge) // Toggle.
|
||||
message_admins("[key_name_admin(usr)] [target.lockcharge ? "locked down" : "released"] [target.name]!")
|
||||
log_game("[key_name(usr)] [target.lockcharge ? "locked down" : "released"] [target.name]!",ckey=key_name(usr))
|
||||
target << (target.lockcharge ? "You have been locked down!" : "Your lockdown has been lifted!")
|
||||
|
||||
// Remotely hacks the cyborg. Only antag AIs can do this and only to linked cyborgs.
|
||||
else if (href_list["hack"])
|
||||
@@ -124,7 +119,7 @@
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] emagged [target.name] using robotic console!</span>")
|
||||
message_admins("[key_name_admin(usr)] emagged [target.name] using robotic console!")
|
||||
log_game("[key_name(usr)] emagged [target.name] using robotic console!",ckey=key_name(usr))
|
||||
target.emagged = 1
|
||||
target << "<span class='notice'>Failsafe protocols overriden. New tools available.</span>"
|
||||
@@ -147,7 +142,7 @@
|
||||
user << "Self-destruct aborted - safety active"
|
||||
return
|
||||
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] detonated all cyborgs!</span>")
|
||||
message_admins("[key_name_admin(usr)] detonated all cyborgs!")
|
||||
log_game("[key_name(usr)] detonated all cyborgs!",ckey=key_name(usr))
|
||||
|
||||
for(var/mob/living/silicon/robot/R in mob_list)
|
||||
@@ -179,7 +174,7 @@
|
||||
robot["name"] = R.name
|
||||
if(R.stat)
|
||||
robot["status"] = "Not Responding"
|
||||
else if (!R.canmove)
|
||||
else if (R.lockcharge) // changed this from !R.canmove to R.lockcharge because of issues with lockdown and chairs
|
||||
robot["status"] = "Lockdown"
|
||||
else
|
||||
robot["status"] = "Operational"
|
||||
|
||||
@@ -715,7 +715,8 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/chartreusegreen = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/chartreuseyellow =5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/cremewhite = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/brandy = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/guinnes = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/drambuie = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/cremeyvette = 4)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/cremeyvette = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/small/xuizijuice = 8,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/sarezhiwine = 2, /obj/item/weapon/reagent_containers/food/drinks/bottle/victorygin = 2)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/tea = 10)
|
||||
vend_delay = 15
|
||||
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
|
||||
|
||||
@@ -329,6 +329,14 @@
|
||||
C.holder.original_mob = null
|
||||
suicide()
|
||||
|
||||
/mob/living/carbon/human/bst/verb/tgm()
|
||||
set name = "Toggle Godmode"
|
||||
set desc = "Enable or disable god mode. For testing things that require you to be vulnerable."
|
||||
set category = "BST"
|
||||
|
||||
status_flags ^= GODMODE
|
||||
src << span("notice", "God mode is now [status_flags & GODMODE ? "enabled" : "disabled"]")
|
||||
|
||||
//Equipment. All should have canremove set to 0
|
||||
//All items with a /bst need the attack_hand() proc overrided to stop people getting overpowered items.
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ var/list/global/random_stock_common = list(
|
||||
"cosmetic" = 2.2,
|
||||
"suitcooler" = 1.2,
|
||||
"officechair" = 1.2,
|
||||
"booze" = 3.5,
|
||||
"booze" = 3.7,
|
||||
"plant" = 3.5,
|
||||
"bag" = 2,
|
||||
"extinguish" = 2.2,
|
||||
@@ -795,7 +795,7 @@ var/list/global/random_stock_large = list(
|
||||
break
|
||||
new /obj/structure/bed/chair/office/dark(T)
|
||||
if ("booze")
|
||||
if (prob(8))//Spare keg of beer
|
||||
if (prob(8))//Spare keg of beer or xuizi juice
|
||||
var/turf/T = get_turf(L)
|
||||
if (!turf_clear(T))
|
||||
for (var/turf/U in range(T,1))
|
||||
@@ -803,7 +803,10 @@ var/list/global/random_stock_large = list(
|
||||
T = U
|
||||
break
|
||||
|
||||
new /obj/structure/reagent_dispensers/beerkeg(T)
|
||||
if (prob(80))
|
||||
new /obj/structure/reagent_dispensers/beerkeg(T)
|
||||
else
|
||||
new /obj/structure/reagent_dispensers/xuizikeg(T)
|
||||
else
|
||||
var/list/drinks = typesof(/obj/item/weapon/reagent_containers/food/drinks/bottle)
|
||||
drinks -= /obj/item/weapon/reagent_containers/food/drinks/bottle
|
||||
@@ -1657,7 +1660,7 @@ var/list/global/random_stock_large = list(
|
||||
|
||||
if ("bike")
|
||||
new /obj/vehicle/bike(L)
|
||||
|
||||
|
||||
if ("sol")
|
||||
if (prob(50))
|
||||
new /obj/structure/closet/sol/navy(L)
|
||||
|
||||
@@ -241,8 +241,12 @@
|
||||
|
||||
if(target_mob != H)
|
||||
H << "<span class='danger'>You inject [target_mob] with [chems_to_use] unit\s of [charge.display_name].</span>"
|
||||
target_mob << "<span class='danger'>You feel a rushing in your veins as [chems_to_use] unit\s of [charge.display_name] [chems_to_use == 1 ? "is" : "are"] injected.</span>"
|
||||
target_mob.reagents.add_reagent(charge.display_name, chems_to_use)
|
||||
|
||||
if(target_mob.is_physically_disabled())
|
||||
target_mob.reagents.add_reagent(charge.display_name, chems_to_use)
|
||||
else
|
||||
target_mob << "<span class='danger'>You feel a rushing in your veins as [chems_to_use] unit\s of [charge.display_name] [chems_to_use == 1 ? "is" : "are"] injected.</span>"
|
||||
target_mob.reagents.add_reagent(charge.display_name, chems_to_use)
|
||||
|
||||
charge.charges -= chems_to_use
|
||||
if(charge.charges < 0) charge.charges = 0
|
||||
|
||||
@@ -21,16 +21,9 @@ datum/event/viral_infection/setup()
|
||||
viruses += D
|
||||
|
||||
datum/event/viral_infection/announce()
|
||||
var/level
|
||||
if (severity == EVENT_LEVEL_MUNDANE)
|
||||
return
|
||||
else if (severity == EVENT_LEVEL_MODERATE)
|
||||
level = pick("one", "two", "three", "four")
|
||||
else
|
||||
level = "five"
|
||||
|
||||
if (severity == EVENT_LEVEL_MAJOR || prob(60))
|
||||
command_announcement.Announce("Confirmed outbreak of level [level] biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg')
|
||||
command_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg')
|
||||
|
||||
datum/event/viral_infection/start()
|
||||
if(!viruses.len) return
|
||||
|
||||
@@ -569,6 +569,7 @@ I said no!
|
||||
items = list()
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/slimesoup
|
||||
|
||||
|
||||
/datum/recipe/boiledslimeextract
|
||||
reagents = list("water" = 5)
|
||||
items = list(
|
||||
|
||||
@@ -1128,7 +1128,7 @@
|
||||
else
|
||||
usr << "<span class='warning'>You failed to check the pulse. Try again.</span>"
|
||||
|
||||
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour)
|
||||
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/kpg=0)
|
||||
|
||||
if(!dna)
|
||||
if(!new_species)
|
||||
@@ -1180,7 +1180,7 @@
|
||||
|
||||
species.create_organs(src)
|
||||
|
||||
species.handle_post_spawn(src)
|
||||
species.handle_post_spawn(src,kpg) // should be zero by default
|
||||
|
||||
maxHealth = species.total_health
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#define BASE_DIZZY 100
|
||||
|
||||
#define ALCOHOL_FILTRATION_RATE 0.02//The base rate at which intoxication decreases per proc. this is actually multiplied by 3 most of the time if the liver is healthy
|
||||
#define ALCOHOL_FILTRATION_RATE 0.015//The base rate at which intoxication decreases per proc. this is actually multiplied by 3 most of the time if the liver is healthy
|
||||
#define BASE_VOMIT_CHANCE 2
|
||||
#define VOMIT_CHANCE_SCALE 0.2//An extra 1% for every 5 units over the vomiting threshold
|
||||
|
||||
@@ -26,6 +26,17 @@ var/mob/living/carbon/human/alcohol_clumsy = 0
|
||||
intoxication = 0
|
||||
return
|
||||
|
||||
//Godmode messes some things up, so no more BSTs getting drunk unless they toggle it off
|
||||
if (status_flags & GODMODE)
|
||||
intoxication = 0 //Zero out intoxication but don't return, let the rest of this function run to remove any residual effects
|
||||
slurring = 0
|
||||
confused = 0
|
||||
eye_blurry = 0
|
||||
drowsyness = 0
|
||||
paralysis = 0
|
||||
sleeping = 0
|
||||
//Many of these parameters normally tick down in life code, but some parts of that code don't run in godmode, so this prevents a BST being stuck with blurred vision
|
||||
|
||||
if(intoxication > AE_DIZZY*SR) // Early warning
|
||||
if (dizziness == 0)
|
||||
src << "<span class='notice'>The room starts spinning!</span>"
|
||||
|
||||
@@ -182,6 +182,8 @@
|
||||
if(!(sdisabilities & BLIND))
|
||||
if(equipment_tint_total >= TINT_BLIND) // Covered eyes, heal faster
|
||||
eye_blurry = max(eye_blurry-2, 0)
|
||||
else
|
||||
eye_blurry = max(eye_blurry-1, 0)
|
||||
|
||||
if (disabilities & EPILEPSY)
|
||||
if ((prob(1) && paralysis < 1))
|
||||
@@ -916,9 +918,6 @@
|
||||
|
||||
if (intoxication)
|
||||
handle_intoxication()
|
||||
else if (alcohol_clumsy)//This var is defined in intoxication.dm, its set true when alcohol has caused clumsiness
|
||||
mutations.Remove(CLUMSY)
|
||||
alcohol_clumsy = 0
|
||||
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
|
||||
|
||||
@@ -317,13 +317,18 @@
|
||||
H.verbs |= verb_path
|
||||
return
|
||||
|
||||
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment.
|
||||
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H,var/kpg = 0) //Handles anything not already covered by basic species assignment. Keepgene value should only be used by genetics.
|
||||
add_inherent_verbs(H)
|
||||
H.mob_bump_flag = bump_flag
|
||||
H.mob_swap_flags = swap_flags
|
||||
H.mob_push_flags = push_flags
|
||||
H.pass_flags = pass_flags
|
||||
H.mob_size = mob_size
|
||||
if(!kpg)
|
||||
if(islesserform(H))
|
||||
H.dna.SetSEState(MONKEYBLOCK,1)
|
||||
else
|
||||
H.dna.SetSEState(MONKEYBLOCK,0)
|
||||
|
||||
/datum/species/proc/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0) //Handles any species-specific death events (such as dionaea nymph spawns).
|
||||
return
|
||||
|
||||
@@ -60,13 +60,24 @@
|
||||
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
|
||||
greater_form = "Tajaran"
|
||||
greater_form = "Tajara"
|
||||
default_language = "Farwa"
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#333333"
|
||||
tail = "farwatail"
|
||||
holder_type = /obj/item/weapon/holder/monkey/farwa
|
||||
|
||||
/datum/species/monkey/tajaran/get_random_name()
|
||||
return "farwa ([rand(100,999)])" // HACK HACK HACK, oh lords of coding please forgive me!
|
||||
|
||||
/datum/species/monkey/tajaran/m_sai
|
||||
name = "M'sai Farwa"
|
||||
greater_form = "M'sai Tajara"
|
||||
|
||||
/datum/species/monkey/tajaran/zhan_khazan
|
||||
name = "Zhan-Khazan Farwa"
|
||||
greater_form = "Zhan-Khazan Tajara"
|
||||
|
||||
/datum/species/monkey/skrell
|
||||
name = "Neaera"
|
||||
short_name = "nea"
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
heat_level_2 = 360 //RaceDefault 380 Default 400
|
||||
heat_level_3 = 700 //RaceDefault 800 Default 1000
|
||||
|
||||
primitive_form = "Zhan-Khazan Farwa"
|
||||
|
||||
num_alternate_languages = 1 // Only one Extra Language
|
||||
|
||||
/datum/species/tajaran/m_sai
|
||||
@@ -48,4 +50,6 @@
|
||||
heat_level_2 = 390 //RaceDefault 380 Default 400
|
||||
heat_level_3 = 900 //RaceDefault 800 Default 1000
|
||||
|
||||
primitive_form = "M'sai Farwa"
|
||||
|
||||
secondary_langs = list(LANGUAGE_SIIK_MAAS, LANGUAGE_SIIK_TAJR, LANGUAGE_SIGN_TAJARA)
|
||||
|
||||
@@ -954,6 +954,12 @@
|
||||
gib()
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/update_canmove() // to fix lockdown issues w/ chairs
|
||||
. = ..()
|
||||
if (lockcharge)
|
||||
canmove = 0
|
||||
. = 0
|
||||
|
||||
/mob/living/silicon/robot/proc/UnlinkSelf()
|
||||
disconnect_from_ai()
|
||||
lawupdate = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/human/proc/monkeyize()
|
||||
/mob/living/carbon/human/proc/monkeyize(var/kpg=0)
|
||||
if (transforming)
|
||||
return
|
||||
for(var/obj/item/W in src)
|
||||
@@ -11,8 +11,6 @@
|
||||
stunned = 1
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
qdel(t)
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
@@ -33,14 +31,55 @@
|
||||
for(var/obj/item/W in src)
|
||||
drop_from_inventory(W)
|
||||
set_species(species.primitive_form)
|
||||
dna.SetSEState(MONKEYBLOCK,1)
|
||||
dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF)
|
||||
if(!kpg)
|
||||
dna.SetSEState(MONKEYBLOCK,1)
|
||||
|
||||
src << "<B>You are now [species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return src
|
||||
|
||||
/mob/living/carbon/human/proc/humanize(var/kpg=0) // we needed this a lot to be honest, why wasn't it made before?
|
||||
if (transforming)
|
||||
return
|
||||
for(var/obj/item/W in src)
|
||||
drop_from_inventory(W)
|
||||
regenerate_icons()
|
||||
transforming = 1
|
||||
canmove = 0
|
||||
stunned = 1
|
||||
icon = null
|
||||
invisibility = 101
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
|
||||
transforming = 0
|
||||
stunned = 0
|
||||
update_canmove()
|
||||
invisibility = initial(invisibility)
|
||||
|
||||
if(!species.greater_form) //If the creature in question has no greater form set, this is going to be messy.
|
||||
gib()
|
||||
return
|
||||
|
||||
for(var/obj/item/W in src)
|
||||
drop_from_inventory(W)
|
||||
set_species(species.greater_form)
|
||||
if(!kpg)
|
||||
dna.SetSEState(MONKEYBLOCK,0)
|
||||
|
||||
src << "<B>You are now [species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return src
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/new_player/AIize()
|
||||
spawning = 1
|
||||
return ..()
|
||||
|
||||
@@ -141,10 +141,13 @@
|
||||
if(is_broken())
|
||||
filter_effect -= 2
|
||||
|
||||
if (owner.intoxication)
|
||||
if (owner.intoxication > 0)
|
||||
//ALCOHOL_FILTRATION_RATE is defined in intoxication.dm
|
||||
owner.intoxication -= ALCOHOL_FILTRATION_RATE*filter_effect*PROCESS_ACCURACY//A weakened liver filters out alcohol more slowly
|
||||
owner.intoxication = max(owner.intoxication, 0)
|
||||
if (!owner.intoxication)
|
||||
//If intoxication has just been reduced to zero, this will handle removing any effects
|
||||
owner.handle_intoxication()
|
||||
|
||||
// Do some reagent processing.
|
||||
if(owner.chem_effects[CE_ALCOHOL_TOXIC])
|
||||
|
||||
@@ -117,9 +117,9 @@
|
||||
|
||||
if(alien == IS_DIONA)
|
||||
return //Diona can gain nutrients, but don't get drunk or suffer other effects
|
||||
|
||||
|
||||
if(isunathi(M))//unathi are poisoned by alcohol as well
|
||||
M.adjustToxLoss(2.5 * removed * (strength / 100))
|
||||
M.adjustToxLoss(1.5 * removed * (strength / 100))
|
||||
|
||||
var/quantity = (strength / 100) * removed
|
||||
M.intoxication += quantity
|
||||
@@ -158,6 +158,50 @@
|
||||
usr << "<span class='notice'>The solution dissolves the ink on the book.</span>"
|
||||
return
|
||||
|
||||
|
||||
//Butanol is a common alcohol that is fairly ineffective for humans and most other species, but highly intoxicating to unathi
|
||||
//Butanol duplicates a lot of code from ethanol. This is by design, it does not inherit.
|
||||
//Possible future todo: Add "alcohol" as a parent class to both ethanol and butanol
|
||||
/datum/reagent/butanol
|
||||
name = "Butanol" //Parent class for all alcoholic reagents.
|
||||
id = "butanol"
|
||||
description = "A fairly harmless alcohol that has intoxicating effects on certain species."
|
||||
reagent_state = LIQUID
|
||||
color = "#404030"
|
||||
ingest_met = 0.17 //Extremely slow metabolic rate means the liver will generally purge it faster than it can intoxicate you
|
||||
var/nutriment_factor = 0.5
|
||||
var/strength = 100 // This is the ABV of the drink
|
||||
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of butanol"
|
||||
glass_desc = "A fairly harmless alcohol that has intoxicating effects on certain species."
|
||||
|
||||
/datum/reagent/butanol/touch_mob(var/mob/living/L, var/amount)
|
||||
if(istype(L) && strength > 40)
|
||||
L.adjust_fire_stacks((amount / 7) * (strength / 100)) //Butanol is a bit less flammable than ethanol
|
||||
|
||||
/datum/reagent/butanol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjustToxLoss(removed)
|
||||
return
|
||||
|
||||
/datum/reagent/butanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(isvaurca(M))//Vaurca are damaged instead of getting nutrients, but they can still get drunk
|
||||
M.adjustToxLoss(removed * (strength / 100))
|
||||
else
|
||||
M.nutrition += nutriment_factor * removed
|
||||
|
||||
if(alien == IS_DIONA)
|
||||
return //Diona can gain nutrients, but don't get drunk or suffer other effects
|
||||
|
||||
if(isunathi(M))
|
||||
ingest_met = initial(ingest_met)*3 //Unathi digest butanol much faster
|
||||
|
||||
var/quantity = (strength / 100) * removed
|
||||
M.intoxication += quantity
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/reagent/hydrazine
|
||||
name = "Hydrazine"
|
||||
id = "hydrazine"
|
||||
|
||||
@@ -787,6 +787,7 @@
|
||||
glass_desc = "No relation to a certain rap artist/ actor."
|
||||
glass_center_of_mass = list("x"=15, "y"=10)
|
||||
|
||||
|
||||
/datum/reagent/drink/coffee
|
||||
name = "Coffee"
|
||||
id = "coffee"
|
||||
@@ -1262,6 +1263,18 @@
|
||||
glass_desc = "A crystal clear glass of Griffeater gin."
|
||||
glass_center_of_mass = list("x"=16, "y"=12)
|
||||
|
||||
/datum/reagent/ethanol/victorygin
|
||||
name = "Victory Gin"
|
||||
id = "victorygin"
|
||||
description = "An oily Adhomai-based gin."
|
||||
color = "#664300"
|
||||
strength = 32
|
||||
|
||||
glass_icon_state = "ginvodkaglass"
|
||||
glass_name = "glass of gin"
|
||||
glass_desc = "It has an oily smell and doesn't taste like typical gin."
|
||||
glass_center_of_mass = list("x"=16, "y"=12)
|
||||
|
||||
//Base type for alchoholic drinks containing coffee
|
||||
/datum/reagent/ethanol/coffee
|
||||
overdose = 45
|
||||
@@ -2529,3 +2542,31 @@
|
||||
glass_icon_state = "tallblackrussian"
|
||||
glass_name = "glass of Tall Black Russian"
|
||||
glass_desc = "Just like black russian but taller."
|
||||
|
||||
|
||||
// Butanol-based alcoholic drinks
|
||||
//=====================================
|
||||
//These are mainly for unathi, and have very little (but still some) effect on other species
|
||||
|
||||
/datum/reagent/butanol/xuizijuice
|
||||
name = "Xuizi Juice"
|
||||
id = "xuizijuice"
|
||||
description = "Blended flower buds from a Moghean Xuizi cactus. Has a mild butanol content and is a staple recreational beverage in Unathi culture."
|
||||
color = "#91de47"
|
||||
strength = 5
|
||||
|
||||
glass_icon_state = "xuiziglass"
|
||||
glass_name = "glass of Xuizi Juice"
|
||||
glass_desc = "The clear green liquid smells like vanilla, tastes like water. Unathi swear it has a rich taste and texture."
|
||||
|
||||
/datum/reagent/butanol/sarezhiwine
|
||||
name = "Sarezhi Wine"
|
||||
id = "sarezhiwine"
|
||||
description = "An alcoholic beverage made from lightly fermented Sareszhi berries, considered an upper class delicacy on Moghes. Significant butanol content indicates intoxicating effects on Unathi."
|
||||
color = "#bf8fbc"
|
||||
strength = 20
|
||||
|
||||
glass_icon_state = "sarezhiglass"
|
||||
glass_name = "glass of Sarezhi Wine"
|
||||
glass_desc = "It tastes like flat grape soda. Is this supposed to be alcoholic?"
|
||||
|
||||
|
||||
@@ -1560,6 +1560,8 @@
|
||||
required_reagents = list("ice" = 1, "tea" = 2)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
|
||||
/datum/chemical_reaction/icecoffee
|
||||
name = "Iced Coffee"
|
||||
id = "icecoffee"
|
||||
@@ -1582,6 +1584,14 @@
|
||||
catalysts = list("enzyme" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/datum/chemical_reaction/butanol
|
||||
name = "Butanol"
|
||||
id = "butanol"
|
||||
result = "butanol"
|
||||
required_reagents = list("cornoil" = 10, "sugar" = 10)
|
||||
catalysts = list("enzyme" = 5)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/grenadine
|
||||
name = "Grenadine Syrup"
|
||||
id = "grenadine"
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
mercury spawn_reagent = "mercury"
|
||||
radium spawn_reagent = "radium"
|
||||
ethanol spawn_reagent = "ethanol"
|
||||
butanol spawn_reagent = "butanol"
|
||||
sacid spawn_reagent = "sacid"
|
||||
tungsten spawn_reagent = "tungsten"
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/radium,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/water,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/butanol,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid,
|
||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten
|
||||
|
||||
@@ -179,6 +179,15 @@
|
||||
..()
|
||||
reagents.add_reagent("gin", 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/victorygin
|
||||
name = "Victory gin"
|
||||
desc = "Pour one out for Al'mari. His gun was on stun, bless his heart."
|
||||
icon_state = "victorygin"
|
||||
center_of_mass = list("x"=16, "y"=4)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("victorygin", 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey
|
||||
name = "Uncle Git's Special Reserve"
|
||||
desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES."
|
||||
@@ -499,3 +508,25 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sbiten", 100)
|
||||
|
||||
|
||||
// Butanol-based alcoholic drinks
|
||||
//=====================================
|
||||
//These are mainly for unathi, and have very little (but still some) effect on other species
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/xuizijuice
|
||||
name = "Xuizi Juice"
|
||||
desc = "Blended flower buds from the Xuizi cactus. It smells faintly of vanilla. Bottled by the Arizi Guild for over 200 years."
|
||||
icon_state = "xuizibottle"
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("xuizijuice", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/sarezhiwine
|
||||
name = "Sarezhi Wine"
|
||||
desc = "A premium Moghean wine made from Sareszhi berries. Bottled by the Arizi Guild for over 200 years."
|
||||
icon_state = "sarezhibottle"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sarezhiwine", 100)
|
||||
@@ -245,6 +245,16 @@
|
||||
..()
|
||||
reagents.add_reagent("beer",capacity)
|
||||
|
||||
/obj/structure/reagent_dispensers/xuizikeg
|
||||
name = "xuizi juice keg"
|
||||
desc = "A keg full of Xuizi juice, blended flower buds from the Moghean Xuizi cactus. The export stamp of the Arizi Guild is imprinted on the side."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "keg_xuizi"
|
||||
amount_per_transfer_from_this = 10
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("xuizijuice",capacity)
|
||||
|
||||
/obj/structure/reagent_dispensers/virusfood
|
||||
name = "Virus Food Dispenser"
|
||||
desc = "A dispenser of virus food."
|
||||
|
||||
@@ -57,6 +57,26 @@
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">08 April 2017</h2>
|
||||
<h3 class="author">MoondancerPony updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed protohumans.</li>
|
||||
<li class="rscadd">Tajaran subspecies now have their own subspecies of Farwa.</li>
|
||||
</ul>
|
||||
<h3 class="author">Nanako updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added butanol, an alcohol that is safe, though largely ineffective, for humans and most species, but highly intoxicating (and safe in moderation) for unathi. Pure butanol is in the chem dispenser, and can be distilled by combining sugar, corn oil and universal enzyme.</li>
|
||||
<li class="rscadd">Added two new butanol-based drinks, imported from Moghes, they can be found in the bar and rarely in the cargo warehouse.</li>
|
||||
<li class="rscadd">Added a new tajaran spirit, can be found in the bar fridge and sometimes in the warehouse.</li>
|
||||
<li class="tweak">Kegs of beer or xuizi juice can now be ordered at cargo.</li>
|
||||
<li class="bugfix">Fixed several issues with alcohol effects getting stuck and not wearing off when you sober up.</li>
|
||||
<li class="tweak">Reduced the rate at which the liver filters alcohol, making it slightly easier to get drunk and take longer to sober up. Drink responsibly!</li>
|
||||
</ul>
|
||||
<h3 class="author">Printer16 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Vampires now know when they finished enthralling someone.</li>
|
||||
<li class="bugfix">The Auxilliary Forensics Tools crate now spawns with a UV light.</li>
|
||||
<li class="bugfix">A Malf AI's advanced encryption hack has been given a lot more space to work with.</li>
|
||||
</ul>
|
||||
<h3 class="author">inselc updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Drones are now able to decompile burnt matches.</li>
|
||||
|
||||
@@ -4065,6 +4065,28 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- bugfix: Fixed some issues where creatures being sacrificed to pylons could bug
|
||||
out.
|
||||
2017-04-08:
|
||||
MoondancerPony:
|
||||
- bugfix: Fixed protohumans.
|
||||
- rscadd: Tajaran subspecies now have their own subspecies of Farwa.
|
||||
Nanako:
|
||||
- rscadd: Added butanol, an alcohol that is safe, though largely ineffective, for
|
||||
humans and most species, but highly intoxicating (and safe in moderation) for
|
||||
unathi. Pure butanol is in the chem dispenser, and can be distilled by combining
|
||||
sugar, corn oil and universal enzyme.
|
||||
- rscadd: Added two new butanol-based drinks, imported from Moghes, they can be
|
||||
found in the bar and rarely in the cargo warehouse.
|
||||
- rscadd: Added a new tajaran spirit, can be found in the bar fridge and sometimes
|
||||
in the warehouse.
|
||||
- tweak: Kegs of beer or xuizi juice can now be ordered at cargo.
|
||||
- bugfix: Fixed several issues with alcohol effects getting stuck and not wearing
|
||||
off when you sober up.
|
||||
- tweak: Reduced the rate at which the liver filters alcohol, making it slightly
|
||||
easier to get drunk and take longer to sober up. Drink responsibly!
|
||||
Printer16:
|
||||
- bugfix: Vampires now know when they finished enthralling someone.
|
||||
- bugfix: The Auxilliary Forensics Tools crate now spawns with a UV light.
|
||||
- bugfix: A Malf AI's advanced encryption hack has been given a lot more space to
|
||||
work with.
|
||||
inselc:
|
||||
- bugfix: Drones are now able to decompile burnt matches.
|
||||
- bugfix: Ghosts will no longer trigger infrared emitters.
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 80 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
+1
-1
@@ -4941,7 +4941,7 @@
|
||||
"bRa" = (/obj/item/weapon/aicard,/obj/item/weapon/aiModule/reset,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/storage/tech)
|
||||
"bRb" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tech)
|
||||
"bRc" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/security/mining,/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/storage/tech)
|
||||
"bRd" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/arcade,/obj/item/weapon/circuitboard/message_monitor{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech)
|
||||
"bRd" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/message_monitor{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech)
|
||||
"bRe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/rnd/mixing)
|
||||
"bRf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
|
||||
"bRg" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access = list(7)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
|
||||
|
||||
Reference in New Issue
Block a user