diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/fleshtaker.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/fleshtaker.dm new file mode 100644 index 0000000000..b55fc832eb --- /dev/null +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/fleshtaker.dm @@ -0,0 +1,82 @@ +/* +Concept: Mind controlling parasite. Hostile to all mobs. +On attack if our target is a simple mob, and has no mind. +We simply engulf them, evicerating their body and stealing their form as well as some of their stats. +However we dont gain special attacks and verbs, for example, if we evicerate a dragon we dont get a breath attack suddnely. +Only physical attributes are copied. +*/ +/mob/living/simple_mob/fleshtaker + faction = "Fleshtaker" + name = "Fleshtaker" + desc = "A strange creature" + icon = 'icons/mob/synxmanyvoices.dmi' + icon_living = "939_living" + icon_dead = "939_dead" + pixel_x = -15 + //Lets write down our base stats so we can revert easily + var/list/base_values = list() + + ai_holder_type = /datum/ai_holder/simple_mob/melee/pack_mob //A pack of these would be absolutely terrifying. + var/flesh_mimic = FALSE //are we currently posing as something else? + +/mob/living/simple_mob/fleshtaker/New() + ..() + base_values["name"] = name + base_values["desc"] = desc + base_values["icon"] = icon + base_values["icon_living"] = icon_living + base_values["icon_dead"] = icon_dead + base_values["pixel_x"] = pixel_x + base_values["pixel_y"] = pixel_y //record our default y pixel offset for later reversion + base_values["melee_damage_lower"] = melee_damage_lower + base_values["melee_damage_upper"] = melee_damage_upper + base_values["maxHealth"] = maxHealth + base_values["armor"] = armor + icon_state = icon_living + + + //copy stats from our engulfed target +/mob/living/simple_mob/fleshtaker/proc/flesh_mimic(var/mob/living/simple_mob/target) + flesh_mimic = TRUE + name = target.name + desc = target.desc + icon = target.icon + icon_living = target.icon_living + icon_dead = target.icon_dead + pixel_x = target.pixel_x + pixel_x = target.pixel_y + melee_damage_lower = target.melee_damage_lower + melee_damage_upper = target.melee_damage_upper + maxHealth = target.maxHealth + health = maxHealth + icon_state = target.icon_state + armor = target.armor + //steal base stats + //possibly steal vorgans + update_icon() + +//reset to original values +/mob/living/simple_mob/fleshtaker/proc/revert_mimic() + flesh_mimic = FALSE + name = base_values["name"] + desc = base_values["desc"] + icon = base_values["icon"] + icon_living = base_values["icon_living"] + icon_dead = base_values["icon_dead"] + pixel_x = base_values["pixel_x"] + pixel_y = base_values["pixel_y"] + melee_damage_lower = base_values["melee_damage_lower"] + melee_damage_upper = base_values["melee_damage_upper"] + maxHealth = base_values["maxHealth"] + health = maxHealth + icon_state = icon_living + armor = base_values["armor"] + update_icon() + +/mob/living/simple_mob/fleshtaker/apply_melee_effects(var/atom/A) + if(istype(A,/mob/living/simple_mob) && !flesh_mimic) + var/mob/living/simple_mob/M = A + if(!M.mind) + flesh_mimic(M) + M.gib() + ..() diff --git a/vorestation.dme b/vorestation.dme index 9b163d74fa..30b0b84da4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4617,6 +4617,7 @@ #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob_abilities.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\teppi.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\fleshtaker.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph_abilities.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm"