diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 9fe8a03ff41..c4d64296b32 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -21,8 +21,14 @@ color = overmind.blob_reagent_datum.color /mob/living/simple_animal/hostile/blob/blob_act() - adjustHealth(-maxHealth*0.025) - return + if(health < maxHealth) + for(var/i in 1 to 2) + var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(src)) //hello yes you are being healed + if(overmind) + H.color = overmind.blob_reagent_datum.complementary_color + else + H.color = "#000000" + adjustHealth(-maxHealth*0.025) /mob/living/simple_animal/hostile/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 7182cea7fd5..d38fdffff18 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -39,6 +39,16 @@ spawn(duration) qdel(src) +/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed + name = "healing glow" + icon_state = "heal" + duration = 15 + +/obj/effect/overlay/temp/heal/New() + ..() + pixel_x = rand(-14, 14) + pixel_y = rand(-9, 0) + /obj/effect/overlay/temp/explosion name = "explosion" icon = 'icons/effects/96x96.dmi' diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index b1c63efea00..f6cb1ee4167 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -3,12 +3,15 @@ name = "Unknown" description = "shouldn't exist and you should adminhelp immediately." color = "#FFFFFF" + var/complementary_color = "#000000" //a color that's complementary to the normal blob color var/shortdesc = null //just damage and on_mob effects, doesn't include special, blob-tile only effects var/blobbernaut_message = "slams" //blobbernaut attack verb var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt /datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + if(istype(M, /mob/living/simple_animal/hostile/blob)) + return 0 //the blob mobs do not cause effects when hitting themselves or other blob mobs return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. /datum/reagent/blob/proc/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this @@ -26,6 +29,7 @@ id = "ripping_tendrils" description = "will do medium brute and stamina damage." color = "#991010" + complementary_color = "#109999" blobbernaut_message = "rips" message_living = ", and you feel your skin ripping and tearing off" @@ -44,6 +48,7 @@ description = "will do low toxin damage and produce fragile spores when killed or on expanding." shortdesc = "will do low toxin damage." color = "#E88D5D" + complementary_color = "#5DB8E8" message_living = ", and you feel sick" /datum/reagent/blob/sporing_pods/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -73,6 +78,7 @@ description = "will do medium brute damage and replicate when damaged." shortdesc = "will do medium brute damage." color = "#7B5A57" + complementary_color = "#57787B" /datum/reagent/blob/replicating_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() @@ -98,6 +104,7 @@ description = "will do low burn and high stamina damage, and react to stamina damage." shortdesc = "will do low burn and high stamina damage." color = "#EFD65A" + complementary_color = "#5A73EF" blobbernaut_message = "shocks" message_living = ", and you feel a strong tingling sensation" @@ -119,6 +126,7 @@ id = "boiling_oil" description = "will do medium burn damage and set targets on fire." color = "#B68D00" + complementary_color = "#0029B6" blobbernaut_message = "splashes" message = "The blob splashes you with burning oil" message_living = ", and you feel your skin char and melt" @@ -137,6 +145,7 @@ id = "regenerative_materia" description = "will do low toxin damage and cause targets to believe they are fully healed." color = "#C8A5DC" + complementary_color = "#B9DCA5" message_living = ", and you feel alive" /datum/reagent/blob/regenerative_materia/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -164,6 +173,7 @@ id = "hallucinogenic_nectar" description = "will do low toxin damage, vivid hallucinations, and inject targets with toxins." color = "#CD7794" + complementary_color = "#77CDB0" blobbernaut_message = "splashes" message = "The blob splashes you with sticky nectar" message_living = ", and you feel really good" @@ -183,6 +193,7 @@ id = "zombifying_feelers" description = "will cause medium toxin damage and turn sleeping targets into blob zombies." color = "#828264" + complementary_color = "#646482" message_living = ", and you feel tired" /datum/reagent/blob/zombifying_feelers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -202,6 +213,7 @@ id = "envenomed_filaments" description = "will cause medium toxin and stamina damage, and inject targets with toxins." color = "#9ACD32" + complementary_color = "#6532CD" message_living = ", and you feel sick and nauseated" /datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -218,6 +230,7 @@ id = "cyclonic_grid" description = "will cause high oxygen damage and randomly throw targets to or from it." color = "#9BCD9B" + complementary_color = "#CD9BCD" message = "The blob blasts you with a gust of air" message_living = ", and you can't catch your breath" @@ -233,6 +246,7 @@ id = "lexorin_jelly" description = "will cause low brute and high oxygen damage, and cause targets to be unable to breathe." color = "#00E5B1" + complementary_color = "#E50034" message_living = ", and your lungs feel heavy and weak" /datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -249,12 +263,13 @@ description = "will do brute damage in an area around targets and is resistant to explosions." shortdesc = "will do brute damage in an area around targets." color = "#8B2500" + complementary_color = "#00668B" blobbernaut_message = "blasts" message = "The blob blasts you" /datum/reagent/blob/explosive_lattice/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - if(reac_volume >= 15) //if it's not a spore cloud, bad time incoming - reac_volume = ..() + reac_volume = ..() + if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming var/obj/effect/overlay/temp/explosion/E = PoolOrNew(/obj/effect/overlay/temp/explosion, get_turf(M)) E.alpha = 150 for(var/mob/living/L in range(M, 1)) @@ -264,7 +279,6 @@ if(M) M.apply_damage(0.1*reac_volume, BRUTE) else - reac_volume = ..() M.apply_damage(0.8*reac_volume, BRUTE) /datum/reagent/blob/explosive_lattice/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) @@ -279,6 +293,7 @@ description = "will do high brute damage and react to brute damage." shortdesc = "will do high brute damage." color = "#FFA500" + complementary_color = "#005AFF" blobbernaut_message = "pummels" message = "The blob pummels you" @@ -301,6 +316,7 @@ id = "cryogenic_liquid" description = "will do low burn and stamina damage, and cause targets to freeze." color = "#8BA6E9" + complementary_color = "#E9CE8B" blobbernaut_message = "splashes" message = "The blob splashes you with an icy liquid" message_living = ", and you feel cold and tired" @@ -321,6 +337,7 @@ description = "will do low burn damage and EMP targets, but is somewhat fragile." shortdesc = "will do low burn damage and EMP targets." color = "#83ECEC" + complementary_color = "#EC8383" blobbernaut_message = "lashes" message = "The blob lashes you" message_living = ", and you hear a faint buzzing" @@ -345,13 +362,14 @@ description = "will do brute damage for each nearby blob and spread damage between nearby blobs." shortdesc = "will do brute damage for each nearby blob." color = "#65ADA2" + complementary_color = "#AD6570" blobbernaut_message = "synchronously strikes" message = "The blobs strike you" /datum/reagent/blob/synchronous_mesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.1*reac_volume, BRUTE) - if(M) + if(M && reac_volume) for(var/obj/effect/blob/B in range(1, M)) //if the target is completely surrounded, this is 2.4*reac_volume bonus damage, total of 2.5*reac_volume if(M) B.blob_attack_animation(M) //show them they're getting a bad time @@ -376,6 +394,7 @@ id = "penetrating_spines" description = "will do medium brute damage through armor." color = "#408B80" + complementary_color = "#8B404B" blobbernaut_message = "stabs" message = "The blob stabs you" @@ -390,6 +409,7 @@ description = "will do low brute, oxygen, and stamina damage, and wet tiles when damaged or killed." shortdesc = "will do low brute, oxygen, and stamina damage, and wet tiles under targets." color = "#AAAABB" + complementary_color = "#BBBBAA" blobbernaut_message = "emits slime at" message = "The blob splashes into you" message_living = ", and you gasp for breath" @@ -424,6 +444,7 @@ id = "dark_matter" description = "will do medium brute damage and pull nearby objects and enemies at the target." color = "#61407E" + complementary_color = "#5D7E40" message = "You feel a thrum as the blob strikes you, and everything flies at you" /datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -437,6 +458,7 @@ id = "b_sorium" description = "will do medium brute damage and throw nearby objects and enemies away from the target." color = "#808000" + complementary_color = "#000080" message = "The blob slams into you and sends you flying" /datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) @@ -445,7 +467,7 @@ M.apply_damage(0.4*reac_volume, BRUTE) /datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, reac_volume) - if(M) + if(M && reac_volume) var/turf/pull = get_turf(M) var/range_power = Clamp(round(reac_volume/5, 1), 1, 5) for(var/atom/movable/X in range(range_power,pull)) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 26594f4e18b..756b38ff10b 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ