mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
Resolved merge conflicts... I hope.
This commit is contained in:
@@ -207,7 +207,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
for(var/obj/effect/step_trigger/S in locate(x, y, z)) //<-- this is dumb
|
||||
S.Crossed(src)
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
A.Entered(src)
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
skinned_type = /obj/item/stack/sheet/metal // Let's grind up IPCs for station resources!
|
||||
|
||||
eyes = "blank_eyes"
|
||||
brute_mod = 2.5 // 100% * 2.5 * 0.6 (robolimbs) ~= 150%
|
||||
burn_mod = 2.5 // So they take 50% extra damage from brute/burn overall.
|
||||
brute_mod = 2.5 // 100% * 2.5 * 0.66 (robolimbs) = 165%
|
||||
burn_mod = 2.5 // So they take 65% extra damage from brute/burn overall.
|
||||
tox_mod = 0
|
||||
clone_mod = 0
|
||||
oxy_mod = 0
|
||||
|
||||
@@ -265,7 +265,7 @@ var/list/ai_verbs_default = list(
|
||||
/mob/living/silicon/ai/Destroy()
|
||||
ai_list -= src
|
||||
shuttle_caller_list -= src
|
||||
shuttle_master.autoEvac()
|
||||
SSshuttle.autoEvac()
|
||||
QDEL_NULL(eyeobj) // No AI, no Eye
|
||||
if(malfhacking)
|
||||
deltimer(malfhacking)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||
|
||||
shuttle_caller_list -= src
|
||||
shuttle_master.autoEvac()
|
||||
SSshuttle.autoEvac()
|
||||
|
||||
if(nuking)
|
||||
set_security_level("red")
|
||||
@@ -26,10 +26,10 @@
|
||||
|
||||
if(doomsday_device)
|
||||
doomsday_device.timing = 0
|
||||
shuttle_master.emergencyNoEscape = 0
|
||||
if(shuttle_master.emergency.mode == SHUTTLE_STRANDED)
|
||||
shuttle_master.emergency.mode = SHUTTLE_DOCKED
|
||||
shuttle_master.emergency.timer = world.time
|
||||
SSshuttle.emergencyNoEscape = 0
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
|
||||
SSshuttle.emergency.mode = SHUTTLE_DOCKED
|
||||
SSshuttle.emergency.timer = world.time
|
||||
priority_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/shuttledock.ogg')
|
||||
qdel(doomsday_device)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
var/turf/T = get_turf_or_move(loc)
|
||||
for(var/mob/M in viewers(T))
|
||||
M.show_message("<span class=warning>[src] emits a dull beep before it loses power and collapses.</span>", 3, "<span class=warning>You hear a dull beep followed by the sound of glass crunching.</span>", 2)
|
||||
M.show_message("<span class='warning'>[src] emits a dull beep before it loses power and collapses.</span>", 3, "<span class='warning'>You hear a dull beep followed by the sound of glass crunching.</span>", 2)
|
||||
name = "pAI debris"
|
||||
desc = "The unfortunate remains of some poor personal AI device."
|
||||
icon_state = "[chassis]_dead"
|
||||
|
||||
@@ -324,11 +324,11 @@
|
||||
return
|
||||
|
||||
if(loc != card)
|
||||
to_chat(src, "<span class=warning>You are already in your mobile form!</span>")
|
||||
to_chat(src, "<span class='warning'>You are already in your mobile form!</span>")
|
||||
return
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "<span class=warning>You must wait before folding your chassis out again!</span>")
|
||||
to_chat(src, "<span class='warning'>You must wait before folding your chassis out again!</span>")
|
||||
return
|
||||
|
||||
last_special = world.time + 200
|
||||
@@ -336,7 +336,7 @@
|
||||
//I'm not sure how much of this is necessary, but I would rather avoid issues.
|
||||
force_fold_out()
|
||||
|
||||
visible_message("<span class=notice>[src] folds outwards, expanding into a mobile form.</span>", "<span class=notice>You fold outwards, expanding into a mobile form.</span>")
|
||||
visible_message("<span class='notice'>[src] folds outwards, expanding into a mobile form.</span>", "<span class='notice'>You fold outwards, expanding into a mobile form.</span>")
|
||||
|
||||
/mob/living/silicon/pai/proc/force_fold_out()
|
||||
if(istype(card.loc, /mob))
|
||||
@@ -359,11 +359,11 @@
|
||||
return
|
||||
|
||||
if(loc == card)
|
||||
to_chat(src, "<span class=warning>You are already in your card form!</span>")
|
||||
to_chat(src, "<span class='warning'>You are already in your card form!</span>")
|
||||
return
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "<span class=warning>You must wait before returning to your card form!</span>")
|
||||
to_chat(src, "<span class='warning'>You must wait before returning to your card form!</span>")
|
||||
return
|
||||
|
||||
close_up()
|
||||
@@ -494,7 +494,7 @@
|
||||
if(loc == card)
|
||||
return
|
||||
|
||||
visible_message("<span class=notice>[src] neatly folds inwards, compacting down to a rectangular card.</span>", "<span class=notice>You neatly fold inwards, compacting down to a rectangular card.</span>")
|
||||
visible_message("<span class='notice'>[src] neatly folds inwards, compacting down to a rectangular card.</span>", "<span class='notice'>You neatly fold inwards, compacting down to a rectangular card.</span>")
|
||||
|
||||
stop_pulling()
|
||||
reset_perspective(card)
|
||||
|
||||
@@ -281,7 +281,7 @@
|
||||
grabbed_something = 1
|
||||
|
||||
if(grabbed_something)
|
||||
to_chat(user, "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].<span>")
|
||||
to_chat(user, "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Nothing on \the [T] is useful to you.</span>")
|
||||
return
|
||||
|
||||
@@ -653,10 +653,13 @@ var/list/robot_verbs_default = list(
|
||||
var/datum/robot_component/C = components[V]
|
||||
if(C.installed == 1 || C.installed == -1)
|
||||
removable_components += V
|
||||
|
||||
if(module)
|
||||
removable_components += module.custom_removals
|
||||
var/remove = input(user, "Which component do you want to pry out?", "Remove Component") as null|anything in removable_components
|
||||
if(!remove)
|
||||
return
|
||||
if(module && module.handle_custom_removal(remove, user, W, params))
|
||||
return
|
||||
var/datum/robot_component/C = components[remove]
|
||||
var/obj/item/robot_parts/robot_component/I = C.wrapped
|
||||
to_chat(user, "You remove \the [I].")
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
var/list/stacktypes
|
||||
var/channels = list()
|
||||
var/list/custom_removals = list()
|
||||
|
||||
|
||||
/obj/item/robot_module/emp_act(severity)
|
||||
@@ -103,6 +104,10 @@
|
||||
qdel(A)
|
||||
R.module_actions.Cut()
|
||||
|
||||
// Return true in an overridden subtype to prevent normal removal handling
|
||||
/obj/item/robot_module/proc/handle_custom_removal(component_id, mob/living/user, obj/item/W, params)
|
||||
return FALSE
|
||||
|
||||
/obj/item/robot_module/standard
|
||||
name = "standard robot module"
|
||||
module_type = "Standard"
|
||||
@@ -325,6 +330,7 @@
|
||||
module_actions = list(
|
||||
/datum/action/innate/robot_sight/meson,
|
||||
)
|
||||
custom_removals = list("KA modkits")
|
||||
|
||||
/obj/item/robot_module/miner/New()
|
||||
..()
|
||||
@@ -341,6 +347,13 @@
|
||||
|
||||
fix_modules()
|
||||
|
||||
/obj/item/robot_module/miner/handle_custom_removal(component_id, mob/living/user, obj/item/W, params)
|
||||
if(component_id == "KA modkits")
|
||||
for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/D in src)
|
||||
D.attackby(W, user, params)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/robot_module/deathsquad
|
||||
name = "NT advanced combat module"
|
||||
module_type = "Malf"
|
||||
|
||||
@@ -694,7 +694,7 @@
|
||||
/mob/living/simple_animal/bot/mulebot/proc/RunOver(mob/living/carbon/human/H)
|
||||
add_attack_logs(src, H, "Run over (DAMTYPE: [uppertext(BRUTE)])")
|
||||
H.visible_message("<span class='danger'>[src] drives over [H]!</span>", \
|
||||
"<span class='userdanger'>[src] drives over you!<span>")
|
||||
"<span class='userdanger'>[src] drives over you!</span>")
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/damage = rand(5,15)
|
||||
|
||||
@@ -1,162 +1,115 @@
|
||||
//Meant for simple animals to drop lootable human bodies.
|
||||
|
||||
//If someone can do this in a neater way, be my guest-Kor
|
||||
|
||||
//This has to be seperate from the Away Mission corpses, because New() doesn't work for those, and initialize() doesn't work for these.
|
||||
|
||||
//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/mobcorpse
|
||||
name = "Unknown"
|
||||
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
|
||||
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, centcomm etc ID
|
||||
|
||||
/obj/effect/landmark/mobcorpse/New()
|
||||
createCorpse()
|
||||
|
||||
/obj/effect/landmark/mobcorpse/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.stat = 2 //Kills the new mob
|
||||
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_l_ear)
|
||||
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/card/id/W = new(M)
|
||||
W.name = "[M.real_name]'s ID Card"
|
||||
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)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
//List of different corpse types
|
||||
|
||||
/obj/effect/landmark/mobcorpse/syndicatesoldier
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatesoldier
|
||||
name = "Syndicate Operative"
|
||||
corpseuniform = /obj/item/clothing/under/syndicate
|
||||
corpsesuit = /obj/item/clothing/suit/armor/vest
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/swat
|
||||
corpseback = /obj/item/storage/backpack
|
||||
corpseid = 1
|
||||
corpseidjob = "Operative"
|
||||
corpseidaccess = "Syndicate"
|
||||
mob_name = "Syndicate Operative"
|
||||
hair_style = "bald"
|
||||
facial_hair_style = "shaved"
|
||||
id_job = "Operative"
|
||||
id_access_list = list(access_syndicate)
|
||||
outfit = /datum/outfit/syndicatesoldiercorpse
|
||||
|
||||
/datum/outfit/syndicatesoldiercorpse
|
||||
name = "Syndicate Operative Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
l_ear = /obj/item/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas
|
||||
head = /obj/item/clothing/head/helmet/swat
|
||||
back = /obj/item/storage/backpack
|
||||
id = /obj/item/card/id
|
||||
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatecommando
|
||||
name = "Syndicate Commando"
|
||||
corpseuniform = /obj/item/clothing/under/syndicate
|
||||
corpsesuit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
corpseshoes = /obj/item/clothing/shoes/combat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/syndicate
|
||||
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
corpseback = /obj/item/tank/jetpack/oxygen
|
||||
corpsepocket1 = /obj/item/tank/emergency_oxygen
|
||||
corpseid = 1
|
||||
corpseidjob = "Operative"
|
||||
corpseidaccess = "Syndicate"
|
||||
mob_name = "Syndicate Commando"
|
||||
hair_style = "bald"
|
||||
facial_hair_style = "shaved"
|
||||
id_job = "Operative"
|
||||
id_access_list = list(access_syndicate)
|
||||
outfit = /datum/outfit/syndicatecommandocorpse
|
||||
|
||||
/obj/effect/landmark/mobcorpse/syndicateautogib/createCorpse()
|
||||
var/mob/living/carbon/human/M = new /mob/living/carbon/human(loc)
|
||||
M.real_name = src.name
|
||||
M.gib()
|
||||
qdel(src)
|
||||
/datum/outfit/syndicatecommandocorpse
|
||||
name = "Syndicate Commando Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
l_ear = /obj/item/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
back = /obj/item/tank/jetpack/oxygen
|
||||
r_pocket = /obj/item/tank/emergency_oxygen
|
||||
id = /obj/item/card/id
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/clown
|
||||
name = "Clown"
|
||||
corpseuniform = /obj/item/clothing/under/rank/clown
|
||||
corpseshoes = /obj/item/clothing/shoes/clown_shoes
|
||||
corpseradio = /obj/item/radio/headset
|
||||
corpsemask = /obj/item/clothing/mask/gas/clown_hat
|
||||
corpsepocket1 = /obj/item/bikehorn
|
||||
corpseback = /obj/item/storage/backpack/clown
|
||||
corpseid = 1
|
||||
corpseidjob = "Clown"
|
||||
corpseidaccess = "Clown"
|
||||
/obj/effect/mob_spawn/human/clown/corpse
|
||||
roundstart = TRUE
|
||||
instant = TRUE
|
||||
|
||||
/obj/effect/mob_spawn/human/mime/corpse
|
||||
roundstart = TRUE
|
||||
instant = TRUE
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/pirate
|
||||
/obj/effect/mob_spawn/human/corpse/pirate
|
||||
name = "Pirate"
|
||||
corpseuniform = /obj/item/clothing/under/pirate
|
||||
corpseshoes = /obj/item/clothing/shoes/jackboots
|
||||
corpseglasses = /obj/item/clothing/glasses/eyepatch
|
||||
corpsehelmet = /obj/item/clothing/head/bandana
|
||||
mob_name = "Pirate"
|
||||
hair_style = "bald"
|
||||
facial_hair_style = "shaved"
|
||||
outfit = /datum/outfit/piratecorpse
|
||||
|
||||
/datum/outfit/piratecorpse
|
||||
name = "Pirate Corpse"
|
||||
uniform = /obj/item/clothing/under/pirate
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
head = /obj/item/clothing/head/bandana
|
||||
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/pirate/ranged
|
||||
/obj/effect/mob_spawn/human/corpse/pirate/ranged
|
||||
name = "Pirate Gunner"
|
||||
corpsesuit = /obj/item/clothing/suit/pirate_black
|
||||
corpsehelmet = /obj/item/clothing/head/pirate
|
||||
mob_name = "Pirate Gunner"
|
||||
outfit = /datum/outfit/piratecorpse/ranged
|
||||
|
||||
/datum/outfit/piratecorpse/ranged
|
||||
name = "Pirate Gunner Corpse"
|
||||
suit = /obj/item/clothing/suit/pirate_black
|
||||
head = /obj/item/clothing/head/pirate
|
||||
|
||||
|
||||
|
||||
/obj/effect/landmark/mobcorpse/russian
|
||||
/obj/effect/mob_spawn/human/corpse/russian
|
||||
name = "Russian"
|
||||
corpseuniform = /obj/item/clothing/under/soviet
|
||||
corpseshoes = /obj/item/clothing/shoes/jackboots
|
||||
corpsehelmet = /obj/item/clothing/head/bearpelt
|
||||
mob_name = "Russian"
|
||||
hair_style = "bald"
|
||||
facial_hair_style = "shaved"
|
||||
outfit = /datum/outfit/russiancorpse
|
||||
|
||||
/obj/effect/landmark/mobcorpse/russian/ranged
|
||||
corpsehelmet = /obj/item/clothing/head/ushanka
|
||||
/datum/outfit/russiancorpse
|
||||
name = "Russian Corpse"
|
||||
uniform = /obj/item/clothing/under/soviet
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
head = /obj/item/clothing/head/bearpelt
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/russian/ranged
|
||||
outfit = /datum/outfit/russiancorpse/ranged
|
||||
|
||||
/datum/outfit/russiancorpse/ranged
|
||||
name = "Ranged Russian Corpse"
|
||||
head = /obj/item/clothing/head/ushanka
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/wizard
|
||||
name = "Space Wizard Corpse"
|
||||
outfit = /datum/outfit/wizardcorpse
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/clownoff/Initialize()
|
||||
mob_name = "[pick(wizard_first)], [pick(wizard_second)]"
|
||||
..()
|
||||
|
||||
/datum/outfit/wizardcorpse
|
||||
name = "Space Wizard Corpse"
|
||||
uniform = /obj/item/clothing/under/color/lightpurple
|
||||
suit = /obj/item/clothing/suit/wizrobe
|
||||
shoes = /obj/item/clothing/shoes/sandal
|
||||
head = /obj/item/clothing/head/wizard
|
||||
@@ -78,7 +78,7 @@
|
||||
to_chat(user, "<span class='warning'>[src] is wearing too much armor! You can't cause [p_them()] any damage.</span>")
|
||||
visible_message("<span class='danger'> [user] hits [src] with [O], however [src] is too armored.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is wearing too much armor! You can't reach [p_their()] skin.<span>")
|
||||
to_chat(user, "<span class='warning'>[src] is wearing too much armor! You can't reach [p_their()] skin.</span>")
|
||||
visible_message("[user] gently taps [src] with [O].")
|
||||
if(health>0 && prob(15))
|
||||
custom_emote(1, "looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression.")
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
stored_mob.forceMove(get_turf(src))
|
||||
stored_mob = null
|
||||
else
|
||||
new /obj/effect/landmark/corpse/damaged(T)
|
||||
new /obj/effect/mob_spawn/human/corpse/charredskeleton(T)
|
||||
..(gibbed)
|
||||
|
||||
|
||||
@@ -320,4 +320,14 @@
|
||||
name = "legion's head"
|
||||
desc = "The once living, now empty eyes of the former human's skull cut deep into your soul."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "skull"
|
||||
icon_state = "skull"
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/charredskeleton
|
||||
name = "charred skeletal remains"
|
||||
burn_damage = 1000
|
||||
mob_name = "ashen skeleton"
|
||||
mob_gender = NEUTER
|
||||
husk = FALSE
|
||||
mob_species = /datum/species/skeleton
|
||||
mob_color = "#454545"
|
||||
@@ -23,7 +23,7 @@
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 15
|
||||
speak_emote = list("yarrs")
|
||||
loot = list(/obj/effect/landmark/mobcorpse/pirate,
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/pirate,
|
||||
/obj/item/melee/energy/sword/pirate)
|
||||
del_on_death = 1
|
||||
faction = list("pirate")
|
||||
@@ -40,5 +40,5 @@
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/item/projectile/beam
|
||||
loot = list(/obj/effect/landmark/mobcorpse/pirate/ranged,
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged,
|
||||
/obj/item/gun/energy/laser)
|
||||
@@ -22,7 +22,7 @@
|
||||
unsuitable_atmos_damage = 15
|
||||
faction = list("russian")
|
||||
status_flags = CANPUSH
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian,
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/russian,
|
||||
/obj/item/kitchen/knife)
|
||||
del_on_death = 1
|
||||
sentience_type = SENTIENCE_OTHER
|
||||
@@ -34,9 +34,9 @@
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
casingtype = /obj/item/ammo_casing/a357
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged, /obj/item/gun/projectile/revolver/mateba)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged, /obj/item/gun/projectile/revolver/mateba)
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/ranged/mosin
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged,
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged,
|
||||
/obj/item/gun/projectile/shotgun/boltaction)
|
||||
casingtype = /obj/item/ammo_casing/a762
|
||||
|
||||
@@ -168,11 +168,11 @@
|
||||
W.ChangeTurf(/turf/simulated/floor/plating)
|
||||
new /obj/item/stack/sheet/metal(src, plasmaPoopPotential)
|
||||
currentlyEating = null //ffs, unstore this
|
||||
src.visible_message("<span class='userdanger'>\the [src] eats \the [noms]!</span>","<span class='notice'>You eat \the [noms]!</span>","<span class=userdanger'>You hear gnashing.</span>") //inform everyone what the fucking worm is doing.
|
||||
src.visible_message("<span class='userdanger'>\the [src] eats \the [noms]!</span>","<span class='notice'>You eat \the [noms]!</span>","<span class='userdanger'>You hear gnashing.</span>") //inform everyone what the fucking worm is doing.
|
||||
else
|
||||
currentlyEating = null
|
||||
contents += noms
|
||||
src.visible_message("<span class='userdanger'>\the [src] eats \the [noms]!</span>","<span class='notice'>You eat \the [noms]!</span>","<span class=userdanger'>You hear gnashing.</span>") //inform everyone what the fucking worm is doing.
|
||||
src.visible_message("<span class='userdanger'>\the [src] eats \the [noms]!</span>","<span class='notice'>You eat \the [noms]!</span>","<span class='userdanger'>You hear gnashing.</span>") //inform everyone what the fucking worm is doing.
|
||||
if(ismob(noms))
|
||||
var/mob/M = noms //typecast because noms isn't movable
|
||||
M.loc = src //because just setting a mob loc to null breaks the camera and such
|
||||
@@ -331,4 +331,4 @@
|
||||
/mob/living/simple_animal/hostile/spaceWorm/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect, end_pixel_y)
|
||||
..()
|
||||
if(previousWorm)
|
||||
previousWorm.do_attack_animation(src)
|
||||
previousWorm.do_attack_animation(src)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
faction = list("syndicate")
|
||||
check_friendly_fire = 1
|
||||
status_flags = CANPUSH
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier)
|
||||
del_on_death = 1
|
||||
sentience_type = SENTIENCE_OTHER
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
armour_penetration = 28
|
||||
status_flags = 0
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
|
||||
var/melee_block_chance = 20
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
@@ -72,7 +72,7 @@
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/autogib
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicateautogib)
|
||||
loot = list()//no loot, its gonna delete and gib.
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot
|
||||
name = "Syndicate Operative"
|
||||
@@ -81,6 +81,7 @@
|
||||
stat_attack = 1
|
||||
universal_speak = 1
|
||||
melee_block_chance = 40
|
||||
del_on_death = 1
|
||||
var/area/syndicate_depot/core/depotarea
|
||||
var/raised_alert = FALSE
|
||||
var/alert_on_death = FALSE
|
||||
@@ -182,6 +183,7 @@
|
||||
depotarea.shields_key_check()
|
||||
if(depotarea)
|
||||
depotarea.list_remove(src, depotarea.guard_list)
|
||||
new /obj/effect/gibspawner/human(get_turf(src))
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
@@ -247,7 +249,7 @@
|
||||
icon_state = "syndicatemeleespace"
|
||||
icon_living = "syndicatemeleespace"
|
||||
speed = 1
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/syndicatecommando, /obj/item/melee/energy/sword/saber/red, /obj/item/shield/energy)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/movement_dir = 0)
|
||||
return
|
||||
@@ -261,7 +263,7 @@
|
||||
icon_state = "syndicateranged"
|
||||
icon_living = "syndicateranged"
|
||||
casingtype = /obj/item/ammo_casing/c45
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/gun/projectile/automatic/c20r)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier, /obj/item/gun/projectile/automatic/c20r)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space
|
||||
icon_state = "syndicaterangedpsace"
|
||||
@@ -270,14 +272,13 @@
|
||||
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)
|
||||
minbodytemp = 0
|
||||
speed = 1
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/gun/projectile/automatic/c20r)
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/syndicatecommando, /obj/item/gun/projectile/automatic/c20r)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/movement_dir = 0)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space/autogib
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicateautogib)
|
||||
|
||||
loot = list()//gonna gibe, no loot.
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator
|
||||
name = "viscerator"
|
||||
|
||||
@@ -995,9 +995,9 @@ var/list/slot_equipment_priority = list( \
|
||||
|
||||
// this function displays the shuttles ETA in the status panel if the shuttle has been called
|
||||
/mob/proc/show_stat_emergency_shuttle_eta()
|
||||
var/ETA = shuttle_master.emergency.getModeStr()
|
||||
var/ETA = SSshuttle.emergency.getModeStr()
|
||||
if(ETA)
|
||||
stat(null, "[ETA] [shuttle_master.emergency.getTimerStr()]")
|
||||
stat(null, "[ETA] [SSshuttle.emergency.getTimerStr()]")
|
||||
|
||||
/mob/proc/show_stat_turf_contents()
|
||||
if(listed_turf && client)
|
||||
|
||||
@@ -469,7 +469,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM)
|
||||
/proc/notify_ghosts(message, ghost_sound = null, enter_link = null, title = null, atom/source = null, image/alert_overlay = null, flashwindow = TRUE, var/action = NOTIFY_JUMP) //Easy notification of ghosts.
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(O.client)
|
||||
to_chat(O, "<span class='ghostalert'>[message][(enter_link) ? " [enter_link]" : ""]<span>")
|
||||
to_chat(O, "<span class='ghostalert'>[message][(enter_link) ? " [enter_link]" : ""]</span>")
|
||||
if(ghost_sound)
|
||||
O << sound(ghost_sound)
|
||||
if(flashwindow)
|
||||
|
||||
@@ -361,11 +361,11 @@
|
||||
character.buckled.loc = character.loc
|
||||
character.buckled.dir = character.dir
|
||||
|
||||
ticker.mode.latespawn(character)
|
||||
|
||||
character = job_master.EquipRank(character, rank, 1) //equips the human
|
||||
EquipCustomItems(character)
|
||||
|
||||
ticker.mode.latespawn(character)
|
||||
|
||||
if(character.mind.assigned_role == "Cyborg")
|
||||
AnnounceCyborg(character, rank, join_message)
|
||||
callHook("latespawn", list(character))
|
||||
@@ -433,9 +433,9 @@
|
||||
var/dat = "<html><body><center>"
|
||||
dat += "Round Duration: [round(hours)]h [round(mins)]m<br>"
|
||||
|
||||
if(shuttle_master.emergency.mode >= SHUTTLE_ESCAPE)
|
||||
if(SSshuttle.emergency.mode >= SHUTTLE_ESCAPE)
|
||||
dat += "<font color='red'><b>The station has been evacuated.</b></font><br>"
|
||||
else if(shuttle_master.emergency.mode >= SHUTTLE_CALL)
|
||||
else if(SSshuttle.emergency.mode >= SHUTTLE_CALL)
|
||||
dat += "<font color='red'>The station is currently undergoing evacuation procedures.</font><br>"
|
||||
|
||||
if(length(job_master.prioritized_jobs))
|
||||
|
||||
Reference in New Issue
Block a user