e33f91229b
This stops AI corpses showing up in the end of round report. It also means that a ghosted (whether after death or by going catatonic) AI or borg will now have its player shown at the end of the round.
269 lines
11 KiB
Plaintext
269 lines
11 KiB
Plaintext
//These are meant for spawning on maps, namely Away Missions.
|
|
|
|
//If someone can do this in a neater way, be my guest-Kor
|
|
|
|
//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).
|
|
|
|
/obj/effect/landmark/corpse
|
|
name = "Unknown"
|
|
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
|
|
var/mobgender = MALE //Set to male by default due to the patriarchy. Other options include FEMALE and NEUTER
|
|
var/corpseuniform = null //Set this to an object path to have the slot filled with said object on the corpse.
|
|
var/corpsesuit = null
|
|
var/corpseshoes = null
|
|
var/corpsegloves = null
|
|
var/corpseradio = null
|
|
var/corpseglasses = null
|
|
var/corpsemask = null
|
|
var/corpsehelmet = null
|
|
var/corpsebelt = null
|
|
var/corpsepocket1 = null
|
|
var/corpsepocket2 = null
|
|
var/corpseback = null
|
|
var/corpseid = 0 //Just set to 1 if you want them to have an ID
|
|
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
|
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
|
|
var/corpseidicon = null //For setting it to be a gold, silver, centcom etc ID
|
|
var/corpsehusk = null
|
|
var/corpsebrute = null //set brute damage on the corpse
|
|
var/corpseoxy = null //set suffocation damage on the corpse
|
|
|
|
/obj/effect/landmark/corpse/initialize()
|
|
createCorpse()
|
|
|
|
/obj/effect/landmark/corpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
|
|
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
|
|
M.real_name = src.name
|
|
M.gender = src.mobgender
|
|
M.death(1) //Kills the new mob
|
|
if(src.corpsehusk)
|
|
M.Drain()
|
|
M.adjustBruteLoss(src.corpsebrute)
|
|
M.adjustOxyLoss(src.corpseoxy)
|
|
if(src.corpseuniform)
|
|
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
|
|
if(src.corpsesuit)
|
|
M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit)
|
|
if(src.corpseshoes)
|
|
M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
|
|
if(src.corpsegloves)
|
|
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
|
|
if(src.corpseradio)
|
|
M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears)
|
|
if(src.corpseglasses)
|
|
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
|
|
if(src.corpsemask)
|
|
M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
|
|
if(src.corpsehelmet)
|
|
M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head)
|
|
if(src.corpsebelt)
|
|
M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
|
|
if(src.corpsepocket1)
|
|
M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store)
|
|
if(src.corpsepocket2)
|
|
M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store)
|
|
if(src.corpseback)
|
|
M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
|
|
if(src.corpseid == 1)
|
|
var/obj/item/weapon/card/id/W = new(M)
|
|
W.name = "[M.real_name]'s ID Card ([corpseidjob])"
|
|
var/datum/job/jobdatum
|
|
for(var/jobtype in typesof(/datum/job))
|
|
var/datum/job/J = new jobtype
|
|
if(J.title == corpseidaccess)
|
|
jobdatum = J
|
|
break
|
|
if(src.corpseidicon)
|
|
W.icon_state = corpseidicon
|
|
if(src.corpseidaccess)
|
|
if(jobdatum)
|
|
W.access = jobdatum.get_access()
|
|
else
|
|
W.access = list()
|
|
if(corpseidjob)
|
|
W.assignment = corpseidjob
|
|
W.registered_name = M.real_name
|
|
M.equip_to_slot_or_del(W, slot_wear_id)
|
|
del(src)
|
|
|
|
/obj/effect/landmark/corpse/AICorpse/createCorpse() //Creates a corrupted AI
|
|
var/A = locate(/mob/living/silicon/ai) in loc //variable A looks for an AI at the location of the landmark
|
|
if(A) //if variable A is true
|
|
return //stop executing the proc
|
|
var/L = new /datum/ai_laws/default/asimov/ //variable L is a new Asimov lawset
|
|
var/B = new /obj/item/device/mmi/ //variable B is a new MMI
|
|
var/mob/living/silicon/ai/M = new(src.loc, L, B, 1) //spawn new AI at landmark as var M
|
|
M.aiPDA.toff = 1 //turns the AI's PDA messenger off, stopping it showing up on player PDAs
|
|
M.death() //call the AI's death proc
|
|
M.name = src.name //AI's name is that of the landmark that spawned it
|
|
M.real_name = M.name //AI's real_name is the same as its name
|
|
del(src)
|
|
|
|
/obj/effect/landmark/corpse/slimeCorpse
|
|
var/slimecolour = "grey"
|
|
icon = 'icons/mob/slimes.dmi'
|
|
icon_state = "grey baby slime" //sets the icon in the map editor
|
|
|
|
/obj/effect/landmark/corpse/slimeCorpse/createCorpse() //proc creates a dead slime
|
|
var/A = locate(/mob/living/carbon/slime/) in loc //variable A looks for a slime at the location of the landmark
|
|
if(A) //if variable A is true
|
|
return //stop executing the proc
|
|
var/mob/living/carbon/slime/M = new(src.loc) //variable M is a new slime at the location of the landmark
|
|
M.adjustToxLoss(9001) //kills the slime, death() doesn't update its icon correctly
|
|
M.colour = src.slimecolour //slime colour is set by landmark's slimecolour var
|
|
del(src)
|
|
|
|
/obj/effect/landmark/corpse/facehugCorpse/createCorpse() //Creates a squashed facehugger
|
|
var/obj/item/clothing/mask/facehugger/O = new(src.loc) //variable O is a new facehugger at the location of the landmark
|
|
O.Die() //call the facehugger's death proc
|
|
O.name = src.name //facehugger's name is the landmark's name
|
|
del(src)
|
|
|
|
|
|
// I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example.
|
|
|
|
/obj/effect/landmark/corpse/syndicatesoldier
|
|
name = "Syndicate Operative"
|
|
corpseuniform = /obj/item/clothing/under/syndicate
|
|
corpsesuit = /obj/item/clothing/suit/armor/vest
|
|
corpseshoes = /obj/item/clothing/shoes/swat
|
|
corpsegloves = /obj/item/clothing/gloves/combat
|
|
corpseradio = /obj/item/device/radio/headset
|
|
corpsemask = /obj/item/clothing/mask/gas
|
|
corpsehelmet = /obj/item/clothing/head/helmet/swat
|
|
corpseback = /obj/item/weapon/storage/backpack
|
|
corpseid = 1
|
|
corpseidjob = "Operative"
|
|
corpseidaccess = "Syndicate"
|
|
|
|
|
|
|
|
/obj/effect/landmark/corpse/syndicatecommando
|
|
name = "Syndicate Commando"
|
|
corpseuniform = /obj/item/clothing/under/syndicate
|
|
corpsesuit = /obj/item/clothing/suit/space/rig/syndi
|
|
corpseshoes = /obj/item/clothing/shoes/swat
|
|
corpsegloves = /obj/item/clothing/gloves/combat
|
|
corpseradio = /obj/item/device/radio/headset
|
|
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
|
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi
|
|
corpseback = /obj/item/weapon/tank/jetpack/oxygen
|
|
corpsepocket1 = /obj/item/weapon/tank/emergency_oxygen
|
|
corpseid = 1
|
|
corpseidjob = "Operative"
|
|
corpseidaccess = "Syndicate"
|
|
|
|
|
|
|
|
///////////Civilians//////////////////////
|
|
|
|
/obj/effect/landmark/corpse/chef
|
|
name = "Chef"
|
|
corpseuniform = /obj/item/clothing/under/rank/chef
|
|
corpsesuit = /obj/item/clothing/suit/chef/classic
|
|
corpseshoes = /obj/item/clothing/shoes/black
|
|
corpsehelmet = /obj/item/clothing/head/chefhat
|
|
corpseback = /obj/item/weapon/storage/backpack
|
|
corpseradio = /obj/item/device/radio/headset
|
|
corpseid = 1
|
|
corpseidjob = "Chef"
|
|
corpseidaccess = "Chef"
|
|
|
|
|
|
/obj/effect/landmark/corpse/doctor
|
|
name = "Doctor"
|
|
corpseradio = /obj/item/device/radio/headset/headset_med
|
|
corpseuniform = /obj/item/clothing/under/rank/medical
|
|
corpsesuit = /obj/item/clothing/suit/labcoat
|
|
corpseback = /obj/item/weapon/storage/backpack/medic
|
|
corpsepocket1 = /obj/item/device/flashlight/pen
|
|
corpseshoes = /obj/item/clothing/shoes/black
|
|
corpseid = 1
|
|
corpseidjob = "Medical Doctor"
|
|
corpseidaccess = "Medical Doctor"
|
|
|
|
/obj/effect/landmark/corpse/engineer
|
|
name = "Engineer"
|
|
corpseradio = /obj/item/device/radio/headset/headset_eng
|
|
corpseuniform = /obj/item/clothing/under/rank/engineer
|
|
corpseback = /obj/item/weapon/storage/backpack/industrial
|
|
corpseshoes = /obj/item/clothing/shoes/orange
|
|
corpsebelt = /obj/item/weapon/storage/belt/utility/full
|
|
corpsegloves = /obj/item/clothing/gloves/yellow
|
|
corpsehelmet = /obj/item/clothing/head/hardhat
|
|
corpseid = 1
|
|
corpseidjob = "Station Engineer"
|
|
corpseidaccess = "Station Engineer"
|
|
|
|
/obj/effect/landmark/corpse/engineer/rig
|
|
corpsesuit = /obj/item/clothing/suit/space/rig
|
|
corpsemask = /obj/item/clothing/mask/breath
|
|
corpsehelmet = /obj/item/clothing/head/helmet/space/rig
|
|
|
|
/obj/effect/landmark/corpse/clown
|
|
name = "Clown"
|
|
corpseuniform = /obj/item/clothing/under/rank/clown
|
|
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
|
corpseradio = /obj/item/device/radio/headset
|
|
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
|
corpsepocket1 = /obj/item/weapon/bikehorn
|
|
corpseback = /obj/item/weapon/storage/backpack/clown
|
|
corpseid = 1
|
|
corpseidjob = "Clown"
|
|
corpseidaccess = "Clown"
|
|
|
|
/obj/effect/landmark/corpse/scientist
|
|
name = "Scientist"
|
|
corpseradio = /obj/item/device/radio/headset/headset_sci
|
|
corpseuniform = /obj/item/clothing/under/rank/scientist
|
|
corpsesuit = /obj/item/clothing/suit/labcoat/science
|
|
corpseback = /obj/item/weapon/storage/backpack
|
|
corpseshoes = /obj/item/clothing/shoes/white
|
|
corpseid = 1
|
|
corpseidjob = "Scientist"
|
|
corpseidaccess = "Scientist"
|
|
|
|
/obj/effect/landmark/corpse/miner
|
|
corpseradio = /obj/item/device/radio/headset/headset_cargo
|
|
corpseuniform = /obj/item/clothing/under/rank/miner
|
|
corpsegloves = /obj/item/clothing/gloves/black
|
|
corpseback = /obj/item/weapon/storage/backpack/industrial
|
|
corpseshoes = /obj/item/clothing/shoes/black
|
|
corpseid = 1
|
|
corpseidjob = "Shaft Miner"
|
|
corpseidaccess = "Shaft Miner"
|
|
|
|
/obj/effect/landmark/corpse/miner/rig
|
|
corpsesuit = /obj/item/clothing/suit/space/rig/mining
|
|
corpsemask = /obj/item/clothing/mask/breath
|
|
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/mining
|
|
|
|
|
|
/////////////////Officers//////////////////////
|
|
|
|
/obj/effect/landmark/corpse/bridgeofficer
|
|
name = "Bridge Officer"
|
|
corpseradio = /obj/item/device/radio/headset/heads/hop
|
|
corpseuniform = /obj/item/clothing/under/rank/centcom_officer
|
|
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
|
|
corpseshoes = /obj/item/clothing/shoes/black
|
|
corpseglasses = /obj/item/clothing/glasses/sunglasses
|
|
corpseid = 1
|
|
corpseidjob = "Bridge Officer"
|
|
corpseidaccess = "Captain"
|
|
|
|
/obj/effect/landmark/corpse/commander
|
|
name = "Commander"
|
|
corpseuniform = /obj/item/clothing/under/rank/centcom_commander
|
|
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
|
|
corpseradio = /obj/item/device/radio/headset/heads/captain
|
|
corpseglasses = /obj/item/clothing/glasses/eyepatch
|
|
corpsemask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
|
corpsehelmet = /obj/item/clothing/head/centhat
|
|
corpsegloves = /obj/item/clothing/gloves/combat
|
|
corpseshoes = /obj/item/clothing/shoes/swat
|
|
corpsepocket1 = /obj/item/weapon/lighter/zippo
|
|
corpseid = 1
|
|
corpseidjob = "Commander"
|
|
corpseidaccess = "Captain"
|