Tooling updates and removal of corrupt maps [MDB IGNORE] (#7620)

This commit is contained in:
Drathek
2024-02-05 18:49:02 -05:00
committed by GitHub
parent 45ae48db29
commit aa7cd0f69f
715 changed files with 2772354 additions and 2505847 deletions
@@ -1,18 +1,18 @@
/datum/trait/neutral/metabolism_up
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/metabolism_down
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/metabolism_apex
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/hide
name = "Hide"
desc = "You can hide beneath objects!"
cost = 0
custom_only = FALSE
/datum/trait/neutral/hide/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/hide
/datum/trait/neutral/metabolism_up
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/metabolism_down
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/metabolism_apex
can_take = ORGANICS|SYNTHETICS
/datum/trait/neutral/hide
name = "Hide"
desc = "You can hide beneath objects!"
cost = 0
custom_only = FALSE
/datum/trait/neutral/hide/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/hide
@@ -1,9 +1,9 @@
/obj/item/device/dogborg/sleeper/exploration
name = "Store-Belly"
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
icon_state = "sleeperlost"
injection_chems = list("inaprovaline") // Only to stabilize during extractions
compactor = TRUE
max_item_count = 4
medsensor = FALSE
recycles = TRUE
/obj/item/device/dogborg/sleeper/exploration
name = "Store-Belly"
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
icon_state = "sleeperlost"
injection_chems = list("inaprovaline") // Only to stabilize during extractions
compactor = TRUE
max_item_count = 4
medsensor = FALSE
recycles = TRUE
@@ -1,39 +1,39 @@
/mob/living/simple_mob/animal/crystalbeast
faction = "livingcrystal"
//simple gimmick boss
/mob/living/simple_mob/animal/crystalbeast/snail
name = "Crystal Goliath Snail"
desc = "A massive hulking beast made of strange crystal. Normal attacks seem like they will be ineffective. Explosions or piercing might do the trick"
health = 150
maxHealth = 150
icon = 'modular_chomp/icons/mob/eclipse.dmi'
icon_state = "crystal"
icon_dead = "crystal_dead"
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 0, bio = 100, rad = 100)
armor_soak = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
heat_damage_per_tick = 0
melee_damage_lower = 5
melee_damage_upper = 65
size_multiplier = 4
melee_attack_delay = 8
movement_cooldown = 13
loot_list = list(/obj/item/weapon/rig/ch/crystal = 100,
)
/mob/living/simple_mob/animal/crystalbeast
faction = "livingcrystal"
//simple gimmick boss
/mob/living/simple_mob/animal/crystalbeast/snail
name = "Crystal Goliath Snail"
desc = "A massive hulking beast made of strange crystal. Normal attacks seem like they will be ineffective. Explosions or piercing might do the trick"
health = 150
maxHealth = 150
icon = 'modular_chomp/icons/mob/eclipse.dmi'
icon_state = "crystal"
icon_dead = "crystal_dead"
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 0, bio = 100, rad = 100)
armor_soak = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
heat_damage_per_tick = 0
melee_damage_lower = 5
melee_damage_upper = 65
size_multiplier = 4
melee_attack_delay = 8
movement_cooldown = 13
loot_list = list(/obj/item/weapon/rig/ch/crystal = 100,
)
//Note to self, make the angel here when energy is gained
@@ -1,23 +1,23 @@
/mob/living/simple_mob/animal/space/carp/station
name = "distant space carp"
health = 50
maxHealth = 50
faction = "station"
var/body_color
/mob/living/simple_mob/animal/space/carp/station/Initialize()
.=..()
body_color = pick(list("green","red","orange","yellow","blue"))
if(body_color == "green")
color = "#660066"
if(body_color == "red")
color = "#FF0000"
if(body_color == "orange")
color = "#FF6600"
if(body_color == "yellow")
color = "#00FF00"
if(body_color == "blue")
/mob/living/simple_mob/animal/space/carp/station
name = "distant space carp"
health = 50
maxHealth = 50
faction = "station"
var/body_color
/mob/living/simple_mob/animal/space/carp/station/Initialize()
.=..()
body_color = pick(list("green","red","orange","yellow","blue"))
if(body_color == "green")
color = "#660066"
if(body_color == "red")
color = "#FF0000"
if(body_color == "orange")
color = "#FF6600"
if(body_color == "yellow")
color = "#00FF00"
if(body_color == "blue")
color = "#0099CC"
File diff suppressed because it is too large Load Diff
@@ -1,368 +1,368 @@
/mob/living/simple_mob/humanoid/eclipse/head
name = "Eclipse Head"
desc = "You shouldn't be seeing this. This is going to be rough"
health = 315
maxHealth = 315 //A 20 damae shot will need to land 35 times
projectile_dispersion = 8
projectile_accuracy = 0
ranged_cooldown = 5
damage_fatigue_mult = 0
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
/mob/living/simple_mob/humanoid/eclipse/head/security
name = "Eclipse Head Of Security"
icon_state = "fleetsec"
projectiletype = /obj/item/projectile/energy/flamecrystal
special_attack_cooldown = 10 SECONDS
special_attack_min_range = 1
special_attack_max_range = 8
loot_list = list(/obj/item/weapon/gun/energy/flamegun = 100,
/obj/item/weapon/bone/skull = 100
)
/mob/living/simple_mob/humanoid/eclipse/head/security/updatehealth()
. = ..()
if(vore_fullness == 1)
ranged_cooldown = 8
projectiletype = /obj/item/projectile/energy/flamecrystal
else if(vore_fullness == 2)
ranged_cooldown = 12
projectiletype = /obj/item/projectile/energy/fireball
else if (vore_fullness > 2)
ranged_cooldown = 16
projectiletype = /obj/item/projectile/energy/fireball
else
ranged_cooldown = 5
/mob/living/simple_mob/humanoid/eclipse/head/security/do_special_attack(atom/A)
if(vore_fullness < 2)
if(prob(50))
rapidfire(A)
else
tornado_maw(A)
else if(vore_fullness == 2)
tornado_maw(A)
else if(vore_fullness > 2)
if(prob(50))
deathtoll(A)
else
tornado_maw(A)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/rapidfire(atom/A)
var/obj/item/projectile/P = new /obj/item/projectile/energy/flamecrystal(get_turf(src))
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/tornado_maw(atom/A)
var/turf/T = get_turf(src)
var/datum/effect/effect/system/grav_pull/s1 = new /datum/effect/effect/system/grav_pull
s1.set_up(5, 1, T)
s1.start()
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/deathtoll(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
deathtollfollow(target)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/deathtollfollow(atom/target)
var/list/bomb_range = block(locate(target.x-6, target.y-6, target.z), locate(target.x+6, target.y+6, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/bullet/flamegun(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/obj/item/projectile/energy/flamecrystal
name = "Flame Crystal"
icon = 'modular_chomp/icons/mob/eclipse.dmi' //commiting sin
icon_state = "firecrystal"
damage = 15
armor_penetration = 40 //Large pointy crystal
damage_type = BRUTE
check_armour = "bullet"
modifier_type_to_apply = /datum/modifier/fire/weak
modifier_duration = 0.05 MINUTE
range = 12
hud_state = "laser_sniper"
/obj/item/projectile/bullet/flamegun
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 800
submunition_spread_min = 200
submunitions = list(/obj/item/projectile/energy/flamecrystal = 3)
hud_state = "laser_heat"
/obj/item/projectile/bullet/flamegun/on_range()
qdel(src)
/mob/living/simple_mob/humanoid/eclipse/head/scientist
name = "Eclipse Lead Researcher"
icon_state = "fleetsci"
health = 30
special_attack_cooldown = 5 SECONDS
special_attack_min_range = 1
special_attack_max_range = 10
projectiletype = /obj/item/projectile/bullet/pistol/ap
loot_list = list(/obj/item/weapon/circuitboard/mecha/hades/targeting = 100,
/obj/item/weapon/circuitboard/mecha/hades/peripherals = 100,
/obj/item/weapon/circuitboard/mecha/hades/main = 100,
/obj/item/weapon/bone/skull = 100
)
var/obj/item/shield_projector/shield1 = null
var/obj/item/shield_projector/shield2 = null
var/obj/item/shield_projector/shield3 = null
/mob/living/simple_mob/humanoid/eclipse/head/scientist/Initialize(mapload)
shield1 = new /obj/item/shield_projector/rectangle/automatic/eclipse(src)
shield2 = new /obj/item/shield_projector/rectangle/automatic/eclipse/medium(src)
shield3 = new /obj/item/shield_projector/rectangle/automatic/eclipse/big(src)
return ..()
/obj/item/shield_projector/rectangle/automatic/eclipse
name = "cult shield stone"
icon = 'icons/obj/device.dmi'
icon_state = "implant_melted"
shield_health = 100
max_shield_health = 100
shield_regen_delay = 120 SECONDS
shield_regen_amount = 100
size_x = 1
size_y = 1
color = "#FF6600"
high_color = "#0099CC"
low_color = "#660066"
/obj/item/shield_projector/rectangle/automatic/eclipse/medium
size_x = 2
size_y = 2
/obj/item/shield_projector/rectangle/automatic/eclipse/big
size_x = 3
size_y = 3
/mob/living/simple_mob/humanoid/eclipse/head/scientist/updatehealth()
. = ..()
if(vore_fullness == 1)
special_attack_cooldown = 10 SECONDS
else if(vore_fullness > 1)
special_attack_cooldown = 20 SECONDS
else
special_attack_cooldown = 5 SECONDS
/mob/living/simple_mob/humanoid/eclipse/head/scientist/do_special_attack(atom/A)
visible_message(span("warning", "\The [src] begins to fabricate drones!"))
sleep(3)
if(vore_fullness == 1)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
else if(vore_fullness > 1)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
else
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
/mob/living/simple_mob/mechanical/hivebot/swarm/eclipse
faction = "eclipse"
/mob/living/simple_mob/humanoid/eclipse/head/captain
name = "Eclipse Expedition Leader"
icon_state = "captain"
loot_list = list(/obj/item/slime_extract/dark = 20,
/obj/item/prop/alien/junk = 60,
/obj/random/tool/alien = 60,
/obj/random/tool/alien = 60,
/obj/item/weapon/cell/device/weapon/recharge/alien = 60,
/obj/random/tool/alien = 60,
/obj/item/weapon/cell/device/weapon/recharge/alien = 60,
/obj/item/weapon/bluespace_harpoon = 60,
/obj/item/weapon/flame/lighter/supermatter/syndismzippo = 60,
/obj/item/weapon/gun/energy/medigun = 60,
/obj/item/weapon/bone/skull = 100
)
var/obj/item/shield_projector/shield1 = null
/mob/living/simple_mob/humanoid/eclipse/head/captain/Initialize(mapload)
shield1 = new /obj/item/shield_projector/rectangle/automatic/eclipse/big(src)
/mob/living/simple_mob/humanoid/eclipse/head/captain/updatehealth() //This is a mistake
. = ..()
if(vore_fullness == 1)
ranged_cooldown = 4
projectiletype = /obj/item/projectile/energy/frostsphere
movement_cooldown = 1
melee_attack_delay = 1.3
melee_damage_lower = 20
melee_damage_upper = 35
armor = list(melee = 35, bullet = 35, laser = 35, energy = 35, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 15
else if(vore_fullness == 2)
ranged_cooldown = 0.5
projectiletype = /obj/item/projectile/energy/muckblob
movement_cooldown = 2
melee_attack_delay = 1.8
melee_damage_lower = 20
melee_damage_upper = 40
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 6, bullet = 6, laser = 6, energy = 6, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 20
else if (vore_fullness > 2)
ranged_cooldown = 16
projectiletype = /obj/item/projectile/energy/mob/ionbeam
movement_cooldown = 3
melee_attack_delay = 2
melee_damage_lower = 30
melee_damage_upper = 40
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 30
else
ranged_cooldown = 8
projectiletype = /obj/item/projectile/bullet/flamegun
movement_cooldown = 0
melee_attack_delay = 1.1
melee_damage_lower = 20
melee_damage_upper = 25
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 10
/mob/living/simple_mob/humanoid/eclipse/head/captain/do_special_attack(atom/A) //note to self, try to make fullness alts for this attacks
if(prob(20))
invokesec(A)
else if(prob(20))
invokesci(A)
else if(prob(20))
invokeengi(A)
else if(prob(20))
invokemedical(A)
else
invokecargo(A)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokesec(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
secattack(target)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/secattack(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/energy/flamecrystal(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokecargo(atom/A)
visible_message(span("warning", "\The [src] calls for their help on radio!"))
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokeengi(atom/A) //place holdery
var/obj/item/projectile/P = new /obj/item/projectile/temp(get_turf(src))
P.launch_projectile(A, BP_TORSO, src)
var/obj/item/projectile/P2 = new /obj/item/projectile/temp/hot(get_turf(src))
P2.launch_projectile(A, BP_TORSO, src)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokesci(atom/A)
visible_message(span("warning", "\The [src] begins to fabricate drones!"))
sleep(3)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokemedical(atom/A)
visible_message(span("warning", "\The [src] begins to tend to their wounds!"))
sleep(3)
adjustBruteLoss(-12)
adjustFireLoss(-12)
adjustToxLoss(-12)
adjustOxyLoss(-12)
adjustCloneLoss(-12)
/mob/living/simple_mob/humanoid/eclipse/head/shade
name = "???"
icon_state = "shade"
health = 300
maxHealth = 300 //18 20 damage shots
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
projectiletype = /obj/item/projectile/bullet/lightingburst
special_attack_cooldown = 10 SECONDS
special_attack_min_range = 0
special_attack_max_range = 7
loot_list = list(/obj/item/weapon/gun/energy/pulseglove = 100
)
/mob/living/simple_mob/humanoid/eclipse/head/shade/do_special_attack(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 5)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
bullethell(target)
/mob/living/simple_mob/humanoid/eclipse/head/shade/proc/bullethell(atom/target)
var/list/bomb_range = block(locate(target.x-6, target.y-6, target.z), locate(target.x+6, target.y+6, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/bullet/meteorstorm(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/mob/living/simple_mob/humanoid/eclipse/head
name = "Eclipse Head"
desc = "You shouldn't be seeing this. This is going to be rough"
health = 315
maxHealth = 315 //A 20 damae shot will need to land 35 times
projectile_dispersion = 8
projectile_accuracy = 0
ranged_cooldown = 5
damage_fatigue_mult = 0
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
/mob/living/simple_mob/humanoid/eclipse/head/security
name = "Eclipse Head Of Security"
icon_state = "fleetsec"
projectiletype = /obj/item/projectile/energy/flamecrystal
special_attack_cooldown = 10 SECONDS
special_attack_min_range = 1
special_attack_max_range = 8
loot_list = list(/obj/item/weapon/gun/energy/flamegun = 100,
/obj/item/weapon/bone/skull = 100
)
/mob/living/simple_mob/humanoid/eclipse/head/security/updatehealth()
. = ..()
if(vore_fullness == 1)
ranged_cooldown = 8
projectiletype = /obj/item/projectile/energy/flamecrystal
else if(vore_fullness == 2)
ranged_cooldown = 12
projectiletype = /obj/item/projectile/energy/fireball
else if (vore_fullness > 2)
ranged_cooldown = 16
projectiletype = /obj/item/projectile/energy/fireball
else
ranged_cooldown = 5
/mob/living/simple_mob/humanoid/eclipse/head/security/do_special_attack(atom/A)
if(vore_fullness < 2)
if(prob(50))
rapidfire(A)
else
tornado_maw(A)
else if(vore_fullness == 2)
tornado_maw(A)
else if(vore_fullness > 2)
if(prob(50))
deathtoll(A)
else
tornado_maw(A)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/rapidfire(atom/A)
var/obj/item/projectile/P = new /obj/item/projectile/energy/flamecrystal(get_turf(src))
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
sleep(1)
P.launch_projectile(A, BP_TORSO, src)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/tornado_maw(atom/A)
var/turf/T = get_turf(src)
var/datum/effect/effect/system/grav_pull/s1 = new /datum/effect/effect/system/grav_pull
s1.set_up(5, 1, T)
s1.start()
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/deathtoll(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
deathtollfollow(target)
/mob/living/simple_mob/humanoid/eclipse/head/security/proc/deathtollfollow(atom/target)
var/list/bomb_range = block(locate(target.x-6, target.y-6, target.z), locate(target.x+6, target.y+6, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/bullet/flamegun(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/obj/item/projectile/energy/flamecrystal
name = "Flame Crystal"
icon = 'modular_chomp/icons/mob/eclipse.dmi' //commiting sin
icon_state = "firecrystal"
damage = 15
armor_penetration = 40 //Large pointy crystal
damage_type = BRUTE
check_armour = "bullet"
modifier_type_to_apply = /datum/modifier/fire/weak
modifier_duration = 0.05 MINUTE
range = 12
hud_state = "laser_sniper"
/obj/item/projectile/bullet/flamegun
use_submunitions = 1
only_submunitions = 1
range = 0
embed_chance = 0
submunition_spread_max = 800
submunition_spread_min = 200
submunitions = list(/obj/item/projectile/energy/flamecrystal = 3)
hud_state = "laser_heat"
/obj/item/projectile/bullet/flamegun/on_range()
qdel(src)
/mob/living/simple_mob/humanoid/eclipse/head/scientist
name = "Eclipse Lead Researcher"
icon_state = "fleetsci"
health = 30
special_attack_cooldown = 5 SECONDS
special_attack_min_range = 1
special_attack_max_range = 10
projectiletype = /obj/item/projectile/bullet/pistol/ap
loot_list = list(/obj/item/weapon/circuitboard/mecha/hades/targeting = 100,
/obj/item/weapon/circuitboard/mecha/hades/peripherals = 100,
/obj/item/weapon/circuitboard/mecha/hades/main = 100,
/obj/item/weapon/bone/skull = 100
)
var/obj/item/shield_projector/shield1 = null
var/obj/item/shield_projector/shield2 = null
var/obj/item/shield_projector/shield3 = null
/mob/living/simple_mob/humanoid/eclipse/head/scientist/Initialize(mapload)
shield1 = new /obj/item/shield_projector/rectangle/automatic/eclipse(src)
shield2 = new /obj/item/shield_projector/rectangle/automatic/eclipse/medium(src)
shield3 = new /obj/item/shield_projector/rectangle/automatic/eclipse/big(src)
return ..()
/obj/item/shield_projector/rectangle/automatic/eclipse
name = "cult shield stone"
icon = 'icons/obj/device.dmi'
icon_state = "implant_melted"
shield_health = 100
max_shield_health = 100
shield_regen_delay = 120 SECONDS
shield_regen_amount = 100
size_x = 1
size_y = 1
color = "#FF6600"
high_color = "#0099CC"
low_color = "#660066"
/obj/item/shield_projector/rectangle/automatic/eclipse/medium
size_x = 2
size_y = 2
/obj/item/shield_projector/rectangle/automatic/eclipse/big
size_x = 3
size_y = 3
/mob/living/simple_mob/humanoid/eclipse/head/scientist/updatehealth()
. = ..()
if(vore_fullness == 1)
special_attack_cooldown = 10 SECONDS
else if(vore_fullness > 1)
special_attack_cooldown = 20 SECONDS
else
special_attack_cooldown = 5 SECONDS
/mob/living/simple_mob/humanoid/eclipse/head/scientist/do_special_attack(atom/A)
visible_message(span("warning", "\The [src] begins to fabricate drones!"))
sleep(3)
if(vore_fullness == 1)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
else if(vore_fullness > 1)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/mining_drone/scavenger/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
else
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
/mob/living/simple_mob/mechanical/hivebot/swarm/eclipse
faction = "eclipse"
/mob/living/simple_mob/humanoid/eclipse/head/captain
name = "Eclipse Expedition Leader"
icon_state = "captain"
loot_list = list(/obj/item/slime_extract/dark = 20,
/obj/item/prop/alien/junk = 60,
/obj/random/tool/alien = 60,
/obj/random/tool/alien = 60,
/obj/item/weapon/cell/device/weapon/recharge/alien = 60,
/obj/random/tool/alien = 60,
/obj/item/weapon/cell/device/weapon/recharge/alien = 60,
/obj/item/weapon/bluespace_harpoon = 60,
/obj/item/weapon/flame/lighter/supermatter/syndismzippo = 60,
/obj/item/weapon/gun/energy/medigun = 60,
/obj/item/weapon/bone/skull = 100
)
var/obj/item/shield_projector/shield1 = null
/mob/living/simple_mob/humanoid/eclipse/head/captain/Initialize(mapload)
shield1 = new /obj/item/shield_projector/rectangle/automatic/eclipse/big(src)
/mob/living/simple_mob/humanoid/eclipse/head/captain/updatehealth() //This is a mistake
. = ..()
if(vore_fullness == 1)
ranged_cooldown = 4
projectiletype = /obj/item/projectile/energy/frostsphere
movement_cooldown = 1
melee_attack_delay = 1.3
melee_damage_lower = 20
melee_damage_upper = 35
armor = list(melee = 35, bullet = 35, laser = 35, energy = 35, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 15
else if(vore_fullness == 2)
ranged_cooldown = 0.5
projectiletype = /obj/item/projectile/energy/muckblob
movement_cooldown = 2
melee_attack_delay = 1.8
melee_damage_lower = 20
melee_damage_upper = 40
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 6, bullet = 6, laser = 6, energy = 6, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 20
else if (vore_fullness > 2)
ranged_cooldown = 16
projectiletype = /obj/item/projectile/energy/mob/ionbeam
movement_cooldown = 3
melee_attack_delay = 2
melee_damage_lower = 30
melee_damage_upper = 40
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 30
else
ranged_cooldown = 8
projectiletype = /obj/item/projectile/bullet/flamegun
movement_cooldown = 0
melee_attack_delay = 1.1
melee_damage_lower = 20
melee_damage_upper = 25
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
special_attack_cooldown = 10
/mob/living/simple_mob/humanoid/eclipse/head/captain/do_special_attack(atom/A) //note to self, try to make fullness alts for this attacks
if(prob(20))
invokesec(A)
else if(prob(20))
invokesci(A)
else if(prob(20))
invokeengi(A)
else if(prob(20))
invokemedical(A)
else
invokecargo(A)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokesec(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
secattack(target)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/secattack(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/energy/flamecrystal(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokecargo(atom/A)
visible_message(span("warning", "\The [src] calls for their help on radio!"))
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokeengi(atom/A) //place holdery
var/obj/item/projectile/P = new /obj/item/projectile/temp(get_turf(src))
P.launch_projectile(A, BP_TORSO, src)
var/obj/item/projectile/P2 = new /obj/item/projectile/temp/hot(get_turf(src))
P2.launch_projectile(A, BP_TORSO, src)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokesci(atom/A)
visible_message(span("warning", "\The [src] begins to fabricate drones!"))
sleep(3)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
new /mob/living/simple_mob/mechanical/hivebot/swarm/eclipse (src.loc)
/mob/living/simple_mob/humanoid/eclipse/head/captain/proc/invokemedical(atom/A)
visible_message(span("warning", "\The [src] begins to tend to their wounds!"))
sleep(3)
adjustBruteLoss(-12)
adjustFireLoss(-12)
adjustToxLoss(-12)
adjustOxyLoss(-12)
adjustCloneLoss(-12)
/mob/living/simple_mob/humanoid/eclipse/head/shade
name = "???"
icon_state = "shade"
health = 300
maxHealth = 300 //18 20 damage shots
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
projectiletype = /obj/item/projectile/bullet/lightingburst
special_attack_cooldown = 10 SECONDS
special_attack_min_range = 0
special_attack_max_range = 7
loot_list = list(/obj/item/weapon/gun/energy/pulseglove = 100
)
/mob/living/simple_mob/humanoid/eclipse/head/shade/do_special_attack(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 5)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
bullethell(target)
/mob/living/simple_mob/humanoid/eclipse/head/shade/proc/bullethell(atom/target)
var/list/bomb_range = block(locate(target.x-6, target.y-6, target.z), locate(target.x+6, target.y+6, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/bullet/meteorstorm(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
@@ -1,156 +1,156 @@
/mob/living/simple_mob/humanoid/eclipse
vore_active = 1
vore_capacity = 2
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
vore_icons = null
can_be_drop_prey = FALSE //CHOMP Add
/mob/living/simple_mob/humanoid/eclipse/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 3
/mob/living/simple_mob/humanoid/eclipse/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",)
//This is placeholder code. Going to add special vorny for each of them slowly but surely.
/mob/living/simple_mob/humanoid/eclipse/head/scientist
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/scientist/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/scientist/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/scientist/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
"Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,)
/mob/living/simple_mob/humanoid/eclipse/head/security
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/security/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/security/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/security/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
"Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,)
/mob/living/simple_mob/humanoid/eclipse/head/captain
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/captain/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/captain/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/captain/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
/mob/living/simple_mob/humanoid/eclipse
vore_active = 1
vore_capacity = 2
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
vore_icons = null
can_be_drop_prey = FALSE //CHOMP Add
/mob/living/simple_mob/humanoid/eclipse/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 3
/mob/living/simple_mob/humanoid/eclipse/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",)
//This is placeholder code. Going to add special vorny for each of them slowly but surely.
/mob/living/simple_mob/humanoid/eclipse/head/scientist
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/scientist/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/scientist/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/scientist/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
"Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,)
/mob/living/simple_mob/humanoid/eclipse/head/security
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/security/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/security/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/security/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
"Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,)
/mob/living/simple_mob/humanoid/eclipse/head/captain
vore_active = 1
vore_capacity = 6
vore_max_size = RESIZE_HUGE
vore_min_size = RESIZE_SMALL
vore_pounce_chance = 0 // Beat them into crit before eating.
can_be_drop_prey = FALSE //CHOMP Add
digestable = 0
devourable = 0
/mob/living/simple_mob/humanoid/eclipse/head/captain/Login()
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
movement_cooldown = 1
/mob/living/simple_mob/humanoid/eclipse/head/captain/MouseDrop_T(mob/living/M, mob/living/user)
return
/mob/living/simple_mob/humanoid/eclipse/head/captain/init_vore()
if(!voremob_loaded)
return
.=..()
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "The fearsome preadtor gets a firm grip upon you, before dunking you into it's maw, then with a powerful swift gulp you're sent tumbling into it's stomach.."
B.emote_lists[DM_HOLD] = list(
"Your surroundings are momentarily filled with tour predator's pleased rumbling, its hands stroking over the taut swell you make in its belly.",
"Your surrondings glow with a neon red, dashes and spirals of pitch black flowing through the red gummy flesh as if it were a strange sky.",
"Your satsified predator sways their bloated gullet happily, their warm rumbling vibrarting the stomach, and by extension you.",)
B.emote_lists[DM_DIGEST] = list(
"Every clench of the predator's stomach grinds powerful digestive fluids into your body, forcibly churning away your strength!",
"The caustic red acid splashes, and washes over your frame, your sense of smell being overwhelmed by acid and sulfur as you're turned to nutrion.",
"Every swift swap of the predator's hips sends you slamming against the glowing red sides, your vision blurring further as you contunie to weaken." ,)
@@ -1,242 +1,242 @@
//beg critters
//kitsune is bullet hell esque in a traditonal sense
//naga does a bunch of spawning and CoC
//This are both training for the bigger dude I'll make later
/mob/living/simple_mob/humanoid/starhunter/hunter/druid
name = "Starhunter Druid"
health = 200 //20 hits from 20 damage
maxHealth = 200 //20 hits from 20 damage
damage_fatigue_mult = 0
icon_state = "snekdruid"
icon_living = "snekdruid"
/mob/living/simple_mob/humanoid/starhunter/hunter/druid/do_special_attack(atom/A)
if(prob(50))
lightpillar(A)
else
fire_lines(A)
/mob/living/simple_mob/humanoid/starhunter/hunter/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/lightpillar))
visible_message(span_orange("<B>[P] seems ineffective!.</B>")) //immune to their own attack
else
..()
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/lightpillar(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
spawn_lightpillar(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_lightpillar(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
new /obj/effect/calldown_attack(get_turf(target))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
new /mob/living/simple_mob/humanoid/starhunter/hunter/prop(T)
bomb_range -= T
/mob/living/simple_mob/humanoid/starhunter/hunter/prop //This ain't a mob to spawn, but something apart of other mobs attacks and self deletes
health = 1000
maxHealth = 1000
projectile_dispersion = 0
projectile_accuracy = 100
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100)
projectiletype = /obj/item/projectile/energy/lightpillar
ranged_attack_delay = 1.5 SECONDS
icon_state = "prism"
icon_living = "prism"
/mob/living/simple_mob/humanoid/starhunter/hunter/prop/ranged_pre_animation(atom/A)
Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 10)
. = ..()
/mob/living/simple_mob/humanoid/starhunter/hunter/prop/shoot_target(atom/A)
set waitfor = FALSE
if(!istype(A) || QDELETED(A))
return
setClickCooldown(get_attack_speed())
face_atom(A)
var/atom/orig_targ = A
if(ranged_attack_delay)
A = get_turf(orig_targ)
ranged_pre_animation(A)
handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
if(needs_reload)
if(reload_count >= reload_max)
try_reload()
return FALSE
/*
* CHOMP Addition: This section here is (duplicated) special snowflake code because sniper does not call parent. Basically, this is a non-stupid version of the above intended for ranged mobs.
* ranged_attack_delay is stupid because it sleeps the entire mob.
* This new ranged_cooldown_time is smarter in the sense that it is an internalized timer. Try not to confuse the names.
*/
if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins.
if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically.
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [A]!</span>") //Leave notice of shooting.
shoot(A) //Perform the shoot action
if(casingtype) //If the mob is designated to leave casings...
new casingtype(loc) //... leave the casing.
ranged_cooldown = world.time + ranged_cooldown_time + ((injury_level / 2) SECONDS) //Special addition here. This is a timer. Keeping updating the time after shooting. Add that ranged cooldown time specified in the mob to the world time.
qdel(src)
return TRUE //End these commands here.
// CHOMPAddition End
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [orig_targ]!</span>")
shoot(A)
if(casingtype)
new casingtype(loc)
if(ranged_attack_delay)
ranged_post_animation(A)
return TRUE
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/fire_lines(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
spawn_fire(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_fire(atom/target)
var/alignment = rand(1,2) // 1 for vertical, 2 for horizontal
var/list/line_range = list()
var/turf/T = get_turf(target)
line_range += T
for(var/i = 1, i <= 7, i++)
switch(alignment)
if(1)
if(T.x-i > 0)
line_range += locate(T.x-i, T.y, T.z)
if(T.x+i <= world.maxx)
line_range += locate(T.x+i, T.y, T.z)
if(2)
if(T.y-i > 0)
line_range += locate(T.x, T.y-i, T.z)
if(T.y+i <= world.maxy)
line_range += locate(T.x, T.y+i, T.z)
for(var/turf/dropspot in line_range)
new /obj/effect/calldown_attack_fire(dropspot)
/obj/effect/calldown_attack_fire
anchored = TRUE
density = FALSE
unacidable = TRUE
mouse_opacity = 0
icon = 'icons/effects/effects.dmi'
icon_state = "drop_marker"
/obj/effect/calldown_attack_fire/Initialize(mapload)
..()
return INITIALIZE_HINT_LATELOAD
/obj/effect/calldown_attack_fire/LateInitialize()
var/delay = rand(25, 30)
spawn(delay-7)
new /obj/fire(src.loc)
spawn(delay)
qdel(src)
//Kitsune Stuff
/mob/living/simple_mob/humanoid/starhunter/hunter/champion
name = "Starhunter Starweilder"
health = 200 //10 hits from 20 damage
maxHealth = 200
damage_fatigue_mult = 0
projectiletype = /obj/item/projectile/energy/ninjastar
icon_state = "suneswift"
icon_living = "suneswift"
/mob/living/simple_mob/humanoid/starhunter/hunter/champion/do_special_attack(atom/A)
if(prob(50))
bullethell(A)
else
rapidfire_windup(A)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/bullethell(atom/A)
set waitfor = FALSE
var/sd = dir2angle(dir)
var/list/offsets = list(45, 45, 20, 10)
for(var/i = 0, i<4, i++)
for(var/j = 0, j <4, j++)
var/obj/item/projectile/energy/slow_orb/shot = new(get_turf(src))
shot.firer = src
shot.fire(sd)
sd += 90
sd += pick(offsets)
sleep(20)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire_windup(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
rapidfire(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/energy/ninjastar(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/obj/item/projectile/energy/lightpillar
name = "Light Pillar"
icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin
icon_state = "lightpillar"
damage = 30 //DIVINE JUDGMENT
armor_penetration = 50 //DIVINE JUDGMENT
light_range = 5
light_power = 5
damage_type = BURN
check_armour = "laser"
light_color = "#FF6600"
range = 7
speed = 13
/obj/item/projectile/energy/ninjastar
name = "Energy Star"
icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin
icon_state = "ninjastar"
damage = 15
armor_penetration = 25 //Gets into the gaps
damage_type = BURN
check_armour = "laser"
//beg critters
//kitsune is bullet hell esque in a traditonal sense
//naga does a bunch of spawning and CoC
//This are both training for the bigger dude I'll make later
/mob/living/simple_mob/humanoid/starhunter/hunter/druid
name = "Starhunter Druid"
health = 200 //20 hits from 20 damage
maxHealth = 200 //20 hits from 20 damage
damage_fatigue_mult = 0
icon_state = "snekdruid"
icon_living = "snekdruid"
/mob/living/simple_mob/humanoid/starhunter/hunter/druid/do_special_attack(atom/A)
if(prob(50))
lightpillar(A)
else
fire_lines(A)
/mob/living/simple_mob/humanoid/starhunter/hunter/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/lightpillar))
visible_message(span_orange("<B>[P] seems ineffective!.</B>")) //immune to their own attack
else
..()
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/lightpillar(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
spawn_lightpillar(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_lightpillar(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
new /obj/effect/calldown_attack(get_turf(target))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
new /mob/living/simple_mob/humanoid/starhunter/hunter/prop(T)
bomb_range -= T
/mob/living/simple_mob/humanoid/starhunter/hunter/prop //This ain't a mob to spawn, but something apart of other mobs attacks and self deletes
health = 1000
maxHealth = 1000
projectile_dispersion = 0
projectile_accuracy = 100
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100)
projectiletype = /obj/item/projectile/energy/lightpillar
ranged_attack_delay = 1.5 SECONDS
icon_state = "prism"
icon_living = "prism"
/mob/living/simple_mob/humanoid/starhunter/hunter/prop/ranged_pre_animation(atom/A)
Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 10)
. = ..()
/mob/living/simple_mob/humanoid/starhunter/hunter/prop/shoot_target(atom/A)
set waitfor = FALSE
if(!istype(A) || QDELETED(A))
return
setClickCooldown(get_attack_speed())
face_atom(A)
var/atom/orig_targ = A
if(ranged_attack_delay)
A = get_turf(orig_targ)
ranged_pre_animation(A)
handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
if(needs_reload)
if(reload_count >= reload_max)
try_reload()
return FALSE
/*
* CHOMP Addition: This section here is (duplicated) special snowflake code because sniper does not call parent. Basically, this is a non-stupid version of the above intended for ranged mobs.
* ranged_attack_delay is stupid because it sleeps the entire mob.
* This new ranged_cooldown_time is smarter in the sense that it is an internalized timer. Try not to confuse the names.
*/
if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins.
if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically.
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [A]!</span>") //Leave notice of shooting.
shoot(A) //Perform the shoot action
if(casingtype) //If the mob is designated to leave casings...
new casingtype(loc) //... leave the casing.
ranged_cooldown = world.time + ranged_cooldown_time + ((injury_level / 2) SECONDS) //Special addition here. This is a timer. Keeping updating the time after shooting. Add that ranged cooldown time specified in the mob to the world time.
qdel(src)
return TRUE //End these commands here.
// CHOMPAddition End
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [orig_targ]!</span>")
shoot(A)
if(casingtype)
new casingtype(loc)
if(ranged_attack_delay)
ranged_post_animation(A)
return TRUE
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/fire_lines(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
spawn_fire(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/spawn_fire(atom/target)
var/alignment = rand(1,2) // 1 for vertical, 2 for horizontal
var/list/line_range = list()
var/turf/T = get_turf(target)
line_range += T
for(var/i = 1, i <= 7, i++)
switch(alignment)
if(1)
if(T.x-i > 0)
line_range += locate(T.x-i, T.y, T.z)
if(T.x+i <= world.maxx)
line_range += locate(T.x+i, T.y, T.z)
if(2)
if(T.y-i > 0)
line_range += locate(T.x, T.y-i, T.z)
if(T.y+i <= world.maxy)
line_range += locate(T.x, T.y+i, T.z)
for(var/turf/dropspot in line_range)
new /obj/effect/calldown_attack_fire(dropspot)
/obj/effect/calldown_attack_fire
anchored = TRUE
density = FALSE
unacidable = TRUE
mouse_opacity = 0
icon = 'icons/effects/effects.dmi'
icon_state = "drop_marker"
/obj/effect/calldown_attack_fire/Initialize(mapload)
..()
return INITIALIZE_HINT_LATELOAD
/obj/effect/calldown_attack_fire/LateInitialize()
var/delay = rand(25, 30)
spawn(delay-7)
new /obj/fire(src.loc)
spawn(delay)
qdel(src)
//Kitsune Stuff
/mob/living/simple_mob/humanoid/starhunter/hunter/champion
name = "Starhunter Starweilder"
health = 200 //10 hits from 20 damage
maxHealth = 200
damage_fatigue_mult = 0
projectiletype = /obj/item/projectile/energy/ninjastar
icon_state = "suneswift"
icon_living = "suneswift"
/mob/living/simple_mob/humanoid/starhunter/hunter/champion/do_special_attack(atom/A)
if(prob(50))
bullethell(A)
else
rapidfire_windup(A)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/bullethell(atom/A)
set waitfor = FALSE
var/sd = dir2angle(dir)
var/list/offsets = list(45, 45, 20, 10)
for(var/i = 0, i<4, i++)
for(var/j = 0, j <4, j++)
var/obj/item/projectile/energy/slow_orb/shot = new(get_turf(src))
shot.firer = src
shot.fire(sd)
sd += 90
sd += pick(offsets)
sleep(20)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire_windup(atom/A)
var/list/potential_targets = ai_holder.list_targets()
for(var/atom/entry in potential_targets)
if(istype(entry, /mob/living/simple_mob/humanoid/starhunter/hunter))
potential_targets -= entry
if(potential_targets.len)
var/iteration = clamp(potential_targets.len, 1, 3)
for(var/i = 0, i < iteration, i++)
if(!(potential_targets.len))
break
var/mob/target = pick(potential_targets)
potential_targets -= target
rapidfire(target)
/mob/living/simple_mob/humanoid/starhunter/hunter/proc/rapidfire(atom/target)
var/list/bomb_range = block(locate(target.x-4, target.y-4, target.z), locate(target.x+4, target.y+4, target.z))
var/obj/item/projectile/P = new /obj/item/projectile/energy/ninjastar(get_turf(src))
bomb_range -= get_turf(target)
for(var/i = 0, i < 4, i++)
var/turf/T = pick(bomb_range)
P.launch_projectile(target, BP_TORSO, src)
bomb_range -= T
/obj/item/projectile/energy/lightpillar
name = "Light Pillar"
icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin
icon_state = "lightpillar"
damage = 30 //DIVINE JUDGMENT
armor_penetration = 50 //DIVINE JUDGMENT
light_range = 5
light_power = 5
damage_type = BURN
check_armour = "laser"
light_color = "#FF6600"
range = 7
speed = 13
/obj/item/projectile/energy/ninjastar
name = "Energy Star"
icon = 'modular_chomp/icons/mob/starhunters.dmi' //commiting sin
icon_state = "ninjastar"
damage = 15
armor_penetration = 25 //Gets into the gaps
damage_type = BURN
check_armour = "laser"
File diff suppressed because it is too large Load Diff
@@ -1,438 +1,438 @@
/mob/living/simple_mob/vore/spacecritter
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
health = 30
maxHealth = 30
movement_cooldown = 3
aquatic_movement = 0
minbodytemp = 0
maxbodytemp = 10000 // Maximum of above
heat_damage_per_tick = 3
cold_damage_per_tick = 2
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
heat_damage_per_tick = 0
melee_damage_lower = 12
melee_damage_upper = 12
melee_miss_chance = 0
melee_attack_delay = 1.5
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
hovering = TRUE
heat_resist = 1.0
cold_resist = 1.0
shock_resist = 0.0
water_resist = 1.0
taser_kill = 0
var/evolve = "/mob/living/simple_mob/vore/solarray/galaxyray"
var/feed = "/obj/item/weapon/ore/phoron"
var/evolvekey = "/obj/item/stack/material/tritium"
var/copy = "/mob/living/simple_mob/vore/solarray"
/mob/living/simple_mob/vore/spacecritter/attackby(var/obj/item/O, var/mob/user)
if(istype(O, evolvekey))
user.drop_from_inventory(O)
qdel(O)
evolve()
else if(istype(O, feed))
user.drop_from_inventory(O)
qdel(O)
duplicate()
else
.=..()
/mob/living/simple_mob/vore/spacecritter/proc/evolve()
var/mob/living/L
L = new evolve(get_turf(src))
if(mind)
src.mind.transfer_to(L)
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
qdel(src)
/mob/living/simple_mob/vore/spacecritter/proc/duplicate()
visible_message("<span class='warning'>\The [src] splits into two!</span>")
new copy (src.loc)
/mob/living/simple_mob/vore/spacecritter/solarray //solar moth lite, dies to water
name = "solar ray"
desc = "A sting ray of fire, drifting around"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "solarray"
icon_living = "solarray"
icon_dead = "solarray-dead"
attacktext = list("incinerate")
attack_armor_type = "energy"
attack_armor_pen = 30
water_resist = 0
var/mycolour = COLOR_RED //Variable Lighting colours
var/original_temp = null //Value to remember temp
var/set_temperature = T0C + 5000 //Sets the target point of 10k degrees celsius
var/heating_power = 50000
evolve = "/mob/living/simple_mob/vore/solarray/galaxyray"
feed = "/obj/item/weapon/ore/phoron"
evolvekey = "/obj/item/stack/material/tritium"
copy = "/mob/living/simple_mob/vore/spacecritter/solarray"
/mob/living/simple_mob/vore/spacecritter/solarray/Life()
. = ..()
if(icon_state != icon_dead) //I mean on death() Life() should disable but i guess doesnt hurt to make sure -shark
var/turf/moth_loc = get_turf(src)
if(isturf(moth_loc) && moth_loc.air)
var/datum/gas_mixture/env = moth_loc.return_air() //Gets all the information on the local air.
var/transfer_moles = 0.25 * env.total_moles //The bigger the room, the harder it is to heat the room.
var/datum/gas_mixture/removed = env.remove(transfer_moles)
var/heat_transfer = removed.get_thermal_energy_change(set_temperature)
if(heat_transfer > 0 && env.temperature < T0C + 200) //This should start heating the room at a moderate pace up to 200 degrees celsius.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater
removed.add_thermal_energy(heat_transfer)
else if(heat_transfer > 0 && env.temperature < set_temperature) //Set temperature is 10,000 degrees celsius. So this thing will start cooking crazy hot between the temperatures of 200C and 10,000C.
heating_power = original_temp*100 //Changed to work variable -shark //FLAME ON! This will make the moth heat up the room at an incredible rate.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater. Except it's hot, so yeah.
removed.add_thermal_energy(heat_transfer)
else
return
env.merge(removed)
//Since I'm changing hyper mode to be variable we need to store old power
original_temp = heating_power
/mob/living/simple_mob/vore/spacecritter/solarray/galaxyray
name = "galaxy ray"
icon_state = "galaxyray"
icon_living = "galaxyray"
health = 75
maxHealth = 75
set_temperature = T0C + 15000
heating_power = 150000
size_multiplier = 1.5
/mob/living/simple_mob/vore/spacecritter/livingice //dark blue slime but more chilly. Dies to lasers or slighly toasty rooms
name = "living icicle"
desc = "A strange creature, a crab like creature seemingly made of ice"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "livingice"
icon_living = "livingice"
icon_dead = "livingice-dead"
minbodytemp = 0 // Minimum "okay" temperature in kelvin
maxbodytemp = 300 // Maximum of above
hovering = FALSE
heat_resist = 0.2
cold_resist = 1.0
evolve = "/mob/living/simple_mob/vore/spacecritter/livingice/iceberg"
feed = "/obj/item/stack/material/snow"
evolvekey = "/obj/item/weapon/reagent_containers/food/snacks/coldchili"
copy = "/mob/living/simple_mob/vore/spacecritter/livingice"
var/chilltemp = -20
/mob/living/simple_mob/vore/spacecritter/livingice/handle_special()
if(stat != DEAD)
cold_aura()
..()
/mob/living/simple_mob/vore/spacecritter/livingice/proc/cold_aura()
for(var/mob/living/L in view(2, src))
var/turf/T = get_turf(src)
var/datum/gas_mixture/env = T.return_air()
if(env)
env.add_thermal_energy(chilltemp * 1000)
/mob/living/simple_mob/vore/spacecritter/livingice/iceberg
name = "living iceberg"
desc = "A giant strange creature, a crab like creature seemingly made of ice"
size_multiplier = 3.0
health = 75
maxHealth = 75
chilltemp = -50
/mob/living/simple_mob/vore/spacecritter/radcrab //bullets, melee, and cold all crack the poor thing's shell
name = "crystaline crab"
desc = "A largeish hermit crab glowing green, irradting the nearby area"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "hermitcrab"
icon_living = "hermitcrab"
icon_dead = "hermitcrab-dead"
aquatic_movement = 1 // If set, the mob will move through fluids with no hinderance.
minbodytemp = 260 // Minimum "okay" temperature in kelvin
maxbodytemp = 10000 // Maximum of above
melee_damage_lower = 2 // Lower bound of randomized melee damage
melee_damage_upper = 2 // Upper bound of randomized melee damage
attacktext = list("pinches") // "You are [attacktext] by the mob!"
attack_armor_type = "melee" // What armor does this check?
attack_armor_pen = 100 // How much armor pen this attack has.
var/rads = 50
evolve = "/mob/living/simple_mob/vore/spacecritter/radcrab/supermattercrab"
feed = "/obj/item/weapon/ore/uranium"
evolvekey = "/obj/item/stack/material/uranium"
copy = "/mob/living/simple_mob/vore/spacecritter/radcrab"
/mob/living/simple_mob/vore/spacecritter/radcrab/handle_special()
if(stat != DEAD)
irradiate()
..()
/mob/living/simple_mob/vore/spacecritter/radcrab/proc/irradiate()
SSradiation.radiate(src, rads)
/mob/living/simple_mob/vore/spacecritter/radcrab/supermattercrab
size_multiplier = 1.5
health = 75
maxHealth = 75
rads = 150
name = "energized crystaline crab"
icon_state = "superhermitcrab"
icon_living = "superhermitcrab"
icon_dead = "hermitcrab-dead"
/mob/living/simple_mob/vore/spacecritter/dreameel
name = "dream eel"
desc = "A eel floating through it's own thick cloud"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "dreameel"
icon_living = "dreameel"
icon_dead = "dreameel-dead"
movement_cooldown = -1 // Lower is faster.
attacktext = list("bitten") // "You are [attacktext] by the mob!"
var/artifact_master = /datum/component/artifact_master/dreameel
evolve = "/mob/living/simple_mob/vore/spacecritter/dreameel/nightmare"
feed = "/obj/item/weapon/reagent_containers/food/snacks/carpmeat"
evolvekey = "/obj/item/stack/material/phoron"
copy = "/mob/living/simple_mob/vore/spacecritter/dreameel"
/datum/component/artifact_master/dreameel
make_effects = list(
/datum/artifact_effect/gassleeping
)
/mob/living/simple_mob/vore/spacecritter/dreameel/nightmare
name = "dream eel"
desc = "A eel floating through it's own thick cloud"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "dreameel"
icon_living = "dreameel"
movement_cooldown = -5
color = "#9933FF"
artifact_master = /datum/component/artifact_master/nightmare
/datum/component/artifact_master/nightmare
make_effects = list(
/datum/artifact_effect/gasphoron
)
/mob/living/simple_mob/vore/spacecritter/gravityshell
name = "Gravity Shell"
desc = "A metallic turtle"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "gravityshell"
icon_living = "gravityshell"
icon_dead = "gravityshell-dead"
movement_cooldown = 5 // Lower is faster.
armor_soak = list( // Values for getsoak() checks.
"melee" = 7,
"bullet" = 7,
"laser" = 7,
"energy" = 7,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
var/artifact_master = /datum/component/artifact_master/gravity
evolve = "/mob/living/simple_mob/vore/spacecritter/gravityshell/cleanse"
feed = "/obj/item/stack/material/concrete"
evolvekey = "/obj/item/stack/material/tritium"
copy = "/mob/living/simple_mob/vore/spacecritter/gravityshell"
/datum/component/artifact_master/gravity
make_effects = list(
/datum/artifact_effect/extreme/gravity_wave
)
/mob/living/simple_mob/vore/spacecritter/gravityshell/cleanse
size_multiplier = 0.5
health = 75
maxHealth = 75
artifact_master = /datum/component/artifact_master/gasoxy
icon_state = "cleanseshell"
icon_living = "cleanseshell"
icon_dead = "cleanseshell-dead"
/datum/component/artifact_master/gasoxy
make_effects = list(
/datum/artifact_effect/gasoxy
)
/mob/living/simple_mob/vore/spacecritter/solarray
vore_bump_chance = 80
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/livingice
vore_bump_chance = 0
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/radcrab
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/dreameel
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/gravityshell
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/solarray
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/raymeat
meat_amount = 8
tame_items = list(
/obj/item/stack/tile/grass = 50
)
butchery_loot = list(\
/obj/item/stack/material/wisp = 3\
)
harvest_tool = /obj/item/weapon/weldingtool
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/wisp = 1
)
/mob/living/simple_mob/vore/spacecritter/livingice
meat_type = /obj/item/stack/material/snow
meat_amount = 18
tame_items = list(
/obj/item/stack/material/snow = 10
)
butchery_loot = list(\
/obj/item/stack/material/frostscale = 3\
)
harvest_tool = /obj/item/weapon/tool/wirecutters
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/frostscale = 1
)
/mob/living/simple_mob/vore/spacecritter/radcrab
meat_type = /obj/item/weapon/reagent_containers/food/snacks/crabmeat
meat_amount = 8
tame_items = list(
/obj/item/weapon/ore/uranium = 50
)
butchery_loot = list(\
/obj/item/stack/material/crystalscale = 3\
)
harvest_tool = /obj/item/weapon/tool/crowbar
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/crystalscale = 1
)
/mob/living/simple_mob/vore/spacecritter/dreameel
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/eelmeat
meat_amount = 2
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat/gravityshell = 40
)
butchery_loot = list(\
/obj/item/stack/material/dreamscale = 3\
)
harvest_tool = /obj/item/weapon/tool/wirecutters
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/dreamscale = 1
)
/mob/living/simple_mob/vore/spacecritter/gravityshell
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/gravityshell
meat_amount = 8
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/crabmeat = 50
)
butchery_loot = list(\
/obj/item/stack/material/shellchitin = 3\
)
harvest_tool = /obj/item/weapon/tool/crowbar
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/shellchitin = 1
)
/mob/living/simple_mob/vore/spacecritter
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
health = 30
maxHealth = 30
movement_cooldown = 3
aquatic_movement = 0
minbodytemp = 0
maxbodytemp = 10000 // Maximum of above
heat_damage_per_tick = 3
cold_damage_per_tick = 2
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
unsuitable_atoms_damage = 0
heat_damage_per_tick = 0
melee_damage_lower = 12
melee_damage_upper = 12
melee_miss_chance = 0
melee_attack_delay = 1.5
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
hovering = TRUE
heat_resist = 1.0
cold_resist = 1.0
shock_resist = 0.0
water_resist = 1.0
taser_kill = 0
var/evolve = "/mob/living/simple_mob/vore/solarray/galaxyray"
var/feed = "/obj/item/weapon/ore/phoron"
var/evolvekey = "/obj/item/stack/material/tritium"
var/copy = "/mob/living/simple_mob/vore/solarray"
/mob/living/simple_mob/vore/spacecritter/attackby(var/obj/item/O, var/mob/user)
if(istype(O, evolvekey))
user.drop_from_inventory(O)
qdel(O)
evolve()
else if(istype(O, feed))
user.drop_from_inventory(O)
qdel(O)
duplicate()
else
.=..()
/mob/living/simple_mob/vore/spacecritter/proc/evolve()
var/mob/living/L
L = new evolve(get_turf(src))
if(mind)
src.mind.transfer_to(L)
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
qdel(src)
/mob/living/simple_mob/vore/spacecritter/proc/duplicate()
visible_message("<span class='warning'>\The [src] splits into two!</span>")
new copy (src.loc)
/mob/living/simple_mob/vore/spacecritter/solarray //solar moth lite, dies to water
name = "solar ray"
desc = "A sting ray of fire, drifting around"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "solarray"
icon_living = "solarray"
icon_dead = "solarray-dead"
attacktext = list("incinerate")
attack_armor_type = "energy"
attack_armor_pen = 30
water_resist = 0
var/mycolour = COLOR_RED //Variable Lighting colours
var/original_temp = null //Value to remember temp
var/set_temperature = T0C + 5000 //Sets the target point of 10k degrees celsius
var/heating_power = 50000
evolve = "/mob/living/simple_mob/vore/solarray/galaxyray"
feed = "/obj/item/weapon/ore/phoron"
evolvekey = "/obj/item/stack/material/tritium"
copy = "/mob/living/simple_mob/vore/spacecritter/solarray"
/mob/living/simple_mob/vore/spacecritter/solarray/Life()
. = ..()
if(icon_state != icon_dead) //I mean on death() Life() should disable but i guess doesnt hurt to make sure -shark
var/turf/moth_loc = get_turf(src)
if(isturf(moth_loc) && moth_loc.air)
var/datum/gas_mixture/env = moth_loc.return_air() //Gets all the information on the local air.
var/transfer_moles = 0.25 * env.total_moles //The bigger the room, the harder it is to heat the room.
var/datum/gas_mixture/removed = env.remove(transfer_moles)
var/heat_transfer = removed.get_thermal_energy_change(set_temperature)
if(heat_transfer > 0 && env.temperature < T0C + 200) //This should start heating the room at a moderate pace up to 200 degrees celsius.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater
removed.add_thermal_energy(heat_transfer)
else if(heat_transfer > 0 && env.temperature < set_temperature) //Set temperature is 10,000 degrees celsius. So this thing will start cooking crazy hot between the temperatures of 200C and 10,000C.
heating_power = original_temp*100 //Changed to work variable -shark //FLAME ON! This will make the moth heat up the room at an incredible rate.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater. Except it's hot, so yeah.
removed.add_thermal_energy(heat_transfer)
else
return
env.merge(removed)
//Since I'm changing hyper mode to be variable we need to store old power
original_temp = heating_power
/mob/living/simple_mob/vore/spacecritter/solarray/galaxyray
name = "galaxy ray"
icon_state = "galaxyray"
icon_living = "galaxyray"
health = 75
maxHealth = 75
set_temperature = T0C + 15000
heating_power = 150000
size_multiplier = 1.5
/mob/living/simple_mob/vore/spacecritter/livingice //dark blue slime but more chilly. Dies to lasers or slighly toasty rooms
name = "living icicle"
desc = "A strange creature, a crab like creature seemingly made of ice"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "livingice"
icon_living = "livingice"
icon_dead = "livingice-dead"
minbodytemp = 0 // Minimum "okay" temperature in kelvin
maxbodytemp = 300 // Maximum of above
hovering = FALSE
heat_resist = 0.2
cold_resist = 1.0
evolve = "/mob/living/simple_mob/vore/spacecritter/livingice/iceberg"
feed = "/obj/item/stack/material/snow"
evolvekey = "/obj/item/weapon/reagent_containers/food/snacks/coldchili"
copy = "/mob/living/simple_mob/vore/spacecritter/livingice"
var/chilltemp = -20
/mob/living/simple_mob/vore/spacecritter/livingice/handle_special()
if(stat != DEAD)
cold_aura()
..()
/mob/living/simple_mob/vore/spacecritter/livingice/proc/cold_aura()
for(var/mob/living/L in view(2, src))
var/turf/T = get_turf(src)
var/datum/gas_mixture/env = T.return_air()
if(env)
env.add_thermal_energy(chilltemp * 1000)
/mob/living/simple_mob/vore/spacecritter/livingice/iceberg
name = "living iceberg"
desc = "A giant strange creature, a crab like creature seemingly made of ice"
size_multiplier = 3.0
health = 75
maxHealth = 75
chilltemp = -50
/mob/living/simple_mob/vore/spacecritter/radcrab //bullets, melee, and cold all crack the poor thing's shell
name = "crystaline crab"
desc = "A largeish hermit crab glowing green, irradting the nearby area"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "hermitcrab"
icon_living = "hermitcrab"
icon_dead = "hermitcrab-dead"
aquatic_movement = 1 // If set, the mob will move through fluids with no hinderance.
minbodytemp = 260 // Minimum "okay" temperature in kelvin
maxbodytemp = 10000 // Maximum of above
melee_damage_lower = 2 // Lower bound of randomized melee damage
melee_damage_upper = 2 // Upper bound of randomized melee damage
attacktext = list("pinches") // "You are [attacktext] by the mob!"
attack_armor_type = "melee" // What armor does this check?
attack_armor_pen = 100 // How much armor pen this attack has.
var/rads = 50
evolve = "/mob/living/simple_mob/vore/spacecritter/radcrab/supermattercrab"
feed = "/obj/item/weapon/ore/uranium"
evolvekey = "/obj/item/stack/material/uranium"
copy = "/mob/living/simple_mob/vore/spacecritter/radcrab"
/mob/living/simple_mob/vore/spacecritter/radcrab/handle_special()
if(stat != DEAD)
irradiate()
..()
/mob/living/simple_mob/vore/spacecritter/radcrab/proc/irradiate()
SSradiation.radiate(src, rads)
/mob/living/simple_mob/vore/spacecritter/radcrab/supermattercrab
size_multiplier = 1.5
health = 75
maxHealth = 75
rads = 150
name = "energized crystaline crab"
icon_state = "superhermitcrab"
icon_living = "superhermitcrab"
icon_dead = "hermitcrab-dead"
/mob/living/simple_mob/vore/spacecritter/dreameel
name = "dream eel"
desc = "A eel floating through it's own thick cloud"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "dreameel"
icon_living = "dreameel"
icon_dead = "dreameel-dead"
movement_cooldown = -1 // Lower is faster.
attacktext = list("bitten") // "You are [attacktext] by the mob!"
var/artifact_master = /datum/component/artifact_master/dreameel
evolve = "/mob/living/simple_mob/vore/spacecritter/dreameel/nightmare"
feed = "/obj/item/weapon/reagent_containers/food/snacks/carpmeat"
evolvekey = "/obj/item/stack/material/phoron"
copy = "/mob/living/simple_mob/vore/spacecritter/dreameel"
/datum/component/artifact_master/dreameel
make_effects = list(
/datum/artifact_effect/gassleeping
)
/mob/living/simple_mob/vore/spacecritter/dreameel/nightmare
name = "dream eel"
desc = "A eel floating through it's own thick cloud"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "dreameel"
icon_living = "dreameel"
movement_cooldown = -5
color = "#9933FF"
artifact_master = /datum/component/artifact_master/nightmare
/datum/component/artifact_master/nightmare
make_effects = list(
/datum/artifact_effect/gasphoron
)
/mob/living/simple_mob/vore/spacecritter/gravityshell
name = "Gravity Shell"
desc = "A metallic turtle"
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
icon_state = "gravityshell"
icon_living = "gravityshell"
icon_dead = "gravityshell-dead"
movement_cooldown = 5 // Lower is faster.
armor_soak = list( // Values for getsoak() checks.
"melee" = 7,
"bullet" = 7,
"laser" = 7,
"energy" = 7,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
var/artifact_master = /datum/component/artifact_master/gravity
evolve = "/mob/living/simple_mob/vore/spacecritter/gravityshell/cleanse"
feed = "/obj/item/stack/material/concrete"
evolvekey = "/obj/item/stack/material/tritium"
copy = "/mob/living/simple_mob/vore/spacecritter/gravityshell"
/datum/component/artifact_master/gravity
make_effects = list(
/datum/artifact_effect/extreme/gravity_wave
)
/mob/living/simple_mob/vore/spacecritter/gravityshell/cleanse
size_multiplier = 0.5
health = 75
maxHealth = 75
artifact_master = /datum/component/artifact_master/gasoxy
icon_state = "cleanseshell"
icon_living = "cleanseshell"
icon_dead = "cleanseshell-dead"
/datum/component/artifact_master/gasoxy
make_effects = list(
/datum/artifact_effect/gasoxy
)
/mob/living/simple_mob/vore/spacecritter/solarray
vore_bump_chance = 80
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/livingice
vore_bump_chance = 0
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/radcrab
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/dreameel
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/gravityshell
vore_bump_chance = 40
vore_bump_emote = "devours"
vore_active = 1
vore_capacity = 1
vore_pounce_chance = 0
vore_default_mode = DM_DIGEST
/mob/living/simple_mob/vore/spacecritter/solarray
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/raymeat
meat_amount = 8
tame_items = list(
/obj/item/stack/tile/grass = 50
)
butchery_loot = list(\
/obj/item/stack/material/wisp = 3\
)
harvest_tool = /obj/item/weapon/weldingtool
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/wisp = 1
)
/mob/living/simple_mob/vore/spacecritter/livingice
meat_type = /obj/item/stack/material/snow
meat_amount = 18
tame_items = list(
/obj/item/stack/material/snow = 10
)
butchery_loot = list(\
/obj/item/stack/material/frostscale = 3\
)
harvest_tool = /obj/item/weapon/tool/wirecutters
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/frostscale = 1
)
/mob/living/simple_mob/vore/spacecritter/radcrab
meat_type = /obj/item/weapon/reagent_containers/food/snacks/crabmeat
meat_amount = 8
tame_items = list(
/obj/item/weapon/ore/uranium = 50
)
butchery_loot = list(\
/obj/item/stack/material/crystalscale = 3\
)
harvest_tool = /obj/item/weapon/tool/crowbar
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/crystalscale = 1
)
/mob/living/simple_mob/vore/spacecritter/dreameel
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/eelmeat
meat_amount = 2
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/meat/gravityshell = 40
)
butchery_loot = list(\
/obj/item/stack/material/dreamscale = 3\
)
harvest_tool = /obj/item/weapon/tool/wirecutters
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/dreamscale = 1
)
/mob/living/simple_mob/vore/spacecritter/gravityshell
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/gravityshell
meat_amount = 8
tame_items = list(
/obj/item/weapon/reagent_containers/food/snacks/crabmeat = 50
)
butchery_loot = list(\
/obj/item/stack/material/shellchitin = 3\
)
harvest_tool = /obj/item/weapon/tool/crowbar
harvest_cooldown = 10 MINUTES
harvest_delay = 30 SECONDS
harvest_recent = 0
harvest_per_hit = 1
harvest_verb = "harvested"
harvest_results = list(
/obj/item/stack/material/shellchitin = 1
)
@@ -1,65 +1,65 @@
/mob/living/simple_mob/vore/xeyakin
name = "xeyakin"
desc = "A strange creature, it's fur shifting, looking like liquid metal."
catalogue_data = list(/datum/category_item/catalogue/fauna/xeyakin)
meat_amount = 30
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
icon_state = "xeyakin" //horrid coder sprite, yay
icon_living = "xeyakin"
icon_dead = "xeyakin-dead"
melee_damage_lower = 15
melee_damage_upper = 25
melee_miss_chance = 0
melee_attack_delay = 0
movement_cooldown = 0
maxHealth = 200
attacktext = list("slashed")
see_in_dark = 8
minbodytemp = 0
maxbodytemp = 99999
min_oxy = 0
devourable = 0
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
/datum/category_item/catalogue/fauna/xeyakin
name = "Indangered Fauna - Xeyakin"
desc = "A strange anamalous creature. There numebers were already sparse but due to the potent chemical\
within their meat, they have been culled to a near exctinct numeber."
value = CATALOGUER_REWARD_SUPERHARD //Stupidly rare, hopefully anyway
/obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin
/obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin/Initialize()
. = ..()
reagents.add_reagent("xeyakinblood", 2)
/datum/reagent/xeyakinblood
name = "Xeyakin Blood"
id = "xeyakinblood"
description = "The blood of a legendary beast."
taste_description = "divine"
taste_mult = 1.5
reagent_state = LIQUID
color = "#FF8000"
overdose = REAGENTS_OVERDOSE * 0.25
scannable = 0
/datum/reagent/xeyakinblood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //should proabaly make something more special but this isn't meant to be a proper chem
var/chem_effective = 1 * M.species.chem_strength_heal
if(alien == IS_SLIME)
M.adjustBruteLoss(12 * removed) //This will uber merc prometheans. It wants to turn them to crystal.
if(alien == IS_DIONA)
M.heal_organ_damage(0, 12 * removed * chem_effective)
if(alien != IS_DIONA)
M.heal_organ_damage(8, 8 * removed * chem_effective)
/mob/living/simple_mob/vore/xeyakin
name = "xeyakin"
desc = "A strange creature, it's fur shifting, looking like liquid metal."
catalogue_data = list(/datum/category_item/catalogue/fauna/xeyakin)
meat_amount = 30
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
icon_state = "xeyakin" //horrid coder sprite, yay
icon_living = "xeyakin"
icon_dead = "xeyakin-dead"
melee_damage_lower = 15
melee_damage_upper = 25
melee_miss_chance = 0
melee_attack_delay = 0
movement_cooldown = 0
maxHealth = 200
attacktext = list("slashed")
see_in_dark = 8
minbodytemp = 0
maxbodytemp = 99999
min_oxy = 0
devourable = 0
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
/datum/category_item/catalogue/fauna/xeyakin
name = "Indangered Fauna - Xeyakin"
desc = "A strange anamalous creature. There numebers were already sparse but due to the potent chemical\
within their meat, they have been culled to a near exctinct numeber."
value = CATALOGUER_REWARD_SUPERHARD //Stupidly rare, hopefully anyway
/obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin
/obj/item/weapon/reagent_containers/food/snacks/meat/xeyakin/Initialize()
. = ..()
reagents.add_reagent("xeyakinblood", 2)
/datum/reagent/xeyakinblood
name = "Xeyakin Blood"
id = "xeyakinblood"
description = "The blood of a legendary beast."
taste_description = "divine"
taste_mult = 1.5
reagent_state = LIQUID
color = "#FF8000"
overdose = REAGENTS_OVERDOSE * 0.25
scannable = 0
/datum/reagent/xeyakinblood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //should proabaly make something more special but this isn't meant to be a proper chem
var/chem_effective = 1 * M.species.chem_strength_heal
if(alien == IS_SLIME)
M.adjustBruteLoss(12 * removed) //This will uber merc prometheans. It wants to turn them to crystal.
if(alien == IS_DIONA)
M.heal_organ_damage(0, 12 * removed * chem_effective)
if(alien != IS_DIONA)
M.heal_organ_damage(8, 8 * removed * chem_effective)