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

Conflicts:
	code/modules/projectiles/guns/projectile/automatic.dm
	icons/mob/back.dmi
This commit is contained in:
Markolie
2015-09-15 04:18:27 +02:00
108 changed files with 1554 additions and 2133 deletions
+2 -1
View File
@@ -628,6 +628,7 @@ atom/proc/create_reagents(var/max_vol)
reagents.my_atom = src
/datum/reagents/Destroy()
..()
processing_objects.Remove(src)
for(var/datum/reagent/R in reagent_list)
qdel(R)
@@ -635,4 +636,4 @@ atom/proc/create_reagents(var/max_vol)
reagent_list = null
if(my_atom && my_atom.reagents == src)
my_atom.reagents = null
return ..()
return QDEL_HINT_QUEUE
+95 -134
View File
@@ -1,188 +1,149 @@
// These can only be applied by blobs. They are what blobs are made out of.
// The 4 damage
/datum/reagent/blob
description = ""
var/message = "The blob strikes you" //message sent to any mob hit by the blob
var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt
/datum/reagent/blob/boiling_oil
/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, volume, show_message, touch_protection)
return round(volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume.
/datum/reagent/blob/ripping_tendrils //does brute and a little stamina damage
name = "Ripping Tendrils"
id = "ripping_tendrils"
color = "#7F0000"
message_living = ", and you feel your skin ripping and tearing off"
/datum/reagent/blob/ripping_tendrils/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
volume = ..()
M.apply_damage(0.6*volume, BRUTE)
M.adjustStaminaLoss(0.4*volume)
if(iscarbon(M))
M.emote("scream")
/datum/reagent/blob/boiling_oil //sets you on fire, does burn damage
name = "Boiling Oil"
id = "boiling_oil"
description = ""
color = "#B68D00"
message = "The blob splashes you with burning oil"
message_living = ", and you feel your skin char and melt"
/datum/reagent/blob/boiling_oil/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(15*ratio, BURN)
M.adjust_fire_stacks(2*ratio)
M.adjust_fire_stacks(round(volume/12))
volume = ..()
M.apply_damage(0.6*volume, BURN)
M.IgniteMob()
if(isliving(M))
M.emote("scream")
/datum/reagent/blob/toxic_goop
name = "Toxic Goop"
id = "toxic_goop"
description = ""
color = "#008000"
/datum/reagent/blob/envenomed_filaments //toxin, hallucination, and some bonus spore toxin
name = "Envenomed Filaments"
id = "envenomed_filaments"
color = "#9ACD32"
message_living = ", and you feel sick and nauseated"
/datum/reagent/blob/toxic_goop/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
/datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(20*ratio, TOX)
volume = ..()
M.apply_damage(0.6*volume, TOX)
M.hallucination += 0.6*volume
M.reagents.add_reagent("spores", 0.4*volume)
/datum/reagent/blob/skin_ripper
name = "Skin Ripper"
id = "skin_ripper"
description = ""
color = "#FF4C4C"
message_living = ", and you feel your skin ripping and tearing off"
/datum/reagent/blob/skin_ripper/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(20*ratio, BRUTE)
if(iscarbon(M))
M.emote("scream")
// Combo Reagents
/datum/reagent/blob/skin_melter
name = "Skin Melter"
id = "skin_melter"
description = ""
color = "#7F0000"
message_living = ", and you feel your skin char and melt"
/datum/reagent/blob/skin_melter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(10*ratio, BRUTE)
M.apply_damage(10*ratio, BURN)
M.adjust_fire_stacks(2*ratio)
M.IgniteMob()
if(iscarbon(M))
M.emote("scream")
/datum/reagent/blob/lung_destroying_toxin
name = "Lung Destroying Toxin"
id = "lung_destroying_toxin"
description = ""
/datum/reagent/blob/lexorin_jelly //does tons of oxygen damage and a little brute
name = "Lexorin Jelly"
id = "lexorin_jelly"
color = "#00FFC5"
message_living = ", and your lungs feel heavy and weak"
/datum/reagent/blob/lung_destroying_toxin/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
/datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(20* ratio, OXY)
M.losebreath += 15*ratio
M.apply_damage(20*ratio, TOX)
volume = ..()
M.apply_damage(0.4*volume, BRUTE)
M.apply_damage(1*volume, OXY)
M.losebreath += round(0.3*volume)
// Special Reagents
/datum/reagent/blob/radioactive_liquid
name = "Radioactive Liquid"
id = "radioactive_liquid"
description = ""
color = "#00EE00"
message_living = ", and your skin feels papery and everything hurts"
/datum/reagent/blob/kinetic //does semi-random brute damage
name = "Kinetic Gelatin"
id = "kinetic"
color = "#FFA500"
message = "The blob pummels you"
/datum/reagent/blob/radioactive_liquid/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
/datum/reagent/blob/kinetic/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(10*ratio, BRUTE)
if(istype(M, /mob/living/carbon/human))
M.apply_effect(40*ratio,IRRADIATE,0)
if(prob(33*ratio))
randmuti(M)
if(prob(98))
randmutb(M)
domutcheck(M, null)
M.UpdateAppearance()
volume = ..()
var/damage = rand(5, 35)/25
M.apply_damage(damage*volume, BRUTE)
/datum/reagent/blob/cryogenic_liquid //does low burn damage and stamina damage and cools targets down
name = "Cryogenic Liquid"
id = "cryogenic_liquid"
color = "#8BA6E9"
message = "The blob splashes you with an icy liquid"
message_living = ", and you feel cold and tired"
/datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
volume = ..()
M.apply_damage(0.4*volume, BURN)
M.adjustStaminaLoss(0.4*volume)
M.reagents.add_reagent("frostoil", 0.4*volume)
/datum/reagent/blob/dark_matter
name = "Dark Matter"
id = "dark_matter"
description = ""
color = "#61407E"
message = "You feel a thrum as the blob strikes you, and everything flies at you"
/datum/reagent/blob/dark_matter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(15*ratio, BRUTE)
reagent_vortex(M, 0)
reagent_vortex(M, 0, volume)
volume = ..()
M.apply_damage(0.6*volume, BRUTE)
/datum/reagent/blob/b_sorium
name = "Sorium"
id = "b_sorium"
description = ""
color = "#808000"
message = "The blob slams into you, and sends you flying"
/datum/reagent/blob/b_sorium/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.apply_damage(15*ratio, BRUTE)
reagent_vortex(M, 1)
reagent_vortex(M, 1, volume)
volume = ..()
M.apply_damage(0.6*volume, BRUTE)
/datum/reagent/blob/explosive // I'm gonna burn in hell for this one
name = "Explosive Gelatin"
id = "explosive"
description = ""
color = "#FFA500"
message = "The blob strikes you, and its tendrils explode"
/datum/reagent/blob/explosive/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
if(prob(75*ratio))
explosion(M.loc, 0, 0, 1, 0, 0)
/datum/reagent/blob/omnizine
name = "Omnizine"
id = "b_omnizine"
description = ""
color = "#C8A5DC"
message = "The blob squirts something at you"
message_living = ", and you feel great"
/datum/reagent/blob/omnizine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.reagents.add_reagent("omnizine", 11*ratio)
/datum/reagent/blob/spacedrugs
name = "Space drugs"
id = "b_space_drugs"
description = ""
color = "#60A584"
message = "The blob squirts something at you"
message_living = ", and you feel funny"
/datum/reagent/blob/spacedrugs/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
var/ratio = volume/25
M.hallucination += 20*ratio
M.reagents.add_reagent("space_drugs", 15*ratio)
M.apply_damage(10*ratio, TOX)
/datum/reagent/blob/proc/reagent_vortex(var/mob/living/M as mob, var/setting_type)
/datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, volume)
var/turf/pull = get_turf(M)
for(var/atom/movable/X in range(4,pull))
if(istype(X, /atom/movable))
if((X) && !X.anchored)
if(setting_type)
step_away(X,pull)
step_away(X,pull)
step_away(X,pull)
step_away(X,pull)
var/range_power = Clamp(round(volume/5, 1), 1, 5)
for(var/atom/movable/X in range(range_power,pull))
if(istype(X, /obj/effect))
continue
if(!X.anchored)
var/distance = get_dist(X, pull)
var/moving_power = max(range_power - distance, 1)
spawn(0)
if(moving_power > 2) //if the vortex is powerful and we're close, we get thrown
if(setting_type)
var/atom/throw_target = get_edge_target_turf(X, get_dir(X, get_step_away(X, pull)))
var/throw_range = 5 - distance
X.throw_at(throw_target, throw_range, 1)
else
X.throw_at(pull, distance, 1)
else
X.throw_at(pull)
if(setting_type)
for(var/i = 0, i < moving_power, i++)
sleep(2)
if(!step_away(X, pull))
break
else
for(var/i = 0, i < moving_power, i++)
sleep(2)
if(!step_towards(X, pull))
break
/datum/reagent/blob/proc/send_message(var/mob/living/M as mob)
var/totalmessage = message
@@ -214,11 +214,12 @@
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/M in range (get_turf(holder.my_atom), 7))
M.bodytemperature -= 140
M << "\blue You feel a chill!"
spawn(50)
if(holder && holder.my_atom)
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/M in range (get_turf(holder.my_atom), 7))
M.bodytemperature -= 140
M << "\blue You feel a chill!"
//Orange
slimecasp
@@ -242,10 +243,11 @@
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
var/turf/simulated/T = get_turf(holder.my_atom)
if(istype(T))
T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50)
spawn(50)
if(holder && holder.my_atom)
var/turf/simulated/T = get_turf(holder.my_atom)
if(istype(T))
T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50)
//Yellow
slimeoverload
@@ -387,8 +389,9 @@
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
explosion(get_turf(holder.my_atom), 1 ,3, 6)
spawn(50)
if(holder && holder.my_atom)
explosion(get_turf(holder.my_atom), 1 ,3, 6)
//Light Pink
slimepotion2
name = "Slime Potion 2"
@@ -78,5 +78,6 @@
return
/datum/reagent/Destroy()
..()
holder = null
return ..()
return QDEL_HINT_QUEUE
@@ -405,7 +405,7 @@
color = "#9ACD32"
/datum/reagent/spores/on_mob_life(var/mob/living/M as mob)
M.adjustToxLoss(0.5)
M.adjustToxLoss(1)
M.damageoverlaytemp = 60
M.eye_blurry = max(M.eye_blurry, 3)
..()
@@ -564,7 +564,7 @@
id = "frostoil"
description = "A special oil that noticably chills the body. Extraced from Icepeppers."
reagent_state = LIQUID
color = "#B31008" // rgb: 139, 166, 233
color = "#8BA6E9" // rgb: 139, 166, 233
process_flags = ORGANIC | SYNTHETIC
/datum/reagent/frostoil/on_mob_life(var/mob/living/M as mob)
@@ -175,7 +175,7 @@
force = 14
throwforce = 10
amount_per_transfer_from_this = 20
materials = list(MAT_GOLD=800)
materials = list(MAT_GOLD=1000)
possible_transfer_amounts = null
volume = 150
flags = CONDUCT | OPENCONTAINER
@@ -358,14 +358,14 @@
name = "Captain's Flask"
desc = "A metal flask belonging to the captain"
icon_state = "flask"
materials = list(MAT_SILVER=300)
materials = list(MAT_SILVER=500)
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
name = "Detective's Flask"
desc = "A metal flask with a leather band and golden badge belonging to the detective."
icon_state = "detflask"
materials = list(MAT_METAL=200)
materials = list(MAT_METAL=250)
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/flask/barflask