mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-24 05:38:15 +01:00
Christmas Gift (#7474)
This commit is contained in:
@@ -57,18 +57,18 @@
|
||||
danger = rand(0,2)
|
||||
switch(danger)
|
||||
if(DANGER_CRAB)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/radcrab)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/radcrab)
|
||||
min_number = 1
|
||||
max_number = 4
|
||||
dangerstring = "crystaline crabs"
|
||||
if(DANGER_ICE)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/livingice)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/livingice)
|
||||
min_number = 1
|
||||
max_number = 4
|
||||
dangerstring = "strange entities"
|
||||
|
||||
if(DANGER_RAY)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/solarray)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/solarray)
|
||||
min_number = 1
|
||||
max_number = 4
|
||||
dangerstring = "solar rays"
|
||||
|
||||
@@ -111,6 +111,7 @@
|
||||
//Spacedust doesn't work, commenting this out.
|
||||
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Exotic Infestation", /datum/event/dangerinfestation, -30, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 2)),
|
||||
//Check if wormhole code is good and then move to enabled.
|
||||
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 20, list(ASSIGNMENT_ANY = 5)),
|
||||
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Lost Spiders", /datum/event/spider_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1), //YW EDIT //CHOMPStation Edit: Moved to disabled. This is a YW feature that spawns spiders on carp spawns.
|
||||
@@ -130,7 +131,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Excotic Infestation", /datum/event/dangerinfestation, -60, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Exotic Horde Infestation", /datum/event/highdangerinfestation, -50, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meaty Ores Wave", /datum/event/meteor_wave/meatyores, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
#define LOC_RIOT 0
|
||||
#define LOC_ATMOS 1
|
||||
#define LOC_DISPOSAL 2
|
||||
#define LOC_TECH 3
|
||||
#define LOC_VAULT 4
|
||||
#define LOC_VIRO 5
|
||||
#define LOC_BRIDGE 6
|
||||
#define LOC_BRIG 7
|
||||
|
||||
#define DANGER_CRAB 0
|
||||
#define DANGER_ICE 1
|
||||
#define DANGER_RAY 2
|
||||
#define DANGER_EEL 3
|
||||
#define DANGER_TURTLE 4
|
||||
|
||||
//infestation event of a diffrent variety
|
||||
//meant for engineering and science to exploit
|
||||
/datum/event/highdangerinfestation
|
||||
announceWhen = 10
|
||||
endWhen = 11
|
||||
var/location
|
||||
var/locstring
|
||||
var/danger
|
||||
var/dangerstring
|
||||
|
||||
/datum/event/highdangerinfestation/start()
|
||||
location = rand(0,7)
|
||||
var/list/turf/simulated/floor/turfs = list()
|
||||
var/spawn_area_type
|
||||
switch(location)
|
||||
if(LOC_RIOT)
|
||||
spawn_area_type = /area/security/riot_control
|
||||
locstring = "riot control"
|
||||
if(LOC_ATMOS)
|
||||
spawn_area_type = /area/engineering/atmos
|
||||
locstring = "atmospherics"
|
||||
if(LOC_DISPOSAL)
|
||||
spawn_area_type = /area/maintenance/disposal
|
||||
locstring = "the disposal"
|
||||
if(LOC_TECH)
|
||||
spawn_area_type = /area/storage/tech
|
||||
locstring = "technical storage"
|
||||
if(LOC_VAULT)
|
||||
spawn_area_type = /area/security/nuke_storage
|
||||
locstring = "the vault"
|
||||
if(LOC_VIRO)
|
||||
spawn_area_type = /area/medical/virology
|
||||
locstring = "the virogoly"
|
||||
if(LOC_BRIDGE)
|
||||
spawn_area_type = /area/bridge
|
||||
locstring = "the bridge"
|
||||
if(LOC_BRIG)
|
||||
spawn_area_type = /area/security/prison
|
||||
locstring = "the brig"
|
||||
|
||||
for(var/areapath in typesof(spawn_area_type))
|
||||
var/area/A = locate(areapath)
|
||||
for(var/turf/simulated/floor/F in A.contents)
|
||||
//VOREStation Edit - Fixes event
|
||||
var/blocked = FALSE
|
||||
for(var/atom/movable/AM in F)
|
||||
if(AM.density)
|
||||
blocked = TRUE
|
||||
if(!blocked)
|
||||
turfs += F
|
||||
|
||||
var/list/spawn_types = list()
|
||||
var/min_number
|
||||
var/max_number
|
||||
danger = rand(0,4)
|
||||
switch(danger)
|
||||
if(DANGER_CRAB)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/radcrab)
|
||||
min_number = 2
|
||||
max_number = 6
|
||||
dangerstring = "crystaline crabs"
|
||||
if(DANGER_ICE)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/livingice)
|
||||
min_number = 2
|
||||
max_number = 6
|
||||
dangerstring = "strange entities"
|
||||
|
||||
if(DANGER_RAY)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/solarray)
|
||||
min_number = 2
|
||||
max_number = 6
|
||||
dangerstring = "solar rays"
|
||||
if(DANGER_EEL)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/dreameel)
|
||||
min_number = 2
|
||||
max_number = 6
|
||||
dangerstring = "strange entities"
|
||||
if(DANGER_TURTLE)
|
||||
spawn_types = list(/mob/living/simple_mob/vore/spacecritter/gravityshell)
|
||||
min_number = 2
|
||||
max_number = 6
|
||||
dangerstring = "strange entities"
|
||||
|
||||
spawn(0)
|
||||
var/num = rand(min_number,max_number)
|
||||
while(turfs.len > 0 && num > 0)
|
||||
var/turf/simulated/floor/T = pick(turfs)
|
||||
turfs.Remove(T)
|
||||
num--
|
||||
var/spawn_type = pick(spawn_types)
|
||||
new spawn_type(T)
|
||||
|
||||
/datum/event/highdangerinfestation/announce()
|
||||
command_announcement.Announce("Bioscans indicate that [dangerstring] have been entered [locstring]. Contain them before they start causing damage.", "Alien infestation")
|
||||
|
||||
#undef LOC_RIOT
|
||||
#undef LOC_ATMOS
|
||||
#undef LOC_DISPOSAL
|
||||
#undef LOC_TECH
|
||||
#undef LOC_VAULT
|
||||
#undef LOC_VIRO
|
||||
#undef LOC_BRIDGE
|
||||
#undef LOC_BRIG
|
||||
|
||||
#undef DANGER_CRAB
|
||||
#undef DANGER_ICE
|
||||
#undef DANGER_RAY
|
||||
#undef DANGER_EEL
|
||||
#undef DANGER_TURTLE
|
||||
@@ -53,4 +53,30 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/metroidmeat/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent("liquidlife", 3)
|
||||
reagents.add_reagent("liquidlife", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/raymeat
|
||||
name = "Solar Ray Meat"
|
||||
desc = "You aren't sure how ediable this is"
|
||||
icon_state = "meat"
|
||||
center_of_mass = list("x"=17, "y"=16)
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("protein" = 3, "capsaicin" = 8, "condensedcapsaicin" = 8)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/eelmeat
|
||||
name = "Eel Meat"
|
||||
desc = "A slice from an eel"
|
||||
icon_state = "meat"
|
||||
center_of_mass = list("x"=17, "y"=16)
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("protein" = 3, "shockchem" = 1)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/gravityshell
|
||||
name = "Gravity Shell Meat"
|
||||
desc = "A slice from a gravity shell"
|
||||
icon_state = "meat"
|
||||
center_of_mass = list("x"=17, "y"=16)
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("protein" = 24)
|
||||
@@ -1,282 +1,3 @@
|
||||
/mob/living/simple_mob/vore/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"
|
||||
health = 30
|
||||
maxHealth = 30
|
||||
|
||||
movement_cooldown = 3 // Lower is faster.
|
||||
aquatic_movement = 0 // If set, the mob will move through fluids with no hinderance.
|
||||
|
||||
minbodytemp = 0 // Minimum "okay" temperature in kelvin
|
||||
maxbodytemp = 10000 // Maximum of above
|
||||
heat_damage_per_tick = 3 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
|
||||
cold_damage_per_tick = 2 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
|
||||
|
||||
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
|
||||
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
|
||||
min_tox = 0 // Phoron min
|
||||
max_tox = 0 // Phoron max
|
||||
min_co2 = 0 // CO2 min
|
||||
max_co2 = 0 // CO2 max
|
||||
min_n2 = 0 // N2 min
|
||||
max_n2 = 0 // N2 max
|
||||
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
|
||||
|
||||
melee_damage_lower = 12 // Lower bound of randomized melee damage
|
||||
melee_damage_upper = 12 // Upper bound of randomized melee damage
|
||||
attacktext = list("incinerate") // "You are [attacktext] by the mob!"
|
||||
melee_miss_chance = 0 // percent chance to miss a melee attack.
|
||||
attack_armor_type = "energy" // What armor does this check?
|
||||
attack_armor_pen = 30 // How much armor pen this attack has.
|
||||
attack_sharp = FALSE // Is the attack sharp?
|
||||
attack_edge = FALSE // Does the attack have an edge?
|
||||
|
||||
melee_attack_delay = 1.5 // If set, the mob will do a windup animation and can miss if the target moves out of the way.
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||
hovering = TRUE
|
||||
|
||||
//Damage resistances
|
||||
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
|
||||
resistance = 0 // Damage reduction for all types
|
||||
armor = list( // Values for normal getarmor() checks
|
||||
"melee" = 90,
|
||||
"bullet" = 95,
|
||||
"laser" = 100,
|
||||
"energy" = 100,
|
||||
"bomb" = 0,
|
||||
"bio" = 100,
|
||||
"rad" = 100
|
||||
)
|
||||
armor_soak = list( // Values for getsoak() checks.
|
||||
"melee" = 7,
|
||||
"bullet" = 7,
|
||||
"laser" = 7,
|
||||
"energy" = 7,
|
||||
"bomb" = 0,
|
||||
"bio" = 0,
|
||||
"rad" = 0
|
||||
)
|
||||
|
||||
heat_resist = 1.0
|
||||
cold_resist = 1.0
|
||||
shock_resist = 0.0
|
||||
water_resist = 0.0
|
||||
taser_kill = 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
|
||||
|
||||
/mob/living/simple_mob/vore/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/livingice //frost solar moth or blue slime on crack. Dies to lasers or slighly toasty rooms
|
||||
name = "living icicle"
|
||||
desc = "A strange creature, a floating shard of ice"
|
||||
icon = 'modular_chomp/icons/mob/spaceinvader.dmi'
|
||||
icon_state = "hermitcrab"
|
||||
icon_living = "hermitcrab"
|
||||
icon_dead = "hermitcrab-dead"
|
||||
health = 30
|
||||
maxHealth = 30
|
||||
|
||||
movement_cooldown = 3 //VOREStation Edit - 1 is slower than normal human speed // Lower is faster.
|
||||
aquatic_movement = 0 // If set, the mob will move through fluids with no hinderance.
|
||||
|
||||
minbodytemp = 0 // Minimum "okay" temperature in kelvin
|
||||
maxbodytemp = 300 // Maximum of above
|
||||
heat_damage_per_tick = 15 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
|
||||
cold_damage_per_tick = 15 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
|
||||
|
||||
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
|
||||
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
|
||||
min_tox = 0 // Phoron min
|
||||
max_tox = 6 // Phoron max
|
||||
min_co2 = 0 // CO2 min
|
||||
max_co2 = 0 // CO2 max
|
||||
min_n2 = 0 // N2 min
|
||||
max_n2 = 0 // N2 max
|
||||
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above
|
||||
|
||||
melee_damage_lower = 30 // Lower bound of randomized melee damage
|
||||
melee_damage_upper = 30 // Upper bound of randomized melee damage
|
||||
attacktext = list("attacked") // "You are [attacktext] by the mob!"
|
||||
melee_miss_chance = 0 // percent chance to miss a melee attack.
|
||||
attack_armor_type = "melee" // What armor does this check?
|
||||
attack_armor_pen = 0 // How much armor pen this attack has.
|
||||
attack_sharp = FALSE // Is the attack sharp?
|
||||
attack_edge = FALSE // Does the attack have an edge?
|
||||
|
||||
melee_attack_delay = 3 // If set, the mob will do a windup animation and can miss if the target moves out of the way..
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||
hovering = TRUE
|
||||
|
||||
//Damage resistances
|
||||
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
|
||||
resistance = 0 // Damage reduction for all types
|
||||
armor = list( // Values for normal getarmor() checks
|
||||
"melee" = 100,
|
||||
"bullet" = 100,
|
||||
"laser" = 0,
|
||||
"energy" = 0,
|
||||
"bomb" = 0,
|
||||
"bio" = 100,
|
||||
"rad" = 100
|
||||
)
|
||||
armor_soak = list( // Values for getsoak() checks.
|
||||
"melee" = 7,
|
||||
"bullet" = 7,
|
||||
"laser" = 0,
|
||||
"energy" = 0,
|
||||
"bomb" = 0,
|
||||
"bio" = 0,
|
||||
"rad" = 0
|
||||
)
|
||||
|
||||
heat_resist = 0.0
|
||||
cold_resist = 0.0
|
||||
shock_resist = 0.0
|
||||
water_resist = 1.0
|
||||
|
||||
/mob/living/simple_mob/vore/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(-5 * 1000)
|
||||
|
||||
/mob/living/simple_mob/vore/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"
|
||||
health = 30
|
||||
maxHealth = 30
|
||||
|
||||
movement_cooldown = 3 //VOREStation Edit - 1 is slower than normal human speed // Lower is faster.
|
||||
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
|
||||
heat_damage_per_tick = 15 // Amount of damage applied if animal's body temperature is higher than maxbodytemp
|
||||
cold_damage_per_tick = 15 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
|
||||
|
||||
min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum'
|
||||
max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum'
|
||||
min_tox = 0 // Phoron min
|
||||
max_tox = 0 // Phoron max
|
||||
min_co2 = 0 // CO2 min
|
||||
max_co2 = 5 // CO2 max
|
||||
min_n2 = 0 // N2 min
|
||||
max_n2 = 0 // N2 max
|
||||
unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements 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!"
|
||||
melee_miss_chance = 0 // percent chance to miss a melee attack.
|
||||
attack_armor_type = "melee" // What armor does this check?
|
||||
attack_armor_pen = 100 // How much armor pen this attack has.
|
||||
attack_sharp = TRUE // Is the attack sharp?
|
||||
attack_edge = TRUE // Does the attack have an edge?
|
||||
|
||||
melee_attack_delay = 0 // If set, the mob will do a windup animation and can miss if the target moves out of the way.
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||
hovering = TRUE
|
||||
|
||||
//Damage resistances
|
||||
grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure.
|
||||
resistance = 0 // Damage reduction for all types
|
||||
armor = list( // Values for normal getarmor() checks
|
||||
"melee" = -50,
|
||||
"bullet" = 0,
|
||||
"laser" = 100,
|
||||
"energy" = 100,
|
||||
"bomb" = 0,
|
||||
"bio" = 100,
|
||||
"rad" = 100
|
||||
)
|
||||
armor_soak = list( // Values for getsoak() checks.
|
||||
"melee" = 0,
|
||||
"bullet" = 0,
|
||||
"laser" = 7,
|
||||
"energy" = 7,
|
||||
"bomb" = 0,
|
||||
"bio" = 0,
|
||||
"rad" = 0
|
||||
)
|
||||
|
||||
heat_resist = 0.0
|
||||
cold_resist = 0.0
|
||||
shock_resist = 0.0
|
||||
water_resist = 1.0
|
||||
taser_kill = 0
|
||||
var/rads = 75
|
||||
|
||||
/mob/living/simple_mob/vore/radcrab/handle_special()
|
||||
if(stat != DEAD)
|
||||
irradiate()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/vore/radcrab/proc/irradiate()
|
||||
SSradiation.radiate(src, rads)
|
||||
|
||||
/mob/living/simple_mob/vore/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/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/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/aggressive/rat
|
||||
maxHealth = 75
|
||||
|
||||
@@ -0,0 +1,436 @@
|
||||
/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 = 2
|
||||
|
||||
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()
|
||||
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/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/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/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/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/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
|
||||
)
|
||||
Reference in New Issue
Block a user