/* Changeling Mutations! ~By Miauw (ALL OF IT :V) Contains: Arm Blade Space Suit Shield Armor */ //Parent to shields and blades because muh copypasted code. /obj/effect/proc_holder/changeling/weapon name = "Organic Weapon" desc = "Go tell a coder if you see this" helptext = "Yell at coderbus" chemical_cost = 1000 dna_cost = -1 genetic_damage = 1000 var/weapon_type var/weapon_name_simple /obj/effect/proc_holder/changeling/weapon/try_to_sting(var/mob/user, var/mob/target) if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh qdel(user.l_hand) user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!") qdel(H.wear_suit) qdel(H.head) H.update_inv_wear_suit() H.update_inv_head() H.update_hair() if(blood_on_castoff) var/turf/simulated/T = get_turf(H) if(istype(T)) T.add_blood(H) //So real blood decals playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds changeling.geneticdamage += genetic_damage //Casting off a space suit leaves you weak for a few seconds. changeling.chem_recharge_slowdown -= recharge_slowdown return ..(H, target) /obj/effect/proc_holder/changeling/suit/sting_action(var/mob/living/carbon/human/user) if(!user.unEquip(user.wear_suit)) user << "\the [user.wear_suit] is stuck to your body, you cannot grow a [suit_name_simple] over it!" return if(!user.unEquip(user.head)) user << "\the [user.head] is stuck on your head, you cannot grow a [helmet_name_simple] over it!" return user.unEquip(user.head) user.unEquip(user.wear_suit) user.equip_to_slot_if_possible(new suit_type(user), slot_wear_suit, 1, 1, 1) user.equip_to_slot_if_possible(new helmet_type(user), slot_head, 1, 1, 1) var/datum/changeling/changeling = user.mind.changeling changeling.chem_recharge_slowdown += recharge_slowdown return 1 //fancy headers yo /***************************************\ |***************ARM BLADE***************| \***************************************/ /obj/effect/proc_holder/changeling/weapon/arm_blade name = "Arm Blade" desc = "We reform one of our arms into a deadly blade." helptext = "Cannot be used while in lesser form." chemical_cost = 25 dna_cost = 2 genetic_damage = 10 req_human = 1 max_genetic_damage = 20 weapon_type = /obj/item/weapon/melee/arm_blade weapon_name_simple = "blade" /obj/item/weapon/melee/arm_blade name = "arm blade" desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter" icon = 'icons/obj/weapons.dmi' icon_state = "arm_blade" item_state = "arm_blade" flags = ABSTRACT | NODROP icon_override = 'icons/mob/in-hand/changeling.dmi' w_class = 5.0 sharp = 1 edge = 1 force = 25 throwforce = 0 //Just to be on the safe side throw_range = 0 throw_speed = 0 /obj/item/weapon/melee/arm_blade/New() ..() if(ismob(loc)) loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!") /obj/item/weapon/melee/arm_blade/dropped(mob/user) user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "The airlock's motors resist our efforts to force it." return else if(A.locked) user << "The airlock's bolts prevent it from being forced." return else //user.say("Heeeeeeeeeerrre's Johnny!") user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.") A.open(1) /***************************************\ |****************SHIELD*****************| \***************************************/ /obj/effect/proc_holder/changeling/weapon/shield name = "Organic Shield" desc = "We reform one of our arms into a hard shield." helptext = "Organic tissue cannot resist damage forever, the shield will break after it is hit too much. The more genomes we absorb, the stronger it is. Cannot be used while in lesser form." chemical_cost = 20 dna_cost = 1 genetic_damage = 12 req_human = 1 max_genetic_damage = 20 weapon_type = /obj/item/weapon/shield/changeling weapon_name_simple = "shield" /obj/effect/proc_holder/changeling/weapon/shield/sting_action(var/mob/user) var/datum/changeling/changeling = user.mind.changeling //So we can read the absorbedcount. if(!changeling) return var/obj/item/weapon/shield/changeling/S = ..(user) if(!S) return S.remaining_uses = round(changeling.absorbedcount * 3) return 1 /obj/item/weapon/shield/changeling name = "shield-like mass" desc = "A mass of tough, boney tissue. You can still see the fingers as a twisted pattern in the shield." flags = NODROP icon = 'icons/obj/weapons.dmi' icon_state = "ling_shield" icon_override = 'icons/mob/in-hand/changeling.dmi' var/remaining_uses //Set by the changeling ability. /obj/item/weapon/shield/changeling/New() ..() if(ismob(loc)) loc.visible_message("The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass!", "We inflate our hand into a strong shield.", "You hear organic matter ripping and tearing!") /obj/item/weapon/shield/changeling/dropped() qdel(src) /obj/item/weapon/shield/changeling/IsShield() if(remaining_uses < 1) if(ishuman(loc)) var/mob/living/carbon/human/H = loc H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!") processing_objects += src /obj/item/clothing/suit/space/changeling/dropped() qdel(src) /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) var/mob/living/carbon/human/H = loc H.reagents.add_reagent("perfluorodecalin", REAGENTS_METABOLISM) /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" icon_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | NODROP armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/helmet/space/changeling/dropped() qdel(src) /***************************************\ |*****************ARMOR*****************| \***************************************/ /obj/effect/proc_holder/changeling/suit/armor name = "Chitinous Armor" desc = "We turn our skin into tough chitin to protect us from damage." helptext = "Upkeep of the armor requires a low expenditure of chemicals. The armor is strong against brute force, but does not provide much protection from lasers. Retreating the armor damages our genomes. Cannot be used in lesser form." chemical_cost = 25 dna_cost = 2 genetic_damage = 11 req_human = 1 max_genetic_damage = 20 suit_type = /obj/item/clothing/suit/armor/changeling helmet_type = /obj/item/clothing/head/helmet/changeling suit_name_simple = "armor" helmet_name_simple = "helmet" recharge_slowdown = 0.25 /obj/item/clothing/suit/armor/changeling name = "chitinous mass" desc = "A tough, hard covering of black chitin." icon_state = "lingarmor" flags = NODROP body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS slowdown = 2 armor = list(melee = 65, bullet = 20, laser = 10, energy = 15, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEJUMPSUIT cold_protection = 0 heat_protection = 0 /obj/item/clothing/suit/armor/changeling/New() ..() if(ismob(loc)) loc.visible_message("[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!", "We harden our flesh, creating a suit of armor!", "You hear organic matter ripping and tearing!") /obj/item/clothing/suit/armor/changeling/dropped() qdel(src) /obj/item/clothing/head/helmet/changeling name = "chitinous mass" desc = "A tough, hard covering of black chitin with transparent chitin in front." icon_state = "lingarmorhelmet" flags = HEADCOVERSEYES | BLOCKHAIR | NODROP armor = list(melee = 65, bullet = 20, laser = 10,energy = 15, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEEARS /obj/item/clothing/head/helmet/changeling/dropped() qdel(src)