diff --git a/code/datums/api.dm b/code/datums/api.dm index e90eceec6c0..77a572beafc 100644 --- a/code/datums/api.dm +++ b/code/datums/api.dm @@ -14,6 +14,12 @@ topic_commands_names.Add(A.name) listclearnulls(topic_commands) listclearnulls(topic_commands_names) + + if (config.api_rate_limit_whitelist.len) + // To make the api_rate_limit_whitelist[addr] grabs actually work. + for (var/addr in config.api_rate_limit_whitelist) + config.api_rate_limit_whitelist[addr] = 1 + return 1 /world/proc/api_do_auth_check(var/addr, var/auth, var/datum/topic_command/command) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 54aec15aa60..e9225179e65 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -731,7 +731,7 @@ vend_power_usage = 85000 //85 kJ to heat a 250 mL cup of coffee products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 10) - prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 3, /obj/item/weapon/reagent_containers/food/drinks/tea = 3, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 3) + prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 10, /obj/item/weapon/reagent_containers/food/drinks/tea = 10, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 12) @@ -747,10 +747,10 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 6, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 3, /obj/item/weapon/reagent_containers/food/snacks/meatsnack = 2, /obj/item/weapon/reagent_containers/food/snacks/maps = 2, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 2) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) - prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 1,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 5,/obj/item/weapon/reagent_containers/food/snacks/chips = 1, - /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 2,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 1, - /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 1, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 2, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 4, - /obj/item/weapon/reagent_containers/food/snacks/meatsnack = 4, /obj/item/weapon/reagent_containers/food/snacks/maps = 5, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 6) + prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 5,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 10,/obj/item/weapon/reagent_containers/food/snacks/chips = 7, + /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 10,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 2,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 5, + /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 5, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 8, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 30, + /obj/item/weapon/reagent_containers/food/snacks/meatsnack = 12, /obj/item/weapon/reagent_containers/food/snacks/maps = 13, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 14) /obj/machinery/vending/cola @@ -764,10 +764,10 @@ /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 10,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 10) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko = 5, /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 6) - prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 1,/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 1, - /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 1,/obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 1, - /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 2,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 1, - /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 1,/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 1) + prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 5,/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 6,/obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 5, + /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 2,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 5, + /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 3,/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 6) idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. //This one's from bay12 @@ -792,7 +792,7 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/flame/lighter/random = 4) contraband = list(/obj/item/weapon/flame/lighter/zippo = 4) premium = list(/obj/item/weapon/storage/fancy/cigar = 5) - prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15,/obj/item/weapon/storage/box/matches = 1,/obj/item/weapon/flame/lighter/random = 2) + prices = list(/obj/item/weapon/storage/fancy/cigarettes = 23,/obj/item/weapon/storage/box/matches = 2,/obj/item/weapon/flame/lighter/random = 2) /obj/machinery/vending/medical @@ -985,4 +985,3 @@ /obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5, /obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5) //everything after the power cell had no amounts, I improvised. -Sayu - diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index a70bbd5f0a9..ff73999815b 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -306,15 +306,24 @@ var/mob/living/carbon/human/H = M if(H.species.flags & IS_SYNTHETIC) if(M == user) - user << "\red You can't repair damage to your own body - it's against OH&S." + user << "You can't repair damage to your own body - it's against OH&S." return - - if(S.brute_dam) - S.heal_damage(15,0,0,1) - user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.name] with \the [src].") + if(S.brute_dam == 0) + // Organ undamaged + user << "Nothing to fix here!" return + if (!src.welding) + // Welder is switched off! + user << "You need to light the welding tool, first!" + return + if (src.remove_fuel(0)) + // Use a bit of fuel and repair + S.heal_damage(15,0,0,1) + user.visible_message("\The [user] patches some dents on \the [M]'s [S.name] with \the [src].") else - user << "Nothing to fix!" + // Welding tool is out of fuel + user << "Need more welding fuel!" + return else return ..() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 66eac7b449c..7e2e75bb9e7 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -426,7 +426,10 @@ if(istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay)) qdel(O) if(istype(O,/obj/effect/rune)) - user << "\red No matter how well you wash, the bloody symbols remain!" + var/obj/effect/rune/R = O + // Only show message for visible runes + if (R.visibility) + user << "No matter how well you wash, the bloody symbols remain!" else user << "\The [source] is too dry to wash that." source.reagents.trans_to_turf(src, 1, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 630bd0ef1d5..a9b464129e5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -456,16 +456,20 @@ user << "You lack the reach to be able to repair yourself." return - if (!getBruteLoss()) + if (getBruteLoss() == 0) user << "Nothing to fix here!" return var/obj/item/weapon/weldingtool/WT = W + if (!WT.welding) + // Welding tool is switched off + user << "You need to light the welding tool, first!" + return if (WT.remove_fuel(0)) adjustBruteLoss(-30) updatehealth() add_fingerprint(user) for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [user] has fixed some of the dents on [src]!"), 1) + O.show_message(text("[user] has fixed some of the dents on [src]!"), 1) else user << "Need more welding fuel!" return diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 236261c31d2..0e2f420e02b 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -57,11 +57,14 @@ /mob/living/simple_animal/construct/attack_generic(var/mob/user) if(istype(user, /mob/living/simple_animal/construct/builder)) - if(health < maxHealth) + if(getBruteLoss() > 0) adjustBruteLoss(-5) user.visible_message("\The [user] mends some of \the [src]'s wounds.") else - user << "\The [src] is undamaged." + if (health < maxHealth) + user << "Healing \the [src] any further is beyond your abilities." + else + user << "\The [src] is undamaged." return return ..() @@ -131,6 +134,16 @@ return (..(P)) +/mob/living/simple_animal/construct/armoured/UnarmedAttack(var/atom/A, var/proximity) + if(istype(A, /obj/machinery)) + // Destroy machines instead of opening their UI + var/obj/machinery/M = A + do_attack_animation(M) + playsound(loc, attack_sound, 50, 1, 1) + M.ex_act(3.0) + else + ..() + ////////////////////////Wraith///////////////////////////////////////////// diff --git a/html/changelogs/inselc-PR-1072.yml b/html/changelogs/inselc-PR-1072.yml new file mode 100644 index 00000000000..96d94405cf6 --- /dev/null +++ b/html/changelogs/inselc-PR-1072.yml @@ -0,0 +1,10 @@ +author: inselc + +delete-after: True + +changes: + - bugfix: "Fixed welding tool not using fuel when repairing IPCs, and repairing IPCs in switched-off state." + - bugfix: "Fixed Artificers healing other constructs." + - bugfix: "Fixed invisible runes triggering message when trying to clean the tile they're on." + - rscadd: "Added Juggernaut ability to smash machines." +