mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-22 12:47:16 +01:00
Polaris December Sync
This commit is contained in:
@@ -215,9 +215,17 @@
|
||||
return
|
||||
|
||||
if(say_understands(speaker, language))
|
||||
message = "<B>[src]</B> [verb], \"[message]\""
|
||||
message = "<B>[speaker]</B> [verb], \"[message]\""
|
||||
else
|
||||
message = "<B>[src]</B> [verb]."
|
||||
var/adverb
|
||||
var/length = length(message) * pick(0.8, 0.9, 1.0, 1.1, 1.2) //Adds a little bit of fuzziness
|
||||
switch(length)
|
||||
if(0 to 12) adverb = " briefly"
|
||||
if(12 to 30) adverb = " a short message"
|
||||
if(30 to 48) adverb = " a message"
|
||||
if(48 to 90) adverb = " a lengthy message"
|
||||
else adverb = " a very lengthy message"
|
||||
message = "<B>[speaker]</B> [verb][adverb]."
|
||||
|
||||
if(src.status_flags & PASSEMOTES)
|
||||
for(var/obj/item/weapon/holder/H in src.contents)
|
||||
|
||||
@@ -48,6 +48,8 @@ var/list/slot_equipment_priority = list( \
|
||||
//set disable_warning to disable the 'you are unable to equip that' warning.
|
||||
//unset redraw_mob to prevent the mob from being redrawn at the end.
|
||||
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1)
|
||||
if(!W)
|
||||
return 0
|
||||
if(!W.mob_can_equip(src, slot))
|
||||
if(del_on_fail)
|
||||
qdel(W)
|
||||
|
||||
@@ -113,3 +113,11 @@
|
||||
"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to",
|
||||
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
|
||||
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
|
||||
|
||||
/datum/language/sign
|
||||
name = "Sign Language"
|
||||
desc = "A sign language commonly used for those who are deaf or mute."
|
||||
signlang_verb = list("gestures")
|
||||
colour = "say_quote"
|
||||
key = "s"
|
||||
flags = SIGNLANG|NO_STUTTER|NONVERBAL
|
||||
@@ -18,6 +18,7 @@
|
||||
var/native // If set, non-native speakers will have trouble speaking.
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
|
||||
var/machine_understands = 1 // Whether machines can parse and understand this language
|
||||
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
|
||||
if(!syllables || !syllables.len)
|
||||
@@ -202,8 +203,10 @@
|
||||
if(!(L.flags & NONGLOBAL))
|
||||
if(L == default_language)
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - default - <a href='byond://?src=\ref[src];default_lang=reset'>reset</a><br/>[L.desc]<br/><br/>"
|
||||
else
|
||||
else if (can_speak(L))
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a><br/>[L.desc]<br/><br/>"
|
||||
else
|
||||
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b> - cannot speak!<br/>[L.desc]<br/><br/>"
|
||||
|
||||
src << browse(dat, "window=checklanguage")
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
key = "f"
|
||||
flags = RESTRICTED
|
||||
space_chance = 100
|
||||
machine_understands = 0
|
||||
syllables = list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri", \
|
||||
"orkan", "allaq", "sas'so", "c'arta", "forbici", "tarem", "n'ath", "reth", "sh'yro", "eth", "d'raggathnor", \
|
||||
"mah'weyh", "pleggh", "at", "e'ntrath", "tok-lyr", "rqa'nap", "g'lt-ulotf", "ta'gh", "fara'qha", "fel", "d'amar det", \
|
||||
|
||||
@@ -116,7 +116,9 @@
|
||||
space_chance = 10
|
||||
|
||||
/datum/language/machine/can_speak_special(var/mob/speaker)
|
||||
return speaker.isSynthetic()
|
||||
var/obj/item/weapon/implant/language/eal/beep = locate() in speaker
|
||||
return ((beep && beep.implanted) || speaker.isSynthetic())
|
||||
//thank you sweet zuhayr
|
||||
|
||||
/datum/language/machine/get_random_name()
|
||||
if(prob(70))
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
var/time_of_birth
|
||||
var/language
|
||||
var/death_msg = "lets out a waning guttural screech, green blood bubbling from its maw."
|
||||
var/can_namepick_as_adult = 0
|
||||
var/adult_name
|
||||
var/instance_num
|
||||
|
||||
/mob/living/carbon/alien/New()
|
||||
|
||||
@@ -24,7 +27,8 @@
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
|
||||
name = "[initial(name)] ([rand(1, 1000)])"
|
||||
instance_num = rand(1, 1000)
|
||||
name = "[initial(name)] ([instance_num])"
|
||||
real_name = name
|
||||
regenerate_icons()
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
name = "diona nymph"
|
||||
voice_name = "diona nymph"
|
||||
adult_form = /mob/living/carbon/human
|
||||
can_namepick_as_adult = 1
|
||||
adult_name = "diona gestalt"
|
||||
speak_emote = list("chirrups")
|
||||
icon_state = "nymph"
|
||||
item_state = "nymph"
|
||||
|
||||
@@ -28,9 +28,15 @@
|
||||
adult.set_species(new_species)
|
||||
show_evolution_blurb()
|
||||
|
||||
adult.name = input(src,"Choose a name for yourself (please stick to any appropriate naming conventions).") as text|null
|
||||
if(mind)
|
||||
mind.transfer_to(adult)
|
||||
if (can_namepick_as_adult)
|
||||
var/newname = sanitize(input(adult, "You have become an adult. Choose a name for yourself.", "Adult Name") as null|text, MAX_NAME_LEN)
|
||||
|
||||
if(!newname)
|
||||
adult.fully_replace_character_name(name, "[src.adult_name] ([instance_num])")
|
||||
else
|
||||
adult.fully_replace_character_name(name, newname)
|
||||
else
|
||||
adult.key = src.key
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/obj/item/device/mmi/digital/New()
|
||||
src.brainmob = new(src)
|
||||
src.brainmob.add_language("Robot Talk")
|
||||
src.brainmob.add_language("Encoded Audio Language")
|
||||
src.brainmob.loc = src
|
||||
src.brainmob.container = src
|
||||
src.brainmob.stat = 0
|
||||
|
||||
@@ -57,5 +57,8 @@
|
||||
canmove = 0
|
||||
return canmove
|
||||
|
||||
/mob/living/carbon/brain/binarycheck()
|
||||
/mob/living/carbon/brain/isSynthetic()
|
||||
return istype(loc, /obj/item/device/mmi/digital)
|
||||
|
||||
/mob/living/carbon/brain/binarycheck()
|
||||
return isSynthetic()
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
/obj/item/organ/internal/brain
|
||||
name = "brain"
|
||||
health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
|
||||
desc = "A piece of juicy meat found in a person's head."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
icon_state = "brain2"
|
||||
force = 1.0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throwforce = 1.0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
var/mob/living/carbon/brain/brainmob = null
|
||||
|
||||
/obj/item/organ/internal/brain/robotize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain)
|
||||
|
||||
/obj/item/organ/internal/brain/mechassist()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder)
|
||||
|
||||
/obj/item/organ/internal/brain/digitize()
|
||||
replace_self_with(/obj/item/organ/internal/mmi_holder/robot)
|
||||
|
||||
/obj/item/organ/internal/brain/proc/replace_self_with(replace_path)
|
||||
var/mob/living/carbon/human/tmp_owner = owner
|
||||
qdel(src)
|
||||
if(tmp_owner)
|
||||
tmp_owner.internal_organs_by_name[organ_tag] = new replace_path(tmp_owner, 1)
|
||||
tmp_owner = null
|
||||
|
||||
/obj/item/organ/internal/pariah_brain
|
||||
name = "brain remnants"
|
||||
desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
|
||||
organ_tag = "brain"
|
||||
parent_organ = BP_HEAD
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
vital = 1
|
||||
|
||||
/obj/item/organ/internal/brain/xeno
|
||||
name = "thinkpan"
|
||||
desc = "It looks kind of like an enormous wad of purple bubblegum."
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
|
||||
/obj/item/organ/internal/brain/New()
|
||||
..()
|
||||
health = config.default_brain_health
|
||||
spawn(5)
|
||||
if(brainmob && brainmob.client)
|
||||
brainmob.client.screen.len = null //clear the hud
|
||||
|
||||
/obj/item/organ/internal/brain/Destroy()
|
||||
if(brainmob)
|
||||
qdel(brainmob)
|
||||
brainmob = null
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
|
||||
|
||||
if(!brainmob)
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
brainmob.dna = H.dna.Clone()
|
||||
brainmob.timeofhostdeath = H.timeofdeath
|
||||
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just \a [initial(src.name)].</span>"
|
||||
callHook("debrain", list(brainmob))
|
||||
|
||||
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
|
||||
..(user)
|
||||
if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
|
||||
user << "You can feel the small spark of life still left in this one."
|
||||
else
|
||||
user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
|
||||
|
||||
/obj/item/organ/internal/brain/removed(var/mob/living/user)
|
||||
|
||||
if(name == initial(name))
|
||||
name = "\the [owner.real_name]'s [initial(name)]"
|
||||
|
||||
var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
|
||||
|
||||
if(borer)
|
||||
borer.detatch() //Should remove borer if the brain is removed - RR
|
||||
|
||||
var/obj/item/organ/internal/brain/B = src
|
||||
if(istype(B) && istype(owner))
|
||||
B.transfer_identity(owner)
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/replaced(var/mob/living/target)
|
||||
|
||||
if(target.key)
|
||||
target.ghostize()
|
||||
|
||||
if(brainmob)
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.transfer_to(target)
|
||||
else
|
||||
target.key = brainmob.key
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/brain/slime
|
||||
name = "slime core"
|
||||
desc = "A complex, organic knot of jelly and crystalline particles."
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "green slime extract"
|
||||
|
||||
/obj/item/organ/internal/brain/golem
|
||||
name = "chem"
|
||||
desc = "A tightly furled roll of paper, covered with indecipherable runes."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll"
|
||||
@@ -10,6 +10,7 @@
|
||||
..()
|
||||
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]"
|
||||
src.brainmob.real_name = src.brainmob.name
|
||||
src.name = "robotic intelligence circuit ([src.brainmob.name])"
|
||||
|
||||
/obj/item/device/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
|
||||
..()
|
||||
@@ -17,3 +18,6 @@
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>"
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/robot/attack_self(mob/user as mob)
|
||||
return //This object is technically a brain, and should not be dumping brains out of itself like its parent object does.
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
shock_damage *= siemens_coeff
|
||||
if (shock_damage<1)
|
||||
@@ -108,8 +108,9 @@
|
||||
"\red <B>You feel a powerful shock course through your body!</B>", \
|
||||
"\red You hear a heavy electrical crack." \
|
||||
)
|
||||
Stun(10)//This should work for now, more is really silly and makes you lay there forever
|
||||
Weaken(10)
|
||||
if(stun)
|
||||
Stun(10)//This should work for now, more is really silly and makes you lay there forever
|
||||
Weaken(10)
|
||||
else
|
||||
src.visible_message(
|
||||
"\red [src] was mildly shocked by \the [source].", \
|
||||
@@ -445,7 +446,7 @@
|
||||
chem_effects[effect] = magnitude
|
||||
|
||||
/mob/living/carbon/get_default_language()
|
||||
if(default_language)
|
||||
if(default_language && can_speak(default_language))
|
||||
return default_language
|
||||
|
||||
if(!species)
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
var/skipjumpsuit = 0
|
||||
var/skipshoes = 0
|
||||
var/skipmask = 0
|
||||
var/skiptie = 0
|
||||
var/skipholster = 0
|
||||
|
||||
var/skipears = 0
|
||||
var/skipeyes = 0
|
||||
@@ -25,6 +27,14 @@
|
||||
skiplegs |= 1
|
||||
skipchest |= 1
|
||||
skipgroin |= 1
|
||||
skipjumpsuit |= 1
|
||||
skiptie |= 1
|
||||
skipholster |= 1
|
||||
else if(wear_suit.flags_inv & HIDETIE)
|
||||
skiptie |= 1
|
||||
skipholster |= 1
|
||||
else if(wear_suit.flags_inv & HIDEHOLSTER)
|
||||
skipholster |= 1
|
||||
if(wear_suit.flags_inv & HIDESHOES)
|
||||
skipshoes |= 1
|
||||
skipfeet |= 1
|
||||
@@ -107,10 +117,17 @@
|
||||
if(w_uniform && !skipjumpsuit)
|
||||
//Ties
|
||||
var/tie_msg
|
||||
if(istype(w_uniform,/obj/item/clothing/under))
|
||||
if(istype(w_uniform,/obj/item/clothing/under) && !skiptie)
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
if(U.accessories.len)
|
||||
tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
if(skipholster)
|
||||
var/list/accessories_visible = new/list() //please let this fix the stupid fucking runtimes
|
||||
for(var/obj/item/clothing/accessory/A in U.accessories)
|
||||
if(A.concealed_holster == 0)
|
||||
accessories_visible.Add(A)
|
||||
if(accessories_visible.len)
|
||||
tie_msg += ". Attached to it is [lowertext(english_list(accessories_visible))]"
|
||||
else tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
|
||||
|
||||
if(w_uniform.blood_DNA)
|
||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!</span>\n"
|
||||
|
||||
@@ -155,6 +155,15 @@
|
||||
update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message)
|
||||
if(update) UpdateDamageIcon()
|
||||
|
||||
/mob/living/carbon/human/proc/implant_loadout(var/datum/gear/G = new/datum/gear/utility/implant)
|
||||
var/obj/item/weapon/implant/I = new G.path(src)
|
||||
I.imp_in = src
|
||||
I.implanted = 1
|
||||
var/obj/item/organ/external/affected = src.organs_by_name[BP_HEAD]
|
||||
affected.implants += I
|
||||
I.part = affected
|
||||
I.implanted(src)
|
||||
|
||||
/mob/living/carbon/human/proc/implant_loyalty(override = FALSE) // Won't override by default.
|
||||
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
if (istype(H) && attempt_to_scoop(H))
|
||||
return 0;
|
||||
// VOREStation Edit - End
|
||||
if(istype(H) && health < config.health_threshold_crit && health > config.health_threshold_dead)
|
||||
if(istype(H) && health < config.health_threshold_crit)
|
||||
if(!H.check_has_mouth())
|
||||
H << "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>"
|
||||
return
|
||||
@@ -86,12 +86,14 @@
|
||||
if(!do_after(H, 30))
|
||||
return
|
||||
|
||||
adjustOxyLoss(-(min(getOxyLoss(), 5)))
|
||||
updatehealth()
|
||||
H.visible_message("<span class='danger'>\The [H] performs CPR on \the [src]!</span>")
|
||||
src << "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>"
|
||||
H << "<span class='warning'>Repeat at least every 7 seconds.</span>"
|
||||
|
||||
if(istype(H) && health > config.health_threshold_dead)
|
||||
adjustOxyLoss(-(min(getOxyLoss(), 5)))
|
||||
updatehealth()
|
||||
src << "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>"
|
||||
|
||||
else if(!(M == src && apply_pressure(M, M.zone_sel.selecting)))
|
||||
help_shake_act(M)
|
||||
return 1
|
||||
|
||||
@@ -24,6 +24,9 @@ emp_act
|
||||
else // Otherwise we blocked normally and stopped all the damage.
|
||||
return 0
|
||||
|
||||
if(!P.nodamage)
|
||||
organ.add_autopsy_data("[P.name]", P.damage)
|
||||
|
||||
//Shrapnel
|
||||
if(P.can_embed())
|
||||
var/armor = getarmor_organ(organ, "bullet")
|
||||
|
||||
@@ -216,11 +216,12 @@
|
||||
|
||||
// DNA2 - Gene processing.
|
||||
// The HULK stuff that was here is now in the hulk gene.
|
||||
for(var/datum/dna/gene/gene in dna_genes)
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
gene.OnMobLife(src)
|
||||
if(!isSynthetic())
|
||||
for(var/datum/dna/gene/gene in dna_genes)
|
||||
if(!gene.block)
|
||||
continue
|
||||
if(gene.is_active(src))
|
||||
gene.OnMobLife(src)
|
||||
|
||||
radiation = Clamp(radiation,0,100)
|
||||
|
||||
@@ -343,14 +344,14 @@
|
||||
else
|
||||
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
|
||||
|
||||
if(should_have_organ(O_LUNGS))
|
||||
if(breath && should_have_organ(O_LUNGS))
|
||||
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
|
||||
if(!L.is_bruised() && prob(8))
|
||||
if(breath.total_moles)
|
||||
if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
|
||||
rupture_lung()
|
||||
else
|
||||
rupture_lung()
|
||||
rupture_lung()
|
||||
|
||||
if(should_have_organ("brain"))
|
||||
if(prob(5))
|
||||
adjustBrainLoss(0.02 * oxyloss) //2% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
|
||||
|
||||
oxygen_alert = max(oxygen_alert, 1)
|
||||
|
||||
@@ -368,6 +369,10 @@
|
||||
safe_pressure_min *= 1.5
|
||||
else if(L.is_bruised())
|
||||
safe_pressure_min *= 1.25
|
||||
else if(breath)
|
||||
if(breath.total_moles < BREATH_MOLES / 10 || breath.total_moles > BREATH_MOLES * 5)
|
||||
if (prob(8))
|
||||
rupture_lung()
|
||||
|
||||
var/safe_exhaled_max = 10
|
||||
var/safe_toxins_max = 0.2
|
||||
|
||||
@@ -159,6 +159,8 @@
|
||||
min_age = 19
|
||||
max_age = 80
|
||||
|
||||
darksight = 4
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
|
||||
|
||||
@@ -167,6 +169,15 @@
|
||||
base_color = "#006666"
|
||||
|
||||
//reagent_tag = IS_SKRELL //VOREStation Removal
|
||||
cold_level_1 = 280 //Default 260 - Lower is better
|
||||
cold_level_2 = 220 //Default 200
|
||||
cold_level_3 = 130 //Default 120
|
||||
|
||||
heat_level_1 = 420 //Default 360 - Higher is better
|
||||
heat_level_2 = 480 //Default 400
|
||||
heat_level_3 = 1100 //Default 1000
|
||||
|
||||
reagent_tag = IS_SKRELL
|
||||
|
||||
has_limbs = list(
|
||||
BP_TORSO = list("path" = /obj/item/organ/external/chest),
|
||||
|
||||
@@ -110,29 +110,30 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
#define DAMAGE_LAYER 2
|
||||
#define SURGERY_LEVEL 3 //bs12 specific.
|
||||
#define UNDERWEAR_LAYER 4
|
||||
#define UNIFORM_LAYER 5
|
||||
#define ID_LAYER 6
|
||||
#define SHOES_LAYER 7
|
||||
#define GLOVES_LAYER 8
|
||||
#define BELT_LAYER 9
|
||||
#define SUIT_LAYER 10
|
||||
#define TAIL_LAYER 11 //bs12 specific. this hack is probably gonna come back to haunt me
|
||||
#define GLASSES_LAYER 12
|
||||
#define BELT_LAYER_ALT 13
|
||||
#define SUIT_STORE_LAYER 14
|
||||
#define BACK_LAYER 15
|
||||
#define HAIR_LAYER 16 //TODO: make part of head layer?
|
||||
#define EARS_LAYER 17
|
||||
#define FACEMASK_LAYER 18
|
||||
#define HEAD_LAYER 19
|
||||
#define COLLAR_LAYER 20
|
||||
#define HANDCUFF_LAYER 21
|
||||
#define LEGCUFF_LAYER 22
|
||||
#define L_HAND_LAYER 23
|
||||
#define R_HAND_LAYER 24
|
||||
#define FIRE_LAYER 25 //If you're on fire
|
||||
#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define TOTAL_LAYERS 26
|
||||
#define SHOES_LAYER_ALT 5
|
||||
#define UNIFORM_LAYER 6
|
||||
#define ID_LAYER 7
|
||||
#define SHOES_LAYER 8
|
||||
#define GLOVES_LAYER 9
|
||||
#define BELT_LAYER 10
|
||||
#define SUIT_LAYER 11
|
||||
#define TAIL_LAYER 12 //bs12 specific.
|
||||
#define GLASSES_LAYER 13
|
||||
#define BELT_LAYER_ALT 14
|
||||
#define SUIT_STORE_LAYER 15
|
||||
#define BACK_LAYER 16
|
||||
#define HAIR_LAYER 17 //TODO: make part of head layer?
|
||||
#define EARS_LAYER 18
|
||||
#define FACEMASK_LAYER 19
|
||||
#define HEAD_LAYER 20
|
||||
#define COLLAR_LAYER 21
|
||||
#define HANDCUFF_LAYER 22
|
||||
#define LEGCUFF_LAYER 23
|
||||
#define L_HAND_LAYER 24
|
||||
#define R_HAND_LAYER 25
|
||||
#define FIRE_LAYER 26 //If you're on fire
|
||||
#define TARGETED_LAYER 27 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define TOTAL_LAYERS 27
|
||||
//////////////////////////////////
|
||||
|
||||
/mob/living/carbon/human
|
||||
@@ -475,7 +476,7 @@ var/global/list/damage_icon_parts = list()
|
||||
//vvvvvv UPDATE_INV PROCS vvvvvv
|
||||
|
||||
/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1)
|
||||
if(w_uniform && istype(w_uniform, /obj/item/clothing/under) )
|
||||
if( (w_uniform && istype(w_uniform, /obj/item/clothing/under)) && !(wear_suit && istype(wear_suit, /obj/item/clothing/suit/space) && wear_suit.flags_inv & HIDEJUMPSUIT && !istype(wear_suit, /obj/item/clothing/suit/space/rig) ))
|
||||
w_uniform.screen_loc = ui_iclothing
|
||||
|
||||
//determine the icon to use
|
||||
@@ -519,7 +520,7 @@ var/global/list/damage_icon_parts = list()
|
||||
overlays_standing[UNIFORM_LAYER] = null
|
||||
|
||||
//hiding/revealing shoes if necessary
|
||||
update_inv_shoes(0)
|
||||
update_inv_shoes(1)
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
@@ -647,12 +648,22 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
|
||||
|
||||
var/shoe_layer = SHOES_LAYER
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
var/obj/item/clothing/shoes/ushoes = shoes
|
||||
if(ushoes.shoes_under_pants == 1)
|
||||
overlays_standing[SHOES_LAYER] = null
|
||||
shoe_layer = SHOES_LAYER_ALT
|
||||
else
|
||||
overlays_standing[SHOES_LAYER_ALT] = null
|
||||
shoe_layer = SHOES_LAYER
|
||||
|
||||
if(shoes.blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
|
||||
bloodsies.color = shoes.blood_color
|
||||
standing.overlays += bloodsies
|
||||
standing.color = shoes.color
|
||||
overlays_standing[SHOES_LAYER] = standing
|
||||
overlays_standing[shoe_layer] = standing
|
||||
else
|
||||
if(feet_blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
|
||||
@@ -660,6 +671,7 @@ var/global/list/damage_icon_parts = list()
|
||||
overlays_standing[SHOES_LAYER] = bloodsies
|
||||
else
|
||||
overlays_standing[SHOES_LAYER] = null
|
||||
overlays_standing[SHOES_LAYER_ALT] = null
|
||||
if(update_icons) update_icons()
|
||||
|
||||
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
|
||||
@@ -808,16 +820,15 @@ var/global/list/damage_icon_parts = list()
|
||||
standing.overlays |= A.get_mob_overlay()
|
||||
|
||||
overlays_standing[SUIT_LAYER] = standing
|
||||
update_tail_showing(0)
|
||||
|
||||
else
|
||||
overlays_standing[SUIT_LAYER] = null
|
||||
update_tail_showing(0)
|
||||
|
||||
//Hide/show other layers if necessary
|
||||
update_collar(0)
|
||||
|
||||
//hide/show shoes if necessary
|
||||
update_inv_w_uniform(0)
|
||||
update_inv_shoes(0)
|
||||
update_tail_showing(0)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
set name = "Set Default Language"
|
||||
set category = "IC"
|
||||
|
||||
if(language && !can_speak(language))
|
||||
src << "<span class='notice'>You are unable to speak that language.</span>"
|
||||
return
|
||||
|
||||
if(language)
|
||||
src << "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>"
|
||||
else
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
//Mutations and radiation
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
//Chemicals in the body
|
||||
handle_chemicals_in_body()
|
||||
|
||||
|
||||
//Blood
|
||||
handle_blood()
|
||||
@@ -30,6 +29,9 @@
|
||||
|
||||
. = 1
|
||||
|
||||
//Chemicals in the body, this is moved over here so that blood can be added after death
|
||||
handle_chemicals_in_body()
|
||||
|
||||
//Handle temperature/pressure differences between body and environment
|
||||
if(environment)
|
||||
handle_environment(environment)
|
||||
|
||||
@@ -177,7 +177,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
return 1
|
||||
|
||||
//Self explanatory.
|
||||
if(is_muzzled())
|
||||
if(is_muzzled() && !(speaking && (speaking.flags & SIGNLANG)))
|
||||
src << "<span class='danger'>You're muzzled and cannot speak!</span>"
|
||||
return
|
||||
|
||||
@@ -204,7 +204,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
w_not_heard = "[speaking.speech_verb] something [w_adverb]"
|
||||
|
||||
//For speech disorders (hulk, slurring, stuttering)
|
||||
if(!(speaking && (speaking.flags & NO_STUTTER)))
|
||||
if(!(speaking && (speaking.flags & NO_STUTTER || speaking.flags & SIGNLANG)))
|
||||
var/list/message_data = list(message, verb, whispering)
|
||||
if(handle_speech_problems(message_data))
|
||||
message = message_data[1]
|
||||
@@ -264,6 +264,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
src.custom_emote(1, "[pick(speaking.signlang_verb)].")
|
||||
|
||||
if (speaking.flags & SIGNLANG)
|
||||
log_say("[name]/[key] : SIGN: [message]")
|
||||
return say_signlang(message, pick(speaking.signlang_verb), speaking)
|
||||
|
||||
//These will contain the main receivers of the message
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
m_type = 1
|
||||
|
||||
if("law")
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
if (istype(module,/obj/item/weapon/robot_module/robot/security))
|
||||
message = "shows its legal authorization barcode."
|
||||
|
||||
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
|
||||
@@ -229,7 +229,7 @@
|
||||
src << "You are not THE LAW, pal."
|
||||
|
||||
if("halt")
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
if (istype(module,/obj/item/weapon/robot_module/robot/security))
|
||||
message = "<B>[src]</B>'s speakers skreech, \"Halt! Security!\"."
|
||||
|
||||
playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
|
||||
|
||||
@@ -827,7 +827,7 @@
|
||||
. = ..()
|
||||
|
||||
if(module)
|
||||
if(module.type == /obj/item/weapon/robot_module/janitor)
|
||||
if(module.type == /obj/item/weapon/robot_module/robot/janitor)
|
||||
var/turf/tile = loc
|
||||
if(isturf(tile))
|
||||
tile.clean_blood()
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
var/global/list/robot_modules = list(
|
||||
"Standard" = /obj/item/weapon/robot_module/standard,
|
||||
"Service" = /obj/item/weapon/robot_module/clerical/butler,
|
||||
"Clerical" = /obj/item/weapon/robot_module/clerical/general,
|
||||
"Research" = /obj/item/weapon/robot_module/research,
|
||||
"Miner" = /obj/item/weapon/robot_module/miner,
|
||||
"Crisis" = /obj/item/weapon/robot_module/medical/crisis,
|
||||
"Surgeon" = /obj/item/weapon/robot_module/medical/surgeon,
|
||||
"Security" = /obj/item/weapon/robot_module/security/general,
|
||||
"Combat" = /obj/item/weapon/robot_module/security/combat,
|
||||
"Engineering" = /obj/item/weapon/robot_module/engineering/general,
|
||||
"Construction" = /obj/item/weapon/robot_module/engineering/construction,
|
||||
"Janitor" = /obj/item/weapon/robot_module/janitor
|
||||
"Standard" = /obj/item/weapon/robot_module/robot/standard,
|
||||
"Service" = /obj/item/weapon/robot_module/robot/clerical/butler,
|
||||
"Clerical" = /obj/item/weapon/robot_module/robot/clerical/general,
|
||||
"Research" = /obj/item/weapon/robot_module/robot/research,
|
||||
"Miner" = /obj/item/weapon/robot_module/robot/miner,
|
||||
"Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis,
|
||||
"Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon,
|
||||
"Security" = /obj/item/weapon/robot_module/robot/security/general,
|
||||
"Combat" = /obj/item/weapon/robot_module/robot/security/combat,
|
||||
"Engineering" = /obj/item/weapon/robot_module/robot/engineering/general,
|
||||
"Construction" = /obj/item/weapon/robot_module/robot/engineering/construction,
|
||||
"Janitor" = /obj/item/weapon/robot_module/robot/janitor
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module
|
||||
@@ -149,7 +149,14 @@ var/global/list/robot_modules = list(
|
||||
if(!can_be_pushed)
|
||||
R.status_flags |= CANPUSH
|
||||
|
||||
/obj/item/weapon/robot_module/standard
|
||||
// Cyborgs (non-drones), default loadout. This will be given to every module.
|
||||
/obj/item/weapon/robot_module/robot/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/standard
|
||||
name = "standard robot module"
|
||||
sprites = list( "Basic" = "robot_old",
|
||||
"Android" = "droid",
|
||||
@@ -157,24 +164,21 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-standard"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/standard/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/standard/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical
|
||||
/obj/item/weapon/robot_module/robot/medical
|
||||
name = "medical robot module"
|
||||
channels = list("Medical" = 1)
|
||||
networks = list(NETWORK_MEDICAL)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
can_be_pushed = 0
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon
|
||||
name = "surgeon robot module"
|
||||
sprites = list(
|
||||
"Basic" = "Medbot",
|
||||
@@ -184,8 +188,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-surgery"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
|
||||
src.modules += new /obj/item/weapon/scalpel(src)
|
||||
@@ -198,7 +202,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/circular_saw(src)
|
||||
src.modules += new /obj/item/weapon/surgicaldrill(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("pacid", 250)
|
||||
src.emag.name = "Polyacid spray"
|
||||
@@ -217,15 +220,13 @@ var/global/list/robot_modules = list(
|
||||
src.modules += N
|
||||
src.modules += B
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/medical/robot/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
|
||||
PS.reagents.add_reagent("pacid", 2 * amount)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis
|
||||
name = "crisis robot module"
|
||||
sprites = list(
|
||||
"Basic" = "Medbot",
|
||||
@@ -236,8 +237,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone - Chemistry" = "drone-chemistry"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/device/reagent_scanner/adv(src)
|
||||
@@ -248,7 +249,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
|
||||
src.modules += new /obj/item/weapon/gripper/chemistry(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("pacid", 250)
|
||||
src.emag.name = "Polyacid spray"
|
||||
@@ -272,9 +272,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += B
|
||||
src.modules += S
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
|
||||
if(S.mode == 2)
|
||||
@@ -290,7 +288,7 @@ var/global/list/robot_modules = list(
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/engineering
|
||||
/obj/item/weapon/robot_module/robot/engineering
|
||||
name = "engineering robot module"
|
||||
channels = list("Engineering" = 1)
|
||||
networks = list(NETWORK_ENGINEERING)
|
||||
@@ -303,18 +301,16 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-engineer"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/construction
|
||||
/obj/item/weapon/robot_module/robot/engineering/construction
|
||||
name = "construction robot module"
|
||||
no_slip = 1
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/construction/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/engineering/construction/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/meson(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
|
||||
src.modules += new /obj/item/device/pipe_painter(src)
|
||||
@@ -348,16 +344,12 @@ var/global/list/robot_modules = list(
|
||||
RG.synths = list(metal, glass)
|
||||
src.modules += RG
|
||||
|
||||
/obj/item/weapon/robot_module/robot/engineering/general/New()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/engineering/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/borg/sight/meson(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/wirecutters(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/device/t_scanner(src)
|
||||
@@ -405,9 +397,7 @@ var/global/list/robot_modules = list(
|
||||
RG.synths = list(metal, glass)
|
||||
src.modules += RG
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/security
|
||||
/obj/item/weapon/robot_module/robot/security
|
||||
name = "security robot module"
|
||||
channels = list("Security" = 1)
|
||||
networks = list(NETWORK_SECURITY)
|
||||
@@ -415,7 +405,7 @@ var/global/list/robot_modules = list(
|
||||
can_be_pushed = 0
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
||||
|
||||
/obj/item/weapon/robot_module/security/general
|
||||
/obj/item/weapon/robot_module/robot/security/general
|
||||
sprites = list(
|
||||
"Basic" = "secborg",
|
||||
"Red Knight" = "Security",
|
||||
@@ -425,8 +415,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-sec"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/security/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/security/general/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/hud/sec(src)
|
||||
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/melee/baton/robot(src)
|
||||
@@ -434,9 +424,8 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/taperoll/police(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/flash/F = locate() in src.modules
|
||||
if(F.broken)
|
||||
F.broken = 0
|
||||
@@ -454,7 +443,7 @@ var/global/list/robot_modules = list(
|
||||
if(B && B.bcell)
|
||||
B.bcell.give(amount)
|
||||
|
||||
/obj/item/weapon/robot_module/janitor
|
||||
/obj/item/weapon/robot_module/robot/janitor
|
||||
name = "janitorial robot module"
|
||||
channels = list("Service" = 1)
|
||||
sprites = list(
|
||||
@@ -464,8 +453,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-janitor"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/janitor/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/janitor/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
|
||||
src.modules += new /obj/item/weapon/storage/bag/trash(src)
|
||||
src.modules += new /obj/item/weapon/mop(src)
|
||||
@@ -473,16 +462,15 @@ var/global/list/robot_modules = list(
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
src.emag.reagents.add_reagent("lube", 250)
|
||||
src.emag.name = "Lube spray"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
/obj/item/weapon/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
LR.Charge(R, amount)
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/spray/S = src.emag
|
||||
S.reagents.add_reagent("lube", 2 * amount)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical
|
||||
/obj/item/weapon/robot_module/robot/clerical
|
||||
name = "service robot module"
|
||||
channels = list("Service" = 1)
|
||||
languages = list(
|
||||
@@ -496,7 +484,7 @@ var/global/list/robot_modules = list(
|
||||
LANGUAGE_SCHECHI = 1
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/butler
|
||||
/obj/item/weapon/robot_module/robot/clerical/butler
|
||||
sprites = list( "Waitress" = "Service",
|
||||
"Kent" = "toiletbot",
|
||||
"Bro" = "Brobot",
|
||||
@@ -506,8 +494,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone - Hydro" = "drone-hydro"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/butler/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/clerical/butler/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/gripper/service(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
|
||||
src.modules += new /obj/item/weapon/material/minihoe(src)
|
||||
@@ -537,9 +525,8 @@ var/global/list/robot_modules = list(
|
||||
R.my_atom = src.emag
|
||||
R.add_reagent("beer2", 50)
|
||||
src.emag.name = "Mickey Finn's Special Brew"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/general
|
||||
/obj/item/weapon/robot_module/robot/clerical/general
|
||||
name = "clerical robot module"
|
||||
sprites = list(
|
||||
"Waitress" = "Service",
|
||||
@@ -550,8 +537,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-service"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/clerical/general/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/clerical/general/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/pen/robopen(src)
|
||||
src.modules += new /obj/item/weapon/form_printer(src)
|
||||
src.modules += new /obj/item/weapon/gripper/paperwork(src)
|
||||
@@ -568,7 +555,7 @@ var/global/list/robot_modules = list(
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
|
||||
B.reagents.add_reagent("beer2", 2 * amount)
|
||||
|
||||
/obj/item/weapon/robot_module/miner
|
||||
/obj/item/weapon/robot_module/robot/miner
|
||||
name = "miner robot module"
|
||||
channels = list("Supply" = 1)
|
||||
networks = list(NETWORK_MINE)
|
||||
@@ -580,8 +567,8 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/jetpack)
|
||||
|
||||
/obj/item/weapon/robot_module/miner/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/miner/New()
|
||||
..()
|
||||
src.modules += new /obj/item/borg/sight/material(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
@@ -590,11 +577,9 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
|
||||
src.modules += new /obj/item/weapon/gripper/miner(src)
|
||||
src.modules += new /obj/item/weapon/mining_scanner(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/research
|
||||
/obj/item/weapon/robot_module/robot/research
|
||||
name = "research module"
|
||||
channels = list("Science" = 1)
|
||||
sprites = list(
|
||||
@@ -602,8 +587,8 @@ var/global/list/robot_modules = list(
|
||||
"Drone" = "drone-science"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/research/New()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
/obj/item/weapon/robot_module/robot/research/New()
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
|
||||
src.modules += new /obj/item/weapon/gripper/research(src)
|
||||
src.modules += new /obj/item/weapon/gripper/no_use/organ/robotics(src)
|
||||
@@ -614,12 +599,10 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
src.modules += new /obj/item/weapon/crowbar(src)
|
||||
src.modules += new /obj/item/weapon/wirecutters(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
src.modules += new /obj/item/weapon/scalpel(src)
|
||||
src.modules += new /obj/item/weapon/circular_saw(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
|
||||
src.emag = new /obj/item/weapon/hand_tele(src)
|
||||
@@ -639,9 +622,7 @@ var/global/list/robot_modules = list(
|
||||
C.synths = list(wire)
|
||||
src.modules += C
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate
|
||||
/obj/item/weapon/robot_module/robot/syndicate
|
||||
name = "illegal robot module"
|
||||
hide_on_manifest = 1
|
||||
languages = list(
|
||||
@@ -659,9 +640,9 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
var/id
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/New(var/mob/living/silicon/robot/R)
|
||||
/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
|
||||
..()
|
||||
loc = R
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
src.modules += new /obj/item/weapon/melee/energy/sword(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src)
|
||||
src.modules += new /obj/item/weapon/card/emag(src)
|
||||
@@ -671,19 +652,19 @@ var/global/list/robot_modules = list(
|
||||
|
||||
id = R.idcard
|
||||
src.modules += id
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/Destroy()
|
||||
/obj/item/weapon/robot_module/robot/syndicate/Destroy()
|
||||
src.modules -= id
|
||||
id = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/robot_module/security/combat
|
||||
/obj/item/weapon/robot_module/robot/security/combat
|
||||
name = "combat robot module"
|
||||
hide_on_manifest = 1
|
||||
sprites = list("Combat Android" = "droid-combat")
|
||||
|
||||
/obj/item/weapon/robot_module/security/combat/New()
|
||||
/obj/item/weapon/robot_module/robot/security/combat/New()
|
||||
..()
|
||||
src.modules += new /obj/item/device/flash(src)
|
||||
//src.modules += new /obj/item/borg/sight/thermal(src) // VOREStation Edit
|
||||
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
@@ -691,7 +672,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/borg/combat/shield(src)
|
||||
src.modules += new /obj/item/borg/combat/mobility(src)
|
||||
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/drone
|
||||
name = "drone module"
|
||||
@@ -700,6 +680,7 @@ var/global/list/robot_modules = list(
|
||||
networks = list(NETWORK_ENGINEERING)
|
||||
|
||||
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/weldingtool(src)
|
||||
src.modules += new /obj/item/weapon/screwdriver(src)
|
||||
src.modules += new /obj/item/weapon/wrench(src)
|
||||
@@ -774,8 +755,6 @@ var/global/list/robot_modules = list(
|
||||
P.synths = list(plastic)
|
||||
src.modules += P
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/drone/construction
|
||||
name = "construction drone module"
|
||||
hide_on_manifest = 1
|
||||
@@ -783,8 +762,8 @@ var/global/list/robot_modules = list(
|
||||
languages = list()
|
||||
|
||||
/obj/item/weapon/robot_module/drone/construction/New()
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
..()
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
|
||||
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/device/lightreplacer/LR = locate() in src.modules
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
new /obj/item/weapon/robot_module/syndicate(src)
|
||||
new /obj/item/weapon/robot_module/robot/syndicate(src)
|
||||
|
||||
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
|
||||
radio.recalculateChannels()
|
||||
|
||||
@@ -75,13 +75,13 @@
|
||||
/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount)
|
||||
return //immune
|
||||
|
||||
/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0)
|
||||
/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0)
|
||||
if(shock_damage > 0)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, loc)
|
||||
s.start()
|
||||
|
||||
shock_damage *= 0.75 //take reduced damage
|
||||
shock_damage *= siemens_coeff //take reduced damage
|
||||
take_overall_damage(0, shock_damage)
|
||||
visible_message("<span class='warning'>[src] was shocked by \the [source]!</span>", \
|
||||
"<span class='danger'>Energy pulse detected, system damaged!</span>", \
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
return
|
||||
custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) )
|
||||
|
||||
var/damage = rand(20,30)
|
||||
var/damage = rand(melee_damage_lower, melee_damage_upper)
|
||||
|
||||
if(ishuman(target_mob))
|
||||
var/mob/living/carbon/human/H = target_mob
|
||||
|
||||
@@ -654,6 +654,7 @@
|
||||
if(.)
|
||||
if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME)
|
||||
stat("Station Time", stationtime2text())
|
||||
stat("Station Date", stationdate2text())
|
||||
stat("Round Duration", roundduration2text())
|
||||
|
||||
if(client.holder)
|
||||
|
||||
Reference in New Issue
Block a user