diff --git a/baystation12.dme b/baystation12.dme index 3e81d5f205..6bf4e73ec3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -6,11 +6,9 @@ // BEGIN_FILE_DIR #define FILE_DIR . // END_FILE_DIR - // BEGIN_PREFERENCES #define DEBUG // END_PREFERENCES - // BEGIN_INCLUDE #include "code\global.dm" #include "code\hub.dm" @@ -705,6 +703,7 @@ #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\alien.dm" #include "code\modules\clothing\spacesuits\captain.dm" #include "code\modules\clothing\spacesuits\ert.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" @@ -732,11 +731,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" -#include "code\modules\events\alien_infestation.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm"#include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" #include "code\modules\events\carp_migration.dm" @@ -756,8 +754,7 @@ #include "code\modules\events\spider_infestation.dm" #include "code\modules\events\spontaneous_appendicitis.dm" #include "code\modules\events\viral_infection.dm" -#include "code\modules\events\viral_outbreak.dm" -#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\events\viral_outbreak.dm"#include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" #include "code\modules\food\recipes_microwave.dm" @@ -1169,8 +1166,8 @@ #include "code\WorkInProgress\Cael_Aislinn\Supermatter\SuperMatter.dm" #include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm" #include "code\WorkInProgress\Chinsky\ashtray.dm" -#include "code\WorkInProgress\Mini\ATM.dm" -#include "code\WorkInProgress\Ported\policetape.dm" +#include "code\WorkInProgress\Cib\MedicalSideEffects.dm" +#include "code\WorkInProgress\Mini\ATM.dm"#include "code\WorkInProgress\Ported\policetape.dm" #include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" #include "code\WorkInProgress\Susan\susan_desert_turfs.dm" #include "code\WorkInProgress\virus2\analyser.dm" diff --git a/code/WorkInProgress/Cib/MedicalSideEffects.dm b/code/WorkInProgress/Cib/MedicalSideEffects.dm new file mode 100644 index 0000000000..d701bbb94f --- /dev/null +++ b/code/WorkInProgress/Cib/MedicalSideEffects.dm @@ -0,0 +1,141 @@ +// MEDICAL SIDE EFFECT BASE +// ======================== +/datum/medical_effect/var/name = "None" +/datum/medical_effect/var/strength = 0 +/datum/medical_effect/proc/on_life(mob/living/carbon/human/H, strength) +/datum/medical_effect/proc/cure(mob/living/carbon/human/H) + + +// MOB HELPERS +// =========== +/mob/living/carbon/human/var/list/datum/medical_effect/side_effects = list() +/mob/proc/add_side_effect(name, strength = 0) +/mob/living/carbon/human/add_side_effect(name, strength = 0) + for(var/datum/medical_effect/M in src.side_effects) if(M.name == name) + M.strength = max(M.strength, 10) + return + + var/list/L = typesof(/datum/medical_effect)-/datum/medical_effect + + for(var/T in L) + var/datum/medical_effect/M = new T + if(M.name == name) + M.strength = strength + side_effects += M + +/mob/living/carbon/human/proc/handle_medical_side_effects() + if(src.reagents.has_reagent("bicaridine") || src.reagents.has_reagent("tricordrazine") || src.reagents.has_reagent("cryoxadone")) + src.add_side_effect("Headache") + + + if(src.reagents.has_reagent("kelotane") || src.reagents.has_reagent("dermaline")) + src.add_side_effect("Bad Stomach") + + // One full cycle(in terms of strength) every 10 minutes + var/strength_percent = sin(life_tick / 2) + + // Only do anything if the effect is currently strong enough + if(strength_percent >= 0.4) + for (var/datum/medical_effect/M in side_effects) + if (M.cure(src)) + side_effects -= M + del(M) + else + if(life_tick % 15 == 0) + M.on_life(src, strength_percent*M.strength) + // Effect slowly growing stronger + M.strength+=0.05 + +// HEADACHE +// ======== +/datum/medical_effect/headache/name = "Headache" +/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength) + switch(strength) + if(1 to 10) + H.custom_pain("You feel a light pain in your head.",0) + if(11 to 30) + H.custom_pain("You feel a throbbing pain in your head!",1) + if(31 to 99) + H.custom_pain("You feel an excrutiating pain in your head!",1) + H.adjustBrainLoss(1) + if(99 to INFINITY) + H.custom_pain("It feels like your head is about to split open!",1) + H.adjustBrainLoss(3) + var/datum/organ/external/O = H.organs_by_name["head"] + O.take_damage(0, 1, 0, "Headache") + +/datum/medical_effect/headache/cure(mob/living/carbon/human/H) + if(H.reagents.has_reagent("alkysine")) + return 1 + return 0 + +// HEADACHE +// ======== +/datum/medical_effect/headache/name = "Headache" +/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength) + switch(strength) + if(1 to 10) + H.custom_pain("You feel a light pain in your head.",0) + if(11 to 30) + H.custom_pain("You feel a throbbing pain in your head!",1) + if(31 to 99) + H.custom_pain("You feel an excrutiating pain in your head!",1) + H.adjustBrainLoss(1) + if(99 to INFINITY) + H.custom_pain("It feels like your head is about to split open!",1) + H.adjustBrainLoss(3) + var/datum/organ/external/O = H.organs_by_name["head"] + O.take_damage(0, 1, 0, "Headache") + +/datum/medical_effect/headache/cure(mob/living/carbon/human/H) + if(H.reagents.has_reagent("alkysine") || H.reagents.has_reagent("tramadol")) + H << "\red Your head stops throbbing.." + return 1 + return 0 + +// BAD STOMACH +// =========== +/datum/medical_effect/bad_stomach/name = "Bad Stomach" +/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength) + switch(strength) + if(1 to 10) + H.custom_pain("You feel a bit light around the stomach.",0) + if(11 to 30) + H.custom_pain("Your stomach hurts.",0) + if(31 to 99) + H.custom_pain("You feel sick.",1) + H.adjustToxLoss(1) + if(99 to INFINITY) + H.custom_pain("You can't hold it in any longer!",1) + H.vomit() + +/datum/medical_effect/bad_stomach/cure(mob/living/carbon/human/H) + if(H.reagents.has_reagent("anti_toxin")) + H << "\red Your stomach feels a little better now.." + return 1 + return 0 + + +// CRAMPS +// ====== +/datum/medical_effect/cramps/name = "Cramps" +/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength) + switch(strength) + if(1 to 10) + H.custom_pain("The muscles in your body hurt a little.",0) + if(11 to 30) + H.custom_pain("The muscles in your body cramp up painfully.",0) + if(31 to 99) + H.emote("me",1,"flinches as all the muscles in their body cramp up.") + H.custom_pain("There's pain all over your body.",1) + H.adjustToxLoss(1) + if(99 to INFINITY) + H.emote("me",1,"flinches as all the muscles in their body cramp up.") + H.custom_pain("It feels as though your muscles are being ripped apart!",1) + H.apply_damage(1, used_weapon = "Cramps") + +/datum/medical_effect/cramps/cure(mob/living/carbon/human/H) + if(H.reagents.has_reagent("inaprovaline")) + H << "\red The cramps let up.." + return 1 + return 0 \ No newline at end of file diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index ecac47c66d..f948f76906 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -204,12 +204,12 @@ Implants; /datum/game_mode/proc/send_intercept() - var/intercepttext = "Cent. Com. Update Requested staus information:
" + var/intercepttext = "Cent. Com. Update Requested status information:
" intercepttext += " Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:" var/list/possible_modes = list() possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf", "changeling", "cult") - possible_modes -= "[ticker.mode]" + //possible_modes -= "[ticker.mode]" var/number = pick(2, 3) var/i = 0 for(i = 0, i < number, i++) @@ -428,3 +428,15 @@ proc/display_roundstart_logout_report() for(var/mob/M in mob_list) if(M.client && M.client.holder) M << msg + + +proc/get_nt_opposed() + var/list/dudes = list() + for(var/mob/living/carbon/human/man in player_list) + if(man.client) + if(man.client.prefs.nanotrasen_relation == "Opposed") + dudes += man + else if(man.client.prefs.nanotrasen_relation == "Skeptical" && prob(50)) + dudes += man + if(dudes.len == 0) return null + return pick(dudes) \ No newline at end of file diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm index 35b5f42c69..f4e1b706c0 100644 --- a/code/game/gamemodes/intercept_report.dm +++ b/code/game/gamemodes/intercept_report.dm @@ -111,114 +111,70 @@ return num2text(md5(num2text(rand(1,10000)))) */ +/datum/intercept_text/proc/get_suspect() + var/list/dudes = list() + for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") + dudes += man + for(var/i = 0, i < max(player_list.len/10,2), i++) + dudes += pick(player_list) + return pick(dudes) + /datum/intercept_text/proc/build_traitor(datum/mind/correct_person) var/name_1 = pick(src.org_names_1) var/name_2 = pick(src.org_names_2) - /* - var/fingerprints - var/traitor_name - var/prob_right_dude = rand(prob_correct_person_lower, prob_correct_person_higher) - if(prob(prob_right_dude) && ticker.mode == "traitor") - if(correct_person:assigned_role=="MODE") - traitor_name = pick_mob() - else - traitor_name = correct_person:current - else if(prob(prob_right_dude)) - traitor_name = pick_mob() - else - fingerprints = pick_fingerprints() - */ + var/mob/living/carbon/human/H = get_suspect() + var/fingerprints = num2text(md5(H.dna.uni_identity)) + var/traitor_name = H.real_name + var/prob_right_dude = rand(1, 100) src.text += "

The [name_1] [name_2] implied an undercover operative was acting on their behalf on the station currently." src.text += "It would be in your best interests to suspect everybody, as these undercover operatives could have implants which trigger them to have their memories removed until they are needed. He, or she, could even be a high ranking officer." - /* + src.text += "After some investigation, we " - if(traitor_name) + if(prob(50)) src.text += "are [prob_right_dude]% sure that [traitor_name] may have been involved, and should be closely observed." src.text += "
Note: This group are known to be untrustworthy, so do not act on this information without proper discourse." else src.text += "discovered the following set of fingerprints ([fingerprints]) on sensitive materials, and their owner should be closely observed." src.text += "However, these could also belong to a current Cent. Com employee, so do not act on this without reason." - */ + /datum/intercept_text/proc/build_cult(datum/mind/correct_person) var/name_1 = pick(src.org_names_1) var/name_2 = pick(src.org_names_2) - /* - var/traitor_name - var/traitor_job - var/prob_right_dude = rand(prob_correct_person_lower, prob_correct_person_higher) - var/prob_right_job = rand(prob_correct_job_lower, prob_correct_job_higher) - if(prob(prob_right_job) && is_convertable_to_cult(correct_person)) - if (correct_person) - if(correct_person:assigned_role=="MODE") - traitor_job = pick(get_all_jobs()) - else - traitor_job = correct_person:assigned_role - else - var/list/job_tmp = get_all_jobs() - job_tmp.Remove("Captain", "Chaplain", "AI", "Cyborg", "Security Officer", "Detective", "Head Of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer") - traitor_job = pick(job_tmp) - if(prob(prob_right_dude) && ticker.mode == "cult") - if(correct_person:assigned_role=="MODE") - traitor_name = src.pick_mob() - else - traitor_name = correct_person:current - else - traitor_name = pick_mob() - */ + + var/prob_right_dude = rand(1, 100) + var/mob/living/carbon/human/H = get_suspect() + var/traitor_job = H.mind.assigned_role + src.text += "

It has been brought to our attention that the [name_1] [name_2] have stumbled upon some dark secrets. They apparently want to spread the dangerous knowledge onto as many stations as they can." src.text += "Watch out for the following: praying to an unfamilar god, preaching the word of \[REDACTED\], sacrifices, magical dark power, living constructs of evil and a portal to the dimension of the underworld." - /* - src.text += "Based on our intelligence, we are [prob_right_job]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted " + + src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted " src.text += "and instilled with the idea of the flimsiness of the real world, seeking to destroy it. " - if(prob(prob_right_dude)) - src.text += "
In addition, we are [prob_right_dude]% sure that [traitor_name] may have also some in to contact with this " - src.text += "organisation." + src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions." - */ + /datum/intercept_text/proc/build_rev(datum/mind/correct_person) var/name_1 = pick(src.org_names_1) var/name_2 = pick(src.org_names_2) - /* - var/traitor_name - var/traitor_job - var/prob_right_dude = rand(prob_correct_person_lower, prob_correct_person_higher) - var/prob_right_job = rand(prob_correct_job_lower, prob_correct_job_higher) - if(prob(prob_right_job) && is_convertable_to_rev(correct_person)) - if (correct_person) - if(correct_person.assigned_role=="MODE") - traitor_job = pick(get_all_jobs()) - else - traitor_job = correct_person.assigned_role - else - var/list/job_tmp = get_all_jobs() - job_tmp-=nonhuman_positions - job_tmp-=command_positions - job_tmp.Remove("Security Officer", "Detective", "Warden", "MODE") - traitor_job = pick(job_tmp) - if(prob(prob_right_dude) && ticker.mode.config_tag == "revolution") - if(correct_person.assigned_role=="MODE") - traitor_name = src.pick_mob() - else - traitor_name = correct_person.current - else - traitor_name = src.pick_mob() - */ + + var/prob_right_dude = rand(1, 100) + var/mob/living/carbon/human/H = get_suspect() + var/traitor_job = H.mind.assigned_role + src.text += "

It has been brought to our attention that the [name_1] [name_2] are attempting to stir unrest on one of our stations in your sector." src.text += "Watch out for suspicious activity among the crew and make sure that all heads of staff report in periodically." - /* - src.text += "Based on our intelligence, we are [prob_right_job]% sure that if true, someone doing the job of [traitor_job] on your station may have been brainwashed " + + src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been brainwashed " src.text += "at a recent conference, and their department should be closely monitored for signs of mutiny. " - if(prob(prob_right_dude)) - src.text += "
In addition, we are [prob_right_dude]% sure that [traitor_name] may have also some in to contact with this " - src.text += "organisation." + src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions." - */ + /datum/intercept_text/proc/build_wizard(datum/mind/correct_person) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index b44b415a7d..895c579b1f 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -291,3 +291,9 @@ traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response." traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe." //End code phrase. + + // Tell them about people they might want to contact. + var/mob/living/carbon/human/M = get_nt_opposed() + if(M != traitor_mob) + traitor_mob << "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting them." + traitor_mob.mind.store_memory("Potential Collaborator: [M.real_name]") \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 5bbcd9b32b..fd54da9de1 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -326,6 +326,7 @@ src.icon_state = "pod_0" src.eject_wait = 0 //If it's still set somehow. domutcheck(src.occupant) //Waiting until they're out before possible monkeyizing. + src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free. src.occupant = null return diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 659900aefc..b4f738304f 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -53,6 +53,7 @@ user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \ "\blue You salve wounds on [M]'s [affecting.display_name]." ) + H.add_side_effect("Cramps") H.UpdateDamageIcon() else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 878fd8f883..9955cee809 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -98,6 +98,8 @@ datum/preferences var/sec_record = "" var/disabilities = 0 + var/nanotrasen_relation = "Neutral" + // OOC Metadata: var/metadata = "" var/slot_name = "" @@ -298,6 +300,8 @@ datum/preferences dat += "Backpack Type:
[backbaglist[backbag]]
" + dat += "Nanotrasen Relation:
[nanotrasen_relation]
" + dat += "Preview
" dat += "" @@ -919,6 +923,11 @@ datum/preferences if(new_backbag) backbag = backbaglist.Find(new_backbag) + if("nt_relation") + var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed") + if(new_relation) + nanotrasen_relation = new_relation + if("flavor_text") var/msg = input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(flavor_text)) as message diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 80d5e718df..5727e7b671 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -143,6 +143,8 @@ S["skills"] >> skills S["skill_specialization"] >> skill_specialization S["organ_data"] >> organ_data + + S["nanotrasen_relation"] >> nanotrasen_relation //S["skin_style"] >> skin_style //Sanitize @@ -238,6 +240,8 @@ S["skills"] << skills S["skill_specialization"] << skill_specialization S["organ_data"] << organ_data + + S["nanotrasen_relation"] << nanotrasen_relation //S["skin_style"] << skin_style return 1 diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm new file mode 100644 index 0000000000..efecebf2c6 --- /dev/null +++ b/code/modules/clothing/spacesuits/alien.dm @@ -0,0 +1,20 @@ +/obj/item/clothing/head/helmet/space/helmet_soghun_cheap + name = "NT breacher helmet" + desc = "Hey! Watch it with that thing! It's a knock-off of a soghun battle-helm, and that spike could put someone's eye out." + icon_state = "sog_helm_cheap" + item_state = "sog_helm_cheap" + color = "sog_helm_cheap" + armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) + heat_protection = HEAD + max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE + +/obj/item/clothing/suit/space/rig_soghun_cheap + name = "NT breacher chassis" + desc = "A cheap NT knock-off of a soghun battle-rig. Looks like a fish, moves like a fish, steers like a cow." + icon_state = "rig-soghun-cheap" + item_state = "rig-soghun-cheap" + slowdown = 2 + armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d0cb78eba1..9f69aa8558 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -99,6 +99,8 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 handle_pain() + handle_medical_side_effects() + //Status updates, death etc. handle_regular_status_updates() //TODO: optimise ~Carn update_canmove() diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index aca196f84d..353ca6156f 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -13,10 +13,9 @@ response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" - speed = -1 + speed = 4 maxHealth = 25 health = 25 - destroy_surroundings = 0 harm_intent_damage = 8 melee_damage_lower = 15 @@ -35,6 +34,8 @@ max_n2 = 0 minbodytemp = 0 + break_stuff_probability = 2 + faction = "carp" /mob/living/simple_animal/hostile/carp/Process_Spacemove(var/check_drift = 0) diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index b02ba0469d..45464bf895 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -13,3 +13,4 @@ attacktext = "chomps" attack_sound = 'sound/weapons/bite.ogg' faction = "creature" + speed = 4 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index ecc0e8882e..5613c21ac3 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -28,6 +28,7 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 + speed = 4 faction = "faithless" diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index fb5190e08b..669541687f 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -33,7 +33,7 @@ var/busy = 0 pass_flags = PASSTABLE move_to_delay = 6 - destroy_surroundings = 0 + speed = 3 //nursemaids - these create webs and eggs /mob/living/simple_animal/hostile/giant_spider/nurse diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index ccf015adcb..c7f0cd845b 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -26,6 +26,7 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 + speed = 4 /mob/living/simple_animal/hostile/hivebot/range name = "Hivebot" diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index d823a4bcbd..3c28a1f717 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -10,6 +10,7 @@ var/casingtype var/move_to_delay = 2 //delay for the automated movement. var/list/friends = list() + var/break_stuff_probability = 10 stop_automated_movement_when_pulled = 0 var/destroy_surroundings = 1 @@ -173,7 +174,8 @@ return /mob/living/simple_animal/hostile/proc/DestroySurroundings() - for(var/dir in cardinal) // North, South, East, West - var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir)) - if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) - obstacle.attack_animal(src) + if(prob(break_stuff_probability)) + for(var/dir in cardinal) // North, South, East, West + var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir)) + if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) + obstacle.attack_animal(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index d1a60c5ed8..a910e74f5f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -13,7 +13,7 @@ response_help = "touches the" response_disarm = "pushes the" response_harm = "hits the" - speed = -1 + speed = 4 maxHealth = 250 health = 250 diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 6c2d55df6c..8f1a738ec3 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -9,7 +9,7 @@ response_help = "pushes the" response_disarm = "shoves" response_harm = "hits the" - speed = -1 + speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index ec2f9dcfd7..6e8b9b8490 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -10,7 +10,7 @@ response_help = "pokes the" response_disarm = "shoves the" response_harm = "hits the" - speed = -1 + speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 05674763da..520c5016f0 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -10,7 +10,7 @@ response_help = "pokes the" response_disarm = "shoves the" response_harm = "hits the" - speed = -1 + speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 3091517fbc..fef8232590 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -444,7 +444,7 @@ /mob/living/simple_animal/proc/SA_attackable(target_mob) if (isliving(target_mob)) var/mob/living/L = target_mob - if(!L.stat) + if(!L.stat || L.health <= 0) return (0) if (istype(target_mob,/obj/mecha)) var/obj/mecha/M = target_mob diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 7c3cb9c910..1f8d62db91 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 900afc4afb..3e1964161f 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 4554869d5d..6b96c548c4 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index c43c47b94e..0860f0d2ad 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ