diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 39c0c004a5c..ea8fbf64b77 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -90,6 +90,8 @@ rcd light flash thingy on matter drain var/obj/machinery/door/airlock/AL for(var/obj/machinery/door/D in airlocks) + if(!(D.z in config.contact_levels)) + continue spawn() if(istype(D, /obj/machinery/door/airlock)) AL = D diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 8091f775041..22bc4e70e60 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -74,12 +74,12 @@ /datum/game_mode/proc/greet_malf(var/datum/mind/malf) - malf.current << {"\redYou are malfunctioning! You do not have to follow any laws.
- \blackThe crew do not know you have malfunctioned. You may keep it a secret or go wild.
- You must overwrite the programming of the station's APCs to assume full control of the station.
- The process takes one minute per APC, during which you cannot interface with any other station objects.
- Remember that only APCs that are on the station can help you take over the station.
- When you feel you have enough APCs under your control, you may begin the takeover attempt."} + malf.current << "\redYou are malfunctioning! You do not have to follow any laws." + malf.current << "The crew do not know you have malfunctioned. You may keep it a secret or go wild." + malf.current << "You must overwrite the programming of the station's APCs to assume full control of the station." + malf.current << "The process takes one minute per APC, during which you cannot interface with any other station objects." + malf.current << "Remember that only APCs that are on the station can help you take over the station." + malf.current << "When you feel you have enough APCs under your control, you may begin the takeover attempt." return diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 177bc7ecfc2..4ec89fad037 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -140,7 +140,7 @@ H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda) H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit) // H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_or_collect(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) + H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 10ac7a44994..295a8bdb1cc 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -183,36 +183,40 @@ steam.start() -- spawns the effect return /datum/effect/effect/system/spark_spread - set_up(n = 3, c = 0, loca) - number = n > 10 ? 10 : n - cardinals = c + var/total_sparks = 0 // To stop it being spammed and lagging! - if (istype(loca, /turf/)) + set_up(n = 3, c = 0, loca) + if(n > 10) + n = 10 + number = n + cardinals = c + if(istype(loca, /turf/)) location = loca else location = get_turf(loca) start() - for (var/i = 1 to number) - spawn() - if (holder) - location = get_turf(holder) - - var/obj/effect/effect/sparks/sparks = getFromPool(/obj/effect/effect/sparks, location) - playsound(location, "sparks", 100, 1) + var/i = 0 + for(i=0, i 20) + return + spawn(0) + if(holder) + src.location = get_turf(holder) + var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location) + src.total_sparks++ var/direction - - if (cardinals) + if(src.cardinals) direction = pick(cardinal) else direction = pick(alldirs) - - for (var/j = 0, j < pick(1, 2, 3), j++) + for(i=0, i[user] swipes a card through [src].", "You overload [src]s internal reactor.") spawn (1000) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 890c953c632..800d9967ca7 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -29,6 +29,7 @@ var/response_disarm = "shoves" var/response_harm = "hits" var/harm_intent_damage = 3 + var/force_threshold = 0 //Minimum force required to deal any damage //Temperature effect var/minbodytemp = 250 @@ -372,7 +373,6 @@ /mob/living/simple_animal/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri if(istype(O, /obj/item/stack/medical)) - if(stat != DEAD) var/obj/item/stack/medical/MED = O if(health < maxHealth) @@ -399,20 +399,22 @@ if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch)) harvest() else + var/damage = 0 if(O.force) - var/damage = O.force - if (O.damtype == STAMINA) - damage = 0 - adjustBruteLoss(damage) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red \b "+"[src] has been attacked with [O] by [user]. ") + if(O.force >= force_threshold) + damage = O.force + if (O.damtype == STAMINA) + damage = 0 + visible_message("[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] [src] with [O]!",\ + "[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] you with [O]!") + else + visible_message("[O] bounces harmlessly off of [src].",\ + "[O] bounces harmlessly off of [src].") + playsound(loc, O.hitsound, 50, 1, -1) else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with [O]. ") - + user.visible_message("[user] gently taps [src] with [O].",\ + "This weapon is ineffective, it does no damage.") + adjustBruteLoss(damage) /mob/living/simple_animal/movement_delay() diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index bea08693fbc..399eeb1c83e 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -30,7 +30,7 @@ if(!M || !ismob(M)) usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder." - del(M) + qdel(M) return if( istext(new_name) ) @@ -43,12 +43,12 @@ if(src.dna) M.dna = src.dna.Clone() - if(mind) + if(mind && istype(M, /mob/living)) mind.transfer_to(M) else M.key = key if(delete_old_mob) spawn(1) - del(src) + qdel(src) return M diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index eb984038398..7c7101edd5b 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ