From 7ccdf4e81599caabec6add3b75abd62d996787b8 Mon Sep 17 00:00:00 2001 From: LordFowl Date: Fri, 30 Dec 2016 21:17:02 -0500 Subject: [PATCH] Bugs, Bugs Everywhere. (#1351) Fixes #1333 and Fixes #1331 IPCs, and indeed anyone with robotic organs or plant organs, can be rejuv'd properly. IPCs now have their damage shown on VV, more or less. IPCs have their brutemod set to 0.8, since prosthetic limbs already have brute mods of their own, and so Industrial IPCs could have a brute mod of 0.5 instead of 0.3 Probably some other stuff. It's all in the diff. --- .../spacesuits/rig/suits/terminator.dm | 8 +-- .../mob/living/carbon/human/human_damage.dm | 4 +- .../mob/living/carbon/human/human_powers.dm | 10 ++- .../mob/living/carbon/human/human_species.dm | 1 + .../living/carbon/human/species/species.dm | 1 + .../species/station/machine_subspecies.dm | 31 ++++----- .../carbon/human/species/station/station.dm | 5 +- .../species/station/vaurca_subspecies.dm | 1 + code/modules/mob/living/carbon/resist.dm | 5 +- code/modules/organs/organ.dm | 7 +- code/modules/organs/organ_external.dm | 17 +++-- code/modules/organs/organ_icon.dm | 3 + code/modules/organs/robolimbs.dm | 4 +- code/modules/organs/subtypes/machine.dm | 62 ++++++++++++++---- .../projectiles/guns/energy/special.dm | 4 +- .../projectiles/guns/projectile/automatic.dm | 6 +- icons/mob/human_races/cyberlimbs/ipc.dmi | Bin 1703 -> 0 bytes icons/mob/human_races/r_terminator.dmi | Bin 2112 -> 1929 bytes 18 files changed, 115 insertions(+), 54 deletions(-) delete mode 100644 icons/mob/human_races/cyberlimbs/ipc.dmi diff --git a/code/modules/clothing/spacesuits/rig/suits/terminator.dm b/code/modules/clothing/spacesuits/rig/suits/terminator.dm index 22fd946ec7e..1dd58254631 100644 --- a/code/modules/clothing/spacesuits/rig/suits/terminator.dm +++ b/code/modules/clothing/spacesuits/rig/suits/terminator.dm @@ -29,16 +29,16 @@ ) /obj/item/clothing/head/helmet/space/rig/terminator - species_restricted = list("Hunter-Killer") + species_restricted = list("Machine") /obj/item/clothing/suit/space/rig/terminator - species_restricted = list("Hunter-Killer") + species_restricted = list("Machine") /obj/item/clothing/shoes/magboots/rig/terminator - species_restricted = list("Hunter-Killer") + species_restricted = list("Machine") /obj/item/clothing/gloves/rig/terminator - species_restricted = list("Hunter-Killer") + species_restricted = list("Machine") /obj/item/weapon/rig/terminator/equipped initial_modules = list( diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 57afcac3db7..ae0b7fd41bc 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -70,7 +70,7 @@ /mob/living/carbon/human/getBruteLoss() var/amount = 0 for(var/obj/item/organ/external/O in organs) - if(O.status & ORGAN_ROBOT) + if((O.status & ORGAN_ROBOT) && !O.vital) continue //robot limbs don't count towards shock and crit amount += O.brute_dam return amount @@ -78,7 +78,7 @@ /mob/living/carbon/human/getFireLoss() var/amount = 0 for(var/obj/item/organ/external/O in organs) - if(O.status & ORGAN_ROBOT) + if((O.status & ORGAN_ROBOT) && !O.vital) continue //robot limbs don't count towards shock and crit amount += O.burn_dam return amount diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 432ba2d870a..b8b2d64e8ad 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -267,12 +267,14 @@ src << "You cannot do that in your current state." return - for(var/mob/M in range(7, src)) + for(var/mob/living/M in range(7, src)) M << 'sound/effects/EMPulse.ogg' for(var/obj/item/weapon/material/shard/shrapnel/flechette/F in M.contents) playsound(F, 'sound/items/countdown.ogg', 125, 1) spawn(20) explosion(F.loc, -1, -1, 2) + M.apply_damage(20,BRUTE) + M.apply_damage(15,BURN) qdel(F) for(var/obj/item/weapon/material/shard/shrapnel/flechette/F in range(7, src)) @@ -287,6 +289,10 @@ set name = "State Laws" set desc = "State your laws aloud." + if(stat) + src << "You cannot do that in your current state." + return + if(last_special > world.time) return last_special = world.time + 20 @@ -380,7 +386,7 @@ sleep(10) playsound(src, 'sound/items/countdown.ogg', 125, 1) sleep(20) - explosion(src, -1, -1, 5) + explosion(src, -1, 1, 5) src.gib() /mob/living/carbon/human/proc/hivenet() diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index 2e8fd06647b..4322f5b6dbd 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -117,3 +117,4 @@ /mob/living/carbon/human/terminator mob_size = 30 + offset_light = 1 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index cdec7963cec..16650543c76 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -63,6 +63,7 @@ var/radiation_mod = 1 // Radiation modifier var/flash_mod = 1 // Stun from blindness modifier. var/vision_flags = SEE_SELF // Same flags as glasses. + var/list/breakcuffs = list() //used in resist.dm to check if they can break hand/leg cuffs // Death vars. var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human diff --git a/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm index d403d242db3..c464985f384 100644 --- a/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm @@ -68,8 +68,8 @@ short_name = "ind" name_plural = "Industrials" - brute_mod = 0.3 - burn_mod = 1.2 + brute_mod = 0.5 + burn_mod = 1.3 slowdown = 4 blurb = "Tough units made for engineering and security with simple exteriors, roughly resembling humans. No job restrictions. Heavy emphasis on \ @@ -98,9 +98,9 @@ "r_foot" = list("path" = /obj/item/organ/external/foot/right/industrial) ) - heat_level_1 = 800 - heat_level_2 = 1300 - heat_level_3 = 2500 + heat_level_1 = 600 + heat_level_2 = 1200 + heat_level_3 = 2400 heat_discomfort_level = 800 @@ -145,10 +145,11 @@ eyes = "eyes_terminator" has_floating_eyes = 1 - brute_mod = 0.2 - burn_mod = 0.4 + brute_mod = 0.3 + burn_mod = 0.5 flash_mod = 0 siemens_coefficient = 0 + breakcuffs = list(MALE,FEMALE,NEUTER) show_ssd = "laying inert, its activation glyph dark." death_sound = 'sound/effects/bang.ogg' @@ -179,7 +180,7 @@ has_organ = list( "brain" = /obj/item/organ/mmi_holder/posibrain/terminator, "shielded cell" = /obj/item/organ/cell/terminator, - "optics" = /obj/item/organ/optical_sensor, + "optics" = /obj/item/organ/optical_sensor/terminator, "data core" = /obj/item/organ/data ) @@ -223,13 +224,9 @@ playsound(H.loc, 'sound/machines/buzz-two.ogg', 100, 0) return 0 -/datum/species/machine/handle_death(var/mob/living/carbon/human/H) +/datum/species/machine/terminator/handle_death(var/mob/living/carbon/human/H) ..() - spawn(10) - playsound(H.loc, 'sound/items/countdown.ogg', 125, 1) - spawn(20) - explosion(H, -1, -1, 5) - H.gib() - -/datum/species/machine/sanitize_name(var/new_name) - return sanitizeName(new_name, allow_numbers = 1) \ No newline at end of file + playsound(H.loc, 'sound/items/countdown.ogg', 125, 1) + spawn(15) + explosion(H.loc, -1, 1, 5) + H.gib() diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 8c4e3b6b36e..45cffd783ee 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -48,6 +48,7 @@ sprint_cost_factor = 1.45 exhaust_threshold = 65 rarity_value = 3 + breakcuffs = list(MALE) blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \ Uuosa-Eso system, which roughly translates to 'burning mother'.

Coming from a harsh, radioactive \ @@ -352,7 +353,7 @@ radiation_mod = 0 // not affected by radiation // #TODO-MERGE: Check for balance and self-repair. If self-repair is a thing, RIP balance. - brute_mod = 0.5 + brute_mod = 0.8 burn_mod = 1.0 show_ssd = "flashing a 'system offline' glyph on their monitor" death_message = "gives one shrill beep before falling lifeless." @@ -375,7 +376,7 @@ passive_temp_gain = 10 // This should cause IPCs to stabilize at ~80 C in a 20 C environment. flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON | NO_MINOR_CUT - appearance_flags = HAS_SKIN_COLOR + appearance_flags = HAS_SKIN_COLOR | HAS_HAIR_COLOR spawn_flags = CAN_JOIN | IS_WHITELISTED blood_color = "#1F181F" diff --git a/code/modules/mob/living/carbon/human/species/station/vaurca_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/vaurca_subspecies.dm index 0d7cc87efa8..c310f6983e1 100644 --- a/code/modules/mob/living/carbon/human/species/station/vaurca_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/vaurca_subspecies.dm @@ -49,6 +49,7 @@ brute_mod = 0.2 //note to self: remove is_synthetic checks for brmod and burnmod burn_mod = 0.8 //2x was a bit too much. we'll see how this goes. toxins_mod = 1 //they're not used to all our weird human bacteria. + breakcuffs = list(MALE,FEMALE,NEUTER) speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') speech_chance = 100 diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index b22536f01b5..041ea235f0e 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -107,7 +107,7 @@ if(HULK in mutations) return 1 - if (get_species() == "Unathi" && gender == "male") + if(src.gender in src.species.breakcuffs) return 1 return 0 @@ -127,7 +127,8 @@ "You successfully break your [handcuffed.name]." ) - say(pick("RAAAAAAAARGH!", "HNNNNNNNNNGGGGGGH!", "GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", "AAAAAAARRRGH!" )) + if((get_species() == "Unathi") || (HULK in mutations)) + say(pick("RAAAAAAAARGH!", "HNNNNNNNNNGGGGGGH!", "GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", "AAAAAAARRRGH!" )) qdel(handcuffed) handcuffed = null diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 9cd7dff5e15..9d41d54a13b 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -25,6 +25,7 @@ var/list/organ_cache = list() germ_level = 0 var/datum/dna/dna var/datum/species/species + var/emp_coeff = 1 //coefficient for damages taken by EMP, if the organ is robotic. /obj/item/organ/Destroy() if(!owner) @@ -265,13 +266,13 @@ var/list/organ_cache = list() return switch (severity) if (1.0) - take_damage(20) + take_damage(rand(7,20) * emp_coeff) return if (2.0) - take_damage(7) + take_damage(rand(3,7) * emp_coeff) return if(3.0) - take_damage(3) + take_damage(rand(3) * emp_coeff) /obj/item/organ/proc/removed(var/mob/living/user) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 24347290c07..4a1909d2544 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -57,6 +57,7 @@ var/can_grasp //It would be more appropriate if these two were named "affects_grasp" and "affects_stand" at this point var/can_stand var/body_hair + var/painted = 0 /obj/item/organ/external/Destroy() if(parent && parent.children) @@ -343,10 +344,14 @@ This function completely restores a damaged organ to perfect condition. */ /obj/item/organ/external/rejuvenate() damage_state = "00" - if(status & 128) //Robotic organs stay robotic. Fix because right click rejuvinate makes IPC's organs organic. - status = 128 - else - status = 0 + src.status &= ~ORGAN_BROKEN + src.status &= ~ORGAN_BLEEDING + src.status &= ~ORGAN_SPLINTED + src.status &= ~ORGAN_CUT_AWAY + src.status &= ~ORGAN_DESTROYED + src.status &= ~ORGAN_DEAD + src.status &= ~ORGAN_MUTATED + src.status &= ~ORGAN_SPLINTED perma_injury = 0 brute_dam = 0 burn_dam = 0 @@ -932,10 +937,14 @@ Note that amputating the affected organ does in fact remove the infection from t if(company) model = company var/datum/robolimb/R = all_robolimbs[company] + if(species && !(species.name in R.species_can_use)) + R = basic_robolimb if(R) force_icon = R.icon name = "[R.company] [initial(name)]" desc = "[R.desc]" + if(R.paintable) + painted = 1 dislocated = -1 //TODO, make robotic limbs a separate type, remove snowflake cannot_break = 1 diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index e88a95505e1..daddc6d0fd0 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -95,6 +95,9 @@ var/global/list/limb_icon_cache = list() if(force_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") + if(painted) + if(s_col && s_col.len >= 3) + mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD) else if(!dna) mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]") diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index 69d82ac94d4..3e2021f600d 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -16,6 +16,7 @@ var/global/datum/robolimb/basic_robolimb var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from. var/unavailable_at_chargen // If set, not available at chargen. var/list/species_can_use = list("Human","Skrell","Tajara","Zhan-Khaza","M'sai","Unathi","Vaurca Worker","Vaurca Warrior","Baseline Frame") + var/paintable = 0 //tired of istype exceptions. bullshirt to find, and by god do i know it after this project. /datum/robolimb/bishop company = "Bishop Cybernetics" @@ -40,8 +41,9 @@ var/global/datum/robolimb/basic_robolimb /datum/robolimb/ipc company = "Hephaestus Integrated Limb" desc = "This limb is simple and functional; no effort has been made to make it look human." - icon = 'icons/mob/human_races/cyberlimbs/ipc.dmi' + icon = 'icons/mob/human_races/r_machine.dmi' unavailable_at_chargen = 1 + paintable = 1 /datum/robolimb/industrial company = "Hephaestus Industrial Limb" diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index f90a7d60a22..1b4f73c353b 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -176,6 +176,7 @@ organ_tag = "brain" parent_organ = "chest" vital = 1 + emp_coeff = 0.1 /obj/item/organ/data name = "data core" @@ -184,6 +185,7 @@ icon = 'icons/obj/cloning.dmi' icon_state = "harddisk" vital = 0 + emp_coeff = 0.1 /obj/item/organ/data/New() robotize() @@ -197,9 +199,10 @@ organ_tag = "shielded cell" parent_organ = "chest" vital = 1 + emp_coeff = 0.1 /obj/item/organ/cell/New() - mechassist() + robotize() ..() /obj/item/organ/external/head/terminator @@ -209,70 +212,105 @@ max_damage = 50 //made same as arm, since it is not vital min_broken_damage = 30 encased = null + emp_coeff = 0.5 + +/obj/item/organ/optical_sensorterminator + name = "optical sensor" + organ_tag = "optics" + parent_organ = "head" + icon = 'icons/obj/robot_component.dmi' + icon_state = "camera" + dead_icon = "camera_broken" + emp_coeff = 0.5 + +/obj/item/organ/optical_sensor/terminator/New() + robotize() + ..() + /obj/item/organ/external/head/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/chest/terminator dislocated = -1 encased = null + emp_coeff = 0.5 + /obj/item/organ/external/chest/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/groin/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/groin/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/arm/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/arm/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/arm/right/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/arm/right/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/leg/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/leg/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/leg/right/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/leg/right/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/foot/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/foot/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/foot/right/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/foot/right/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/hand/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/hand/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/hand/right/terminator dislocated = -1 + emp_coeff = 0.5 + /obj/item/organ/external/hand/right/terminator/New() - mechassist("Hephaestus Vulcanite Limb") + robotize("Hephaestus Vulcanite Limb") ..() /obj/item/organ/external/head/industrial diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 20541db6a07..91855835d43 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -340,7 +340,7 @@ "You hear a low pulsing roar!" ) is_charging = 1 - sleep(90) + sleep(60) is_charging = 0 if(!istype(user.get_active_hand(), src)) return @@ -430,7 +430,7 @@ "You hear a low pulsing roar!" ) is_charging = 1 - sleep(90) + sleep(60) is_charging = 0 if(!istype(user.get_active_hand(), src)) return diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 944f8693cd1..5ee79bc63cb 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -338,7 +338,7 @@ fire_delay = 20 - accuracy = -4 + accuracy = -1 //wielding information fire_delay_wielded = 5 @@ -387,11 +387,11 @@ auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' recoil = 3 - + accuracy = -2 fire_delay = 10 recoil_wielded = 0 - + fire_delay_wielded = 6 accuracy_wielded = 0 diff --git a/icons/mob/human_races/cyberlimbs/ipc.dmi b/icons/mob/human_races/cyberlimbs/ipc.dmi deleted file mode 100644 index 5c466d63ed54cf8f5bf9a6064b61fcb40c904a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1703 zcmZWoeLT|(7ymWcijA&3xQz9ti9{A!ZX?4o*N7F;l@fO)&HLNTwh{?bbmc}-=*1Il zCMwpZT@-Gm=6&A6@^YoHvDxPO+~;{d&;2~l`Qv=g`RAPPIp=#ay$Lv&hM@)k05JE% zE z7Rq-Za7;`L5~i#Jsl!2&_dx6QKnTIqGMJ_KLDN!%N@mQ*Ga{bOB1V?v_OM#i2cUjTr_;+#CRhQNB0YxtDz zt1s9(J5Sc$J)bN#Fx)hIb+XgP<=;N2U%bD97;5~4s!Em$_CNY!+h!k}iGGyvqU5bl z%DoC!!NAe0Kquq?ek+#M(h|aSx60AAJKguTJd&i>J3nzV<|xyqpyR9YiNTEi;6Xc% znXqX``!%+;5S5sojlCO>-i&Q|1u|$ajBiy{cUPuPOK-|STMa6IOUSVq0RVMZcb7xN z#Nyf85eXlyp_jJ@G6i&Y6{~u7d6l*qeObT=$Qvks_IQaw{S`hK*h&qk*e_Tc_FqO1 z%+PCDr6_|fycgkL??sZS%w5N^W=y7jM-@J*#ZlTPqydP=Q;uH-c zqMGIZX}X3YxJYL4G;1bba=S9k7f+aKaSzU*%%F0U_K6F9HZ;XLMb%yn)a_^^kg09O zpApJLv|5;idD;$sCDjhP*o`2S?;@1n3^Hprs6u&9YxV69TI@3u#dbR$uwD#Joq!fT zMeC@E4YPV4J36rNQnTe_sm8KzhoXmk=7SQ=4K+u{Z0<$>cSp zj~%@3Fq?Hs%hy9by4@2`&ASxP8%|NYB68#N98C=|^>A|g`-dlPy&=psTVdR)oLbBL zlFwhN>>(8NFPrx*_}`{?^7bT&U!Eyt>)BLBBexQU#QHRLlzQS+OdRNs7mMUC9_sa& zI`PWxbFy6CN{zFW9fa8-m!$oA6jzLvaY$~j8fh2#nbzp+~J3+o z%+1p*ZyDlg^!7XxM0k(P_DruRPDw_!9kY`D(q83xTF|Kfx=5H~`NN%S@ygm_Vf;ED zJM&YN+#)dwOZHlFHzpN$_XU?qDFkFK^#+$P?cVX(jl*BAJHmY6tN4DeMjH%T7{hVu zKBl=~UX}8^2LEfnGQcGc!bo`q4G;Qs;CF170=dk|e-h37KYoD7hL8_UTG|khT{a>L zE`0=RofbwK1&|iHK3dPOs3vDx8Z#1maS{CnSfHUl!RJh}#ud0P>ECkHtDhoaOnSF%wjq6 z^$sNfz|L=1Opuw!tr!cV$;fS-d|rL(;fBFI>XHbv-*kP1V?W+4jay+l3i|I*xDp7# zK~~7}b+AQ$!^{TcLNv;p8j@3RriQ|x-XXbKYo8NwjM6_hfy-&v%|-t_NMGMf?`97N z(ze`z5y?phG~rU6VZ`ER|Gi)3l}3qFOK|nklhBTLhq?e`t!S_oWK58p&j{~w42ld< zvPYWRXU>l{l4!~%o>?=O)cnGvNjsruX>}xawJ>UZ^$Fgp)(}^6@a6EcR2qaUF;?@G h>K#lU`tMICLKMKJPSa2Q+r$5omAfm!rP?|8;-Br_7+3%R diff --git a/icons/mob/human_races/r_terminator.dmi b/icons/mob/human_races/r_terminator.dmi index a309182032c6e4d28519002010529991aa7b8aa2..f8f4db4c02a1ffd44a42952c4bc8e522a1332251 100644 GIT binary patch delta 1877 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