Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Halloween Week 2: Ghosts in the Geiger Counter #6785

Merged
merged 15 commits into from
Oct 14, 2024
4 changes: 4 additions & 0 deletions citadel.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3957,6 +3957,10 @@
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\proteon.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\shade.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\wraith.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\nuclear\burning.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\nuclear\charred.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\nuclear\demoncore.dm"
#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\nuclear\gammawraith.dm"
#include "code\modules\mob\living\simple_mob\subtypes\plant\tomato.dm"
#include "code\modules\mob\living\simple_mob\subtypes\plant\tree.dm"
#include "code\modules\mob\living\simple_mob\subtypes\slime\slime.dm"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
////////////////////////////
// Burning Runner
////////////////////////////

/datum/category_item/catalogue/fauna/nuclear_spirits/burning
name = "Burning Runner"
desc = "A paranatural creature resembling a burning humanoid. \
More energy then anything solid it aborbs heat into its body \
however it has a low tolerance for kinectic energy and quickly \
falls apart into a charred husk from blunt attacks. The Burning \
Runner charges its foes fearlessly attempting to spread its blaze \
to its victims. Perhaps it seeks to share its eternal agony."
value = CATALOGUER_REWARD_EASY

/mob/living/simple_mob/construct/nuclear/burning
name = "Burning Runner"
real_name = "Burning Runner"
desc = "The burning man shares its fire with all."
icon_state = "burning"
icon_living = "burning"
icon_dead = "burning_dead"
maxHealth = 50
health = 50
legacy_melee_damage_lower = 10
legacy_melee_damage_upper = 10
attacktext = list("swipes")
friendly = list("caresses")
movement_cooldown = -1
var/original_temp = null //Value to remember temp
var/set_temperature = T0C + 250 //A bit above the smoke point of lard
var/heating_power = 50000 //1/2 a Solar moth

catalogue_data = list(/datum/category_item/catalogue/fauna/nuclear_spirits/burning)

ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/evasive

armor_legacy_mob = list( //Mob Gimmick, highly resistant to E weapons //Mob Gimmick, absorbs normal burn damage,
"melee" = -0,
"bullet" = 0,
"laser" = 80,
"energy" = 80,
"bomb" = 0,
"bio" = 100,
"rad" = 100)

/mob/living/simple_mob/construct/nuclear/burning/handle_light()
. = ..()
if(. == 0 && !is_dead())
set_light(2.5, 1, COLOR_ORANGE)
return 1

/mob/living/simple_mob/construct/nuclear/burning/apply_melee_effects(mob/living/carbon/M, alien, removed)
if(M.fire_stacks <= 2)
M.adjust_fire_stacks(1)
M.IgniteMob()

/mob/living/simple_mob/vore/solarmoth/BiologicalLife(seconds, times_fired)
CharlesWedge marked this conversation as resolved.
Show resolved Hide resolved
if((. = ..()))
return

if(stat != DEAD)
var/datum/gas_mixture/env = loc.return_air() //Gets all the information on the local air.
TheLordME marked this conversation as resolved.
Show resolved Hide resolved
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.adjust_thermal_energy(heat_transfer)

else if(heat_transfer > 0 && env.temperature < set_temperature) //Set temperature is 250 degrees celsius. Heating rate should increase between 200 and 450 C.
heating_power = original_temp*100
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater. Except it's hot, so yeah.
removed.adjust_thermal_energy(heat_transfer)

else
return
CharlesWedge marked this conversation as resolved.
Show resolved Hide resolved

env.merge(removed)

original_temp = heating_power
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
////////////////////////////
// Charred
////////////////////////////

/datum/category_item/catalogue/fauna/nuclear_spirits/charred
name = "Charred Runner"
desc = "A paranatural creature resembling a charred corpse. \
The carbonized 'flesh' of this creature is adept at absorbing \
energy but vulnerable to kinectic force. Lacking any innate \
sense of self preservation these creatures throw themselves at \
their attackers with no apparent regard for their own lives \
leaving behind their charred shell as they expire."
value = CATALOGUER_REWARD_EASY

/mob/living/simple_mob/construct/nuclear/charred
name = "Charred Runner"
real_name = "Charred Runner"
desc = "A charred corpse: animated and coming right for you."
icon_state = "charred"
icon_living = "charred"
icon_dead = "charred_dead"
maxHealth = 100
health = 100
legacy_melee_damage_lower = 10
legacy_melee_damage_upper = 10
attacktext = list("slapped")
friendly = list("caresses")
movement_cooldown = 0
catalogue_data = list(/datum/category_item/catalogue/fauna/nuclear_spirits/charred)

ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/evasive

armor_legacy_mob = list(
"melee" = -50,
"bullet" = 0,
"laser" = 50,
"energy" = 50,
"bomb" = -50,
"bio" = 100,
"rad" = 100)
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
////////////////////////////
// Demoncore
////////////////////////////

/datum/category_item/catalogue/fauna/nuclear_spirits/demoncore
name = "%#ERROR#%"
desc = "%ERROR% RADIATION DETECTED DATA CORRUPTED. %ERROR%"
value = CATALOGUER_REWARD_EASY

/mob/living/simple_mob/construct/nuclear/demoncore //A big ball of radiation, kills enemies by giving them radiation poisoning
name = "Demon Core"
real_name = "Demon Core"
desc = "Floating in the sky appears to a plutonium sphere undergoing a perpetual criticality incident. It seems to desire to meet you closely."
icon_state = "demoncore"
icon_living = "demoncore"
maxHealth = 200 //Tanky but not tough this thing just wants to be alive long enough to spread its radiation.
health = 200
response_harm = "viciously beaten"
harm_intent_damage = 5
legacy_melee_damage_lower = 8 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
legacy_melee_damage_upper = 10
attack_armor_pen = 50 // Does so little damage already, that this can be justified.
CharlesWedge marked this conversation as resolved.
Show resolved Hide resolved
attacktext = list("rammed")
attack_sound = 'sound/weapons/rapidslice.ogg'
movement_cooldown = 4
catalogue_data = list(/datum/category_item/catalogue/fauna/nuclear_spirits/demoncore)

ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/evasive

/mob/living/simple_mob/construct/nuclear/demoncore/Initialize(mapload)
. = ..()
AddComponent(/datum/component/horror_aura/)
CharlesWedge marked this conversation as resolved.
Show resolved Hide resolved
AddComponent(/datum/component/radioactive, 1000 , 0, TRUE, RAD_FALLOFF_CONTAMINATION_NORMAL)

/mob/living/simple_mob/construct/nuclear/demoncore/handle_light()
. = ..()
if(. == 0 && !is_dead())
set_light(6, 1, COLOR_BLUE)
return 1

/mob/living/simple_mob/construct/nuclear/demoncore/death()
..()
for(var/mob/M in viewers(src, null))
if((M.client && !( M.has_status_effect(/datum/status_effect/sight/blindness) )))
M.show_message("<font color='red'>[src] screeches and explodes in a blue flash.</font>")
playsound(src, 'sound/items/geiger/ext1.ogg', 100, 1)
ghostize()
qdel(src)
return
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
////////////////////////////
// Gamma Wraith
////////////////////////////

/mob/living/simple_mob/construct/nuclear/gammawraith
name = "Gammawraith"
real_name = "Gammawraith"
desc = "A glowing phantom wearing a spectral radiation suit. You can hear geiger counters screaming in your mind."
icon_state = "atomic"
icon_living = "atomic"
icon_dead = "atomic_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/nuclear_spirits/gammawraith)

response_help = "glows menacingly at"
response_disarm = "flails at"
response_harm = "swipes"

legacy_melee_damage_lower = 5
legacy_melee_damage_upper = 15
attacktext = list("rips into")

minbodytemp = 0
maxbodytemp = 4000
min_oxy = 0
max_co2 = 0
max_tox = 0

universal_speak = 1

loot_list = list(/obj/effect/debris/cleanable/greenglow = 100)

projectiletype = /obj/projectile/beam/gamma
projectilesound = 'sound/items/geiger/ext3.ogg'

base_attack_cooldown = 30 //As the projectile is AP Hitscan it fires relatively slowly
ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged

/datum/category_item/catalogue/fauna/nuclear_spirits/gammawraith
name = "%#ERROR#%"
desc = "%ERROR% RADIATION DETECTED DATA CORRUPTED. %ERROR%"
value = CATALOGUER_REWARD_TRIVIAL


/mob/living/simple_mob/construct/nuclear/gammawraith/Initialize(mapload)
. = ..()
AddComponent(/datum/component/horror_aura)
AddComponent(/datum/component/radioactive, 500 , 0, TRUE, RAD_FALLOFF_CONTAMINATION_NORMAL)

/mob/living/simple_mob/construct/nuclear/gammawraith/handle_light()
. = ..()
if(. == 0 && !is_dead())
set_light(2.5, 1, COLOR_GREEN)
return 1

/mob/living/simple_mob/construct/nuclear/gammawraith/death()
..()
for(var/mob/M in viewers(src, null))
if((M.client && !( M.has_status_effect(/datum/status_effect/sight/blindness) )))
M.show_message("<font color='red'>[src] screeches and explodes in a green flash.</font>")
playsound(src, 'sound/items/geiger/ext1.ogg', 100, 1)
ghostize()
qdel(src)
return
CharlesWedge marked this conversation as resolved.
Show resolved Hide resolved
Binary file modified icons/mob/cult.dmi
Binary file not shown.
Loading