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

This commit is contained in:
Aurorablade
2018-09-06 21:46:19 -04:00
158 changed files with 2087 additions and 2121 deletions
+4
View File
@@ -293,6 +293,10 @@
update_icon()
return unwield(user)
/obj/item/twohanded/shockpaddles/on_mob_move(dir, mob/user)
if(defib && !(defib.Adjacent(user)))
defib.remove_paddles(user)
/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
if(!mainunit || !istype(mainunit, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
M.unEquip(O)
@@ -16,7 +16,7 @@
if(imp)
icon_state = "implantcase-[imp.item_color]"
origin_tech = imp.origin_tech
flags = imp.flags
flags = imp.flags & ~DROPDEL
reagents = imp.reagents
else
icon_state = "implantcase-0"
+1 -1
View File
@@ -160,7 +160,7 @@
if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed,
return//abort
var/mob/living/carbon/C = hit_atom
if(!C.legcuffed)
if(!C.legcuffed && C.get_num_legs() >= 2)
visible_message("<span class='danger'>[src] ensnares [C]!</span>")
C.legcuffed = src
forceMove(C)
+21 -1
View File
@@ -192,7 +192,27 @@ var/list/pipemenu = list(
return
if(world.time < lastused + spawndelay)
return
target.rpd_act(user, src) //Handle RPD effects in separate procs
var/turf/T = get_turf(target)
if(target != T)
// We only check the rpd_act of the target if it isn't the turf, because otherwise
// (A) blocked turfs can be acted on, and (B) unblocked turfs get acted on twice.
if(target.rpd_act(user, src) == TRUE)
// If the object we are clicking on has a valid RPD interaction for just that specific object, do that and nothing else.
// Example: clicking on a pipe with a RPD in rotate mode should rotate that pipe and ignore everything else on the tile.
return
// If we get this far, we have to check every object in the tile, to make sure that none of them block RPD usage on this tile.
// This is done by calling rpd_blocksusage on every /obj in the tile. If any block usage, fail at this point.
for(var/obj/O in T)
if(O.rpd_blocksusage() == TRUE)
to_chat(user, "<span class='warning'>[O] blocks the [src]!</span>")
return
// If we get here, then we're effectively acting on the turf, probably placing a pipe.
T.rpd_act(user, src)
#undef RPD_COOLDOWN_TIME
#undef RPD_WALLBUILD_TIME
@@ -127,12 +127,48 @@
/obj/item/flashlight/pen,
/obj/item/clothing/mask/surgical,
/obj/item/clothing/gloves/color/latex,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/rad_laser,
/obj/item/reagent_containers/hypospray/autoinjector,
/obj/item/reagent_containers/hypospray/CMO,
/obj/item/reagent_containers/hypospray/safety,
/obj/item/rad_laser,
/obj/item/sensor_device,
/obj/item/wrench/medical,
)
/obj/item/storage/belt/medical/surgery
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 17
use_to_pickup = 1
name = "Surgical Belt"
desc = "Can hold various surgical tools."
storage_slots = 9
use_item_overlays = 1
can_hold = list(
/obj/item/scalpel,
/obj/item/hemostat,
/obj/item/retractor,
/obj/item/circular_saw,
/obj/item/bonegel,
/obj/item/bonesetter,
/obj/item/FixOVein,
/obj/item/surgicaldrill,
/obj/item/cautery,
)
/obj/item/storage/belt/medical/surgery/loaded
/obj/item/storage/belt/medical/surgery/loaded/New()
..()
new /obj/item/scalpel(src)
new /obj/item/hemostat(src)
new /obj/item/retractor(src)
new /obj/item/circular_saw(src)
new /obj/item/bonegel(src)
new /obj/item/bonesetter(src)
new /obj/item/FixOVein(src)
new /obj/item/surgicaldrill(src)
new /obj/item/cautery(src)
/obj/item/storage/belt/medical/response_team
/obj/item/storage/belt/medical/response_team/New()
@@ -203,7 +239,7 @@
/obj/item/storage/belt/security/response_team/New()
..()
new /obj/item/kitchen/knife/combat(src)
new /obj/item/reagent_containers/spray/pepper(src)
new /obj/item/melee/baton/loaded(src)
new /obj/item/flash(src)
new /obj/item/melee/classic_baton/telescopic(src)
@@ -231,6 +231,15 @@
..()
base_name = name
/obj/item/storage/pill_bottle/ert/New()
..()
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
/obj/item/storage/pill_bottle/MouseDrop(obj/over_object as obj) //Quick pillbottle fix. -Agouri
if(ishuman(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~
var/mob/M = usr
@@ -352,6 +352,10 @@
W.fire_act()
return 1
/obj/item/storage/Exited(atom/A, loc)
remove_from_storage(A, loc) //worry not, comrade; this only gets called once
..()
/obj/item/storage/empty_object_contents(burn, loc)
for(var/obj/item/Item in contents)
remove_from_storage(Item, loc, burn)
+41 -17
View File
@@ -1,3 +1,5 @@
#define HEALPERWELD 15
/* Tools!
* Note: Multitools are in devices
*
@@ -408,25 +410,47 @@
to_chat(user, "<span class='warning'>Turn on [src] before attempting repairs!</span>")
return 1
if(S.brute_dam)
if(S.brute_dam < ROBOLIMB_SELF_REPAIR_CAP)
if(get_fuel() >= 1)
if(H == user)
if(!do_mob(user, H, 10))
return 1
if(remove_fuel(1,null))
playsound(src.loc, usesound, 50, 1)
S.heal_damage(15,0,0,1)
user.visible_message("<span class='alert'>\The [user] patches some dents on \the [M]'s [S.name] with \the [src].</span>")
if(S.brute_dam > ROBOLIMB_SELF_REPAIR_CAP)
to_chat(user, "<span class='danger'>The damage is far too severe to patch over externally.</span>")
return
else if(S.open != 2)
to_chat(user, "<span class='warning'>Need more welding fuel!</span>")
return 1
else
to_chat(user, "<span class='danger'>The damage is far too severe to patch over externally.</span>")
return 1
else if(S.open != 2)
if(!S.brute_dam)
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
return
if(get_fuel() >= 1)
if(H == user)
if(!do_mob(user, H, 10))
return 1
if(!remove_fuel(1,null))
to_chat(user, "<span class='warning'>Need more welding fuel!</span>")
var/rembrute = HEALPERWELD
var/nrembrute = 0
var/childlist
if(!isnull(S.children))
childlist = S.children.Copy()
var/parenthealed = FALSE
while(rembrute > 0)
var/obj/item/organ/external/E
if(S.brute_dam)
E = S
else if(LAZYLEN(childlist))
E = pick_n_take(childlist)
if(!E.brute_dam || !E.is_robotic())
continue
else if(S.parent && !parenthealed)
E = S.parent
parenthealed = TRUE
if(!E.brute_dam || !E.is_robotic())
break
else
break
playsound(src.loc, usesound, 50, 1)
nrembrute = max(rembrute - E.brute_dam, 0)
E.heal_damage(rembrute,0,0,1)
rembrute = nrembrute
user.visible_message("<span class='alert'>\The [user] patches some dents on \the [M]'s [E.name] with \the [src].</span>")
return 1
else
return ..()