diff --git a/ModularTegustation/Teguicons/32x32.dmi b/ModularTegustation/Teguicons/32x32.dmi index 6f774edf536b..ed6dd4485898 100644 Binary files a/ModularTegustation/Teguicons/32x32.dmi and b/ModularTegustation/Teguicons/32x32.dmi differ diff --git a/ModularTegustation/Teguicons/96x64.dmi b/ModularTegustation/Teguicons/96x64.dmi index 95dfd0f62d9b..fa891dc4fa30 100644 Binary files a/ModularTegustation/Teguicons/96x64.dmi and b/ModularTegustation/Teguicons/96x64.dmi differ diff --git a/code/datums/abnormality/_ego_datum/he.dm b/code/datums/abnormality/_ego_datum/he.dm index ba1dd67fb3fa..f6d8271dbec1 100644 --- a/code/datums/abnormality/_ego_datum/he.dm +++ b/code/datums/abnormality/_ego_datum/he.dm @@ -229,3 +229,12 @@ /datum/ego_datum/weapon/legerdemain item_path = /obj/item/ego_weapon/shield/legerdemain cost = 35 + +//You Must Become Strong - Get Strong +/datum/ego_datum/weapon/get_strong + item_path = /obj/item/ego_weapon/get_strong + cost = 35 + +/datum/ego_datum/armor/get_strong + item_path = /obj/item/clothing/suit/armor/ego_gear/get_strong + cost = 35 diff --git a/code/game/objects/items/ego_weapons/he.dm b/code/game/objects/items/ego_weapons/he.dm index 3b681924edf2..7e936c629f69 100644 --- a/code/game/objects/items/ego_weapons/he.dm +++ b/code/game/objects/items/ego_weapons/he.dm @@ -744,3 +744,79 @@ source.adjustBruteLoss(-10) source.adjustSanityLoss(-5) ..() + +/obj/item/ego_weapon/get_strong + name = "Get Strong" + desc = "It whirls and twirls and yet feels limp... Do you love the City you live in?" + special = "This weapon has multiple modes.\nA low power spear. A medium power sword, and a high-power gauntlet.\n\ + Hitting with the spear and sword improve the damage of the next gauntlet." + icon_state = "become_strong_sp" + worn_icon = 'icons/obj/clothing/belt_overlays.dmi' + worn_icon_state = "become_strong" + force = 15 + attack_speed = 1 + reach = 2 + damtype = RED_DAMAGE + armortype = RED_DAMAGE + attack_verb_continuous = list("pokes", "jabs") + attack_verb_simple = list("poke", "jab") + hitsound = 'sound/weapons/ego/spear1.ogg' + var/mode = "Spear" + var/list/mode_stats = list( + "Spear" = list("_sp", 15, 1, 2, list("pokes", "jabs"), list("poke", "jab"), 'sound/weapons/ego/spear1.ogg'), + "Sword" = list("_sw", 25, 1, 1, list("slashes", "slices"), list("slash", "slice"), 'sound/weapons/bladeslice.ogg'), + "Gauntlet" = list("_f", 50, 3, 1, list("crushes", "smashes"), list("crush", "smash"), 'sound/weapons/ego/hammer.ogg') + ) + var/windup = 0 + +/obj/item/ego_weapon/get_strong/Initialize() + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + name = pick("BECOME STRONG", "GROWN POWERFUL", "YOU WANT TO GET BEAT")+pick("? GENUINELY?", "! FOR REALSIES?", "? HURTILY?") + +/obj/item/ego_weapon/get_strong/attack_self(mob/user) + switch(mode) + if("Spear") + mode = "Sword" + if("Sword") + mode = "Gauntlet" + if("Gauntlet") + mode = "Spear" + to_chat(user, "[src] makes a whirling sound as it changes shape!") + if(prob(5)) + to_chat(user, "Do you love your city?") + icon_state = "become_strong"+mode_stats[mode][1] + update_icon_state() + force = mode_stats[mode][2] + attack_speed = mode_stats[mode][3] + reach = mode_stats[mode][4] + attack_verb_continuous = mode_stats[mode][5] + attack_verb_simple = mode_stats[mode][6] + hitsound = mode_stats[mode][7] + +/obj/item/ego_weapon/get_strong/attack(mob/living/target, mob/living/carbon/human/user) + if(!isliving(target)) + ..() + return + switch(mode) + if("Spear") + windup = min(windup+3, 50) + if("Sword") + windup = min(windup+2, 50) + if("Gauntlet") + to_chat(user, "You start winding up your fist!") + if(!do_after(user, 1 SECONDS, target)) + to_chat(user, "You stop winding up your fist!") + return + force += windup + windup = 0 + ..() + force = mode_stats[mode][2] + if(windup >= 50) + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + to_chat(user, "[src] hisses as it reaches full capacity!") + return + if(windup >= 25) + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 50) + to_chat(user, "[src] hisses as it reaches half capacity.") + return diff --git a/code/modules/clothing/suits/ego_gear/he.dm b/code/modules/clothing/suits/ego_gear/he.dm index bae5e97fa5be..1049debae6ff 100644 --- a/code/modules/clothing/suits/ego_gear/he.dm +++ b/code/modules/clothing/suits/ego_gear/he.dm @@ -276,3 +276,16 @@ attribute_requirements = list( FORTITUDE_ATTRIBUTE = 40 ) + +/obj/item/clothing/suit/armor/ego_gear/get_strong + name = "Get Strong" + desc = "It crunches your insides as you move... Do you love the City you live in?" + icon_state = "become_strong" + armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = -20, BLACK_DAMAGE = 10, PALE_DAMAGE = 30) // 70 + attribute_requirements = list( + FORTITUDE_ATTRIBUTE = 40 + ) + +/obj/item/clothing/suit/armor/ego_gear/get_strong/Initialize() + . = ..() + name = pick("BECOME STRONG", "GROWN POWERFUL", "YOU WANT TO GET BEAT")+pick("? GENUINELY?", "! FOR REALSIES?", "? HURTILY?") diff --git a/code/modules/mob/living/simple_animal/abnormality/he/you_strong.dm b/code/modules/mob/living/simple_animal/abnormality/he/you_strong.dm new file mode 100644 index 000000000000..b836228bf1cf --- /dev/null +++ b/code/modules/mob/living/simple_animal/abnormality/he/you_strong.dm @@ -0,0 +1,469 @@ +/mob/living/simple_animal/hostile/abnormality/you_strong + name = "You Must Become Strong" + desc = "A multicolored factory that smells distinctly of iron... is this thing made of plastic!?" + icon = 'ModularTegustation/Teguicons/96x64.dmi' + icon_state = "you_strong_pause" + icon_living = "you_strong_pause" + maxHealth = 200 + health = 200 + threat_level = HE_LEVEL + start_qliphoth = 3 + work_chances = list( + ABNORMALITY_WORK_INSTINCT = 45, + ABNORMALITY_WORK_INSIGHT = 45, + ABNORMALITY_WORK_ATTACHMENT = 45, + ABNORMALITY_WORK_REPRESSION = 0, + "YES" = 0, + "NO" = 0 + ) + work_damage_amount = 8 + work_damage_type = RED_DAMAGE + ego_list = list( + /datum/ego_datum/weapon/get_strong, + /datum/ego_datum/armor/get_strong + ) + max_boxes = 16 + speak_emote = list("beeps", "crackles", "buzzes") + + pixel_x = -32 + pixel_y = -8 + layer = OPEN_DOOR_LAYER + + var/penalize = FALSE + var/work_count = 0 + var/question = FALSE + + var/taken_parts = list( + /obj/item/bodypart/l_leg, + /obj/item/bodypart/r_leg, + /obj/item/bodypart/l_arm, + /obj/item/bodypart/r_arm, + /obj/item/bodypart/head + ) + var/rejected_parts = list( + /obj/item/bodypart/l_leg/robot, + /obj/item/bodypart/r_leg/robot, + /obj/item/bodypart/l_arm/robot, + /obj/item/bodypart/r_arm/robot, + ) + var/datum/looping_sound/server/soundloop + + var/operating = FALSE + +/mob/living/simple_animal/hostile/abnormality/you_strong/Initialize(mapload) + . = ..() + soundloop = new(list(src), FALSE) + soundloop.volume = 75 + soundloop.extra_range = 0 + +/mob/living/simple_animal/hostile/abnormality/you_strong/WorkComplete(mob/living/carbon/human/user, work_type, pe, work_time, canceled) + . = ..() + if(work_type == ABNORMALITY_WORK_REPRESSION) + src.datum_reference.qliphoth_change(-1) // No. Don't. + work_count++ + icon_state = "you_strong_pause" + if(work_count < 3) + return + work_count = 0 + say("Do you love the City you live in?") + question = TRUE + return + +/mob/living/simple_animal/hostile/abnormality/you_strong/AttemptWork(mob/living/carbon/human/user, work_type) + if(src.datum_reference.qliphoth_meter == 0) + return FALSE + if(operating) + to_chat(user, "Please wait for current operations to cease.") + return FALSE + if(!(work_type in list("YES", "NO")) && !question && ..()) + icon_state = "you_strong_work" + return TRUE + if((work_type in list("YES", "NO")) && !question) + to_chat(user, "You have not been prompted.") + return FALSE + if((work_type in list(ABNORMALITY_WORK_INSTINCT, ABNORMALITY_WORK_INSIGHT, ABNORMALITY_WORK_ATTACHMENT, ABNORMALITY_WORK_REPRESSION) && question)) + say("Do you love the City you live in?") + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + return FALSE + if(work_type == "YES") + penalize = TRUE + say("YES. YOU MUST BECOME STRONG FOR YOUR CITY.") + icon_state = "you_strong_yes" + else + src.datum_reference.qliphoth_change(-1) + say("INVALID INPUT.") + icon_state = "you_strong_no" + question = FALSE + return FALSE + +/mob/living/simple_animal/hostile/abnormality/you_strong/WorkChance(mob/living/carbon/human/user, chance, work_type) + if(penalize) + penalize = FALSE + return chance /= 2 + return ..() + +/mob/living/simple_animal/hostile/abnormality/you_strong/ZeroQliphoth(mob/living/carbon/human/user) + SLEEP_CHECK_DEATH(2 SECONDS) + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + manual_emote("makes a whirling sound.") + SLEEP_CHECK_DEATH(2 SECONDS) + soundloop.start() + icon_state = "you_strong_work" + SLEEP_CHECK_DEATH(30 SECONDS) + soundloop.stop() + src.datum_reference.qliphoth_change(3) + icon_state = "you_strong_make" + SLEEP_CHECK_DEATH(6) + for(var/i = 1 to 3) + new /mob/living/simple_animal/hostile/grown_strong(get_step(src, EAST)) + SLEEP_CHECK_DEATH(6) + icon_state = "you_strong_pause" + +/mob/living/simple_animal/hostile/abnormality/you_strong/attacked_by(obj/item/I, mob/living/user) + if(!(I.type in taken_parts)) + return ..() + if(I.type in rejected_parts) + to_chat(user, "[src] rejects [I].") + return + if(src.datum_reference.qliphoth_meter == 0 || src.datum_reference.working || operating) + to_chat(user, "Please wait for current operations to cease.") + return + visible_message("[user.first_name()] starts feeding [I] into [src].") + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + soundloop.start() + icon_state = "you_strong_work" + operating = TRUE + if(!do_after(user, 2 SECONDS, src)) + to_chat(user, "But you changed your mind...") + soundloop.stop() + icon_state = "you_strong_pause" + operating = FALSE + return + soundloop.stop() + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + qdel(I) + src.datum_reference.stored_boxes += 2 + visible_message("[src] produced 2 PE!") + manual_emote("begins to emit a whirling noise before quieting down.") + icon_state = "you_strong_pause" + operating = FALSE + return + +/mob/living/simple_animal/hostile/abnormality/you_strong/attack_hand(mob/living/carbon/human/M) + if(!(M.zone_selected in list(BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG))) + return ..() + if(src.datum_reference.working || src.datum_reference.qliphoth_meter == 0 || operating) + to_chat(M, "Please wait for current operations to cease.") + return + var/obj/item/bodypart/old_part = M.get_bodypart(M.zone_selected) + if(old_part.type in list(/obj/item/bodypart/r_leg/grown_strong, /obj/item/bodypart/l_leg/grown_strong, /obj/item/bodypart/r_arm/grown_strong, /obj/item/bodypart/l_arm/grown_strong)) + to_chat(M, "Only original parts are accepted.") + return + if(alert(M, "Would you like to put your [old_part.name] into [src]?", "You Must Become Stronger", "Yes", "No") != "Yes") + return + var/obj/item/bodypart/prosthetic + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + soundloop.start() + visible_message("[M.first_name()] plunges their [old_part.name] into [src]...") + icon_state = "you_strong_work" + operating = TRUE + if(!do_after(M, 5 SECONDS, src)) + visible_message("[M.first_name()] pulls out their [old_part.name] before [src] engages!") + soundloop.stop() + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + icon_state = "you_strong_pause" + operating = FALSE + return + switch(M.zone_selected) + if(BODY_ZONE_L_ARM) + prosthetic = new/obj/item/bodypart/l_arm/grown_strong(M) + if(BODY_ZONE_L_LEG) + prosthetic = new/obj/item/bodypart/l_leg/grown_strong(M) + if(BODY_ZONE_R_ARM) + prosthetic = new/obj/item/bodypart/r_arm/grown_strong(M) + if(BODY_ZONE_R_LEG) + prosthetic = new/obj/item/bodypart/r_leg/grown_strong(M) + prosthetic.replace_limb(M) + manual_emote("makes a grinding noise.") + M.emote("scream") + M.apply_damage(50, BRUTE, null, M.run_armor_check(null, BRUTE), spread_damage = TRUE) // Bro your [X] just got chopped off, no armor's gonna resist that. + to_chat(M, "Your [old_part.name] has been replaced!") + qdel(old_part) + M.regenerate_icons() + src.datum_reference.qliphoth_change(-1) + soundloop.stop() + playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 100) + icon_state = "you_strong_pause" + operating = FALSE + return + +/mob/living/simple_animal/hostile/grown_strong + name = "Grown Strong" + desc = "A humanoid figure reeking of blood and made out of... plastic?" + icon_state = "grown_strong" + icon_living = "grown_strong" + icon = 'ModularTegustation/Teguicons/32x32.dmi' + maxHealth = 500 + health = 500 + damage_coeff = list(BRUTE = 1, RED_DAMAGE = 1, WHITE_DAMAGE = 1.5, BLACK_DAMAGE = 1.5, PALE_DAMAGE = 0) + + move_to_delay = 5 + melee_damage_lower = 3 + melee_damage_upper = 5 + melee_damage_type = RED_DAMAGE + armortype = RED_DAMAGE + + attack_sound = "swing_hit" + attack_verb_continuous = "bashes" + attack_verb_simple = "bash" + a_intent = "hostile" + move_resist = 1500 + + can_patrol = TRUE + + del_on_death = FALSE + + var/gear = 2 + COOLDOWN_DECLARE(gear_shift) + var/gear_cooldown = 1 MINUTES + +/mob/living/simple_animal/hostile/grown_strong/Move(atom/newloc, dir, step_x, step_y) + if(status_flags & GODMODE) + return FALSE + . = ..() + return + +/mob/living/simple_animal/hostile/grown_strong/AttackingTarget(atom/attacked_target) + if(status_flags & GODMODE) + return FALSE + . = ..() + return + +/mob/living/simple_animal/hostile/grown_strong/Initialize() + . = ..() + //icon_state = pick("1", "2", "3") + +/mob/living/simple_animal/hostile/grown_strong/proc/UpdateGear() + manual_emote("shifts into [gear]\th gear!") + melee_damage_lower = 3*gear + melee_damage_upper = 5*gear + move_to_delay = 5 - FLOOR(gear / 3, 1) + rapid_melee = gear > 7 ? 2 : 1 + +/mob/living/simple_animal/hostile/grown_strong/Life() + . = ..() + if(!COOLDOWN_FINISHED(src, gear_shift) || (status_flags & GODMODE)) + return + gear = clamp(gear + rand(-1, 3), 1, 10) + UpdateGear() + src.apply_damage(50, BRUTE, null, src.run_armor_check(null, BRUTE), spread_damage = TRUE)// OOF OUCH MY BONES + COOLDOWN_START(src, gear_shift, gear_cooldown) + +/mob/living/simple_animal/hostile/grown_strong/death(gibbed) + if(maxHealth > 200) + INVOKE_ASYNC(src, .proc/Undie) + return FALSE + visible_message("[src] explodes into a mess of plastic and gore!") + . = ..() + gib(TRUE, TRUE, TRUE) + return + +/mob/living/simple_animal/hostile/grown_strong/proc/Undie() + manual_emote("shudders to a hault, insides whirling...") + src.maxHealth = max(maxHealth - 100, 200) + src.adjustBruteLoss(-9999) + status_flags |= GODMODE + SLEEP_CHECK_DEATH(3 SECONDS) + status_flags &= ~GODMODE + src.adjustBruteLoss(-9999) + gear = clamp(gear + 2, 1, 10) + manual_emote("shudders back to life!") + UpdateGear() + +////// Parts! ////// + +/obj/item/bodypart/r_leg/grown_strong + name = "grown strong right leg" + desc = "a fleshy limb encased in plastic" + icon = 'icons/mob/human_parts_greyscale.dmi' + icon_state = "human_r_leg" + var/buff_type + +/obj/item/bodypart/r_leg/grown_strong/Initialize(mapload) + . = ..() + color = pick( + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_PURPLE) + buff_type = pick(FORTITUDE_ATTRIBUTE, PRUDENCE_ATTRIBUTE, TEMPERANCE_ATTRIBUTE, JUSTICE_ATTRIBUTE) + +/obj/item/bodypart/r_leg/grown_strong/drop_limb(special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, -2) + +/obj/item/bodypart/r_leg/grown_strong/attach_limb(mob/living/carbon/C, special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, 2) + +/obj/item/bodypart/r_leg/grown_strong/get_limb_icon(dropped) + icon_state = "" + . = list() + var/image_dir = 0 + if(dropped) + image_dir = SOUTH + var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + . += limb + limb.icon = 'icons/mob/human_parts_greyscale.dmi' + limb.icon_state = "human_r_leg" + limb.color = src.color // Is this VIOLENTLY incompatible with other races? Yeah. Does that matter for us? No... Right? + +/obj/item/bodypart/l_leg/grown_strong + name = "grown strong left leg" + desc = "a fleshy limb encased in plastic" + icon = 'icons/mob/human_parts_greyscale.dmi' + icon_state = "human_l_leg" + var/buff_type + +/obj/item/bodypart/l_leg/grown_strong/Initialize(mapload) + . = ..() + color = pick( + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_PURPLE) + buff_type = pick(FORTITUDE_ATTRIBUTE, PRUDENCE_ATTRIBUTE, TEMPERANCE_ATTRIBUTE, JUSTICE_ATTRIBUTE) + +/obj/item/bodypart/l_leg/grown_strong/drop_limb(special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, -2) + +/obj/item/bodypart/l_leg/grown_strong/attach_limb(mob/living/carbon/C, special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, 2) + +/obj/item/bodypart/l_leg/grown_strong/get_limb_icon(dropped) + icon_state = "" + . = list() + var/image_dir = 0 + if(dropped) + image_dir = SOUTH + var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + . += limb + limb.icon = 'icons/mob/human_parts_greyscale.dmi' + limb.icon_state = "human_l_leg" + limb.color = src.color // Is this VIOLENTLY incompatible with other races? Yeah. Does that matter for us? No... Right? + +/obj/item/bodypart/r_arm/grown_strong + name = "grown strong right arm" + desc = "a fleshy limb encased in plastic" + icon = 'icons/mob/human_parts_greyscale.dmi' + icon_state = "human_r_arm" + var/buff_type + +/obj/item/bodypart/r_arm/grown_strong/Initialize(mapload) + . = ..() + color = pick( + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_PURPLE) + buff_type = pick(FORTITUDE_ATTRIBUTE, PRUDENCE_ATTRIBUTE, TEMPERANCE_ATTRIBUTE, JUSTICE_ATTRIBUTE) + +/obj/item/bodypart/r_arm/grown_strong/drop_limb(special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, -2) + +/obj/item/bodypart/r_arm/grown_strong/attach_limb(mob/living/carbon/C, special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, 2) + +/obj/item/bodypart/r_arm/grown_strong/get_limb_icon(dropped) + icon_state = "" + . = list() + var/image_dir = 0 + if(dropped) + image_dir = SOUTH + var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + var/image/aux + . += limb + limb.icon = 'icons/mob/human_parts_greyscale.dmi' + limb.icon_state = "human_r_arm" + limb.color = src.color // Is this VIOLENTLY incompatible with other races? Yeah. Does that matter for us? No... Right? + if(aux_zone) + aux = image(limb.icon, "human_r_hand", -aux_layer, image_dir) + aux.color = limb.color + . += aux + +/obj/item/bodypart/l_arm/grown_strong + name = "grown strong left arm" + desc = "a fleshy limb encased in plastic" + icon = 'icons/mob/human_parts_greyscale.dmi' + icon_state = "human_l_arm" + var/buff_type + +/obj/item/bodypart/l_arm/grown_strong/Initialize(mapload) + . = ..() + color = pick( + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_PURPLE) + buff_type = pick(FORTITUDE_ATTRIBUTE, PRUDENCE_ATTRIBUTE, TEMPERANCE_ATTRIBUTE, JUSTICE_ATTRIBUTE) + +/obj/item/bodypart/l_arm/grown_strong/drop_limb(special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, -2) + +/obj/item/bodypart/l_arm/grown_strong/attach_limb(mob/living/carbon/C, special) + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + H.adjust_attribute_buff(buff_type, 2) + +/obj/item/bodypart/l_arm/grown_strong/get_limb_icon(dropped) + icon_state = "" + . = list() + var/image_dir = 0 + if(dropped) + image_dir = SOUTH + var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + var/image/aux + . += limb + limb.icon = 'icons/mob/human_parts_greyscale.dmi' + limb.icon_state = "human_l_arm" + limb.color = src.color // Is this VIOLENTLY incompatible with other races? Yeah. Does that matter for us? No... Right? + if(aux_zone) + aux = image(limb.icon, "human_l_hand", -aux_layer, image_dir) + aux.color = limb.color + . += aux diff --git a/code/modules/paperwork/records/info/he.dm b/code/modules/paperwork/records/info/he.dm index af9fb4b1500f..6535bfad078f 100644 --- a/code/modules/paperwork/records/info/he.dm +++ b/code/modules/paperwork/records/info/he.dm @@ -301,3 +301,23 @@ "Employees with two restorative auras were absorbed by the abnormality after working on it again.", "This abnormality must be cored with a knife or sharp object immediately after suppression work.", "Following its metamorphosis, this abnormality will deal BLACK damage.") + +//You Must Become Strong +/obj/item/paper/fluff/info/he/you_strong + abno_type = /mob/living/simple_animal/hostile/abnormality/you_strong + abno_code = "T-09-140" + abno_info = list( + "When Repression Work was performed, the Qliphoth Counter decreased.", + "After 3 works, the employee was prompted: 'Do you love your City?'", + "Answering 'Yes' heavily reduced the work success rate of the next work.", + "Answering 'No' reduced the Qliphoth Counter by one.", + "During an accident, it was discovered that employees can plunge their limbs into the machine to be granted a better performing limb but reducing the Qliphoth Counter by one.", + "This effect worked on this with prosthetics as well as their original limbs.", + "Should the Qliphoth level reach 0, instead of breaching, the machine will produce a loud whirling sound and produce 3 humanoid creatures dubbed T-09-140-1.", + "T-09-140-1 are, despite their poor resilience, very durable and must be handled multiple times.", + "T-09-140-1's performance also improved as their 'gear' shifted higher, however doing so damaged them heavily.", + "T-09-140-1's stats are listed in the 'Breach Information' section of this document." + ) + abno_breach_damage_type = "RED" + abno_breach_damage_count = "Moderate" + abno_resistances = list(RED_DAMAGE = "Endured", WHITE_DAMAGE = "Weak", BLACK_DAMAGE = "Weak", PALE_DAMAGE = "Immune") diff --git a/icons/mob/clothing/ego_gear/suit.dmi b/icons/mob/clothing/ego_gear/suit.dmi index dd84876d3182..ecc686b56d26 100644 Binary files a/icons/mob/clothing/ego_gear/suit.dmi and b/icons/mob/clothing/ego_gear/suit.dmi differ diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index e0fe6b4d9889..88ef40cb7c8d 100644 Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 50c143b9cb9c..f136dbba6a3b 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/inhands/weapons/ego_lefthand.dmi b/icons/mob/inhands/weapons/ego_lefthand.dmi index 4b5e12479089..5b20882082f9 100644 Binary files a/icons/mob/inhands/weapons/ego_lefthand.dmi and b/icons/mob/inhands/weapons/ego_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/ego_righthand.dmi b/icons/mob/inhands/weapons/ego_righthand.dmi index 9a6b007e1d1a..9896f0037a6b 100644 Binary files a/icons/mob/inhands/weapons/ego_righthand.dmi and b/icons/mob/inhands/weapons/ego_righthand.dmi differ diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi index 19e2e2c7a245..6b0806d288f9 100644 Binary files a/icons/obj/clothing/belt_overlays.dmi and b/icons/obj/clothing/belt_overlays.dmi differ diff --git a/icons/obj/clothing/ego_gear/suits.dmi b/icons/obj/clothing/ego_gear/suits.dmi index fb5b07c98c2a..0c5824616d67 100644 Binary files a/icons/obj/clothing/ego_gear/suits.dmi and b/icons/obj/clothing/ego_gear/suits.dmi differ diff --git a/icons/obj/ego_weapons.dmi b/icons/obj/ego_weapons.dmi index 9de5f65e921e..93643d1fc3e4 100644 Binary files a/icons/obj/ego_weapons.dmi and b/icons/obj/ego_weapons.dmi differ diff --git a/lobotomy-corp13.dme b/lobotomy-corp13.dme index c6015c72615c..826131888d4b 100644 --- a/lobotomy-corp13.dme +++ b/lobotomy-corp13.dme @@ -2632,6 +2632,7 @@ #include "code\modules\mob\living\simple_animal\abnormality\he\watchman.dm" #include "code\modules\mob\living\simple_animal\abnormality\he\white_lake.dm" #include "code\modules\mob\living\simple_animal\abnormality\he\woodsman.dm" +#include "code\modules\mob\living\simple_animal\abnormality\he\you_strong.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\beanstalk.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\beauty_beast.dm" #include "code\modules\mob\living\simple_animal\abnormality\teth\blood_bath.dm"