mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-25 00:41:48 +00:00
Conflicts: baystation12.dme code/ATMOSPHERICS/components/unary/vent_pump.dm code/ATMOSPHERICS/components/unary/vent_scrubber.dm code/__HELPERS/game.dm code/controllers/shuttle_controller.dm code/datums/datumvars.dm code/datums/supplypacks.dm code/defines/obj/storage.dm code/defines/obj/vending.dm code/defines/obj/weapon.dm code/defines/procs/command_alert.dm code/game/area/Space Station 13 areas.dm code/game/atoms.dm code/game/gamemodes/changeling/modularchangling.dm code/game/gamemodes/cult/runes.dm code/game/gamemodes/events.dm code/game/gamemodes/events/dust.dm code/game/gamemodes/events/miniblob.dm code/game/gamemodes/events/ninja_equipment.dm code/game/gamemodes/factions.dm code/game/gamemodes/game_mode.dm code/game/gamemodes/gameticker.dm code/game/jobs/access.dm code/game/jobs/job/assistant.dm code/game/jobs/job/captain.dm code/game/jobs/job/civilian.dm code/game/jobs/job/engineering.dm code/game/jobs/job/medical.dm code/game/jobs/job/science.dm code/game/jobs/job/security.dm code/game/jobs/job_controller.dm code/game/machinery/alarm.dm code/game/machinery/atmo_control.dm code/game/machinery/atmoalter/area_atmos_computer.dm code/game/machinery/bots/medbot.dm code/game/machinery/computer/HolodeckControl.dm code/game/machinery/computer/ai_core.dm code/game/machinery/computer/atmos_alert.dm code/game/machinery/computer/card.dm code/game/machinery/computer/cloning.dm code/game/machinery/computer/computer.dm code/game/machinery/computer/message.dm code/game/machinery/computer/pod.dm code/game/machinery/computer/prisoner.dm code/game/machinery/computer/syndicate_shuttle.dm code/game/machinery/constructable_frame.dm code/game/machinery/doors/door.dm code/game/machinery/doors/firedoor.dm code/game/machinery/newscaster.dm code/game/machinery/recharger.dm code/game/machinery/spaceheater.dm code/game/machinery/telecomms/broadcaster.dm code/game/machinery/telecomms/logbrowser.dm code/game/machinery/telecomms/machine_interactions.dm code/game/machinery/teleporter.dm code/game/machinery/wishgranter.dm code/game/mecha/mech_fabricator.dm code/game/mecha/working/ripley.dm code/game/objects/items.dm code/game/objects/items/blueprints.dm code/game/objects/items/devices/flashlight.dm code/game/objects/items/devices/radio/encryptionkey.dm code/game/objects/items/devices/uplinks.dm code/game/objects/items/stacks/medical.dm code/game/objects/items/weapons/cards_ids.dm code/game/objects/items/weapons/gift_wrappaper.dm code/game/objects/items/weapons/hydroponics.dm code/game/objects/items/weapons/manuals.dm code/game/objects/items/weapons/secstorage/secstorage.dm code/game/objects/items/weapons/storage/backpack.dm code/game/objects/items/weapons/storage/firstaid.dm code/game/objects/items/weapons/storage/kit.dm code/game/objects/items/weapons/storage/storage.dm code/game/objects/items/weapons/storage/toolbox.dm code/game/objects/items/weapons/storage/uplink_kits.dm code/game/objects/items/weapons/stunbaton.dm code/game/objects/items/weapons/surgery_tools.dm code/game/objects/items/weapons/tools.dm code/game/objects/structures/crates_lockers/closets/secure/cargo.dm code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm code/game/objects/structures/crates_lockers/closets/secure/scientist.dm code/game/objects/structures/crates_lockers/closets/secure/security.dm code/game/objects/structures/electricchair.dm code/game/objects/structures/extinguisher.dm code/game/objects/structures/watercloset.dm code/game/objects/weapons.dm code/game/turfs/turf.dm code/game/vehicles/airtight/airtight.dm code/game/vehicles/vehicle.dm code/global.dm code/modules/DetectiveWork/evidence.dm code/modules/admin/IsBanned.dm code/modules/admin/player_panel.dm code/modules/admin/verbs/diagnostics.dm code/modules/admin/verbs/getlogs.dm code/modules/client/preferences.dm code/modules/clothing/masks/miscellaneous.dm code/modules/clothing/spacesuits/rig.dm code/modules/clothing/suits/miscellaneous.dm code/modules/critters/critter_defenses.dm code/modules/detectivework/scanner.dm code/modules/flufftext/Hallucination.dm code/modules/food/recipes_microwave.dm code/modules/mining/mine_items.dm code/modules/mining/mine_turfs.dm code/modules/mining/satchel_ore_boxdm.dm code/modules/mob/dead/observer/observer.dm code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm code/modules/mob/living/carbon/alien/special/facehugger.dm code/modules/mob/living/carbon/carbon.dm code/modules/mob/living/carbon/carbon_defines.dm code/modules/mob/living/carbon/human/human.dm code/modules/mob/living/carbon/human/human_attackhand.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/human/say.dm code/modules/mob/living/carbon/human/update_icons.dm code/modules/mob/living/carbon/metroid/metroid.dm code/modules/mob/living/living.dm code/modules/mob/living/silicon/ai/life.dm code/modules/mob/living/silicon/robot/robot.dm code/modules/mob/mob_cleanup.dm code/modules/mob/mob_defines.dm code/modules/mob/mob_transformation_simple.dm code/modules/paperwork/clipboard.dm code/modules/paperwork/folders.dm code/modules/paperwork/paper.dm code/modules/paperwork/paperbin.dm code/modules/paperwork/pen.dm code/modules/power/cable.dm code/modules/projectiles/guns/energy/special.dm code/modules/projectiles/guns/projectile/revolver.dm code/modules/projectiles/projectile/change.dm code/modules/projectiles/projectile/special.dm code/modules/reagents/Chemistry-Reagents.dm code/modules/reagents/reagent_containers/glass.dm code/modules/reagents/reagent_containers/hypospray.dm code/modules/recycling/sortingmachinery.dm code/modules/research/designs.dm config/config.txt html/changelog.html icons/mob/head.dmi icons/mob/hud.dmi icons/mob/items_lefthand.dmi icons/mob/items_righthand.dmi icons/mob/mask.dmi icons/mob/suit.dmi icons/mob/ties.dmi icons/mob/uniform.dmi icons/obj/clothing/hats.dmi icons/obj/clothing/masks.dmi icons/obj/clothing/suits.dmi icons/obj/clothing/ties.dmi icons/obj/grenade.dmi icons/obj/projectiles.dmi Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
154 lines
4.8 KiB
Plaintext
154 lines
4.8 KiB
Plaintext
//affected_mob.contract_disease(new /datum/disease/alien_embryo)
|
|
|
|
//cael - retained this file for legacy reference, see code\modules\mob\living\carbon\alien\special\alien_embryo.dm for replacement
|
|
|
|
//Our own special process so that dead hosts still chestburst
|
|
/datum/disease/alien_embryo/process()
|
|
if(!holder) return
|
|
if(holder == affected_mob)
|
|
stage_act()
|
|
if(affected_mob)
|
|
if(affected_mob.stat == DEAD)
|
|
if(prob(50))
|
|
if(--longevity<=0)
|
|
cure(0)
|
|
else //the virus is in inanimate obj
|
|
cure(0)
|
|
return
|
|
|
|
/datum/disease/alien_embryo/New()
|
|
..()
|
|
/* Special Hud for xenos */
|
|
spawn(0)
|
|
if (affected_mob)
|
|
AddInfectionImages(affected_mob)
|
|
|
|
/datum/disease/alien_embryo/cure(var/resistance=1)
|
|
..()
|
|
spawn(0)
|
|
if (affected_mob)
|
|
RemoveInfectionImages(affected_mob)
|
|
|
|
/datum/disease/alien_embryo
|
|
name = "Unidentified Foreign Body"
|
|
max_stages = 5
|
|
spread = "None"
|
|
spread_type = SPECIAL
|
|
cure = "Unknown"
|
|
cure_id = list("lexorin","toxin","gargleblaster")
|
|
cure_chance = 50
|
|
affected_species = list("Human", "Monkey")
|
|
permeability_mod = 15//likely to infect
|
|
can_carry = 0
|
|
stage_prob = 3
|
|
var/gibbed = 0
|
|
stage_minimum_age = 300
|
|
|
|
/datum/disease/alien_embryo/stage_act()
|
|
..()
|
|
switch(stage)
|
|
if(2, 3)
|
|
if(prob(1))
|
|
affected_mob.emote("sneeze")
|
|
if(prob(1))
|
|
affected_mob.emote("cough")
|
|
if(prob(1))
|
|
affected_mob << "\red Your throat feels sore."
|
|
if(prob(1))
|
|
affected_mob << "\red Mucous runs down the back of your throat."
|
|
if(4)
|
|
if(prob(1))
|
|
affected_mob.emote("sneeze")
|
|
if(prob(1))
|
|
affected_mob.emote("cough")
|
|
if(prob(2))
|
|
affected_mob << "\red Your muscles ache."
|
|
if(prob(20))
|
|
affected_mob.take_organ_damage(1)
|
|
if(prob(2))
|
|
affected_mob << "\red Your stomach hurts."
|
|
if(prob(20))
|
|
affected_mob.adjustToxLoss(1)
|
|
affected_mob.updatehealth()
|
|
if(5)
|
|
affected_mob << "\red You feel something tearing its way out of your stomach..."
|
|
affected_mob.adjustToxLoss(10)
|
|
affected_mob.updatehealth()
|
|
if(prob(50))
|
|
if(gibbed != 0) return 0
|
|
var/list/candidates = get_alien_candidates()
|
|
var/picked = null
|
|
|
|
// To stop clientless larva, we will check that our host has a client
|
|
// if we find no ghosts to become the alien. If the host has a client
|
|
// he will become the alien but if he doesn't then we will set the stage
|
|
// to 2, so we don't do a process heavy check everytime.
|
|
|
|
if(candidates.len)
|
|
picked = pick(candidates)
|
|
else if(affected_mob.client)
|
|
picked = affected_mob.key
|
|
else
|
|
stage = 2 // Let's try again later.
|
|
return
|
|
|
|
var/mob/living/carbon/alien/larva/new_xeno = new(affected_mob.loc)
|
|
new_xeno.key = picked
|
|
new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100) //To get the player's attention
|
|
affected_mob.gib()
|
|
src.cure(0)
|
|
gibbed = 1
|
|
return
|
|
|
|
/datum/disease/alien_embryo/stage_change(var/old_stage)
|
|
RefreshInfectionImage()
|
|
|
|
/*----------------------------------------
|
|
Proc: RefreshInfectionImage()
|
|
Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens.
|
|
----------------------------------------*/
|
|
/datum/disease/alien_embryo/proc/RefreshInfectionImage()
|
|
spawn(0)
|
|
for (var/mob/living/carbon/alien/alien in player_list)
|
|
if (alien.client)
|
|
for(var/image/I in alien.client.images)
|
|
if(dd_hasprefix_case(I.icon_state, "infected"))
|
|
del(I)
|
|
|
|
for (var/mob/living/carbon/alien/alien in player_list)
|
|
if (alien.client)
|
|
for (var/mob/living/carbon/C in mob_list)
|
|
if(C)
|
|
if (C.status_flags & XENO_HOST)
|
|
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
|
|
alien.client.images += I
|
|
return
|
|
|
|
/*----------------------------------------
|
|
Proc: AddInfectionImages(C)
|
|
Des: Checks if the passed mob (C) is infected with the alien egg, then gives each alien client an infected image at C.
|
|
----------------------------------------*/
|
|
/datum/disease/alien_embryo/proc/AddInfectionImages(var/mob/living/carbon/C)
|
|
if (C)
|
|
for (var/mob/living/carbon/alien/alien in player_list)
|
|
if (alien.client)
|
|
if (C.status_flags & XENO_HOST)
|
|
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
|
|
alien.client.images += I
|
|
return
|
|
|
|
/*----------------------------------------
|
|
Proc: RemoveInfectionImage(C)
|
|
Des: Removes the alien infection image from all aliens in the world located in passed mob (C).
|
|
----------------------------------------*/
|
|
|
|
/datum/disease/alien_embryo/proc/RemoveInfectionImages(var/mob/living/carbon/C)
|
|
if (C)
|
|
for (var/mob/living/carbon/alien/alien in player_list)
|
|
if (alien.client)
|
|
for(var/image/I in alien.client.images)
|
|
if(I.loc == C)
|
|
if(dd_hasprefix_case(I.icon_state, "infected"))
|
|
del(I)
|
|
return
|