diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 93c625b238..8221deeadb 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -74460,9 +74460,6 @@ }, /turf/open/floor/plasteel/dark, /area/command/bridge) -"sKV" = ( -/turf/open/space/basic, -/area/command/heads_quarters/captain) "sLs" = ( /obj/effect/decal/cleanable/cobweb, /obj/machinery/field/generator, @@ -122066,7 +122063,7 @@ oRp oRp aaa aai -sKV +aaa aaa aaa aaa @@ -130637,7 +130634,7 @@ aaf aaf aaa aaa -sKV +aaa aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index eacbc74508..cdc6d424dd 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -24647,6 +24647,12 @@ }, /turf/open/space, /area/solars/starboard) +"beW" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "beY" = ( /obj/machinery/camera{ c_tag = "Arrivals Central"; @@ -40355,15 +40361,9 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; - name = "Mix to Ports" - }, -/turf/open/floor/plasteel, -/area/engineering/atmos) -"bNk" = ( -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 + name = "Unfiltered to Mix" }, /turf/open/floor/plasteel, /area/engineering/atmos) @@ -40372,8 +40372,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Unfiltered & Air to Mix" }, /turf/open/floor/plasteel, /area/engineering/atmos) @@ -40809,23 +40810,19 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) -"bOo" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel, -/area/engineering/atmos) "bOp" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Pure to Mix" }, /turf/open/floor/plasteel, /area/engineering/atmos) "bOq" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Pure to Mix" +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 }, /turf/open/floor/plasteel, /area/engineering/atmos) @@ -41089,13 +41086,6 @@ }, /turf/open/floor/plasteel, /area/engineering/atmos) -"bPa" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engineering/atmos) "bPd" = ( /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 8 @@ -41407,7 +41397,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel, /area/engineering/atmos) "bPW" = ( @@ -41785,14 +41774,16 @@ /turf/open/floor/plasteel, /area/engineering/atmos) "bQK" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plasteel, /area/engineering/atmos) "bQL" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engineering/atmos) "bQM" = ( @@ -41800,9 +41791,8 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Unfiltered to Mix" +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 10 }, /turf/open/floor/plasteel, /area/engineering/atmos) @@ -42109,8 +42099,7 @@ /turf/open/floor/plasteel, /area/engineering/atmos) "bRw" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel, /area/engineering/atmos) "bRx" = ( @@ -53829,6 +53818,12 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"eEd" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "eEp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -55198,6 +55193,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"hEi" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "hEX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -56739,6 +56743,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, /area/engineering/main) +"kWG" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "kWQ" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /obj/structure/cable/yellow{ @@ -57443,6 +57453,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/maintenance/department/engine) +"mAR" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "mCe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -58849,6 +58868,10 @@ }, /turf/open/floor/wood, /area/service/lawoffice) +"pEM" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel, +/area/engineering/atmos) "pFe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/red{ @@ -59370,6 +59393,13 @@ }, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"qQu" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "qRl" = ( /obj/item/radio/intercom{ name = "Station Intercom (General)"; @@ -60110,6 +60140,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"sGJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel, +/area/engineering/atmos) "sIK" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -61031,6 +61068,12 @@ }, /turf/open/floor/engine, /area/engineering/main) +"uST" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to Ports" + }, +/turf/open/floor/plasteel, +/area/engineering/atmos) "uUQ" = ( /obj/machinery/door/airlock/maintenance{ name = "Engineering Maintenance"; @@ -99648,7 +99691,7 @@ bJN bKS bMe bNh -bOo +pEM bOX bMf bMf @@ -100162,9 +100205,9 @@ bHw bKU bOr bPU +kWG bRw -bPa -bMf +beW bMf bMf bMf @@ -100418,13 +100461,13 @@ bIF bHw bKV bOX -bUv +eEd bQL -bPa -bMf -bMf -bMf +uST +pEM bMf +qQu +qQu bSU bTT bUv @@ -100678,10 +100721,10 @@ bMg bNj bOp bPV -bPV -bPV -bPV -bPV +hEi +sGJ +bUw +bUw bUw bUw bUw @@ -100932,8 +100975,8 @@ bIH bHw cqG bOX -bNk bOq +mAR bPd bPW bPW diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ded183ba0b..3807b66b06 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -165,6 +165,7 @@ #define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events" #define TRAIT_NO_MIDROUND_ANTAG "no-midround-antag" //can't be turned into an antag by random events #define TRAIT_PUGILIST "pugilist" //This guy punches people for a living +#define TRAIT_NOPUGILIST "nopugilist" // for preventing ((((((((((extreme)))))))))) punch stacking #define TRAIT_KI_VAMPIRE "ki-vampire" //when someone with this trait rolls maximum damage on a punch and stuns the target, they regain some stamina and do clone damage #define TRAIT_MAULER "mauler" // this guy punches the shit out of people to hurt them, not to drain their stamina #define TRAIT_PASSTABLE "passtable" diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a1b7a74384..d1fff25dae 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -89,6 +89,7 @@ //Generic living #define ui_living_pull "EAST-1:28,CENTER-2:15" #define ui_living_health "EAST-1:28,CENTER:15" +#define ui_living_healthdoll "EAST-1:28,CENTER-1:15" //Monkeys #define ui_monkey_head "CENTER-5:13,SOUTH:5" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 34fd90f4f0..b27abad841 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -637,6 +637,11 @@ name = "health doll" screen_loc = ui_healthdoll +/obj/screen/healthdoll/living + icon_state = "fullhealth0" + screen_loc = ui_living_healthdoll + var/filtered = FALSE //so we don't repeatedly create the mask of the mob every update + /obj/screen/mood name = "mood" icon_state = "mood5" diff --git a/code/_onclick/hud/simple_animal.dm b/code/_onclick/hud/simple_animal.dm new file mode 100644 index 0000000000..ef46c0d66e --- /dev/null +++ b/code/_onclick/hud/simple_animal.dm @@ -0,0 +1,15 @@ +/datum/hud/living/simple_animal + ui_style = 'icons/mob/screen_gen.dmi' +/datum/hud/living/simple_animal/New(mob/living/owner) + ..() + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + + //mob health doll! assumes whatever sprite the mob is + healthdoll = new /obj/screen/healthdoll/living() + healthdoll.hud = src + infodisplay += healthdoll diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 5881c76827..9b9ea3c86e 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -165,6 +165,7 @@ ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, SLEEPING_CARP_TRAIT) ADD_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT) ADD_TRAIT(H, TRAIT_TASED_RESISTANCE, SLEEPING_CARP_TRAIT) + ADD_TRAIT(H, TRAIT_NOPUGILIST, SLEEPING_CARP_TRAIT) // cqc doesn't get this as it's intended to be able to stack with northstar gloves H.physiology.brute_mod *= 0.4 //brute is really not gonna cut it H.physiology.burn_mod *= 0.7 //burn is distinctly more useful against them than brute but they're still resistant H.physiology.stamina_mod *= 0.4 //You take less stamina damage overall, but you do not reduce the damage from stun batons as much @@ -181,6 +182,7 @@ REMOVE_TRAIT(H, TRAIT_PIERCEIMMUNE, SLEEPING_CARP_TRAIT) REMOVE_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT) REMOVE_TRAIT(H, TRAIT_TASED_RESISTANCE, SLEEPING_CARP_TRAIT) + REMOVE_TRAIT(H, TRAIT_NOPUGILIST, SLEEPING_CARP_TRAIT) H.physiology.brute_mod = initial(H.physiology.brute_mod) H.physiology.burn_mod = initial(H.physiology.burn_mod) H.physiology.stamina_mod = initial(H.physiology.stamina_mod) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4eed168ad6..477f72ee3b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -688,7 +688,7 @@ else . += "It looks very robust." - if(hasSiliconAccessInArea(user) && (!stat & BROKEN)) + if(hasSiliconAccessInArea(user) && !(stat & BROKEN)) . += "Shift-click [src] to [ density ? "open" : "close"] it." . += "Ctrl-click [src] to [ locked ? "raise" : "drop"] its bolts." . += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it." diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 6e66f833c2..f888927411 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -383,7 +383,7 @@ . = ..() /obj/item/stack/medical/mesh/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) - if(!is_open & user.get_inactive_held_item() == src) + if(!is_open && (user.get_inactive_held_item() == src)) to_chat(user, "You need to open [src] first.") return . = ..() diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 9032a80d91..7d13af1e3e 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -73,3 +73,15 @@ name = "wumborian fugu den" desc = "A den housing a nest of wumborian fugus, how do they all even fit in there?" mob_types = list(/mob/living/simple_animal/hostile/asteroid/fugu) + +/obj/structure/spawner/clown + name = "Laughing Larry" + desc = "A laughing, jovial figure. Something seems stuck in his throat." + icon_state = "clownbeacon" + icon = 'icons/obj/device.dmi' + max_integrity = 200 + max_mobs = 15 + spawn_time = 150 + mob_types = list(/mob/living/simple_animal/hostile/retaliate/clown, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/blob) + spawn_text = "climbs out of" + faction = list("clown") diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index fba79ac2b0..6356424aaf 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -127,7 +127,7 @@ to_chat(user, "Throwing [pushed_mob] onto the table might hurt them!") return var/added_passtable = FALSE - if(!pushed_mob.pass_flags & PASSTABLE) + if(!(pushed_mob.pass_flags & PASSTABLE)) added_passtable = TRUE pushed_mob.pass_flags |= PASSTABLE pushed_mob.Move(src.loc) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index ba3d8106ef..b92b659183 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -164,14 +164,12 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/remove_blacklisted_quirks() var/mob/living/L = owner.current if(istype(L)) - var/list/my_quirks = L.client?.prefs.all_quirks.Copy() - SSquirks.filter_quirks(my_quirks,blacklisted_quirks) for(var/q in L.roundstart_quirks) var/datum/quirk/Q = q - if(!(SSquirks.quirk_name_by_path(Q.type) in my_quirks)) + if(Q.type in blacklisted_quirks) if(initial(Q.antag_removal_text)) to_chat(L, "[initial(Q.antag_removal_text)]") - L.remove_quirk(Q.type) + qdel(Q) //Returns the team antagonist belongs to if any. /datum/antagonist/proc/get_team() diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 5b6a7648c8..b7aeb23e6f 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -680,6 +680,11 @@ glove_type = /obj/item/clothing/gloves/fingerless/pugilist/cling // just punch his head off dude glove_name_simple = "bone gauntlets" +/obj/effect/proc_holder/changeling/gloves/gauntlets/sting_action(mob/living/user) + if(HAS_TRAIT(user, TRAIT_NOPUGILIST)) + to_chat(user, "We would gain nothing by forming our fists into brute-force weapons when we are trained in precision martial arts!") + return + /obj/item/clothing/gloves/fingerless/pugilist/cling // switches between lesser GotNS and Big Punchy Rib Breaky Hands name = "hewn bone gauntlets" icon_state = "ling_gauntlets" diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm index 4aeb2e1b73..4d6576ee92 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm @@ -50,7 +50,7 @@ /obj/item/melee/touch_attack/mansus_fist/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if(!proximity_flag | target == user) + if(!proximity_flag || (target == user)) return playsound(user, 'sound/items/welder.ogg', 75, TRUE) if(ishuman(target)) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index 8184beb3aa..aa927ffcfc 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -24,7 +24,7 @@ var/check = FALSE if(ismob(target)) var/mob/living/mobster = target - if(!mobster.mob_biotypes & MOB_ROBOTIC) + if(!(mobster.mob_biotypes & MOB_ROBOTIC)) return FALSE else check = TRUE diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index a26d081f08..f616f2c848 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -84,6 +84,9 @@ if(slam_cooldown + slam_cooldown_time > world.time) to_chat(src, "Your slam ability is still on cooldown!") return + if(!isopenturf(loc)) + to_chat(src, "You need to be on open flooring to do that!") + return face_atom(A) var/mob/living/victim = A diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index a558abbfe8..a337439931 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -37,14 +37,19 @@ /obj/item/clothing/gloves/fingerless/pugilist/equipped(mob/user, slot) . = ..() if(slot == SLOT_GLOVES) - use_buffs(user, TRUE) wornonce = TRUE + if((HAS_TRAIT(user, TRAIT_NOPUGILIST))) + to_chat(user, "What purpose is there to don the weapons of pugilism if you're already well-practiced in martial arts? Mixing arts is blasphemous!") + return + use_buffs(user, TRUE) /obj/item/clothing/gloves/fingerless/pugilist/dropped(mob/user) . = ..() if(wornonce) - use_buffs(user, FALSE) wornonce = FALSE + if((HAS_TRAIT(user, TRAIT_NOPUGILIST))) + return + use_buffs(user, FALSE) /obj/item/clothing/gloves/fingerless/pugilist/proc/use_buffs(mob/user, buff) if(buff) // tarukaja @@ -67,6 +72,7 @@ H.dna.species.punchdamagehigh -= enhancement H.dna.species.punchdamagelow -= enhancement H.dna.species.punchwoundbonus -= wound_enhancement + H.dna?.species?.attack_sound_override = null if(!silent) to_chat(user, "With [src] off of your arms, you feel less ready to punch things.") @@ -223,6 +229,50 @@ parry_cooldown = 0 parry_failed_clickcd_duration = 0 +/obj/item/clothing/gloves/fingerless/pugilist/mauler + name = "mauler gauntlets" + desc = "Plastitanium gauntlets coated in a thick nano-weave carbon material and implanted with nanite injectors that boost the wielder's strength six-fold." + icon_state = "mauler_gauntlets" + item_state = "mauler_gauntlets" + transfer_prints = FALSE + body_parts_covered = ARMS|HANDS + cold_protection = ARMS|HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + armor = list("melee" = 30, "bullet" = 30, "laser" = 10, "energy" = 10, "bomb" = 55, "bio" = 15, "rad" = 15, "fire" = 80, "acid" = 50) + siemens_coefficient = 0 + permeability_coefficient = 0.05 + strip_delay = 80 + enhancement = 12 // same as the changeling gauntlets but without changeling utility + wound_enhancement = 12 + silent = TRUE + inherited_trait = TRAIT_CHUNKYFINGERS // your fingers are fat because the gloves are + secondary_trait = TRAIT_MAULER // commit table slam + +/obj/item/clothing/gloves/fingerless/pugilist/mauler/equipped(mob/user, slot) + . = ..() + if(slot == SLOT_GLOVES) + wornonce = TRUE + if((HAS_TRAIT(user, TRAIT_NOPUGILIST))) + return + use_mauls(user, TRUE) + +/obj/item/clothing/gloves/fingerless/pugilist/mauler/dropped(mob/user) + . = ..() + if(wornonce) + wornonce = FALSE + if((HAS_TRAIT(user, TRAIT_NOPUGILIST))) + return + use_mauls(user, FALSE) + +/obj/item/clothing/gloves/fingerless/pugilist/mauler/proc/use_mauls(mob/user, maul) + if(maul) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.dna?.species?.attack_sound_override = 'sound/weapons/mauler_punch.ogg' + if(silent) + to_chat(H, "You feel prickles around your wrists as [src] cling to them - strength courses through your veins!") + /obj/item/clothing/gloves/botanic_leather name = "botanist's leather gloves" desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm." @@ -253,7 +303,6 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) strip_mod = 1.5 - /obj/item/clothing/gloves/bracer name = "bone bracers" desc = "For when you're expecting to get slapped on the wrist. Offers modest protection to your arms." diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index cc14424980..6858de59df 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -535,3 +535,9 @@ to_chat(user, "You insert [I] into [src].") B.use(10) icon_state = initial(icon_state) + +/obj/item/clothing/shoes/swagshoes + name = "swag shoes" + desc = "They got me for my foams!" + icon_state = "SwagShoes" + item_state = "SwagShoes" diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index f8292738ee..60d82292ef 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -355,3 +355,10 @@ name = "Sakura Kimono'" icon_state = "sakura_kimono" item_state = "sakura_kimono" + +/obj/item/clothing/under/costume/swagoutfit + name = "Swag outfit" + desc = "Why don't you go secure some bitches?" + icon_state = "SwagOutfit" + item_state = "SwagOutfit" + can_adjust = FALSE diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 7d4ea66d30..b9480a646c 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -61,7 +61,7 @@ originMachine.visible_message("[originMachine] beeps and seems lifeless.") kill() return - vendingMachines = listclearnulls(vendingMachines) + listclearnulls(vendingMachines) if(!vendingMachines.len) //if every machine is infected for(var/obj/machinery/vending/upriser in infectedMachines) if(prob(70) && !QDELETED(upriser)) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm index 8fb735e10a..b8fab56159 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -162,12 +162,19 @@ icon = 'modular_citadel/icons/mob/mam_ears.dmi' /datum/sprite_accessory/ears/human/rabbit - name = "Rabbit" + name = "Rabbit (Lop-eared)" icon_state = "rabbit" color_src = MATRIXED matrixed_sections = MATRIX_RED_GREEN icon = 'modular_citadel/icons/mob/mam_ears.dmi' +/datum/sprite_accessory/ears/human/rabbitalt + name = "Rabbit (Straight-eared)" + icon_state = "rabbitalt" + color_src = MATRIXED + matrixed_sections = MATRIX_ALL + icon = 'modular_citadel/icons/mob/mam_ears.dmi' + /datum/sprite_accessory/ears/human/pede name = "Scolipede" icon_state = "pede" @@ -296,7 +303,7 @@ /datum/sprite_accessory/ears/mam_ears/deer name = "Deer" icon_state = "deer" - color_src = MUTCOLORS3 + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/ears/mam_ears/eevee name = "Eevee" @@ -359,10 +366,15 @@ matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/ears/mam_ears/rabbit - name = "Rabbit" + name = "Rabbit (Lop-eared)" icon_state = "rabbit" matrixed_sections = MATRIX_RED_GREEN +/datum/sprite_accessory/ears/mam_ears/rabbitalt + name = "Rabbit (Straight-eared)" + icon_state = "rabbitalt" + matrixed_sections = MATRIX_ALL + /datum/sprite_accessory/ears/mam_ears/pede name = "Scolipede" icon_state = "pede" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm index a4bd0afdcb..88dda923a0 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm @@ -17,6 +17,10 @@ name = "Adhara" icon_state = "hair_adhara" +/datum/sprite_accessory/hair/africanpigtails + name = "African Pig Tails" + icon_state = "hair_africanpigtails" + /datum/sprite_accessory/hair/afro name = "Afro" icon_state = "hair_afro" @@ -25,10 +29,26 @@ name = "Afro 2" icon_state = "hair_afro2" +/datum/sprite_accessory/hair/afro2alt + name = "Afro 2 (Alt)" + icon_state = "hair_afro2alt" + /datum/sprite_accessory/hair/afro_large name = "Afro (Large)" icon_state = "hair_bigafro" +/datum/sprite_accessory/hair/afropuffdouble + name = "Afropuff (Double)" + icon_state = "hair_afropuffdouble" + +/datum/sprite_accessory/hair/afropuffleft + name = "Afropuff (Left)" + icon_state = "hair_afropuffleft" + +/datum/sprite_accessory/hair/afropuffright + name = "Afropuff (Right)" + icon_state = "hair_afropuffright" + /datum/sprite_accessory/hair/antenna name = "Ahoge" icon_state = "hair_antenna" @@ -41,10 +61,18 @@ name = "Anita" icon_state = "hair_anita" +/datum/sprite_accessory/hair/astolfo + name = "Astolfo" + icon_state = "hair_astolfo" + /datum/sprite_accessory/hair/balding name = "Balding Hair" icon_state = "hair_e" +/datum/sprite_accessory/hair/baum + name = "Baum" + icon_state = "hair_baum" + /datum/sprite_accessory/hair/bedhead name = "Bedhead" icon_state = "hair_bedhead" @@ -85,6 +113,14 @@ name = "Belle" icon_state = "hair_belle" +/datum/sprite_accessory/hair/bluntbangs + name = "Bluntbangs" + icon_state = "hair_bluntbangs" + +/datum/sprite_accessory/hair/bluntbangsalt + name = "Bluntbangs (Alt)" + icon_state = "hair_bluntbangsalt" + /datum/sprite_accessory/hair/bob name = "Bob Hair" icon_state = "hair_bob" @@ -109,6 +145,10 @@ name = "Bobcut (Alt)" icon_state = "hair_bobcutalt" +/datum/sprite_accessory/hair/bobcutalt2 + name = "Bobcut (Alt) 2" + icon_state = "hair_bobcutalt2" + /datum/sprite_accessory/hair/boddicker name = "Boddicker" icon_state = "hair_boddicker" @@ -205,6 +245,14 @@ name = "CIA" icon_state = "hair_cia" +/datum/sprite_accessory/hair/combedback + name = "Combed Back" + icon_state = "hair_combedback" + +/datum/sprite_accessory/hair/combedbob + name = "Combed Bob" + icon_state = "hair_combedbob" + /datum/sprite_accessory/hair/combover name = "Combover" icon_state = "hair_combover" @@ -233,6 +281,14 @@ name = "Cornrow Tail" icon_state = "hair_cornrowtail" +/datum/sprite_accessory/hair/cotton + name = "Cotton" + icon_state = "hair_cotton" + +/datum/sprite_accessory/hair/cottonalt + name = "Cotton (Alt)" + icon_state = "hair_cottonalt" + /datum/sprite_accessory/hair/country name = "Country" icon_state = "hair_country" @@ -261,6 +317,10 @@ name = "Devil Lock" icon_state = "hair_devillock" +/datum/sprite_accessory/hair/diagonalbangs + name = "Diagonal Bangs" + icon_state = "hair_diagonalbangs" + /datum/sprite_accessory/hair/dreadlocks name = "Dreadlocks" icon_state = "hair_dreads" @@ -337,10 +397,22 @@ name = "Fluffy" icon_state = "hair_fluffy" +/datum/sprite_accessory/hair/fortuneteller + name = "Fortune Teller" + icon_state = "hair_fortuneteller" + /datum/sprite_accessory/hair/fringetail name = "Fringe Tail" icon_state = "hair_fringetail" +/datum/sprite_accessory/hair/froofy + name = "Froofy" + icon_state = "hair_froofy" + +/datum/sprite_accessory/hair/geisha + name = "Geisha" + icon_state = "hair_geisha" + /datum/sprite_accessory/hair/gelled name = "Gelled Back" icon_state = "hair_gelled" @@ -349,6 +421,26 @@ name = "Gentle" icon_state = "hair_gentle" +/datum/sprite_accessory/hair/glammetal + name = "Glam Metal" + icon_state = "hair_glammetal" + +/datum/sprite_accessory/hair/gloomy + name = "Gloomy" + icon_state = "hair_gloomy" + +/datum/sprite_accessory/hair/gloomylong + name = "Gloomy (Long)" + icon_state = "hair_gloomylong" + +/datum/sprite_accessory/hair/hajime + name = "Hajime" + icon_state = "hair_hajime" + +/datum/sprite_accessory/hair/hajimealt + name = "Hajime (Alt)" + icon_state = "hair_hajimealt" + /datum/sprite_accessory/hair/halfbang name = "Half-banged Hair" icon_state = "hair_halfbang" @@ -365,6 +457,10 @@ name = "Half-shaved Hair" icon_state = "hair_halfshaved" +/datum/sprite_accessory/hair/harold + name = "Harold" + icon_state = "hair_harold" + /datum/sprite_accessory/hair/hedgehog name = "Hedgehog Hair" icon_state = "hair_hedgehog" @@ -393,6 +489,10 @@ name = "Hitop" icon_state = "hair_hitop" +/datum/sprite_accessory/hair/inari + name = "Inari" + icon_state = "hair_inari" + /datum/sprite_accessory/hair/inkling name = "Inkling" icon_state = "hair_inkling" @@ -421,14 +521,18 @@ name = "Keanu" icon_state = "hair_keanu" -/datum/sprite_accessory/hair/kusangi - name = "Kusanagi" - icon_state = "hair_kusanagi" +/datum/sprite_accessory/hair/kisaragi + name = "Kisaragi" + icon_state = "hair_kisaragi" /datum/sprite_accessory/hair/kleeia name = "Kleeia" icon_state = "hair_kleeia" +/datum/sprite_accessory/hair/kusangi + name = "Kusanagi" + icon_state = "hair_kusanagi" + /datum/sprite_accessory/hair/long name = "Long Hair 1" icon_state = "hair_long" @@ -449,6 +553,10 @@ name = "Long Over Eye" icon_state = "hair_longovereye" +/datum/sprite_accessory/hair/long_over_eyealt + name = "Long Over Eye (Alt)" + icon_state = "hair_longovereyealt" + /datum/sprite_accessory/hair/longbangs name = "Long Bangs" icon_state = "hair_lbangs" @@ -489,10 +597,6 @@ name = "Mohawk" icon_state = "hair_d" -/datum/sprite_accessory/hair/newyou - name = "New You" - icon_state = "hair_newyou" - /datum/sprite_accessory/hair/reversemohawk name = "Mohawk (Reverse)" icon_state = "hair_reversemohawk" @@ -509,6 +613,10 @@ name = "Mulder" icon_state = "hair_mulder" +/datum/sprite_accessory/hair/newyou + name = "New You" + icon_state = "hair_newyou" + /datum/sprite_accessory/hair/nia name = "Nia" icon_state = "hair_nia" @@ -579,10 +687,18 @@ name = "Pompadour (Big)" icon_state = "hair_bigpompadour" +/datum/sprite_accessory/hair/bigpompadouralt + name = "Pompadour (Big) (Alt)" + icon_state = "hair_bigpompadouralt" + /datum/sprite_accessory/hair/ponytail1 name = "Ponytail" icon_state = "hair_ponytail" +/datum/sprite_accessory/hair/ponytail1alt + name = "Ponytail (Alt)" + icon_state = "hair_ponytailalt" + /datum/sprite_accessory/hair/ponytail2 name = "Ponytail 2" icon_state = "hair_ponytail2" @@ -591,14 +707,26 @@ name = "Ponytail 3" icon_state = "hair_ponytail3" +/datum/sprite_accessory/hair/ponytail3alt + name = "Ponytail 3 (Alt)" + icon_state = "hair_ponytail3alt" + /datum/sprite_accessory/hair/ponytail4 name = "Ponytail 4" icon_state = "hair_ponytail4" +/datum/sprite_accessory/hair/ponytail4alt + name = "Ponytail 4 (Alt)" + icon_state = "hair_ponytail4alt" + /datum/sprite_accessory/hair/ponytail5 name = "Ponytail 5" icon_state = "hair_ponytail5" +/datum/sprite_accessory/hair/ponytail6 + name = "Ponytail 6" + icon_state = "hair_ponytail6" + /datum/sprite_accessory/hair/highponytail name = "Ponytail (High)" icon_state = "hair_highponytail" @@ -623,6 +751,10 @@ name = "Ponytail (Side) 4" icon_state = "hair_sidetail4" +/datum/sprite_accessory/hair/sidetail5 + name = "Ponytail (Side) 5" + icon_state = "hair_sidetail5" + /datum/sprite_accessory/hair/sharptail name = "Ponytail (Sharp)" icon_state = "hair_sharptail" @@ -639,10 +771,18 @@ name = "Poofy 2" icon_state = "hair_poofy2" +/datum/sprite_accessory/hair/quadcurls + name = "Quad Curls" + icon_state = "hair_quadcurls" + /datum/sprite_accessory/hair/quiff name = "Quiff" icon_state = "hair_quiff" +/datum/sprite_accessory/hair/rockstar + name = "Rockstar" + icon_state = "hair_rockstar" + /datum/sprite_accessory/hair/ronin name = "Ronin" icon_state = "hair_ronin" @@ -759,6 +899,10 @@ name = "Slightly Long Hair" icon_state = "hair_protagonist" +/datum/sprite_accessory/hair/slightlymessy + name = "Slightly Messy Hair" + icon_state = "hair_slightlymessy" + /datum/sprite_accessory/hair/spiky name = "Spiky" icon_state = "hair_spikey" @@ -771,6 +915,26 @@ name = "Spiky 3" icon_state = "hair_spiky2" +/datum/sprite_accessory/hair/slimedroplet + name = "Slime Droplet" + icon_state = "hair_slimedroplet" + +/datum/sprite_accessory/hair/slimedropletalt + name = "Slime Droplet (Alt)" + icon_state = "hair_slimedropletalt" + +/datum/sprite_accessory/hair/slimespikes + name = "Slime Spikes" + icon_state = "hair_slimespikes" + +/datum/sprite_accessory/hair/slimetendrils + name = "Slime Tendrils" + icon_state = "hair_slimetendrils" + +/datum/sprite_accessory/hair/slimetendrilsalt + name = "Slime Tendrils (Alt)" + icon_state = "hair_slimetendrilsalt" + /datum/sprite_accessory/hair/supernova name = "Supernova" icon_state = "hair_supernova" @@ -851,6 +1015,10 @@ name = "Very Long Hair 2" icon_state = "hair_longest" +/datum/sprite_accessory/hair/longestalt + name = "Very Long Hair 2 (Alt)" + icon_state = "hair_longestalt" + /datum/sprite_accessory/hair/longest2 name = "Very Long Over Eye" icon_state = "hair_longest2" @@ -886,3 +1054,7 @@ /datum/sprite_accessory/hair/ziegler name = "Ziegler" icon_state = "hair_ziegler" + +/datum/sprite_accessory/hair/zone + name = "Zone" + icon_state = "hair_zone" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1aa3749589..3f456a9b43 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -149,6 +149,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /// var/sound/attack_sound = 'sound/weapons/punch1.ogg' var/sound/miss_sound = 'sound/weapons/punchmiss.ogg' + var/attack_sound_override = null var/list/mob/living/ignored_by = list() // list of mobs that will ignore this species //Breathing! @@ -569,12 +570,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/remove_blacklisted_quirks(mob/living/carbon/C) var/mob/living/L = C.mind?.current if(istype(L)) - var/list/my_quirks = L.client?.prefs.all_quirks.Copy() - SSquirks.filter_quirks(my_quirks, blacklisted_quirks) for(var/q in L.roundstart_quirks) var/datum/quirk/Q = q - if(!(SSquirks.quirk_name_by_path(Q.type) in my_quirks)) - L.remove_quirk(Q.type) + if(Q.type in blacklisted_quirks) + qdel(Q) removed_quirks += Q.type // restore any quirks that we removed @@ -1615,7 +1614,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/armor_block = target.run_armor_check(affecting, "melee") - playsound(target.loc, user.dna.species.attack_sound, 25, 1, -1) + playsound(target.loc, user.dna.species.attack_sound_override || attack_sound, 25, 1, -1) target.visible_message("[user] [atk_verb]ed [target]!", \ "[user] [atk_verb]ed you!", null, COMBAT_MESSAGE_RANGE, null, \ user, "You [atk_verb]ed [target]!") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 6aaa2cca87..ae716efc71 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -542,8 +542,48 @@ update_stat() med_hud_set_health() med_hud_set_status() + update_health_hud() -//proc used to ressuscitate a mob +/mob/living/update_health_hud() + var/severity = 0 + var/healthpercent = (health/maxHealth) * 100 + if(hud_used?.healthdoll) //to really put you in the boots of a simplemob + var/obj/screen/healthdoll/living/livingdoll = hud_used.healthdoll + switch(healthpercent) + if(100 to INFINITY) + livingdoll.icon_state = "living0" + if(80 to 100) + livingdoll.icon_state = "living1" + severity = 1 + if(60 to 80) + livingdoll.icon_state = "living2" + severity = 2 + if(40 to 60) + livingdoll.icon_state = "living3" + severity = 3 + if(20 to 40) + livingdoll.icon_state = "living4" + severity = 4 + if(1 to 20) + livingdoll.icon_state = "living5" + severity = 5 + else + livingdoll.icon_state = "living6" + severity = 6 + if(!livingdoll.filtered) + livingdoll.filtered = TRUE + var/icon/mob_mask = icon(icon, icon_state) + if(mob_mask.Height() > world.icon_size || mob_mask.Width() > world.icon_size) + var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite" + mob_mask = icon('icons/mob/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll + UNLINT(livingdoll.filters += filter(type="alpha", icon = mob_mask)) + livingdoll.filters += filter(type="drop_shadow", size = -1) + if(severity > 0) + overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) + else + clear_fullscreen("brute") + +//Proc used to resuscitate a mob, for full_heal see fully_heal() /mob/living/proc/revive(full_heal = FALSE, admin_revive = FALSE) SEND_SIGNAL(src, COMSIG_LIVING_REVIVE, full_heal, admin_revive) if(full_heal) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 386f1174e1..f5919f389c 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -94,6 +94,7 @@ var/smoke_delay = 0 //used to prevent spam with smoke reagent reaction on mob. var/bubble_icon = "default" //what icon the mob uses for speechbubbles + var/health_doll_icon //if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi var/last_bumped = 0 var/unique_name = 0 //if a mob's name should be appended with an id when created e.g. Mob (666) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index c0a4822b6d..57ddbe6290 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -149,6 +149,7 @@ icon_state = "alienq" icon_living = "alienq" icon_dead = "alienq_dead" + health_doll_icon = "alienq" bubble_icon = "alienroyal" move_to_delay = 4 maxHealth = 400 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 51a646f668..8388d6501a 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -73,6 +73,7 @@ icon_living = "megacarp" icon_dead = "megacarp_dead" icon_gib = "megacarp_gib" + health_doll_icon = "megacarp" regen_amount = 6 maxHealth = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index ec0b7acd07..67cecd3832 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -9,6 +9,7 @@ icon_state = "crawling" icon_living = "crawling" icon_dead = "dead" + health_doll_icon = "crawling" mob_biotypes = MOB_ORGANIC|MOB_HUMANOID speak_chance = 80 maxHealth = 220 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 61f1fe0c9d..a60c5504e6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -28,6 +28,7 @@ Difficulty: Medium icon_state = "miner" icon_living = "miner" icon = 'icons/mob/broadMobs.dmi' + health_doll_icon = "miner" mob_biotypes = MOB_ORGANIC|MOB_HUMANOID light_color = "#E4C7C5" movement_type = GROUND diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 5305813ebf..b80e6cc72f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -33,6 +33,7 @@ Difficulty: Hard icon_state = "bubblegum" icon_living = "bubblegum" icon_dead = "" + health_doll_icon = "bubblegum" friendly_verb_continuous = "stares down" friendly_verb_simple = "stare down" icon = 'icons/mob/lavaland/96x96megafauna.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 787c15a5b4..5751512b19 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -32,6 +32,7 @@ Difficulty: Very Hard icon_state = "eva" icon_living = "eva" icon_dead = "dragon_dead" + health_doll_icon = "eva" friendly_verb_continuous = "stares down" friendly_verb_simple = "stare down" icon = 'icons/mob/lavaland/96x96megafauna.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 6c1e9eef6e..a3d51744b9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -48,6 +48,7 @@ Difficulty: Medium icon_state = "dragon" icon_living = "dragon" icon_dead = "dragon_dead" + health_doll_icon = "dragon" friendly_verb_continuous = "stares down" friendly_verb_simple = "stare down" speak_emote = list("roars") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 32300dea18..14b71b3bac 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -44,6 +44,7 @@ Difficulty: Normal attack_sound = 'sound/weapons/sonic_jackhammer.ogg' icon_state = "hierophant" icon_living = "hierophant" + health_doll_icon = "hierophant" friendly_verb_continuous = "stares down" friendly_verb_simple = "stare down" icon = 'icons/mob/lavaland/hierophant_new.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 07c1957da2..15bfe2b7f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -26,6 +26,7 @@ SHITCODE AHEAD. BE ADVISED. Also comment extravaganza spacewalk = TRUE icon_state = "mega_legion" icon_living = "mega_legion" + health_doll_icon = "mega_legion" desc = "One of many." icon = 'icons/mob/lavaland/96x96megafauna.dmi' attack_verb_continuous = "chomps" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index bda898ef17..f2ece50af2 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -75,6 +75,7 @@ icon_living = "watcher" icon_aggro = "watcher" icon_dead = "watcher_dead" + health_doll_icon = "watcher" pixel_x = -10 throw_message = "bounces harmlessly off of" melee_damage_lower = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm index ef51dc572f..5ee249c767 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -25,6 +25,7 @@ icon_aggro = "broodmother" icon_dead = "egg_sac" icon_gib = "syndicate_gib" + health_doll_icon = "broodmother" maxHealth = 800 health = 800 melee_damage_lower = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index 032bc2d60d..4425bce532 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -24,6 +24,7 @@ icon_aggro = "herald" icon_dead = "herald_dying" icon_gib = "syndicate_gib" + health_doll_icon = "herald" maxHealth = 800 health = 800 melee_damage_lower = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index 6c13bb903e..dca508cfeb 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -24,6 +24,7 @@ icon_aggro = "legionnaire" icon_dead = "legionnaire_dead" icon_gib = "syndicate_gib" + health_doll_icon = "legionnaire" maxHealth = 800 health = 800 melee_damage_lower = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm index e3a5d5f762..50b15933a9 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm @@ -24,6 +24,7 @@ icon_aggro = "pandora" icon_dead = "pandora_dead" icon_gib = "syndicate_gib" + health_doll_icon = "pandora" maxHealth = 800 health = 800 melee_damage_lower = 15 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 446fe80c7d..7db91b50ad 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -253,6 +253,7 @@ icon_state = "legion" icon_living = "legion" icon_dead = "legion" + health_doll_icon = "legion" health = 450 maxHealth = 450 melee_damage_lower = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 96418686d3..5750d1ecb9 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -6,6 +6,7 @@ icon_living = "clown" icon_dead = "clown_dead" icon_gib = "clown_gib" + health_doll_icon = "clown" //if >32x32, it will use this generic. for all the huge clown mobs that subtype from this mob_biotypes = MOB_ORGANIC|MOB_HUMANOID turns_per_move = 5 response_disarm_continuous = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index 46a5a8ec68..0e106caf46 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -6,6 +6,7 @@ icon_living = "pine_1" icon_dead = "pine_1" icon_gib = "pine_1" + health_doll_icon = "pine_1" gender = NEUTER speak_chance = 0 turns_per_move = 5 @@ -72,5 +73,6 @@ icon_living = "festivus_pole" icon_dead = "festivus_pole" icon_gib = "festivus_pole" + health_doll_icon = "festivus_pole" loot = list(/obj/item/stack/rods) speak_emote = list("polls") diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index bce1a01c8a..f10b184a45 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -8,6 +8,7 @@ icon_aggro = "Fugu0" icon_dead = "Fugu_dead" icon_gib = "syndicate_gib" + health_doll_icon = "Fugu0" mob_biotypes = MOB_ORGANIC|MOB_BEAST mouse_opacity = MOUSE_OPACITY_ICON move_to_delay = 5 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 5fa6a0c22d..e46c57f245 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -7,6 +7,7 @@ ///How much blud it has for bloodsucking blood_volume = 550 rad_flags = RAD_NO_CONTAMINATE + hud_type = /datum/hud/living/simple_animal status_flags = CANPUSH diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index b925c67940..49821e55e0 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -158,12 +158,12 @@ return FALSE size_x = clamp(size_x, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) size_y = clamp(size_y, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) - var/list/desc = list("This is a photo of an area of [size_x+1] meters by [size_y+1] meters.") + var/list/desc = list("This is a photo of an area of [size_x*2 + 1] meters by [size_y*2 + 1] meters.") var/ai_user = isAI(user) var/list/seen - var/list/viewlist = (user && user.client)? getviewsize(user.client.view) : getviewsize(world.view) + var/list/viewlist = user?.client? getviewsize(user.client.view) : getviewsize(world.view) var/viewr = max(viewlist[1], viewlist[2]) + max(size_x, size_y) - var/viewc = user.client? user.client.eye : target + var/viewc = user?.client? user.client.eye : target seen = get_hear(viewr, viewc) var/list/turfs = list() var/list/mobs = list() @@ -184,7 +184,7 @@ var/psize_y = (size_y * 2 + 1) * world.icon_size var/get_icon = camera_get_icon(turfs, target_turf, psize_x, psize_y, clone_area, size_x, size_y, (size_x * 2 + 1), (size_y * 2 + 1)) qdel(clone_area) - var/icon/temp = icon('icons/effects/96x96.dmi',"") + var/icon/temp = icon('icons/effects/camera_image_base.dmi',"") temp.Blend("#000", ICON_OVERLAY) temp.Scale(psize_x, psize_y) temp.Blend(get_icon, ICON_OVERLAY) diff --git a/code/modules/photography/camera/camera_image_capturing.dm b/code/modules/photography/camera/camera_image_capturing.dm index 5bd9c108d1..a5a1cbeedc 100644 --- a/code/modules/photography/camera/camera_image_capturing.dm +++ b/code/modules/photography/camera/camera_image_capturing.dm @@ -47,7 +47,7 @@ atoms += A CHECK_TICK - var/icon/res = icon('icons/effects/96x96.dmi', "") + var/icon/res = icon('icons/effects/camera_image_base.dmi', "") res.Scale(psize_x, psize_y) var/list/sorted = list() @@ -64,7 +64,6 @@ var/xcomp = FLOOR(psize_x / 2, 1) - 15 var/ycomp = FLOOR(psize_y / 2, 1) - 15 - for(var/atom/A in sorted) var/xo = (A.x - center.x) * world.icon_size + A.pixel_x + xcomp var/yo = (A.y - center.y) * world.icon_size + A.pixel_y + ycomp diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm index d3cf755de2..946dec3f49 100644 --- a/code/modules/research/nanites/nanite_programs.dm +++ b/code/modules/research/nanites/nanite_programs.dm @@ -254,14 +254,14 @@ software_error() /datum/nanite_program/proc/on_shock(shock_damage) - if(!program_flags & NANITE_SHOCK_IMMUNE) + if(!(program_flags & NANITE_SHOCK_IMMUNE)) if(prob(10)) software_error() else if(prob(33)) self_destruct() /datum/nanite_program/proc/on_minor_shock() - if(!program_flags & NANITE_SHOCK_IMMUNE) + if(!(program_flags & NANITE_SHOCK_IMMUNE)) if(prob(10)) software_error() diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm index 9b17162532..cf33c893ad 100644 --- a/code/modules/uplink/uplink_items/uplink_bundles.dm +++ b/code/modules/uplink/uplink_items/uplink_bundles.dm @@ -38,7 +38,7 @@ specialised contractor baton, and three randomly selected low cost items. Can include otherwise unobtainable items." item = /obj/item/storage/box/syndie_kit/contract_kit cost = 20 - player_minimum = 30 + player_minimum = 25 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) restricted = TRUE diff --git a/code/modules/uplink/uplink_items/uplink_dangerous.dm b/code/modules/uplink/uplink_items/uplink_dangerous.dm index a8ca068ad2..948d17d168 100644 --- a/code/modules/uplink/uplink_items/uplink_dangerous.dm +++ b/code/modules/uplink/uplink_items/uplink_dangerous.dm @@ -228,6 +228,15 @@ surplus = 50 include_modes = list(/datum/game_mode/nuclear) +/datum/uplink_item/dangerous/maulergauntlets + name = "Mauler Gauntlets" + desc = "Mauler gauntlets are a pair of high-tech plastitanium gauntlets fused with illegal nanite auto-injectors designed \ + to grant the wearer sextuple the strength of an average human being. Wearing these, you will punch harder, inflict more injuries \ + with your fists, and be able to slam people through tables with immense force. \ + Unfortunately, due to the size of the gloves you will be unable to wield firearms with them equipped." + item = /obj/item/clothing/gloves/fingerless/pugilist/mauler + cost = 8 + /datum/uplink_item/dangerous/powerfist name = "Power Fist" desc = "The power-fist is a metal gauntlet with a built-in piston-ram powered by an external gas supply.\ diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index fedaeff98c..da3c740a1b 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -212,6 +212,8 @@ /obj/item/clothing/suit/jacket/leather/overcoat = 4, /obj/item/clothing/under/pants/mustangjeans = 3, /obj/item/clothing/neck/necklace/dope = 5, + /obj/item/clothing/under/costume/swagoutfit = 5, + /obj/item/clothing/shoes/swagshoes = 5, /obj/item/clothing/suit/jacket/letterman_nanotrasen = 5, /obj/item/clothing/under/misc/corporateuniform = 5, /obj/item/clothing/suit/hooded/wintercoat/polychromic = 5, diff --git a/html/changelog.html b/html/changelog.html index c41322865b..4eb95b34d7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,56 @@ -->
+

29 May 2021

+

Kraseo updated:

+ +

Linzolle updated:

+ +

keronshb updated:

+ +

zeroisthebiggay updated:

+ + +

26 May 2021

+

bunny232 updated:

+ + +

24 May 2021

+

zeroisthebiggay updated:

+ + +

23 May 2021

+

Putnam3145 updated:

+ +

WanderingFox95 updated:

+ +

keronshb updated:

+ +

21 May 2021

Putnam3145 updated:

GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 135e6db518..475730286e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -29332,3 +29332,35 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2021-05-21: Putnam3145: - bugfix: Fixed activity being attached to minds instead of mobs on antag attach. +2021-05-23: + Putnam3145: + - bugfix: Antag and species no longer remove all traits if one has a blacklisted + trait + WanderingFox95: + - imageadd: Replaced the antlers showing up when you select deer ears with actual + deer ears. Literally why was that even a thing before? + - imageadd: Straight rabbit ears are now a thing. + keronshb: + - balance: 30 > 25 pop req for contractor kit + - code_imp: adds a special hud for simple mobs. + - imageadd: a lot of >32x32 mobs now have icons for their health dolls +2021-05-24: + zeroisthebiggay: + - rscadd: 'New traitor item: the Mauler Gauntlets! Punch hard, punch good! Eight + telecrystals, buy today!' + - rscadd: hairs from Airborne Snitch +2021-05-26: + bunny232: + - bugfix: Removed two random 'captain's office' tiles from space on meta station +2021-05-29: + Kraseo: + - bugfix: No more slamming into people while bloodcrawled. + Linzolle: + - bugfix: brand intelligence event works again + keronshb: + - rscadd: swag outfit available in clothesmate + - rscadd: 'swag shoes availble in clothesmate resprite: changed swag shoes icon + to the one twaticus made.' + - rscadd: Adds the clown mob spawner for admins + zeroisthebiggay: + - balance: puglism damage can no longer stack with scarp diff --git a/icons/effects/camera_image_base.dmi b/icons/effects/camera_image_base.dmi new file mode 100644 index 0000000000..4f5867e07e Binary files /dev/null and b/icons/effects/camera_image_base.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 5712f05165..de50a0d9dc 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/feet_digi.dmi b/icons/mob/clothing/feet_digi.dmi index 5b4d733879..1cc1e801c7 100644 Binary files a/icons/mob/clothing/feet_digi.dmi and b/icons/mob/clothing/feet_digi.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 406b0fe62a..5155f06134 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index f2611b3ab7..6c29fdfa75 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/mob/clothing/uniform_digi.dmi b/icons/mob/clothing/uniform_digi.dmi index 98ec436b86..a957b60a9b 100644 Binary files a/icons/mob/clothing/uniform_digi.dmi and b/icons/mob/clothing/uniform_digi.dmi differ diff --git a/icons/mob/hair.dmi b/icons/mob/hair.dmi index 7322b2cfaf..55c79b9740 100644 Binary files a/icons/mob/hair.dmi and b/icons/mob/hair.dmi differ diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 95aaf330ce..4377a0d7c6 100644 Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 629b989520..25cde38df9 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index d277ebf970..cb2391b5ba 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 6171e032dd..22464b3def 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 0c59c3e711..39ed9d6ec8 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -550,7 +550,7 @@ ckeywhitelist = list("sneka") /datum/gear/donator/smaiden - name = "Shrine Maiden" - slot = SLOT_WEAR_SUIT - path = /obj/item/clothing/suit/smaiden + name = "shrine maiden outfit" + slot = SLOT_W_UNIFORM + path = /obj/item/clothing/under/smaiden ckeywhitelist = list("ultimarifox") diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 89734106cf..b7d04e0780 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -602,8 +602,8 @@ mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi' icon_state = "mmask" -/obj/item/clothing/suit/smaiden - name = "shrine maiden" +/obj/item/clothing/under/smaiden + name = "shrine maiden outfit" desc = "Seems questionably tight for religious purposes." icon_state = "smaiden" item_state = "smaiden" diff --git a/modular_citadel/icons/mob/mam_ears.dmi b/modular_citadel/icons/mob/mam_ears.dmi index a8209f25c5..e615b7f7ee 100644 Binary files a/modular_citadel/icons/mob/mam_ears.dmi and b/modular_citadel/icons/mob/mam_ears.dmi differ diff --git a/sound/weapons/mauler_punch.ogg b/sound/weapons/mauler_punch.ogg new file mode 100644 index 0000000000..3e610ea238 Binary files /dev/null and b/sound/weapons/mauler_punch.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 8b996f3801..73037c20ee 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -272,6 +272,7 @@ #include "code\_onclick\hud\revenanthud.dm" #include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_objects.dm" +#include "code\_onclick\hud\simple_animal.dm" #include "code\_onclick\hud\swarmer.dm" #include "code\_onclick\hud\screen_objects\clickdelay.dm" #include "code\_onclick\hud\screen_objects\sprint.dm"