Merge branch 'dev-freeze' of https://github.com/Baystation12/Baystation12 into newmalf-merge

This commit is contained in:
Atlantis
2015-05-28 20:16:12 +02:00
55 changed files with 291 additions and 3105 deletions

View File

@@ -12,7 +12,7 @@
name = "mounted grenade launcher"
desc = "A shoulder-mounted micro-explosive dispenser."
selectable = 1
icon_state = "grenade_launcher"
icon_state = "grenadelauncher"
interface_name = "integrated grenade launcher"
interface_desc = "Discharges loaded grenades against the wearer's location."

View File

@@ -10,7 +10,7 @@
name = "active camouflage module"
desc = "A robust hardsuit-integrated stealth module."
icon_state = "stealth"
icon_state = "cloak"
toggleable = 1
disruptable = 1

View File

@@ -236,7 +236,7 @@
/mob/living/carbon/human/proc/get_damageable_organs()
var/list/obj/item/organ/external/parts = list()
for(var/obj/item/organ/external/O in organs)
if(O.brute_dam + O.burn_dam < O.max_damage)
if(O.is_damageable())
parts += O
return parts

View File

@@ -118,8 +118,12 @@
else if(E.is_malfunctioning())
if(E.body_part == HAND_LEFT)
if(!l_hand)
continue
drop_from_inventory(l_hand)
else
if(!r_hand)
continue
drop_from_inventory(r_hand)
emote("me", 1, "drops what they were holding, their [E.name] malfunctioning!")

View File

@@ -175,15 +175,16 @@ var/list/organ_cache = list()
W.time_inflicted = world.time
/obj/item/organ/proc/take_damage(amount, var/silent=0)
if(src.robotic == 2)
if(src.status & ORGAN_ROBOT)
src.damage += (amount * 0.8)
else
src.damage += amount
if(owner && parent_organ)
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
if(parent && !silent)
owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1)
//only show this if the organ is not robotic
if(owner && parent_organ)
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
if(parent && !silent)
owner.custom_pain("Something inside your [parent.name] hurts a lot.", 1)
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
robotic = 2

View File

@@ -138,6 +138,9 @@
DAMAGE PROCS
****************************************************/
/obj/item/organ/external/proc/is_damageable(var/additional_damage = 0)
return (vital || brute_dam + burn_dam + additional_damage < max_damage)
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
if((brute <= 0) && (burn <= 0))
return 0
@@ -177,7 +180,7 @@
// If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking
// Non-vital organs are limited to max_damage. You can't kill someone by bludeonging their arm all the way to 200 -- you can
// push them faster into paincrit though, as the additional damage is converted into shock.
if(vital || (brute_dam + burn_dam + brute + burn) < max_damage || !config.limbs_can_break)
if(is_damageable(brute + burn) || !config.limbs_can_break)
if(brute)
if(can_cut)
createwound( CUT, brute )

View File

@@ -8,7 +8,10 @@ mob/var/next_pain_time = 0
// partname is the name of a body part
// amount is a num from 1 to 100
mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0)
if(stat >= 2) return
if(stat >= 1)
return
if(species && (species.flags & NO_PAIN))
return
if(analgesic > 40)
return
if(world.time < next_pain_time && !force)
@@ -48,10 +51,10 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0
// message is the custom message to be displayed
// flash_strength is 0 for weak pain flash, 1 for strong pain flash
mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength)
if(stat >= 1) return
if(species && species.flags & NO_PAIN) return
if(stat >= 1)
return
if(species.flags & NO_PAIN)
return
if(reagents.has_reagent("tramadol"))
return
if(reagents.has_reagent("oxycodone"))
@@ -71,7 +74,7 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength)
mob/living/carbon/human/proc/handle_pain()
// not when sleeping
if(species && species.flags & NO_PAIN) return
if(species.flags & NO_PAIN) return
if(stat >= 2) return
if(analgesic > 70)
@@ -79,7 +82,7 @@ mob/living/carbon/human/proc/handle_pain()
var/maxdam = 0
var/obj/item/organ/external/damaged_organ = null
for(var/obj/item/organ/external/E in organs)
if(E.status & ORGAN_DEAD) continue
if(E.status & (ORGAN_DEAD|ORGAN_ROBOT)) continue
var/dam = E.get_damage()
// make the choice of the organ depend on damage,
// but also sometimes use one of the less damaged ones
@@ -91,6 +94,7 @@ mob/living/carbon/human/proc/handle_pain()
// Damage to internal organs hurts a lot.
for(var/obj/item/organ/I in internal_organs)
if(I.status & (ORGAN_DEAD|ORGAN_ROBOT)) continue
if(I.damage > 2) if(prob(2))
var/obj/item/organ/external/parent = get_organ(I.parent_organ)
src.custom_pain("You feel a sharp pain in your [parent.name]", 1)

View File

@@ -152,7 +152,7 @@
init()
else
area = get_area(src)
area.apc |= src
area.apc = src
opened = 1
operating = 0
name = "[area.name] APC"
@@ -163,9 +163,7 @@
..()
src.update()
/obj/machinery/power/apc/Destroy()
area.apc -= src
area.apc = null
area.power_light = 0
area.power_equip = 0
area.power_environ = 0
@@ -209,7 +207,7 @@
else
src.area = get_area_name(areastring)
name = "\improper [area.name] APC"
area.apc |= src
area.apc = src
update_icon()
make_terminal()

View File

@@ -149,7 +149,6 @@
return C
return null
/area/proc/get_apc()
var/obj/machinery/power/apc/FINDME = locate() in src
if (FINDME)
return FINDME
return apc

View File

@@ -89,19 +89,19 @@
M.add_chemical_effect(CE_ALCOHOL, 1)
if(dose / strength_mod >= strength) // Early warning
if(dose * strength_mod >= strength) // Early warning
M.make_dizzy(6) // It is decreased at the speed of 3 per tick
if(dose / strength_mod >= strength * 2) // Slurring
if(dose * strength_mod >= strength * 2) // Slurring
M.slurring = max(M.slurring, 30)
if(dose / strength_mod >= strength * 3) // Confusion - walking in random directions
if(dose * strength_mod >= strength * 3) // Confusion - walking in random directions
M.confused = max(M.confused, 20)
if(dose / strength_mod >= strength * 4) // Blurry vision
if(dose * strength_mod >= strength * 4) // Blurry vision
M.eye_blurry = max(M.eye_blurry, 10)
if(dose / strength_mod >= strength * 5) // Drowsyness - periodically falling asleep
if(dose * strength_mod >= strength * 5) // Drowsyness - periodically falling asleep
M.drowsyness = max(M.drowsyness, 20)
if(dose / strength_mod >= strength * 6) // Toxic dose
if(dose * strength_mod >= strength * 6) // Toxic dose
M.add_chemical_effect(CE_ALCOHOL_TOXIC, toxicity)
if(dose / strength_mod >= strength * 7) // Pass out
if(dose * strength_mod >= strength * 7) // Pass out
M.paralysis = max(M.paralysis, 20)
M.sleeping = max(M.sleeping, 30)

View File

@@ -2560,7 +2560,7 @@
slices_num = 6
New()
..()
reagents.add_reagent("protein", 50)
reagents.add_reagent("protein", 44)
reagents.add_reagent("tomatojuice", 6)
bitesize = 2
@@ -2598,7 +2598,7 @@
slices_num = 6
New()
..()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("nutriment", 25)
reagents.add_reagent("protein", 5)
reagents.add_reagent("tomatojuice", 6)
reagents.add_reagent("imidazoline", 12)

View File

@@ -3,15 +3,15 @@
if(air_group || (height==0)) return 1
if(istype(mover,/obj/item/projectile))
return (check_cover(mover,target))
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
if(locate(/obj/structure/table) in get_turf(mover))
return 1
if (flipped == 1)
if (get_dir(loc, target) == dir)
return !density
else
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
if(locate(/obj/structure/table) in get_turf(mover))
return 1
return 0
//checks if projectile 'P' from turf 'from' can hit whatever is behind the table. Returns 1 if it can, 0 if bullet stops.