mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 12:37:26 +01:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -209,10 +209,10 @@
|
||||
external_pressure_bound = between(0, text2num(signal.data["set_external_pressure"]), ONE_ATMOSPHERE*50)
|
||||
|
||||
if("adjust_internal_pressure" in signal.data)
|
||||
internal_pressure_bound = between(0, text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50)
|
||||
internal_pressure_bound = between(0, internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50)
|
||||
|
||||
if("adjust_external_pressure" in signal.data)
|
||||
external_pressure_bound = between(0, text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50)
|
||||
external_pressure_bound = between(0, external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50)
|
||||
|
||||
if("init" in signal.data)
|
||||
name = signal.data["init"]
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
school = "transmutation"
|
||||
charge_max = 600
|
||||
clothes_req = 0
|
||||
clothes_req = 1
|
||||
invocation = "GIN'YU CAPAN"
|
||||
invocation_type = "whisper"
|
||||
range = 1
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
canmove = 0
|
||||
blinded = 0
|
||||
anchored = 1 // don't get pushed around
|
||||
universal_speak = 1 //Ghosts are multi-lingual!
|
||||
var/mob/corpse = null // observer mode
|
||||
var/datum/hud/living/carbon/hud = null // hud
|
||||
@@ -558,8 +558,8 @@
|
||||
name = "medical pack"
|
||||
singular_name = "medical pack"
|
||||
icon = 'items.dmi'
|
||||
amount = 10 //To compensate for wounds
|
||||
max_amount = 10
|
||||
amount = 5 //To compensate for wounds
|
||||
max_amount = 5
|
||||
w_class = 1
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
@@ -571,7 +571,7 @@
|
||||
singular_name = "roll of gauze"
|
||||
desc = "A roll of gauze for sealing up wounds."
|
||||
icon_state = "brutepack"
|
||||
heal_brute = 1
|
||||
heal_brute = 7
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/tajaran
|
||||
@@ -580,7 +580,7 @@
|
||||
desc = "A soft leaf that is rubbed on bruises."
|
||||
icon = 'harvest.dmi'
|
||||
icon_state = "cabbage"
|
||||
heal_brute = 1
|
||||
heal_brute = 7
|
||||
|
||||
/obj/item/stack/medical/ointment
|
||||
name = "ointment"
|
||||
@@ -588,7 +588,7 @@
|
||||
gender = PLURAL
|
||||
singular_name = "ointment"
|
||||
icon_state = "ointment"
|
||||
heal_burn = 1
|
||||
heal_burn = 7
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/stack/medical/ointment/tajaran
|
||||
@@ -597,27 +597,23 @@
|
||||
desc = "A cold leaf that is rubbed on burns."
|
||||
icon = 'harvest.dmi'
|
||||
icon_state = "ambrosiavulgaris"
|
||||
heal_burn = 1
|
||||
heal_burn = 7
|
||||
|
||||
/obj/item/stack/medical/advanced/bruise_pack
|
||||
name = "advanced trauma kit"
|
||||
singular_name = "advanced trauma kit"
|
||||
desc = "An advanced trauma kit for severe injuries."
|
||||
icon_state = "traumakit"
|
||||
heal_brute = 1
|
||||
heal_brute = 12
|
||||
origin_tech = "biotech=1"
|
||||
amount = 10
|
||||
max_amount = 10
|
||||
|
||||
/obj/item/stack/medical/advanced/ointment
|
||||
name = "advanced burn kit"
|
||||
singular_name = "advanced burn kit"
|
||||
desc = "An advanced treatment kit for severe burns."
|
||||
icon_state = "burnkit"
|
||||
heal_burn = 1
|
||||
heal_burn = 12
|
||||
origin_tech = "biotech=1"
|
||||
amount = 10
|
||||
max_amount = 10
|
||||
|
||||
/obj/item/stack/medical/splint
|
||||
name = "medical splint"
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
if ("7")
|
||||
//feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(usr)
|
||||
src.temp = "This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process."
|
||||
src.temp = "This spell allows the user to switch bodies with a target, and requires full wizard garb. Careful to not lose your memory in the process."
|
||||
if ("8")
|
||||
//feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(usr)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
flag = BOTANIST
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
total_positions = 3
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
flag = ATMOSTECH
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
total_positions = 3
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
@@ -106,7 +106,7 @@
|
||||
flag = ROBOTICIST
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
total_positions = 2
|
||||
spawn_positions = 1
|
||||
supervisors = "the chief engineer and research director"
|
||||
selection_color = "#fff5cc"
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
flag = CHEMIST
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
flag = GENETICIST
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer and research director"
|
||||
selection_color = "#ffeef0"
|
||||
|
||||
|
||||
@@ -209,6 +209,9 @@
|
||||
/obj/machinery/body_scanconsole/attack_hand(user as mob)
|
||||
if(..())
|
||||
return
|
||||
if(!ishuman(connected.occupant))
|
||||
user << "\red This device can only scan compatible lifeforms."
|
||||
return
|
||||
var/dat
|
||||
if (src.delete && src.temphtml) //Window in buffer but its just simple message, so nothing
|
||||
src.delete = src.delete
|
||||
@@ -216,7 +219,7 @@
|
||||
dat = text("[]<BR><BR><A href='?src=\ref[];clear=1'>Main Menu</A>", src.temphtml, src)
|
||||
else
|
||||
if (src.connected) //Is something connected?
|
||||
var/mob/living/carbon/occupant = src.connected.occupant
|
||||
var/mob/living/carbon/human/occupant = src.connected.occupant
|
||||
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
|
||||
if (istype(occupant)) //is there REALLY someone in there?
|
||||
var/t1
|
||||
@@ -231,34 +234,68 @@
|
||||
dat += "<font color='red'>This device can only scan human occupants.</FONT>"
|
||||
else
|
||||
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
||||
dat += text("<font color='green'>Radiation Level: []%</FONT><BR><BR>", occupant.radiation)
|
||||
dat += "<table border='1'>"
|
||||
|
||||
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
|
||||
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
|
||||
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())
|
||||
dat += text("[]\t-Burn Severity %: []</FONT><BR><BR>", (occupant.getFireLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getFireLoss())
|
||||
|
||||
dat += text("[]\tRadiation Level %: []</FONT><BR>", (occupant.radiation < 10 ?"<font color='blue'>" : "<font color='red'>"), occupant.radiation)
|
||||
dat += text("[]\tGenetic Tissue Damage %: []</FONT><BR>", (occupant.getCloneLoss() < 1 ?"<font color='blue'>" : "<font color='red'>"), occupant.getCloneLoss())
|
||||
dat += text("[]\tApprox. Brain Damage %: []</FONT><BR>", (occupant.getBrainLoss() < 1 ?"<font color='blue'>" : "<font color='red'>"), occupant.getBrainLoss())
|
||||
dat += text("Paralysis Summary %: [] ([] seconds left!)<BR>", occupant.paralysis, round(occupant.paralysis / 4))
|
||||
dat += text("Body Temperature: [occupant.bodytemperature-T0C]°C ([occupant.bodytemperature*1.8-459.67]°F)<BR><HR>")
|
||||
|
||||
if(occupant.vessel)
|
||||
var/blood_volume = round(occupant.vessel.get_reagent_amount("blood"))
|
||||
var/blood_percent = blood_volume / 560
|
||||
blood_percent *= 100
|
||||
dat += text("[]\tBlood Level %: [] ([blood_volume] units)</FONT><BR>", (blood_volume > 448 ?"<font color='blue'>" : "<font color='red'>"), blood_volume)
|
||||
if(occupant.reagents)
|
||||
dat += text("Inaprovaline units: [] units<BR>", occupant.reagents.get_reagent_amount("inaprovaline"))
|
||||
dat += text("Soporific (Sleep Toxin): [] units<BR>", occupant.reagents.get_reagent_amount("stoxin"))
|
||||
dat += text("[]\tDermaline: [] units</FONT><BR>", (occupant.reagents.get_reagent_amount("dermaline") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("dermaline"))
|
||||
dat += text("[]\tBicaridine: [] units<BR>", (occupant.reagents.get_reagent_amount("bicaridine") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("bicaridine"))
|
||||
dat += text("[]\tDexalin: [] units<BR>", (occupant.reagents.get_reagent_amount("dexalin") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("dexalin"))
|
||||
|
||||
for(var/datum/disease/D in occupant.viruses)
|
||||
if(!D.hidden[SCANNER])
|
||||
dat += text("<font color='red'><B>Warning: [D.form] Detected</B>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]</FONT><BR>")
|
||||
|
||||
if (occupant.virus2 || occupant.reagents.reagent_list.len > 0)
|
||||
dat += text("<font color='red'>Warning: Foreign substances detected in bloodstream.</FONT>")
|
||||
|
||||
dat += "<HR><table border='1'>"
|
||||
dat += "<tr>"
|
||||
dat += "<th>Organ</th>"
|
||||
dat += "<th>Burn Damage</th>"
|
||||
dat += "<th>Brute Damage</th>"
|
||||
dat += "<th>Other Wounds</th>"
|
||||
dat += "</tr>"
|
||||
for(var/name in occupant:organs)
|
||||
var/datum/organ/external/e = occupant:organs[name]
|
||||
|
||||
for(var/name in occupant.organs)
|
||||
var/datum/organ/external/e = occupant.organs[name]
|
||||
dat += "<tr>"
|
||||
var/AN = ""
|
||||
var/open = ""
|
||||
var/infected = ""
|
||||
var/imp = ""
|
||||
var/bled = ""
|
||||
var/splint = ""
|
||||
if(e.status & SPLINTED)
|
||||
splint = "Splinted:"
|
||||
if(e.status & BLEEDING)
|
||||
bled = "Bleeding:"
|
||||
if(e.status & BROKEN)
|
||||
AN = "[e.broken_description]:"
|
||||
if(e.open)
|
||||
open = "OPEN:"
|
||||
open = "Open:"
|
||||
if(e.implant && e.implant.len)
|
||||
imp = "IMPLANT:"
|
||||
imp = "Implanted:"
|
||||
if(!AN && !open && !infected & !imp)
|
||||
AN = "None"
|
||||
if(!e.status & DESTROYED)
|
||||
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[bled][AN][open][infected][imp]</td>"
|
||||
if(!(e.status & DESTROYED))
|
||||
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[bled][AN][splint][open][infected][imp]</td>"
|
||||
else
|
||||
dat += "<td>[e.display_name]</td><td>-</td><td>-</td><td>Not Found</td>"
|
||||
dat += "</tr>"
|
||||
@@ -268,5 +305,5 @@
|
||||
else
|
||||
dat = "<font color='red'> Error: No Body Scanner connected.</font>"
|
||||
dat += text("<BR><BR><A href='?src=\ref[];mach_close=scanconsole'>Close</A>", user)
|
||||
user << browse(dat, "window=scanconsole;size=500x500")
|
||||
user << browse(dat, "window=scanconsole;size=430x600")
|
||||
return
|
||||
@@ -185,6 +185,8 @@
|
||||
new/obj/item/nutrient/rh(src.loc)
|
||||
new/obj/item/nutrient/rh(src.loc)
|
||||
new/obj/item/nutrient/rh(src.loc)
|
||||
if("wallet")
|
||||
new/obj/item/weapon/storage/wallet(src.loc)
|
||||
if("gloves")
|
||||
new/obj/item/clothing/gloves/botanic_leather(src.loc)
|
||||
if("tbelt")
|
||||
|
||||
@@ -128,7 +128,10 @@
|
||||
spawn(30)
|
||||
src.eject_wait = 0
|
||||
|
||||
src.occupant = new /mob/living/carbon/human(src)
|
||||
if(istajaran(occupant))
|
||||
src.occupant = new /mob/living/carbon/human/tajaran(src)
|
||||
else
|
||||
src.occupant = new /mob/living/carbon/human(src)
|
||||
|
||||
occupant:UI = UI // set interface preference
|
||||
|
||||
|
||||
@@ -474,7 +474,7 @@
|
||||
temp = "Updating local R&D database..."
|
||||
src.updateUsrDialog()
|
||||
sleep(30) //only sleep if called by user
|
||||
for(var/obj/machinery/computer/rdconsole/RDC in get_area(src))
|
||||
for(var/obj/machinery/computer/rdconsole/RDC in oview(7)) //get_area(src)) is broken due to ULTRALIIIIIGHT
|
||||
if(!RDC.sync)
|
||||
continue
|
||||
for(var/datum/tech/T in RDC.files.known_tech)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "mecha part"
|
||||
icon = 'mech_construct.dmi'
|
||||
icon_state = "blank"
|
||||
w_class = 20
|
||||
w_class = 5 //I'm pretty sure that's silly.
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
origin_tech = "programming=2;materials=2"
|
||||
var/construction_time = 100
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
return 0
|
||||
var/mob/M = loc
|
||||
|
||||
if(!M.canmove)
|
||||
if(!M.canmove && (!M.buckled && M.handcuffed))
|
||||
return 0
|
||||
|
||||
if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) ) )
|
||||
|
||||
@@ -114,14 +114,14 @@ MASS SPECTROMETER
|
||||
else if (M.getBrainLoss() >= 10)
|
||||
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
|
||||
if (M.virus2 || M.reagents.reagent_list.len > 0)
|
||||
user.show_message(text("\red Unknown substance detected in blood."), 1)
|
||||
user.show_message(text("\red Foreign substances detected in bloodstream."), 1)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
var/limb = e.getDisplayName()
|
||||
if(e.status & BROKEN)
|
||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.status & SPLINTED))
|
||||
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!(e.status & SPLINTED)))
|
||||
user << "\red Unsecured fracture in subject [limb]. Splinting recommended for transport."
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
if (recording)
|
||||
var/ending = copytext(msg, length(msg))
|
||||
src.timestamp+= src.timerecorded
|
||||
if (issilicon(M))
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"hh:mm:ss")]\] [M.name] states, \"[msg]\""
|
||||
return
|
||||
if (M.stuttering)
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"hh:mm:ss")]\] [M.name] stammers, \"[msg]\""
|
||||
return
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
var/direction = get_dir(src,target)
|
||||
|
||||
if(usr.buckled && isobj(usr.buckled) && !usr.buckled.anchored )
|
||||
if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/office) && !usr.buckled.anchored ) //Making only office chairs fire-extinguishable. Because NO FUN ALLOWED
|
||||
spawn(0)
|
||||
var/obj/B = usr.buckled
|
||||
var/movementdirection = turn(direction,180)
|
||||
|
||||
@@ -7,10 +7,10 @@ MEDICAL
|
||||
|
||||
|
||||
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
var/heal_cap = 0
|
||||
var/heal_cap = 50
|
||||
|
||||
if(istype(src, /obj/item/stack/medical/advanced))
|
||||
heal_cap = -50
|
||||
heal_cap = 0
|
||||
|
||||
if (M.stat == 2)
|
||||
var/t_him = "it"
|
||||
@@ -51,7 +51,7 @@ MEDICAL
|
||||
if(!((affecting.name == "l_arm") || (affecting.name == "r_arm") || (affecting.name == "l_leg") || (affecting.name == "r_leg")))
|
||||
user << "\red You can't apply a splint there!"
|
||||
return
|
||||
if(!affecting.status & BROKEN)
|
||||
if(!(affecting.status & BROKEN))
|
||||
user << "\red [M]'s [limb] isn't broken!"
|
||||
return
|
||||
if(affecting.status & SPLINTED)
|
||||
@@ -87,25 +87,26 @@ MEDICAL
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
if (user)
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
|
||||
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
else
|
||||
var/t_his = "its"
|
||||
if (user.gender == MALE)
|
||||
t_his = "his"
|
||||
else if (user.gender == FEMALE)
|
||||
t_his = "her"
|
||||
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
|
||||
"\red You bandage your [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
use(1)
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
if (user)
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
|
||||
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
else
|
||||
var/t_his = "its"
|
||||
if (user.gender == MALE)
|
||||
t_his = "his"
|
||||
else if (user.gender == FEMALE)
|
||||
t_his = "her"
|
||||
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
|
||||
"\red You bandage your [affecting.display_name] with \the [src].",\
|
||||
"You hear gauze being ripped.")
|
||||
use(1)
|
||||
else
|
||||
user << "Nothing to patch up!"
|
||||
H.UpdateDamage()
|
||||
|
||||
M.updatehealth()
|
||||
else
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
if(user.a_intent != "help")
|
||||
if(user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
H.apply_effect(5, WEAKEN, 0)
|
||||
H.visible_message("<span class='danger'>[M] has been beaten with the [src] by [user]!</span>")
|
||||
@@ -77,7 +77,7 @@
|
||||
H.lastattacker = user
|
||||
charges--
|
||||
H.visible_message("<span class='danger'>[M] has been stunned with the [src] by [user]!</span>")
|
||||
playsound(src.loc, "sparks", 75, 1, -1)
|
||||
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
|
||||
@@ -1242,7 +1242,7 @@ CIRCULAR SAW
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/datum/organ/external/affecting = M:get_organ("head")
|
||||
affecting.take_damage(7)
|
||||
affecting.status |= OPEN
|
||||
affecting.open = 1
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
|
||||
@@ -1454,7 +1454,8 @@ CIRCULAR SAW
|
||||
user << "\red You mess up!"
|
||||
S.take_damage(15)
|
||||
|
||||
S.status |= OPEN|BLEEDING
|
||||
S.status |= BLEEDING
|
||||
S.open = 1
|
||||
if(S.display_name == "chest")
|
||||
H:embryo_op_stage = 1.0
|
||||
if(S.display_name == "groin")
|
||||
|
||||
@@ -305,6 +305,7 @@ This method wont take into account storage items developed in the future and doe
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob)
|
||||
// TODO: Link this up with the supply depot if possible
|
||||
if(..())
|
||||
return
|
||||
user.machine = src
|
||||
@@ -433,6 +434,7 @@ This method wont take into account storage items developed in the future and doe
|
||||
return
|
||||
|
||||
/obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob)
|
||||
// TODO: Link this up with the supply depot if possible
|
||||
if(!src.allowed(user))
|
||||
user << "\red Access Denied."
|
||||
return
|
||||
@@ -688,3 +690,254 @@ This method wont take into account storage items developed in the future and doe
|
||||
|
||||
from.move_contents_to(dest)
|
||||
supply_shuttle_at_station = !supply_shuttle_at_station
|
||||
|
||||
/*
|
||||
* Supply depot control console
|
||||
*/
|
||||
/obj/machinery/supply_depot_console
|
||||
name = "Supply Depot Console"
|
||||
icon = 'terminals.dmi'
|
||||
icon_state = "production_console"
|
||||
density = 0
|
||||
anchored = 1
|
||||
var/id = ""
|
||||
var/obj/machinery/supply_depot/machine = null
|
||||
var/machinedir = SOUTHWEST
|
||||
|
||||
/obj/machinery/supply_depot_console/New()
|
||||
..()
|
||||
spawn(7)
|
||||
src.machine = locate(/obj/machinery/supply_depot, get_step(src, machinedir))
|
||||
if (machine)
|
||||
machine.CONSOLE = src
|
||||
else
|
||||
del(src)
|
||||
|
||||
/obj/machinery/supply_depot_console/attack_hand(user as mob)
|
||||
// Not ID-locked for now. Maybe in a late update.
|
||||
|
||||
var/dat
|
||||
|
||||
dat += text("<h3>Raw Materials Storage</h3>")
|
||||
|
||||
var/canrelease = 0
|
||||
if (machine.totalmaterial > 0)
|
||||
// Loop through the items in our inventory
|
||||
for (var/material in machine.inventory)
|
||||
var/temp = machine.inventory[material]
|
||||
if (temp["amt"] > 0)
|
||||
|
||||
// Can we press the "release" button?
|
||||
if (temp["rel"] > 0)
|
||||
canrelease = 1
|
||||
|
||||
// The things I do to make it look good...
|
||||
dat += text("<span style='text-transform:capitalize;'>[(temp["name"]) ? temp["name"] : material]:</span> <a href='?src=\ref[src];setrelease=[material]'>[temp["rel"]]</a> ([temp["amt"]] remaining)<br>")
|
||||
else
|
||||
dat += "No materials loaded."
|
||||
|
||||
dat += text("<br>Storage space remaining: [(machine.MAX_MATERIAL - machine.totalmaterial < machine.MAX_MATERIAL/10) ? "<font color='#f00'><b>" : ""][machine.MAX_MATERIAL - machine.totalmaterial][(machine.MAX_MATERIAL - machine.totalmaterial < machine.MAX_MATERIAL/10) ? "</b></font>" : ""]<br>") // Warn the operator when we're at 90% capacity
|
||||
dat += text("Print manifest: <a href='?src=\ref[src];toggleprint=1>'>[machine.printmanifest ? "Yes" : "No"]</a><br><br>")
|
||||
|
||||
dat += text("<a href='?src=\ref[src];load=1'>Load material</a><br>")
|
||||
if (canrelease)
|
||||
dat += text("<a href='?src=\ref[src];release=1'>Release materials</a><br>")
|
||||
|
||||
user << browse("[dat]", "window=console_stacking_machine")
|
||||
|
||||
/obj/machinery/supply_depot_console/Topic(href, href_list)
|
||||
if (..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
if (href_list["setrelease"])
|
||||
if (machine.inventory[href_list["setrelease"]]["amt"] > 0)
|
||||
var/release = text2num(sanitize(input("Amount of [lowertext(machine.inventory[href_list["setrelease"]]["name"])] to release (max 500):", "Amount to release", num2text(machine.inventory[href_list["setrelease"]]["rel"]))))
|
||||
|
||||
// For sanity's sake, we don't drop more than 10 stacks at a time.
|
||||
if (release > 500)
|
||||
release = 500
|
||||
else if (release < 0)
|
||||
release = 0
|
||||
|
||||
machine.inventory[href_list["setrelease"]]["rel"] = release
|
||||
|
||||
else if (href_list["toggleprint"])
|
||||
|
||||
machine.printmanifest = !machine.printmanifest
|
||||
|
||||
else if (href_list["load"])
|
||||
|
||||
machine.load_materials(machine.output.loc)
|
||||
|
||||
else if (href_list["release"])
|
||||
|
||||
// Do it.
|
||||
machine.release_materials()
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/*
|
||||
* Supply depot machine
|
||||
*/
|
||||
/obj/machinery/supply_depot
|
||||
name = "supply depot"
|
||||
icon_state = "supply_depot"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/id = ""
|
||||
var/machine = null
|
||||
var/obj/machinery/mineral/input = null
|
||||
var/obj/machinery/mineral/output = null
|
||||
var/obj/machinery/supply_depot_console/CONSOLE
|
||||
|
||||
// TODO: This will eventually incorporate researchable material bins to expand the depot's capacity.
|
||||
// Until then, let's just give it a reasonably large starting capacity.
|
||||
// This will probably go down to 2,500 as soon as it can be upgraded to 5k, 7.5k or 10k.
|
||||
// Or infinite, if research feels like giving cargo a bag of holding, the miserly fucks.
|
||||
|
||||
var/MAX_MATERIAL = 5000 // The upper limit of -all- materials in the machine (default 100 stacks of 50)
|
||||
var/totalmaterial = 0 // The total amount it's holding
|
||||
var/printmanifest = 1 // Print a manifest when releasing material?
|
||||
var/inventory[0] // See below.
|
||||
|
||||
/obj/machinery/supply_depot/New()
|
||||
..()
|
||||
|
||||
// name is a display name if the item name isn't suitable
|
||||
// amt is how much is in the machine
|
||||
// rel is how much we're releasing in this shipment
|
||||
inventory["metal"] = list(name = "iron", "amt" = 0, "rel" = 50)
|
||||
inventory["plasteel"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["glass"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["rglass"] = list("name" = "reinforced glass", "amt" = 0, "rel" = 50)
|
||||
inventory["plasma"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["gold"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["silver"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["uranium"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["diamond"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["clown"] = list("name" = "bananium", "amt" = 0, "rel" = 50) // HONK
|
||||
inventory["adamantine"] = list("amt" = 0, "rel" = 50)
|
||||
inventory["mythril"] = list("amt" = 0, "rel" = 50)
|
||||
|
||||
spawn(5)
|
||||
// Find input
|
||||
for (var/dir in cardinal)
|
||||
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
|
||||
if (src.input) break
|
||||
// Find output
|
||||
for (var/dir in cardinal)
|
||||
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
|
||||
if (src.output) break
|
||||
// process_objects.Add(src)
|
||||
return
|
||||
return
|
||||
|
||||
// Suck up all processable matter from a given location, moving anything we can't
|
||||
// process to an arbitrary location.
|
||||
/obj/machinery/supply_depot/proc/load_materials(target, passthrough)
|
||||
// No overloading.
|
||||
if (totalmaterial >= MAX_MATERIAL)
|
||||
return
|
||||
|
||||
if (target)
|
||||
var/obj/item/stack/sheet/O
|
||||
while (locate(/obj/item/stack/sheet, target))
|
||||
O = locate(/obj/item/stack/sheet, target)
|
||||
var/found = 0
|
||||
|
||||
// Can we fit any more in?
|
||||
if (totalmaterial + O.amount < MAX_MATERIAL)
|
||||
for (var/material in inventory)
|
||||
if (istype(O, text2path("/obj/item/stack/sheet/[material]")))
|
||||
inventory[material]["amt"] += O.amount
|
||||
totalmaterial += O.amount
|
||||
del(O)
|
||||
found = 1
|
||||
break
|
||||
else
|
||||
// Nope. Max us out and edit the material's amount. We're not deleting it.
|
||||
for (var/material in inventory)
|
||||
if (istype(O, text2path("/obj/item/stack/sheet/[material]")))
|
||||
inventory[material]["amt"] += (MAX_MATERIAL - totalmaterial)
|
||||
totalmaterial = MAX_MATERIAL
|
||||
O.amount = MAX_MATERIAL - totalmaterial
|
||||
found = 1
|
||||
break
|
||||
|
||||
if (found)
|
||||
continue
|
||||
else
|
||||
// Anything we don't want gets moved through
|
||||
if (passthrough)
|
||||
O.loc = passthrough
|
||||
|
||||
// Release a given batch of materials
|
||||
/obj/machinery/supply_depot/proc/release_materials()
|
||||
|
||||
// Can we actually release anything in the first place?
|
||||
var/canrelease = 0
|
||||
for (var/material in inventory)
|
||||
if (inventory[material]["amt"] > 0 && inventory[material]["rel"] > 0)
|
||||
canrelease = 1
|
||||
if (!canrelease) return
|
||||
|
||||
// Get us a cargo manifest if applicable...
|
||||
if (ordernum)
|
||||
ordernum++
|
||||
else
|
||||
ordernum = rand(500,5000)
|
||||
|
||||
var/obj/item/weapon/paper/manifest/slip
|
||||
if (printmanifest)
|
||||
slip = new /obj/item/weapon/paper/manifest(output.loc)
|
||||
slip.info = ""
|
||||
slip.info +="<h3>[command_name()] Internal Shipping Manifest</h3><hr><br>"
|
||||
slip.info +="Order #: [ordernum]<br>"
|
||||
slip.info +="CONTENTS:<br><ul>"
|
||||
|
||||
// Now actually spawn the items we're releasing and add them to the manifest
|
||||
for (var/material in inventory)
|
||||
var/temp = inventory[material]
|
||||
if (temp["amt"] <= 0 || temp["rel"] <= 0)
|
||||
continue
|
||||
|
||||
// If we're trying to draw more than we have, correct it.
|
||||
if (temp["rel"] > temp["amt"])
|
||||
temp["rel"] = temp["amt"]
|
||||
|
||||
// Subtract material before we go any further
|
||||
inventory[material]["amt"] -= temp["rel"]
|
||||
totalmaterial -= temp["rel"]
|
||||
|
||||
var/path = text2path("/obj/item/stack/sheet/[material]")
|
||||
if (path)
|
||||
// Need this outside of the ifs so we can get the name afterward.
|
||||
var obj/item/stack/sheet/G
|
||||
|
||||
// Get our full stacks
|
||||
for (var/i = 1, i <= round(temp["rel"] / 50), i++)
|
||||
G = new path
|
||||
G.amount = 50
|
||||
G.loc = output.loc
|
||||
|
||||
// Get our remainder
|
||||
if (temp["rel"] % 50)
|
||||
G = new path
|
||||
G.amount = temp["rel"] % 50
|
||||
G.loc = output.loc
|
||||
|
||||
// Try to get the "official" object name if possible.
|
||||
if (printmanifest)
|
||||
slip.info += "<li>[temp["rel"]] units [(G.name) ? G.name : (temp["name"]) ? temp["name"] : material]</li>"
|
||||
|
||||
// Close up the cargo manifest
|
||||
if (printmanifest)
|
||||
slip.info += "</ul><br>CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
|
||||
slip.loc = output.loc
|
||||
|
||||
/obj/machinery/supply_depot/process()
|
||||
if (src.input && src.output)
|
||||
load_materials(input.loc, output.loc)
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
s["enter"] = enter_allowed
|
||||
s["vote"] = config.allow_vote_mode
|
||||
s["ai"] = config.allow_ai
|
||||
s["host"] = host ? host : null
|
||||
s["host"] = config.hostedby
|
||||
s["players"] = list()
|
||||
s["admins"] = 0
|
||||
var/n = 0
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
user << "You are wearing that."
|
||||
return
|
||||
|
||||
if(O in user) //TEMPORARY FIX. It seems trying to put items that are in your hand in the bags breaks them horribly. - Erthilo
|
||||
user << "You'll need to put the evidence down to properly bag it."
|
||||
return
|
||||
|
||||
if(contents.len)
|
||||
user << "The [src] already has something inside it."
|
||||
return ..()
|
||||
|
||||
@@ -1448,7 +1448,7 @@ var/global/BSACooldown = 0
|
||||
special_role_description = "Role: <i>Mind datum missing</i> Antagonist: <i>Mind datum missing</i>; Has been rev: <i>Mind datum missing</i>;"
|
||||
|
||||
//Health
|
||||
health_description = "Oxy: [M.oxyloss] - Tox: [M.toxloss] - Fire: [M.fireloss] - Brute: [M.bruteloss] - Clone: [M.cloneloss] - Brain: [M.brainloss]"
|
||||
health_description = "Oxy: [M.getOxyLoss()] - Tox: [M.getToxLoss()] - Fire: [M:getFireLoss()] - Brute: [M:getBruteLoss()] - Clone: [M.getCloneLoss()] - Brain: [M.getBrainLoss()]"
|
||||
|
||||
src.owner << "<b>Info about [M.name]:</b> "
|
||||
src.owner << "Mob type = [M.type]; Damage = [health_description]"
|
||||
|
||||
@@ -878,8 +878,9 @@
|
||||
verbs -= /client/proc/hide_most_verbs
|
||||
verbs += /client/proc/show_verbs
|
||||
|
||||
verbs += /client/proc/deadchat //toggles deadchat
|
||||
verbs += /obj/admins/proc/toggleooc //toggle ooc
|
||||
if(holder.level > 0)
|
||||
verbs += /client/proc/deadchat //toggles deadchat
|
||||
verbs += /obj/admins/proc/toggleooc //toggle ooc
|
||||
verbs += /client/proc/cmd_admin_say//asay
|
||||
verbs += /client/proc/cmd_mod_say//asay
|
||||
// feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/fluff/listermed
|
||||
name = "anti-depressant pill"
|
||||
desc = "Used to deal with depression."
|
||||
@@ -167,6 +168,18 @@
|
||||
reagents.add_reagent("stoxin", 5)
|
||||
reagents.add_reagent("sugar", 10)
|
||||
reagents.add_reagent("ethanol", 5)
|
||||
|
||||
/obj/item/clothing/mask/fluff/electriccig //CubeJackal: Barry Sharke
|
||||
name = "Electronic cigarette"
|
||||
desc = "An electronic cigarette. Most of the relief of a real cigarette with none of the side effects. Often used by smokers who are trying to quit the habit."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "cigon"
|
||||
throw_speed = 0.5
|
||||
item_state = "ciglit"
|
||||
w_class = 1
|
||||
body_parts_covered = null
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//////////////////////////////////
|
||||
//////////// Clothing ////////////
|
||||
//////////////////////////////////
|
||||
@@ -261,6 +274,12 @@
|
||||
item_state = "leatherjack"
|
||||
color = "leatherjack"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/fluff/burnt //Jamini: Edwin Atweeke
|
||||
name = "burnt labcoat"
|
||||
desc = "This lab coat has clearly seen better, less burnt, days."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "labcoat_burnt_open"
|
||||
|
||||
//////////// Uniforms ////////////
|
||||
|
||||
/obj/item/clothing/under/fluff/jumpsuitdown //searif: Yuki Matsuda
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
var/t_is = "is"
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is "
|
||||
if(src.icon)
|
||||
msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
||||
|
||||
switch(get_visible_gender())
|
||||
if(MALE)
|
||||
@@ -292,7 +290,7 @@
|
||||
if(21 to INFINITY)
|
||||
wound_flavor_text["[temp.display_name]"] += pick(" a lot of burns"," severe melting")
|
||||
wound_flavor_text["[temp.display_name]"] += "!</span>\n"
|
||||
else if(temp.wound_descs)
|
||||
else if(temp.wound_descs.len)
|
||||
var/list/wound_descriptors = list()
|
||||
for(var/time in temp.wound_descs)
|
||||
for(var/wound in temp.wound_descs[time])
|
||||
|
||||
@@ -947,7 +947,7 @@
|
||||
emote("scream")
|
||||
else if(E.name == "l_leg" || E.name == "l_foot" \
|
||||
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
|
||||
if(!E.status & SPLINTED)
|
||||
if(!(E.status & SPLINTED))
|
||||
leg_tally-- // let it fail even if just foot&leg
|
||||
// can't stand
|
||||
if(leg_tally == 0 && !paralysis && !(lying || resting))
|
||||
@@ -1048,11 +1048,11 @@
|
||||
stat = 1
|
||||
|
||||
if (sleeping > 0)
|
||||
if(stat == 0)
|
||||
// BUG: this doesn't seem to happen ever.. probably when you hit sleep willingly,
|
||||
// it automatically adjusts your stat without calling this proc
|
||||
if(stat == 0 && !resting)
|
||||
// BUG: this doesn't seem to happen ever.. probably when you hit sleep willingly,
|
||||
// it automatically adjusts your stat without calling this proc
|
||||
|
||||
// show them a message so they know what's going on
|
||||
// show them a message so they know what's going on
|
||||
src << "\blue You feel very drowsy.. Your eyelids become heavy..."
|
||||
|
||||
handle_dreams()
|
||||
|
||||
@@ -450,7 +450,7 @@
|
||||
emote("scream")
|
||||
else if(E.name == "l_leg" || E.name == "l_foot" \
|
||||
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
|
||||
if(!E.status & SPLINTED)
|
||||
if(!(E.status & SPLINTED))
|
||||
leg_tally-- // let it fail even if just foot&leg
|
||||
|
||||
// can't stand
|
||||
|
||||
@@ -70,6 +70,12 @@
|
||||
M.show_message(rendered_a, 2)
|
||||
else//If they do not.
|
||||
M.show_message(rendered_b, 2)
|
||||
|
||||
for (var/obj/item/device/taperecorder/O in range(T, 7)) //Puree hack for tap recorder
|
||||
spawn (0)
|
||||
if(O && !istype(O.loc, /obj/item/weapon/storage))
|
||||
O.hear_talk(src, message_a)
|
||||
|
||||
/*Radios "filter out" this conversation channel so we don't need to account for them.
|
||||
This is another way of saying that we won't bother dealing with them.*/
|
||||
else
|
||||
|
||||
@@ -687,7 +687,7 @@
|
||||
if(H.health - H.halloss <= config.health_threshold_crit)
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
if((H.lying) && ((e.status & BROKEN && !e.status & SPLINTED) || e.status & BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
|
||||
if((H.lying) && ((e.status & BROKEN && !(e.status & SPLINTED)) || e.status & BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
|
||||
return 1
|
||||
break
|
||||
return 0
|
||||
|
||||
@@ -747,17 +747,23 @@ datum/preferences
|
||||
if("input")
|
||||
var/list/new_species = list("Human")
|
||||
var/prev_species = species
|
||||
var/whitelisted = 0
|
||||
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
|
||||
if(is_alien_whitelisted(user, "Soghun")) //Check for Soghun and admins
|
||||
new_species += "Soghun"
|
||||
whitelisted = 1
|
||||
if(is_alien_whitelisted(user, "Tajaran")) //Check for Tajaran and admins
|
||||
new_species += "Tajaran"
|
||||
whitelisted = 1
|
||||
if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins
|
||||
new_species += "Skrell"
|
||||
whitelisted = 1
|
||||
else //Not using the whitelist? Aliens for everyone!
|
||||
new_species += "Tajaran"
|
||||
new_species += "Soghun"
|
||||
new_species += "Skrell"
|
||||
if(!whitelisted)
|
||||
alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
|
||||
species = input("Please select a species", "Character Generation", null) in new_species
|
||||
if(prev_species != species)
|
||||
h_style = "Bald" //Try not to carry face/head hair over.
|
||||
|
||||
@@ -55,6 +55,10 @@
|
||||
if(!text)
|
||||
return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
|
||||
var/ending = copytext(text, length(text))
|
||||
if (is_speaking_soghun)
|
||||
return "hisses, \"[text]\"";
|
||||
if (is_speaking_skrell)
|
||||
return "warbles, \"[text]\"";
|
||||
if (src.disease_symptoms & DISEASE_HOARSE)
|
||||
return "rasps, \"[text]\"";
|
||||
if (src.stuttering)
|
||||
@@ -67,10 +71,6 @@
|
||||
return "asks, \"[text]\"";
|
||||
if (ending == "!")
|
||||
return "exclaims, \"[text]\"";
|
||||
if (is_speaking_soghun)
|
||||
return "hisses, \"[text]\"";
|
||||
if (is_speaking_skrell)
|
||||
return "warbles, \"[text]\"";
|
||||
|
||||
return "says, \"[text]\"";
|
||||
|
||||
|
||||
@@ -238,11 +238,56 @@
|
||||
return "[emote], \"[text]\""
|
||||
return "says, \"[text]\"";
|
||||
|
||||
/mob/living/simple_animal/emote(var/act)
|
||||
if(act)
|
||||
if(act == "scream") act = "makes a loud and pained whimper" //ugly hack to stop animals screaming when crushed :P
|
||||
for (var/mob/O in viewers(src, null))
|
||||
O.show_message("<B>[src]</B> [act].")
|
||||
/mob/living/simple_animal/emote(var/act,var/m_type=1,var/message = null)
|
||||
switch(act)
|
||||
|
||||
if ("scream")
|
||||
message = "<B>[src]</B> screams!"
|
||||
m_type = 2
|
||||
|
||||
if ("custom")
|
||||
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
|
||||
if (!input)
|
||||
return
|
||||
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
|
||||
if (input2 == "Visible")
|
||||
m_type = 1
|
||||
else if (input2 == "Hearable")
|
||||
m_type = 2
|
||||
else
|
||||
alert("Unable to use this emote, must be either hearable or visible.")
|
||||
return
|
||||
message = "<B>[src]</B> [input]"
|
||||
|
||||
if ("me")
|
||||
if(silent)
|
||||
return
|
||||
if (src.client && (client.muted || client.muted_complete))
|
||||
src << "You are muted."
|
||||
return
|
||||
if (stat)
|
||||
return
|
||||
if(!(message))
|
||||
return
|
||||
else
|
||||
if(cmptext(copytext(message, 1, 3), "v "))
|
||||
message = "<B>[src]</B> [copytext(message, 3)]"
|
||||
m_type = 1
|
||||
else if(cmptext(copytext(message, 1, 3), "h "))
|
||||
message = "<B>[src]</B> [copytext(message, 3)]"
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> [message]"
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
if (m_type & 1)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(message, m_type)
|
||||
else
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message(message, m_type)
|
||||
return
|
||||
|
||||
|
||||
/mob/living/simple_animal/attack_animal(mob/living/simple_animal/M as mob)
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
var/oldlum = luminosity
|
||||
|
||||
//luminosity = on * brightness
|
||||
ul_SetLuminosity(on * brightness, on * brightness, fitting != "bulb" ? on * brightness : max(on * (brightness - 2), 0) ) // *DAL*
|
||||
ul_SetLuminosity(on * brightness, on * brightness, fitting != "bulb" ? on * brightness : max(on * (brightness - 1), 0) ) // *DAL*
|
||||
|
||||
// if the state changed, inc the switching counter
|
||||
if(oldlum != luminosity)
|
||||
|
||||
@@ -219,6 +219,10 @@
|
||||
O.loc = P
|
||||
amount -= 1
|
||||
P.w_class = O.w_class
|
||||
if(O.w_class > 5.0)
|
||||
P.w_class = 5.0
|
||||
if(O.w_class < 1.0)
|
||||
P.w_class = 1.0
|
||||
P.icon_state = "deliverycrate[P.w_class]"
|
||||
var/t
|
||||
switch(P.w_class)
|
||||
@@ -232,9 +236,13 @@
|
||||
t = "bulky"
|
||||
if(5.0)
|
||||
t = "huge"
|
||||
if(P.w_class < 1.0)
|
||||
t = "tiny"
|
||||
if(P.w_class > 5.0)
|
||||
t = "huge"
|
||||
P.name = "[t] package"
|
||||
user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\
|
||||
"\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\
|
||||
"\blue You wrap \the [target], leaving [amount] units of paper on \the [src].",\
|
||||
"You hear someone taping paper around a small object.")
|
||||
else if (istype(target, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/O = target
|
||||
|
||||
Reference in New Issue
Block a user