diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index b1776e58c52..98579eb7473 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -15,23 +15,31 @@ var/precision = 1 // how close to the portal you will teleport. 0 = on the portal, 1 = adjacent /obj/effect/portal/Bumped(mob/M as mob|obj) - src.teleport(M) + teleport(M) -/obj/effect/portal/New(loc, turf/target, creator, lifespan=300) +/obj/effect/portal/attack_hand(mob/user) + if(Adjacent(user)) + teleport(user) + +/obj/effect/portal/attackby(obj/item/weapon/W, mob/user, params) + if(user && Adjacent(user)) + teleport(user) + + + +/obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300) + ..() portals += src - src.loc = loc src.target = target src.creator = creator - var/area/A = target.loc - if(A.noteleport) // No point in persisting if the target is unreachable. + + var/area/A = get_area(target) + if(A && A.noteleport) // No point in persisting if the target is unreachable. qdel(src) return - for(var/mob/M in src.loc) - src.teleport(M) if(lifespan > 0) spawn(lifespan) qdel(src) - return /obj/effect/portal/Destroy() portals -= src diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index eaad0d76502..7f25dbfe5e9 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -304,6 +304,11 @@ return if(cyborg && (cyborg.stat != DEAD) && on) + if(!cyborg.cell) + cyborg << "Self-repair module deactivated. Please, insert the power cell." + deactivate() + return + if(cyborg.cell.charge < powercost * 2) cyborg << "Self-repair module deactivated. Please recharge." deactivate() diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index f421032ecc2..2fc857d23c4 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -108,6 +108,6 @@ seed_count++ for(var/i=0,iYou remove the dead plant from [src]." diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index c1edd43e2c1..a946ed11e82 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -141,18 +141,19 @@ return TRUE /datum/plant_gene/trait/proc/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc) - if(origin_tech) // This ugly code segment adds RnD tech levels to resulting plants. - if(G.origin_tech) - var/list/tech = params2list(G.origin_tech) - for(var/t in origin_tech) - if(t in tech) - tech[t] = max(tech[t], origin_tech[t]) - else - tech[t] = origin_tech[t] - G.origin_tech = list2params(tech) - else - G.origin_tech = list2params(origin_tech) - return + if(!origin_tech) // This ugly code segment adds RnD tech levels to resulting plants. + return + + if(G.origin_tech) + var/list/tech = params2list(G.origin_tech) + for(var/t in origin_tech) + if(t in tech) + tech[t] = max(text2num(tech[t]), origin_tech[t]) + else + tech[t] = origin_tech[t] + G.origin_tech = list2params(tech) + else + G.origin_tech = list2params(origin_tech) /datum/plant_gene/trait/proc/on_consume(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) return @@ -171,7 +172,7 @@ // For code, see grown.dm name = "Liquid Contents" examine_line = "It has a lot of liquid contents inside." - origin_tech = list("bio" = 5) + origin_tech = list("biotech" = 5) /*/datum/plant_gene/trait/squash/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) G.squash(target)*/ diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 214886607ec..e3e179721fa 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -109,14 +109,14 @@ //Drops the item in our left hand /mob/proc/drop_l_hand() - if(!loc.allow_drop()) + if(!loc || !loc.allow_drop()) return return unEquip(l_hand) //All needed checks are in unEquip //Drops the item in our right hand /mob/proc/drop_r_hand() - if(!loc.allow_drop()) + if(!loc || !loc.allow_drop()) return return unEquip(r_hand) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 2fe2fb90f66..43454906259 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -98,8 +98,11 @@ Borg Hypospray if(M.reagents) var/trans = R.trans_to(M, amount_per_transfer_from_this) user << "[trans] unit\s injected. [R.total_volume] unit\s remaining." - var/contained = english_list(R) - add_logs(user, M, "injected", src, "(CHEMICALS: [contained])") + + var/list/injected = list() + for(var/datum/reagent/RG in R.reagent_list) + injected += RG.name + add_logs(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])") /obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user) var/chosen_reagent = modes[input(user, "What reagent do you want to dispense?") as null|anything in reagent_ids]