Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into lavaland_megafauna

# Conflicts:
#	code/__DEFINES/misc.dm
#	code/game/dna/genes/goon_powers.dm
#	code/game/dna/genes/vg_powers.dm
#	code/game/objects/effects/overlays.dm
#	code/game/objects/structures/crates_lockers/closets.dm
#	code/game/objects/structures/crates_lockers/closets/statue.dm
#	code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
#	icons/mob/back.dmi
#	icons/obj/storage.dmi
This commit is contained in:
Markolie
2016-12-23 19:32:19 +01:00
481 changed files with 14406 additions and 13939 deletions
+4 -12
View File
@@ -643,9 +643,7 @@
//this is necessarily damaging
var/damage = rand(1,5)
to_chat(M, "<span class='danger'>The unloading machine grabs you with a hard metallic claw!</span>")
if(M.client)
M.client.eye = master
M.client.perspective = EYE_PERSPECTIVE
M.reset_perspective(master)
M.loc = master
master.types[M.type] = src
M.apply_damage(damage) // todo: ugly
@@ -699,10 +697,7 @@
//this is necessarily damaging
var/damage = rand(1,5)
to_chat(M, "<span class='danger'>The unloading machine grabs you with a hard metallic claw!</span>")
if(M.client)
M.client.eye = master
M.client.perspective = EYE_PERSPECTIVE
M.loc = master
M.forceMove(master)
master.types[M.type] = src
M.apply_damage(damage) // todo: ugly
M.visible_message("\red [M.name] gets pulled into the machine!")
@@ -710,11 +705,8 @@
outlet_reaction(var/atom/W,var/turf/D)
var/mob/living/M = W
M.loc = master.loc
M.forceMove(master.loc)
M.dir = master.outdir
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
D = get_step(D,master.outdir) // throw attempt
eject_speed = rand(0,4)
@@ -796,4 +788,4 @@
var/punches = punch(M,remaining / PUNCH_WORK)
if(punches>1)master.sleep++
return punches * PUNCH_WORK
#undef MAXCOIL
#undef MAXCOIL
+29 -2
View File
@@ -150,7 +150,10 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
preview_icon.Blend(temp, ICON_OVERLAY)
//Tail
if(H.species.tail && H.species.flags & HAS_TAIL)
if(H.body_accessory && istype(H.body_accessory, /datum/body_accessory/tail))
temp = new/icon("icon" = H.body_accessory.icon, "icon_state" = H.body_accessory.icon_state)
preview_icon.Blend(temp, ICON_OVERLAY)
else if(H.species.tail && H.species.bodyflags & HAS_TAIL)
temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.species.tail]_s")
preview_icon.Blend(temp, ICON_OVERLAY)
@@ -173,6 +176,17 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
if(H.species.bodyflags & HAS_SKIN_COLOR)
preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD)
//Tail Markings
var/icon/t_marking_s
if(H.species.bodyflags & HAS_TAIL_MARKINGS)
var/tail_marking = H.m_styles["tail"]
var/datum/sprite_accessory/tail_marking_style = marking_styles_list[tail_marking]
if(tail_marking_style && tail_marking_style.species_allowed)
t_marking_s = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]_s")
t_marking_s.Blend(H.m_colours["tail"], ICON_ADD)
if(!(H.body_accessory && istype(H.body_accessory, /datum/body_accessory/body)))
preview_icon.Blend(t_marking_s, ICON_OVERLAY)
var/icon/face_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "bald_s")
if(!(H.species.bodyflags & NO_EYES))
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
@@ -190,7 +204,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
// I'll want to make a species-specific proc for this sooner or later
// But this'll do for now
if(head_organ.species.name == "Slime People")
hair_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_ADD)
hair_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_AND)
else
hair_s.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
@@ -378,9 +392,22 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
else
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
preview_icon.Blend(face_s, ICON_OVERLAY) // Why do we do this twice
if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY)
//Bus body accessories that go over clothes.
if(H.body_accessory && istype(H.body_accessory, /datum/body_accessory/body))
temp = new/icon("icon" = H.body_accessory.icon, "icon_state" = H.body_accessory.icon_state)
if(H.body_accessory.pixel_x_offset)
temp.Shift(EAST, H.body_accessory.pixel_x_offset)
if(H.body_accessory.pixel_y_offset)
temp.Shift(NORTH, H.body_accessory.pixel_y_offset)
if(H.species.bodyflags & HAS_SKIN_COLOR)
temp.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), H.body_accessory.blend_mode)
if(t_marking_s)
temp.Blend(t_marking_s, ICON_OVERLAY)
preview_icon.Blend(temp, ICON_OVERLAY)
qdel(face_s)
qdel(clothes_s)
+1 -1
View File
@@ -1034,7 +1034,7 @@ body
to_chat(usr, "Mob doesn't exist anymore")
return
if(!(locateUID(rem_organ) in M.internal_organs))
if(!(rem_organ in M.internal_organs))
to_chat(usr, "Mob does not have that organ.")
return
@@ -35,6 +35,6 @@ Bonus
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>")
else
to_chat(M, "<span class='userdanger'>You can't think straight!</span>")
M.confused = min(100, M.confused + 8)
M.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
return
@@ -33,11 +33,11 @@ Bonus
if(3, 4)
to_chat(M, "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>")
if(5)
if(!(M.ear_deaf))
if(!(M.disabilities & DEAF))
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.setEarDamage(-1,INFINITY) //Shall be enough
M.BecomeDeaf()
spawn(200)
if(M)
to_chat(M, "<span class='warning'>The ringing in your ears fades...</span>")
M.setEarDamage(-1,0)
return
M.CureDeaf()
return
@@ -36,6 +36,6 @@ Bonus
to_chat(M, "<span class='warning'><b>[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]</b></span>")
else
to_chat(M, "<span class='userdanger'>[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]</span>")
M.hallucination += 5
M.AdjustHallucinate(5)
return
+4 -4
View File
@@ -24,18 +24,18 @@
to_chat(affected_mob, "<span class='notice'>You feel panicky.</span>")
if(prob(2))
to_chat(affected_mob, "<span class='danger'>You're overtaken with panic!</span>")
affected_mob.confused += (rand(2,3))
affected_mob.AdjustConfused(rand(2,3))
if(4)
if(prob(10))
to_chat(affected_mob, "<span class='danger'>You feel butterflies in your stomach.</span>")
if(prob(5))
affected_mob.visible_message("<span class='danger'>[affected_mob] stumbles around in a panic.</span>", \
"<span class='userdanger'>You have a panic attack!</span>")
affected_mob.confused += (rand(6,8))
affected_mob.jitteriness += (rand(6,8))
affected_mob.AdjustConfused(rand(6,8))
affected_mob.AdjustJitter(rand(6,8))
if(prob(2))
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up butterflies!</span>", \
"<span class='userdanger'>You cough up butterflies!</span>")
new /mob/living/simple_animal/butterfly(affected_mob.loc)
new /mob/living/simple_animal/butterfly(affected_mob.loc)
return
return
+2 -2
View File
@@ -106,7 +106,7 @@
if(3)
if(prob(4))
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
affected_mob.confused += 10
affected_mob.AdjustConfused(10)
if(4)
if(prob(3))
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
@@ -241,4 +241,4 @@
stage3 = list("<span class='danger'>Your appendages are melting away.</span>", "<span class='danger'>Your limbs begin to lose their shape.</span>")
stage4 = list("<span class='danger'>You're ravenous.</span>")
stage5 = list("<span class='danger'>You have become a morph.</span>")
new_form = /mob/living/simple_animal/hostile/morph
new_form = /mob/living/simple_animal/hostile/morph
+1 -2
View File
@@ -44,7 +44,7 @@
affected_mob.AdjustSleeping(5)
if(prob(2))
to_chat(affected_mob, "<span class='userdanger'>You feel your mind relax and your thoughts drift!</span>")
affected_mob.confused = min(100, affected_mob.confused + 8)
affected_mob.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
if(prob(10))
affected_mob.vomit(20)
if(prob(3))
@@ -55,4 +55,3 @@
to_chat(affected_mob, "<span class='danger'>[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]</span>")
affected_mob.bodytemperature += 40
return
+3 -3
View File
@@ -20,15 +20,15 @@
if(prob(10))
affected_mob.emote(pick("cough","groan", "gasp"))
affected_mob.losebreath++
affected_mob.AdjustLoseBreath(1)
if(prob(15))
if(prob(33))
to_chat(affected_mob, "<span class='danger'>You feel sickly and weak.</span>")
affected_mob.slowed += 3
affected_mob.AdjustSlowed(3)
affected_mob.adjustToxLoss(toxdamage)
if(prob(5))
to_chat(affected_mob, "<span class='danger'>Your joints ache horribly!</span>")
affected_mob.Weaken(stuntime)
affected_mob.Stun(stuntime)
affected_mob.Stun(stuntime)
+14 -15
View File
@@ -61,7 +61,7 @@
else if(istype(used_atom, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = used_atom
if(C.amount<4)
to_chat(user, ("There's not enough cable to finish the task."))
to_chat(user, ("<span class='warning'>There's not enough cable to finish the task.</span>"))
return 0
else
C.use(4)
@@ -69,7 +69,7 @@
else if(istype(used_atom, /obj/item/stack))
var/obj/item/stack/S = used_atom
if(S.amount < 5)
to_chat(user, ("There's not enough material in this stack."))
to_chat(user, ("<span class='warning'>There's not enough material in this stack.</span>"))
return 0
else
S.use(5)
@@ -106,30 +106,29 @@
return
proc/try_consume(mob/user as mob, atom/used_atom, amount)
if(amount>0)
// STACKS
if(istype(used_atom,/obj/item/stack))
var/obj/item/stack/stack=used_atom
if(stack.amount < amount)
to_chat(user, "\red You don't have enough [stack]! You need at least [amount].")
return 0
stack.use(amount)
if(amount > 0)
// CABLES
if(istype(used_atom,/obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil=used_atom
if(coil.amount < amount)
to_chat(user, "\red You don't have enough cable! You need at least [amount] coils.")
if(!coil.use(amount))
to_chat(user, "<span class='warning'>You don't have enough cable! You need at least [amount] coils.</span>")
return 0
coil.use(amount)
// WELDER
if(istype(used_atom,/obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/welder=used_atom
if(!welder.isOn())
to_chat(user, "\blue You tap the [src] with your unlit welder. [pick("Ding","Dong")].")
to_chat(user, "<span class='notice'>You tap the [src] with your unlit welder. [pick("Ding","Dong")].</span>")
return 0
if(!welder.remove_fuel(amount,user))
to_chat(user, "\red You don't have enough fuel!")
to_chat(user, "<span class='warning'>You don't have enough fuel!</span>")
return 0
// STACKS
if(istype(used_atom,/obj/item/stack))
var/obj/item/stack/stack=used_atom
if(stack.amount < amount)
to_chat(user, "<span class='warning'>You don't have enough [stack]! You need at least [amount].</span>")
return 0
stack.use(amount)
return 1
/datum/construction/reversible
+6 -6
View File
@@ -42,7 +42,7 @@
var/byproduct // example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash
/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
/datum/recipe/proc/check_reagents(datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous
. = 1
for(var/r_r in reagents)
var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r)
@@ -55,7 +55,7 @@
return -1
return .
/datum/recipe/proc/check_fruit(var/obj/container)
/datum/recipe/proc/check_fruit(obj/container)
. = 1
if(fruit && fruit.len)
var/list/checklist = list()
@@ -74,7 +74,7 @@
break
return .
/datum/recipe/proc/check_items(var/obj/container as obj)
/datum/recipe/proc/check_items(obj/container)
. = 1
if(items && items.len)
var/list/checklist = list()
@@ -96,7 +96,7 @@
return .
//general version
/datum/recipe/proc/make(var/obj/container as obj)
/datum/recipe/proc/make(obj/container)
var/obj/result_obj = new result(container)
for(var/obj/O in (container.contents-result_obj))
O.reagents.trans_to(result_obj, O.reagents.total_volume)
@@ -106,7 +106,7 @@
return result_obj
// food-related
/datum/recipe/proc/make_food(var/obj/container as obj)
/datum/recipe/proc/make_food(obj/container)
var/obj/result_obj = new result(container)
for(var/obj/O in (container.contents-result_obj))
if(O.reagents)
@@ -118,7 +118,7 @@
score_meals++
return result_obj
/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact = 1 as num)
/proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj, exact = 1)
if(!exact)
exact = -1
var/list/datum/recipe/possible_recipes = new
+1 -1
View File
@@ -110,7 +110,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/mob/living/carbon/human/caster = user
if(caster.remoteview_target)
caster.remoteview_target = null
caster.reset_view(0)
caster.reset_perspective(0)
return 0
if(is_admin_level(user.z) && (!centcom_cancast || ticker.mode.name == "ragin' mages")) //Certain spells are not allowed on the centcom zlevel
+3 -3
View File
@@ -16,7 +16,7 @@
adjustBrainLoss(80)
nutrition = 9000
overeatduration = 9000
confused = 30
Confused(30)
if(mind)
mind.assigned_role = "Cluwne"
@@ -44,8 +44,8 @@
adjustBrainLoss(-120)
nutrition = NUTRITION_LEVEL_STARVING
overeatduration = 0
confused = 0
jitteriness = 0
SetConfused(0)
SetJitter(0)
if(mind)
mind.assigned_role = "Lawyer"
+3 -3
View File
@@ -50,8 +50,8 @@
target.Paralyse(amt_paralysis)
target.Stun(amt_stunned)
target.eye_blind += amt_eye_blind
target.eye_blurry += amt_eye_blurry
target.AdjustEyeBlind(amt_eye_blind)
target.AdjustEyeBlurry(amt_eye_blurry)
//summoning
if(summon_type)
new summon_type(target.loc, target)
new summon_type(target.loc, target)
+3 -4
View File
@@ -581,7 +581,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/clothing/head/helmet/space,
/obj/item/clothing/head/helmet/space,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,)
/obj/item/clothing/mask/breath)
cost = 30
containertype = /obj/structure/closet/crate/secure
containername = "space suit crate"
@@ -607,9 +607,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
name = "Thermo-Electric Generator Crate"
contains = list(
/obj/machinery/power/generator,
/obj/machinery/atmospherics/binary/circulator,
/obj/machinery/atmospherics/binary/circulator
)
/obj/item/pipe/circulator,
/obj/item/pipe/circulator)
cost = 25
containertype = /obj/structure/closet/crate/secure
containername = "thermo-electric generator crate"
+1
View File
@@ -207,6 +207,7 @@ var/list/uplink_items = list()
item = /obj/item/weapon/caution/proximity_sign
cost = 4
job = list("Janitor")
surplus = 0
//Medical