Conflicts:
	code/game/jobs/job/support.dm
	code/setup.dm
This commit is contained in:
Markolie
2015-02-22 19:12:11 +01:00
68 changed files with 566 additions and 522 deletions
+14 -4
View File
@@ -215,7 +215,7 @@
var/new_name = "[pick(list("To Sleep Beneath","Wind Over","Embrace of","Dreams of","Witnessing","To Walk Beneath","Approaching the"))]"
new_name += " [pick(list("the Void","the Sky","Encroaching Night","Planetsong","Starsong","the Wandering Star","the Empty Day","Daybreak","Nightfall","the Rain"))]"
return new_name
/datum/language/trinary
name = "Trinary"
desc = "A modification of binary to allow fuzzy logic. 0 is no, 1 is maybe, 2 is yes. Credited with giving Machine People the ability to think creatively."
@@ -225,8 +225,8 @@
colour = "trinary"
key = "5"
flags = RESTRICTED | WHITELISTED
syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0")
syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0")
/datum/language/kidan
name = "Chittin"
desc = "The noise made by rubbing its antennae together is actually a complex form of communication for Kidan."
@@ -237,7 +237,7 @@
key = "4"
flags = RESTRICTED | WHITELISTED
syllables = list("click","clack")
/datum/language/slime
name = "Bubblish"
desc = "The language of slimes. It's a mixture of bubbling noises and pops. Very difficult to speak without mechanical aid for humans."
@@ -310,6 +310,16 @@
key = "3"
syllables = list ("gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh", "gra")
/datum/language/clown
name = "Clownish"
desc = "The language of clown planet. Mother tongue of clowns throughout the Galaxy."
speech_verb = "honks"
ask_verb = "honks"
exclaim_verb = "honks"
colour = "clown"
key = "0"
syllables = list ("honk","squeak","bonk","toot","narf","zub","wee","wub","norf")
/datum/language/xenocommon
name = "Xenomorph"
colour = "alien"
@@ -82,6 +82,23 @@
if (!species.name == "Machine")
return
if("wag")
if(species.bodyflags & TAIL_WAGGING)
if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
message = "<B>[src]</B> starts wagging \his tail."
src.start_tail_wagging(1)
else
return
else
return
if("swag")
if(species.bodyflags & TAIL_WAGGING)
message = "<B>[src]</B> stops wagging \his tail."
src.stop_tail_wagging(1)
else
return
if ("airguitar")
if (!src.restrained())
message = "<B>[src]</B> is strumming the air and headbanging like a safari chimp."
+28 -13
View File
@@ -42,7 +42,7 @@
// Set up DNA.
if(!delay_ready_dna)
dna.ready_dna(src)
/mob/living/carbon/human/dummy
real_name = "Test Dummy"
status_flags = GODMODE|CANPUSH
@@ -205,8 +205,8 @@
stat("Distribution Pressure", internal.distribute_pressure)
if(mind)
if(mind.changeling)
stat("Chemical Storage", mind.changeling.chem_charges)
stat("Genetic Damage Time", mind.changeling.geneticdamage)
stat("Chemical Storage", "[mind.changeling.chem_charges]/[mind.changeling.chem_storage]")
stat("Absorbed DNA", mind.changeling.absorbedcount)
if (istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_initialized)
stat("Energy Charge", (wear_suit:cell:charge))
@@ -539,8 +539,8 @@
if(id)
return id.rank ? id.rank : if_no_job
else
return if_no_id
return if_no_id
//gets assignment from ID or ID inside PDA or PDA itself
//Useful when player do something with computers
/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job")
@@ -1073,6 +1073,21 @@
xylophone=0
return
/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone)
. = 1 // Default to returning true.
if(user && !target_zone)
target_zone = user.zone_sel.selecting
// If targeting the head, see if the head item is thin enough.
// If targeting anything else, see if the wear suit is thin enough.
if(above_neck(target_zone))
if(head && head.flags & THICKMATERIAL)
. = 0
else
if(wear_suit && wear_suit.flags & THICKMATERIAL)
. = 0
if(!. && error_msg && user)
// Might need re-wording.
user << "<span class='alert'>There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"].</span>"
/mob/living/carbon/human/proc/vomit(hairball=0)
if(stat==2)return
@@ -1301,7 +1316,7 @@
usr << "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)]."
/mob/living/carbon/human/proc/set_species(var/new_species, var/force_organs, var/default_colour)
var/datum/species/oldspecies = species
if(!dna)
if(!new_species)
@@ -1318,26 +1333,26 @@
if(species.language)
remove_language(species.language)
if(species.default_language)
remove_language(species.default_language)
remove_language(species.default_language)
species = all_species[new_species]
if(oldspecies)
if(oldspecies.default_genes.len)
oldspecies.handle_dna(src,1) // Remove any genes that belong to the old species
if(force_organs || !organs || !organs.len)
species.create_organs(src)
if(vessel)
vessel = null
make_blood()
if(species.language)
add_language(species.language)
if(species.default_language)
add_language(species.default_language)
@@ -1359,7 +1374,7 @@
r_skin = 0
g_skin = 0
b_skin = 0
if(!dna)
dna = new /datum/dna(null)
dna.species = species.name
+3 -1
View File
@@ -276,7 +276,7 @@
message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
verb = pick("whinnies","neighs", "says")
handled = 1
if(dna)
for(var/datum/dna/gene/gene in dna_genes)
if(!gene.block)
@@ -309,6 +309,8 @@
message = uppertext(message)
verb = "yells loudly"
if(COMIC in mutations)
message = "<span class='sans'>[message]</span>"
returns[1] = message
returns[2] = verb
returns[3] = handled
@@ -596,7 +596,7 @@ proc/get_damage_icon_part(damage_state, body_part)
if(FAT in mutations)
if(w_uniform.flags&ONESIZEFITSALL)
standing.icon = 'icons/mob/uniforFAT.dmi'
standing.icon = 'icons/mob/uniform_fat.dmi'
else
src << "\red You burst out of \the [w_uniform]!"
unEquip(w_uniform)
@@ -1000,6 +1000,30 @@ proc/get_damage_icon_part(damage_state, body_part)
update_icons()
/mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1)
overlays_standing[TAIL_LAYER] = null
if(species.tail && species.bodyflags & HAS_TAIL)
var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]w_s")
tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
overlays_standing[TAIL_LAYER] = image(tailw_s)
if(update_icons)
update_icons()
/mob/living/carbon/human/proc/stop_tail_wagging(var/update_icons=1)
overlays_standing[TAIL_LAYER] = null
if(species.tail && species.bodyflags & HAS_TAIL)
var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
overlays_standing[TAIL_LAYER] = image(tail_s)
if(update_icons)
update_icons()
//Adds a collar overlay above the helmet layer if the suit has one
// Suit needs an identically named sprite in icons/mob/collar.dmi
/mob/living/carbon/human/proc/update_collar(var/update_icons=1)
+5 -1
View File
@@ -354,11 +354,15 @@
primitive = /mob/living/carbon/monkey/tajara
flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
flesh_color = "#AFA59E"
base_color = "#333333"
/datum/species/tajaran/handle_death(var/mob/living/carbon/human/H)
H.stop_tail_wagging(1)
/datum/species/skrell
name = "Skrell"
icobase = 'icons/mob/human_races/r_skrell.dmi'
@@ -14,7 +14,7 @@
density = 1
req_access = list(access_engine, access_robotics)
local_transmit = 1
// We need to keep track of a few module items so we don't need to do list operations
// every time we need them. These get set in New() after the module is chosen.
var/obj/item/stack/sheet/metal/cyborg/stack_metal = null
@@ -25,12 +25,13 @@
//Used for self-mailing.
var/mail_destination = 0
var/sprite[0]
/mob/living/silicon/robot/drone/New()
..()
remove_language("Robot Talk")
add_language("Drone Talk", 1)
@@ -88,9 +89,83 @@
/mob/living/silicon/robot/drone/choose_icon()
return
/mob/living/silicon/robot/drone/pick_module()
return
//Drones can only use binary and say emotes. NOTHING else.
//TBD, fix up boilerplate. ~ Z
/mob/living/silicon/robot/drone/say(var/message)
if (!message)
return
if (src.client)
if(client.prefs.muted & MUTE_IC)
src << "You cannot send IC messages (muted)."
return
if (src.client.handle_spam_prevention(message,MUTE_IC))
return
if (stat == 2)
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
return say_dead(message)
//Must be concious to speak
if (stat)
return
if(copytext(message,1,2) == "*")
return emote(copytext(message,2))
if (length(message) >= 2)
var/prefix = copytext(message, 1, 3)
if (department_radio_keys[prefix] == "drone")
message = copytext(message, 3)
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
if(istype(src, /mob/living/silicon/robot/drone))
var/mob/living/silicon/robot/drone/R = src
if(!R.is_component_functioning("comms"))
src << "\red Your drone communications component isn't functional."
return
drone_talk(message)
else
var/list/listeners = hearers(5,src)
listeners |= src
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
for(var/mob/living/silicon/D in listeners)
if(D.client)
D << "<b>[src]</b> transmits, \"[message]\""
for (var/mob/M in player_list)
if (!M.client)
continue
if (istype(M, /mob/new_player))
continue
else if(M.stat == 2 && (M.client.prefs.toggles & CHAT_GHOSTEARS) && src.client)
M << "<b>[src]</b> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> transmits, \"[message]\""
else if(M.stat == 2 && src.client && M in listeners)
M << "<b>[src]</b> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> transmits, \"[message]\""
/mob/living/proc/drone_talk(var/message)
log_say("[key_name(src)] : [message]")
message = trim(message)
if (!message)
return
var/message_a = say_quote(message)
var/rendered = "<i><span class='game say'>Drone Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
for (var/mob/living/S in living_mob_list)
if(istype(S, /mob/living/silicon/robot/drone))
S.show_message(rendered, 2)
for (var/mob/S in dead_mob_list)
if(!istype(S,/mob/new_player) && !istype(S,/mob/living/carbon/brain))
var/rendered2 = "<i><span class='game say'>Drone Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[S];follow2=\ref[S];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
S.show_message(rendered2, 2)
//Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..().
/mob/living/silicon/robot/drone/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -137,12 +212,12 @@
return
..()
/mob/living/silicon/robot/drone/emag_act(user as mob)
if(!client || stat == 2)
user << "\red There's not much point subverting this heap of junk."
return
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
@@ -273,6 +348,16 @@
src << "<b>Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets.</b>"
src << "<b>If a crewmember has noticed you, <i>you are probably breaking your first law</i></b>."
sprite["Default"] = "repairbot"
sprite["Mk2 Mousedrone"] = "mk2"
sprite["Mk3 Monkeydrone"] = "mk3"
var/icontype
icontype = input(player,"Pick an icon") in sprite
icon_state = sprite[icontype]
updateicon()
choose_icon(6,sprite)
/mob/living/silicon/robot/drone/Bump(atom/movable/AM as mob|obj, yes)
if (!yes || ( \
!istype(AM,/obj/machinery/door) && \
@@ -332,8 +332,7 @@
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
src.modules += new /obj/item/weapon/gun/energy/printer(src)
src.modules += new /obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg(src)
src.modules += new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large/cyborg(src)
src.modules += new /obj/item/weapon/card/emag(src)
src.modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += new /obj/item/weapon/crowbar(src)
+7 -2
View File
@@ -124,6 +124,11 @@
/mob/living/silicon/proc/damage_mob(var/brute = 0, var/fire = 0, var/tox = 0)
return
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
if(error_msg)
user << "<span class='alert'>Their outer shell is too tough.</span>"
return 0
/mob/living/silicon/IsAdvancedToolUser()
return 1
@@ -207,7 +212,7 @@
show_emergency_shuttle_eta()
show_system_integrity()
show_malf_ai()
//Silicon mob language procs
/mob/living/silicon/can_speak(datum/language/speaking)
@@ -290,7 +295,7 @@
set category = "IC"
flavor_text = sanitize(copytext(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text, 1))
/mob/living/silicon/binarycheck()
return 1
+1 -1
View File
@@ -1340,4 +1340,4 @@ mob/proc/yank_out_object()
if(G.mind == mind)
if(G.can_reenter_corpse || even_if_they_cant_reenter)
return G
break
break
+8 -1
View File
@@ -213,6 +213,13 @@ proc/hassensorlevel(A, var/level)
return zone
/proc/above_neck(zone)
var/list/zones = list("head", "mouth", "eyes")
if(zones.Find(zone))
return 1
else
return 0
/proc/stars(n, pr)
if (pr == null)
pr = 25
@@ -491,4 +498,4 @@ var/list/intents = list("help","disarm","grab","harm")
else // Everyone else (dead people who didn't ghost yet, etc.)
lname = name
lname = "<span class='name'>[lname]</span> "
M << "<span class='deadsay'>[lname][follow][message]</span>"
M << "<span class='deadsay'>[lname][follow][message]</span>"
@@ -261,7 +261,7 @@ datum/preferences
var/icon/clothes_s = null
var/uniform_dmi='icons/mob/uniform.dmi'
if(disabilities&DISABILITY_FLAG_FAT)
uniform_dmi='icons/mob/uniforFAT.dmi'
uniform_dmi='icons/mob/uniform_fat.dmi'
if(job_support_low & CIVILIAN)//This gives the preview icon clothes depending on which job(if any) is set to 'high'
clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
+2 -2
View File
@@ -32,7 +32,7 @@ var/global/image/typing_indicator
set_typing_indicator(1)
hud_typing = 1
var/message = input("","say (text)") as text
var/message = input("","say (text)") as null|text
hud_typing = 0
set_typing_indicator(0)
if(message)
@@ -44,7 +44,7 @@ var/global/image/typing_indicator
set_typing_indicator(1)
hud_typing = 1
var/message = input("","me (text)") as text
var/message = input("","me (text)") as null|text
hud_typing = 0
set_typing_indicator(0)
if(message)