mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-29 11:31:51 +00:00
Merge branch 'dev-freeze' of https://github.com/Baystation12/Baystation12 into newmalf-merge
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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!")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user