Merge branch 'master' of https://github.com/PolarisSS13/Polaris into Slime_Rework_3

# Conflicts:
#	icons/mob/items/lefthand.dmi
#	icons/mob/items/righthand.dmi
#	icons/obj/weapons.dmi
This commit is contained in:
Datraen
2016-05-25 15:09:23 -04:00
46 changed files with 284 additions and 92 deletions
+1 -1
View File
@@ -910,7 +910,7 @@ proc/admin_notice(var/message, var/rights)
for(var/datum/antagonist/antag in ticker.mode.antag_templates)
if(antag.is_antagonist(M))
return 2
else if(M.special_role)
if(M.special_role)
return 1
if(isrobot(character))
@@ -61,3 +61,11 @@
lunchboxes[initial(lunchbox.name)] = lunchbox_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lunchboxes))
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
/datum/gear/towel
display_name = "towel"
path = /obj/item/weapon/towel
/datum/gear/towel/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
@@ -143,7 +143,7 @@
/datum/gear/suit/roles/poncho/science
display_name = "poncho, science"
path = /obj/item/clothing/suit/poncho/roles/science
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobotanist")
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
/datum/gear/suit/roles/poncho/cargo
display_name = "poncho, cargo"
@@ -218,7 +218,7 @@
/datum/gear/suit/wintercoat/science
display_name = "winter coat, science"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/science
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobotanist")
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
/datum/gear/suit/wintercoat/engineering
display_name = "winter coat, engineering"
@@ -233,7 +233,7 @@
/datum/gear/suit/wintercoat/hydro
display_name = "winter coat, hydroponics"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/hydro
allowed_roles = list("Botanist", "Xenobotanist")
allowed_roles = list("Botanist", "Xenobiologist")
/datum/gear/suit/wintercoat/cargo
display_name = "winter coat, cargo"
@@ -88,72 +88,72 @@
shorts[initial(short_type.name)] = short_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(shorts))
/datum/gear/uniform/skirt/ce
/datum/gear/uniform/job_skirt/ce
display_name = "skirt, ce"
path = /obj/item/clothing/under/rank/engineer/chief_engineer/skirt
allowed_roles = list("Chief Engineer")
/datum/gear/uniform/skirt/atmos
/datum/gear/uniform/job_skirt/atmos
display_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt
allowed_roles = list("Chief Engineer","Atmospheric Technician")
/datum/gear/uniform/skirt/eng
/datum/gear/uniform/job_skirt/eng
display_name = "skirt, engineer"
path = /obj/item/clothing/under/rank/engineer/skirt
allowed_roles = list("Chief Engineer","Station Engineer")
/datum/gear/uniform/skirt/roboticist
/datum/gear/uniform/job_skirt/roboticist
display_name = "skirt, roboticist"
path = /obj/item/clothing/under/rank/roboticist/skirt
allowed_roles = list("Research Director","Roboticist")
/datum/gear/uniform/skirt/cmo
/datum/gear/uniform/job_skirt/cmo
display_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/skirt/chem
/datum/gear/uniform/job_skirt/chem
display_name = "skirt, chemist"
path = /obj/item/clothing/under/rank/medical/chemist/skirt
allowed_roles = list("Chief Medical Officer","Chemist")
/datum/gear/uniform/skirt/viro
/datum/gear/uniform/job_skirt/viro
display_name = "skirt, virologist"
path = /obj/item/clothing/under/rank/medical/virologist/skirt
allowed_roles = list("Chief Medical Officer","Medical Doctor")
/datum/gear/uniform/skirt/med
/datum/gear/uniform/job_skirt/med
display_name = "skirt, medical"
path = /obj/item/clothing/under/rank/medical/skirt
allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Psychiatrist","Paramedic")
/datum/gear/uniform/skirt/sci
/datum/gear/uniform/job_skirt/sci
display_name = "skirt, scientist"
path = /obj/item/clothing/under/rank/scientist/skirt
allowed_roles = list("Research Director","Scientist")
allowed_roles = list("Research Director","Scientist", "Xenobiologist")
/datum/gear/uniform/skirt/cargo
/datum/gear/uniform/job_skirt/cargo
display_name = "skirt, cargo"
path = /obj/item/clothing/under/rank/cargotech/skirt
allowed_roles = list("Quartermaster","Cargo Technician")
/datum/gear/uniform/skirt/qm
/datum/gear/uniform/job_skirt/qm
display_name = "skirt, QM"
path = /obj/item/clothing/under/rank/cargo/skirt
allowed_roles = list("Quartermaster")
/datum/gear/uniform/skirt/warden
/datum/gear/uniform/job_skirt/warden
display_name = "skirt, warden"
path = /obj/item/clothing/under/rank/security/warden/skirt
allowed_roles = list("Head of Security", "Warden")
/datum/gear/uniform/skirt/security
/datum/gear/uniform/job_skirt/security
display_name = "skirt, security"
path = /obj/item/clothing/under/rank/security/skirt
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/uniform/skirt/head_of_security
/datum/gear/uniform/job_skirt/head_of_security
display_name = "skirt, hos"
path = /obj/item/clothing/under/rank/security/head_of_security/skirt
allowed_roles = list("Head of Security")
+6 -17
View File
@@ -678,27 +678,16 @@
if (src.loc == usr)
switch(sensor_mode)
if(0)
usr << "You disable your suit's remote sensing equipment."
usr.visible_message("[usr] adjusts their sensors.", "You disable your suit's remote sensing equipment.")
if(1)
usr << "Your suit will now report whether you are live or dead."
usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report whether you are live or dead.")
if(2)
usr << "Your suit will now report your vital lifesigns."
usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns.")
if(3)
usr << "Your suit will now report your vital lifesigns as well as your coordinate position."
usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns as well as your coordinate position.")
else if (istype(src.loc, /mob))
switch(sensor_mode)
if(0)
for(var/mob/V in viewers(usr, 1))
V.show_message("\red [usr] disables [src.loc]'s remote sensing equipment.", 1)
if(1)
for(var/mob/V in viewers(usr, 1))
V.show_message("[usr] turns [src.loc]'s remote sensors to binary.", 1)
if(2)
for(var/mob/V in viewers(usr, 1))
V.show_message("[usr] sets [src.loc]'s sensors to track vitals.", 1)
if(3)
for(var/mob/V in viewers(usr, 1))
V.show_message("[usr] sets [src.loc]'s sensors to maximum.", 1)
usr.visible_message("[usr] adjusts [src.loc]'s sensors.", "You adjust [src.loc]'s sensors.")
/obj/item/clothing/under/verb/toggle()
set name = "Toggle Suit Sensors"
+2 -3
View File
@@ -133,7 +133,6 @@
chest = new chest_type(src)
if(allowed)
chest.allowed = allowed
chest.slowdown = offline_slowdown
verbs |= /obj/item/weapon/rig/proc/toggle_chest
for(var/obj/item/piece in list(gloves,helmet,boots,chest))
@@ -332,14 +331,14 @@
offline = 0
if(istype(wearer) && !wearer.wearing_rig)
wearer.wearing_rig = src
chest.slowdown = initial(slowdown)
slowdown = initial(slowdown)
if(offline)
if(offline == 1)
for(var/obj/item/rig_module/module in installed_modules)
module.deactivate()
offline = 2
chest.slowdown = offline_slowdown
slowdown = offline_slowdown
return
if(cell && cell.charge > 0 && electrified > 0)
+2 -2
View File
@@ -46,14 +46,14 @@
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_jacket"
item_state = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/suit/armor/vest/warden/alt
name = "Warden's jacket"
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_alt"
item_state = "warden_alt"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/suit/armor/riot
+5
View File
@@ -116,26 +116,31 @@
name = "khaki skirt"
desc = "A skirt that is a khaki color."
icon_state = "skirt_khaki"
worn_state = "skirt_khaki"
/obj/item/clothing/under/skirt/black
name = "short black skirt"
desc = "A skirt that is a shiny black."
icon_state = "skirt_short_black"
worn_state = "skirt_short_black"
/obj/item/clothing/under/skirt/blue
name = "short blue skirt"
desc = "A skirt that is a shiny blue."
icon_state = "skirt_short_blue"
worn_state = "skirt_short_blue"
/obj/item/clothing/under/skirt/red
name = "short red skirt"
desc = "A skirt that is a shiny red."
icon_state = "skirt_short_red"
worn_state = "skirt_short_red"
/obj/item/clothing/under/skirt/swept
name = "swept skirt"
desc = "A skirt that is swept to one side."
icon_state = "skirt_swept"
worn_state = "skirt_swept"
/obj/item/clothing/under/skirt/plaid_blue
name = "blue plaid skirt"
+2 -2
View File
@@ -49,7 +49,7 @@
if(!on_fire && istype(W, /obj/item/weapon/flame))
var/obj/item/weapon/flame/F = W
if(F.lit)
ignite()
src.ignite()
if(on_fire)
visible_message("<span class='warning'>\The [user] lights [src] with [W].</span>")
else
@@ -151,7 +151,7 @@
/obj/item/weapon/reagent_containers/glass/rag/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature >= 50 + T0C)
ignite()
src.ignite()
if(exposed_temperature >= 900 + T0C)
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
+1 -1
View File
@@ -11,7 +11,7 @@ var/list/dreams = list(
"the quartermaster","a cargo technician","the botanist","a shaft miner","the psychologist","the chemist","the geneticist",
"the virologist","the roboticist","the chef","the bartender","the chaplain","the librarian","a mouse","an ert member",
"a beach","the holodeck","a smokey room","a voice","the cold","a mouse","an operating table","the bar","the rain","a skrell",
"a unathi","a tajaran","the ai core","the mining station","the research station","a beaker of strange liquid",
"an unathi","a tajaran","the ai core","the mining station","the research station","a beaker of strange liquid",
)
mob/living/carbon/proc/dream()
+5 -24
View File
@@ -154,21 +154,6 @@
if(stat != CONSCIOUS) //Let's not worry about tourettes if you're not conscious.
return
//Vision
if(species.vision_organ)
if(internal_organs_by_name[species.vision_organ]) // Vision organs cut out? Permablind.
eye_blind = 0
blinded = 0
eye_blurry = 0
else
eye_blind = 1
blinded = 1
eye_blurry = 1
else // Presumably if a species has no vision organs, they see via some other means.
eye_blind = 0
blinded = 0
eye_blurry = 0
if (disabilities & EPILEPSY)
if ((prob(1) && paralysis < 1))
src << "\red You have a seizure!"
@@ -970,19 +955,18 @@
if(species.vision_organ)
vision = internal_organs_by_name[species.vision_organ]
if(!vision) // Presumably if a species has no vision organs, they see via some other means.
if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
eye_blind = 0
blinded = 0
eye_blurry = 0
else if(vision.is_broken()) // Vision organs cut out or broken? Permablind.
else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind.
eye_blind = 1
blinded = 1
eye_blurry = 1
else
//blindness
if(sdisabilities & BLIND) // Disabled-blind, doesn't get better on its own
else //You have the requisite organs
if(sdisabilities & BLIND) // Disabled-blind, doesn't get better on its own
blinded = 1
else if(eye_blind) // Blindness, heals slowly over time
else if(eye_blind) // Blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
blinded = 1
else if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) //resting your eyes with a blindfold heals blurry eyes faster
@@ -1584,9 +1568,6 @@
if(stat == DEAD)
holder.icon_state = "huddead"
holder2.icon_state = "huddead"
else if(status_flags & XENO_HOST)
holder.icon_state = "hudxeno"
holder2.icon_state = "hudxeno"
else if(foundVirus)
holder.icon_state = "hudill"
else if(has_brain_worms())
@@ -23,7 +23,6 @@
owner = newowner
loc = null
verbs.Cut()
toggle_permission(TARGET_CAN_RADIO)
/obj/aiming_overlay/proc/toggle_permission(var/perm)
@@ -548,6 +548,20 @@
cup_name = "cup of milk"
cup_desc = "White and nutritious goodness!"
/datum/reagent/drink/milk/chocolate
name = "Chocolate Milk"
id = "chocolate_milk"
description = "A delicious mixture of perfectly healthy mix and terrible chocolate."
color = "#74533b"
glass_icon_state = "glass_brown"
glass_name = "glass of chocolate milk"
glass_desc = "Delciously fattening!"
cup_icon_state = "cup_brown"
cup_name = "cup of chocolate milk"
cup_desc = "Deliciously fattening!"
/datum/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
@@ -123,6 +123,23 @@
..()
reagents.add_reagent("soymilk", 50)
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton
name = "Small Carton of Milk"
volume = 30
icon_state = "mini-milk"
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New()
..()
reagents.add_reagent("milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate
name = "Small Carton of Chocolate Milk"
desc = "It's milk! This one is in delicious chocolate flavour."
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New()
..()
reagents.add_reagent("chocolate_milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/coffee
name = "Robust Coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
@@ -40,7 +40,7 @@
if(!isGlass || !smash_duration)
return 0
var/list/chance_table = list(90, 90, 85, 85, 60, 35, 15) //starting from distance 0
var/list/chance_table = list(100, 95, 90, 85, 75, 55, 35) //starting from distance 0
var/idx = max(distance + 1, 1) //since list indices start at 1
if(idx > chance_table.len)
return 0
@@ -133,3 +133,46 @@
name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future.
else
name = "shot glass"
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask
name = "fitness shaker"
desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits."
icon_state = "fitness-cup_black"
volume = 100
matter = list("plastic" = 2000)
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New()
..()
icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black")
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change()
overlays.Cut()
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "fitness-cup10")
switch(reagents.total_volume)
if(0 to 10) filling.icon_state = "fitness-cup10"
if(11 to 20) filling.icon_state = "fitness-cup20"
if(21 to 29) filling.icon_state = "fitness-cup30"
if(30 to 39) filling.icon_state = "fitness-cup40"
if(40 to 49) filling.icon_state = "fitness-cup50"
if(50 to 59) filling.icon_state = "fitness-cup60"
if(60 to 69) filling.icon_state = "fitness-cup70"
if(70 to 79) filling.icon_state = "fitness-cup80"
if(80 to 89) filling.icon_state = "fitness-cup90"
if(90 to INFINITY) filling.icon_state = "fitness-cup100"
filling.color += reagents.get_color()
overlays += filling
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake
name = "protein shake"
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New()
..()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("iron", 10)
reagents.add_reagent("protein", 15)
reagents.add_reagent("water", 45)
on_reagent_change()
@@ -273,6 +273,19 @@
reagents.add_reagent("sugar", 3)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar
name = "protein bar"
desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident."
icon_state = "proteinbar"
trash = /obj/item/trash/candy/proteinbar
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New()
..()
reagents.add_reagent("nutriment", 9)
reagents.add_reagent("protein", 4)
reagents.add_reagent("sugar", 4)
bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/candy/donor
name = "Donor Candy"
desc = "A little treat for blood donors."
@@ -294,3 +294,12 @@
/obj/item/weapon/reagent_containers/pill/spaceacillin/New()
..()
reagents.add_reagent("spaceacillin", 15)
/obj/item/weapon/reagent_containers/pill/diet
name = "diet pill"
desc = "Guaranteed to get you slim!"
icon_state = "pill9"
/obj/item/weapon/reagent_containers/pill/diet/New()
..()
reagents.add_reagent("lipozine", 2)
@@ -344,3 +344,12 @@
reagents.add_reagent("chloralhydrate", 50)
mode = SYRINGE_INJECT
update_icon()
/obj/item/weapon/reagent_containers/syringe/steroid
name = "Syringe (anabolic steroids)"
desc = "Contains drugs for muscle growth."
/obj/item/weapon/reagent_containers/syringe/steroid/New()
..()
reagents.add_reagent("adrenaline",5)
reagents.add_reagent("hyperzine",10)
+8 -12
View File
@@ -42,8 +42,6 @@
<I>This spell temporarly blinds a single person and does not require wizard garb.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=subjugation'>Subjugation</A> (30)<BR>
<I>This spell temporarily subjugates a target's mind and does not require wizard garb.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=mindswap'>Mind Transfer</A> (60)<BR>
<I>This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=forcewall'>Forcewall</A> (10)<BR>
<I>This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=blink'>Blink</A> (2)<BR>
@@ -56,8 +54,6 @@
<I>This spell creates your ethereal form, temporarily making you invisible and able to pass through walls.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=knock'>Knock</A> (10)<BR>
<I>This spell opens nearby doors and does not require wizard garb.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=horseman'>Curse of the Horseman</A> (15)<BR>
<I>This spell will curse a person to wear an unremovable horse mask (it has glue on the inside) and speak like a horse. It does not require wizard garb.</I><BR>
<A href='byond://?src=\ref[src];spell_choice=noclothes'>Remove Clothes Requirement</A> <b>Warning: this takes away 2 spell choices.</b><BR>
<HR>
<B>Artefacts:</B><BR>
@@ -174,10 +170,10 @@
feedback_add_details("wizard_spell_learned","SJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
H.add_spell(new/spell/targeted/subjugation)
temp = "You have learned subjugate."
if("mindswap")
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
H.add_spell(new/spell/targeted/mind_transfer)
temp = "You have learned mindswap."
// if("mindswap")
// 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
// H.add_spell(new/spell/targeted/mind_transfer)
// temp = "You have learned mindswap."
if("forcewall")
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
H.add_spell(new/spell/aoe_turf/conjure/forcewall)
@@ -202,10 +198,10 @@
feedback_add_details("wizard_spell_learned","KN") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
H.add_spell(new/spell/aoe_turf/knock)
temp = "You have learned knock."
if("horseman")
feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
H.add_spell(new/spell/targeted/equip_item/horsemask)
temp = "You have learned curse of the horseman."
// if("horseman")
// feedback_add_details("wizard_spell_learned","HH") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
// H.add_spell(new/spell/targeted/equip_item/horsemask)
// temp = "You have learned curse of the horseman."
if("mentalfocus")
feedback_add_details("wizard_spell_learned","MF") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
new /obj/item/weapon/gun/energy/staff/focus(get_turf(H))