mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-15 18:06:57 +01:00
Merge remote-tracking branch 'upstream/master' into moremimic
This commit is contained in:
@@ -194,6 +194,7 @@
|
||||
#define TRAIT_VIRILE "virile" //you have 20% more chance of impreg
|
||||
#define TRAIT_MACROPHILE "macrophile" //likes the big
|
||||
#define TRAIT_MICROPHILE "microphile" //likes the small
|
||||
#define TRAIT_APATHETIC "apathetic" //doesn't care
|
||||
|
||||
#define TRAIT_TOUGH "tough" //you have 10% more maxhealth
|
||||
#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess."
|
||||
value = 1
|
||||
category = CATEGORY_MOODS
|
||||
mob_trait = TRAIT_APATHETIC
|
||||
mood_quirk = TRUE
|
||||
medical_record_text = "Patient was administered the Apathy Evaluation Scale but did not bother to complete it."
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ GENE SCANNER
|
||||
msg += "\t<span class='info'>Subject has abnormal brain fuctions.</span>\n"
|
||||
|
||||
//Astrogen shenanigans
|
||||
if(M.reagents.has_reagent(/datum/reagent/fermi/astral))
|
||||
if(M.reagents?.has_reagent(/datum/reagent/fermi/astral))
|
||||
if(M.mind)
|
||||
msg += "\t<span class='danger'>Warning: subject may be possesed.</span>\n"
|
||||
else
|
||||
|
||||
@@ -28,15 +28,15 @@
|
||||
to_chat(target, "You feel as if you are being watched.")
|
||||
return
|
||||
draining = TRUE
|
||||
essence_drained += rand(15, 20)
|
||||
essence_drained += rand(30, 40)
|
||||
to_chat(src, "<span class='revennotice'>You search for the soul of [target].</span>")
|
||||
if(do_after(src, rand(10, 20), 0, target)) //did they get deleted in that second?
|
||||
if(target.ckey)
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] soul burns with intelligence.</span>")
|
||||
essence_drained += rand(20, 30)
|
||||
essence_drained += rand(40, 60)
|
||||
if(target.stat != DEAD)
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] soul blazes with life!</span>")
|
||||
essence_drained += rand(40, 50)
|
||||
essence_drained += rand(80, 100)
|
||||
else
|
||||
to_chat(src, "<span class='revennotice'>[target.p_their(TRUE)] soul is weak and faltering.</span>")
|
||||
if(do_after(src, rand(15, 20), 0, target)) //did they get deleted NOW?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#define REVENANT_SPAWN_THRESHOLD 15
|
||||
#define REVENANT_SPAWN_THRESHOLD 12
|
||||
|
||||
/datum/round_event_control/revenant
|
||||
name = "Spawn Revenant" // Did you mean 'griefghost'?
|
||||
@@ -20,7 +20,8 @@
|
||||
if(!ignore_mobcheck)
|
||||
var/deadMobs = 0
|
||||
for(var/mob/living/carbon/M in GLOB.dead_mob_list)
|
||||
deadMobs++
|
||||
if(is_station_level(M.z))
|
||||
deadMobs++
|
||||
if(deadMobs < REVENANT_SPAWN_THRESHOLD)
|
||||
message_admins("Event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.")
|
||||
return WAITING_FOR_SOMETHING
|
||||
|
||||
@@ -19,12 +19,6 @@
|
||||
if(SSticker.mode)
|
||||
SSticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now
|
||||
|
||||
//watching someone die is traumatic
|
||||
for(var/mob/living/carbon/human/H in oview(5, src))
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "death", /datum/mood_event/deathsaw)
|
||||
if(prob(10)) //10% chance to pump adrenaline into their body
|
||||
H.jitteriness += 5
|
||||
|
||||
/mob/living/carbon/gib(no_brain, no_organs, no_bodyparts)
|
||||
var/atom/Tsec = drop_location()
|
||||
for(var/mob/M in src)
|
||||
|
||||
@@ -52,6 +52,14 @@
|
||||
if(is_devil(src))
|
||||
INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src)
|
||||
|
||||
//watching someone die is traumatic
|
||||
for(var/mob/living/carbon/human/C in oview(5, src))
|
||||
if(C.mind) //We don't need to give this to anything that doesn't have a mind. That's wasted processing.
|
||||
if(!HAS_TRAIT(C, TRAIT_APATHETIC) || !C.mind.assigned_role == "Medical Doctor") //Shamelessly stolen from the Doctor's Delight
|
||||
SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "death", /datum/mood_event/deathsaw)
|
||||
if(prob(10)) //10% chance to pump adrenaline into their body
|
||||
C.jitteriness += 5
|
||||
|
||||
/mob/living/carbon/human/proc/makeSkeleton()
|
||||
ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
|
||||
set_species(/datum/species/skeleton)
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
|
||||
/datum/mood_event/deathsaw
|
||||
description = "<span class='boldwarning'>I saw someone die!</span>\n"
|
||||
mood_change = -8
|
||||
timeout = 20 MINUTES //takes a long time to get over
|
||||
mood_change = -5
|
||||
timeout = 20 MINUTES //May be fine tuned in the future.
|
||||
|
||||
/datum/mood_event/healsbadman
|
||||
description = "<span class='warning'>I feel like I'm held together by flimsy string, and could fall apart at any moment!</span>\n"
|
||||
mood_change = -4
|
||||
timeout = 2 MINUTES
|
||||
timeout = 2 MINUTES
|
||||
|
||||
@@ -7,12 +7,13 @@
|
||||
icon_dead = "mimic_dead"
|
||||
gender = NEUTER
|
||||
speak_chance = 0
|
||||
maxHealth = 38
|
||||
health = 38
|
||||
turns_per_move = 5
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
//move_to_delay = 4
|
||||
move_to_delay = 3
|
||||
speed = 0
|
||||
see_in_dark = 3
|
||||
see_in_dark = 6
|
||||
pass_flags = PASSTABLE
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 2)
|
||||
response_help = "prods"
|
||||
response_disarm = "pushes aside"
|
||||
@@ -21,12 +22,17 @@
|
||||
melee_damage_upper = 12
|
||||
attacktext = "slams"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
blood_volume = 0
|
||||
faction = list("mimic")
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
vision_range = 2
|
||||
aggro_vision_range = 9
|
||||
wander = TRUE
|
||||
minbodytemp = 250 //VERY weak to cold
|
||||
maxbodytemp = 1500
|
||||
pressure_resistance = 600
|
||||
var/unstealth = FALSE
|
||||
var/knockdown_people = 1
|
||||
|
||||
@@ -36,18 +42,27 @@
|
||||
unstealth = FALSE
|
||||
Mimictransform()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/proc/Mimictransform() //The list of default things to transform needs to be bigger, consider this in the future.
|
||||
/mob/living/simple_animal/hostile/hs13mimic/attack_hand(mob/living/carbon/human/M)
|
||||
. = ..()
|
||||
trigger()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/proc/Mimictransform() //The list of default things to transform needs to be bigger, consider this in the future.
|
||||
var/transformitem = rand(1,100)
|
||||
medhudupdate()
|
||||
if(unstealth == FALSE)
|
||||
wander = FALSE
|
||||
vision_range = initial(vision_range)
|
||||
switch(transformitem)
|
||||
if(1 to 20)
|
||||
if(1 to 10)
|
||||
name = "drinking glass"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "glass_empty"
|
||||
desc = "Your standard drinking glass."
|
||||
if(11 to 20)
|
||||
name = "insulated gloves"
|
||||
icon = 'icons/obj/clothing/gloves.dmi'
|
||||
icon_state = "yellow"
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
if(21 to 30)
|
||||
name = "Private Security Officer"
|
||||
desc = "A cardboard cutout of a private security officer."
|
||||
@@ -118,8 +133,31 @@
|
||||
else if(!target && unstealth)
|
||||
trytftorandomobject()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/death(gibbed)
|
||||
restore()
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/med_hud_set_health()
|
||||
if(!unstealth)
|
||||
var/image/holder = hud_list[HEALTH_HUD]
|
||||
holder.icon_state = null
|
||||
return //we hide medical hud while morphed
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/med_hud_set_status()
|
||||
if(!unstealth)
|
||||
var/image/holder = hud_list[STATUS_HUD]
|
||||
holder.icon_state = null
|
||||
return //we hide medical hud while morphed
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/proc/medhudupdate()
|
||||
med_hud_set_health()
|
||||
med_hud_set_status()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/proc/restore()
|
||||
//back to normal
|
||||
//back to normal mimic sprite
|
||||
medhudupdate()
|
||||
name = initial(name)
|
||||
icon = 'hyperstation/icons/mobs/mimic.dmi'
|
||||
icon_state = "mimic"
|
||||
@@ -142,12 +180,13 @@
|
||||
C.trigger()
|
||||
|
||||
/mob/living/simple_animal/hostile/hs13mimic/proc/trytftorandomobject()
|
||||
unstealth = FALSE
|
||||
medhudupdate()
|
||||
var/list/obj/item/listItems = list()
|
||||
for(var/obj/item/I in oview(9,src.loc))
|
||||
listItems += I
|
||||
if(LAZYLEN(listItems))
|
||||
var/obj/item/changedReference = pick(listItems)
|
||||
unstealth = FALSE
|
||||
wander = FALSE
|
||||
vision_range = initial(vision_range)
|
||||
name = changedReference.name
|
||||
@@ -155,7 +194,6 @@
|
||||
icon_state = changedReference.icon_state
|
||||
desc = changedReference.desc
|
||||
else
|
||||
unstealth = FALSE
|
||||
Mimictransform()
|
||||
|
||||
/datum/round_event_control/mimic_infestation
|
||||
|
||||
Reference in New Issue
Block a user