mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 23:53:47 +01:00
Merge branch 'master' into hook-kill-v10-final-ultimate-final
This commit is contained in:
@@ -624,7 +624,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
if(href_list["jump"])
|
||||
var/mob/target = locate(href_list["jump"])
|
||||
var/mob/A = usr;
|
||||
var/mob/A = usr
|
||||
to_chat(A, "Teleporting to [target]...")
|
||||
//var/mob/living/silicon/ai/A = locate(href_list["track2"]) in GLOB.mob_list
|
||||
if(target && target != usr)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
if(message)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(istype(M, /mob/new_player))
|
||||
if(isnewplayer(M))
|
||||
continue
|
||||
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, M) && M.get_preference(CHAT_DEAD)) // Show the emote to admins/mods
|
||||
|
||||
@@ -767,17 +767,6 @@
|
||||
desc = "Bark bark bark."
|
||||
key = "vu"
|
||||
|
||||
/datum/language/zombie
|
||||
name = "Zombie"
|
||||
desc = "BRAAAAAAINS!"
|
||||
speech_verb = "moans"
|
||||
whisper_verb = "mutters"
|
||||
exclaim_verb = "wails"
|
||||
colour = "zombie"
|
||||
key = "zom"
|
||||
flags = RESTRICTED
|
||||
syllables = list("BRAAAAAAAAAAAAAAAAINS", "BRAAINS", "BRAINS")
|
||||
|
||||
/mob/proc/grant_all_babel_languages()
|
||||
for(var/la in GLOB.all_languages)
|
||||
var/datum/language/new_language = GLOB.all_languages[la]
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
death()
|
||||
return
|
||||
|
||||
if(paralysis || sleeping || getOxyLoss() > 50 || (HEALTH_THRESHOLD_CRIT <= health && check_death_method()))
|
||||
if(paralysis || sleeping || getOxyLoss() > 50 || (health <= HEALTH_THRESHOLD_CRIT && check_death_method()))
|
||||
if(stat == CONSCIOUS)
|
||||
KnockOut()
|
||||
create_debug_log("fell unconscious, trigger reason: [reason]")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
dna = new /datum/dna(null)
|
||||
// Species name is handled by set_species()
|
||||
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
set_species(new_species, 1, delay_icon_update = 1, skip_same_check = TRUE)
|
||||
|
||||
@@ -68,55 +68,55 @@
|
||||
status_flags = GODMODE|CANPUSH
|
||||
|
||||
/mob/living/carbon/human/skrell/Initialize(mapload)
|
||||
..(mapload, /datum/species/skrell)
|
||||
. = ..(mapload, /datum/species/skrell)
|
||||
|
||||
/mob/living/carbon/human/tajaran/Initialize(mapload)
|
||||
..(mapload, /datum/species/tajaran)
|
||||
. = ..(mapload, /datum/species/tajaran)
|
||||
|
||||
/mob/living/carbon/human/vulpkanin/Initialize(mapload)
|
||||
..(mapload, /datum/species/vulpkanin)
|
||||
. = ..(mapload, /datum/species/vulpkanin)
|
||||
|
||||
/mob/living/carbon/human/unathi/Initialize(mapload)
|
||||
..(mapload, /datum/species/unathi)
|
||||
. = ..(mapload, /datum/species/unathi)
|
||||
|
||||
/mob/living/carbon/human/vox/Initialize(mapload)
|
||||
..(mapload, /datum/species/vox)
|
||||
. = ..(mapload, /datum/species/vox)
|
||||
|
||||
/mob/living/carbon/human/voxarmalis/Initialize(mapload)
|
||||
..(mapload, /datum/species/vox/armalis)
|
||||
. = ..(mapload, /datum/species/vox/armalis)
|
||||
|
||||
/mob/living/carbon/human/skeleton/Initialize(mapload)
|
||||
..(mapload, /datum/species/skeleton)
|
||||
. = ..(mapload, /datum/species/skeleton)
|
||||
|
||||
/mob/living/carbon/human/kidan/Initialize(mapload)
|
||||
..(mapload, /datum/species/kidan)
|
||||
. = ..(mapload, /datum/species/kidan)
|
||||
|
||||
/mob/living/carbon/human/plasma/Initialize(mapload)
|
||||
..(mapload, /datum/species/plasmaman)
|
||||
. = ..(mapload, /datum/species/plasmaman)
|
||||
|
||||
/mob/living/carbon/human/slime/Initialize(mapload)
|
||||
..(mapload, /datum/species/slime)
|
||||
. = ..(mapload, /datum/species/slime)
|
||||
|
||||
/mob/living/carbon/human/grey/Initialize(mapload)
|
||||
..(mapload, /datum/species/grey)
|
||||
. = ..(mapload, /datum/species/grey)
|
||||
|
||||
/mob/living/carbon/human/abductor/Initialize(mapload)
|
||||
..(mapload, /datum/species/abductor)
|
||||
. = ..(mapload, /datum/species/abductor)
|
||||
|
||||
/mob/living/carbon/human/diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona)
|
||||
. = ..(mapload, /datum/species/diona)
|
||||
|
||||
/mob/living/carbon/human/pod_diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona/pod)
|
||||
. = ..(mapload, /datum/species/diona/pod)
|
||||
|
||||
/mob/living/carbon/human/machine/Initialize(mapload)
|
||||
..(mapload, /datum/species/machine)
|
||||
. = ..(mapload, /datum/species/machine)
|
||||
|
||||
/mob/living/carbon/human/machine/created
|
||||
name = "Integrated Robotic Chassis"
|
||||
|
||||
/mob/living/carbon/human/machine/created/Initialize(mapload)
|
||||
..()
|
||||
. = ..()
|
||||
rename_character(null, "Integrated Robotic Chassis ([rand(1, 9999)])")
|
||||
update_dna()
|
||||
for(var/obj/item/organ/external/E in bodyparts)
|
||||
@@ -129,34 +129,34 @@
|
||||
death()
|
||||
|
||||
/mob/living/carbon/human/shadow/Initialize(mapload)
|
||||
..(mapload, /datum/species/shadow)
|
||||
. = ..(mapload, /datum/species/shadow)
|
||||
|
||||
/mob/living/carbon/human/golem/Initialize(mapload)
|
||||
..(mapload, /datum/species/golem)
|
||||
. = ..(mapload, /datum/species/golem)
|
||||
|
||||
/mob/living/carbon/human/wryn/Initialize(mapload)
|
||||
..(mapload, /datum/species/wryn)
|
||||
. = ..(mapload, /datum/species/wryn)
|
||||
|
||||
/mob/living/carbon/human/nucleation/Initialize(mapload)
|
||||
..(mapload, /datum/species/nucleation)
|
||||
. = ..(mapload, /datum/species/nucleation)
|
||||
|
||||
/mob/living/carbon/human/drask/Initialize(mapload)
|
||||
..(mapload, /datum/species/drask)
|
||||
. = ..(mapload, /datum/species/drask)
|
||||
|
||||
/mob/living/carbon/human/monkey/Initialize(mapload)
|
||||
..(mapload, /datum/species/monkey)
|
||||
. = ..(mapload, /datum/species/monkey)
|
||||
|
||||
/mob/living/carbon/human/farwa/Initialize(mapload)
|
||||
..(mapload, /datum/species/monkey/tajaran)
|
||||
. = ..(mapload, /datum/species/monkey/tajaran)
|
||||
|
||||
/mob/living/carbon/human/wolpin/Initialize(mapload)
|
||||
..(mapload, /datum/species/monkey/vulpkanin)
|
||||
. = ..(mapload, /datum/species/monkey/vulpkanin)
|
||||
|
||||
/mob/living/carbon/human/neara/Initialize(mapload)
|
||||
..(mapload, /datum/species/monkey/skrell)
|
||||
. = ..(mapload, /datum/species/monkey/skrell)
|
||||
|
||||
/mob/living/carbon/human/stok/Initialize(mapload)
|
||||
..(mapload, /datum/species/monkey/unathi)
|
||||
. = ..(mapload, /datum/species/monkey/unathi)
|
||||
|
||||
/mob/living/carbon/human/Stat()
|
||||
..()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
species_exception = list(/datum/species/monkey)
|
||||
|
||||
/mob/living/carbon/human/monkey/punpun/Initialize(mapload)
|
||||
..()
|
||||
. = ..()
|
||||
name = "Pun Pun"
|
||||
real_name = name
|
||||
equip_to_slot(new /obj/item/clothing/under/punpun(src), slot_w_uniform)
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis
|
||||
var/speed_mod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
|
||||
var/blood_damage_type = OXY //What type of damage does this species take if it's low on blood?
|
||||
var/obj/item/mutanthands
|
||||
var/total_health = 100
|
||||
var/punchdamagelow = 0 //lowest possible punch damage
|
||||
var/punchdamagehigh = 9 //highest possible punch damage
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
#define REGENERATION_DELAY 60 // After taking damage, how long it takes for automatic regeneration to begin
|
||||
|
||||
/datum/species/zombie
|
||||
// 1spooky
|
||||
name = "High-Functioning Zombie"
|
||||
name_plural = "High-Functioning Zombies"
|
||||
icobase = 'icons/mob/human_races/r_zombie.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_zombie.dmi'
|
||||
dies_at_threshold = TRUE
|
||||
language = "Zombie"
|
||||
species_traits = list(NO_BLOOD, NOZOMBIE, NOTRANSSTING, NO_BREATHE, RADIMMUNE, NO_SCAN)
|
||||
var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg')
|
||||
warning_low_pressure = -1
|
||||
hazard_low_pressure = -1
|
||||
hazard_high_pressure = 999999999
|
||||
warning_high_pressure = 999999999
|
||||
cold_level_1 = -1
|
||||
cold_level_2 = -1
|
||||
cold_level_3 = -1
|
||||
tox_mod = 0
|
||||
flesh_color = "#00FF00" // for green examine text
|
||||
bodyflags = HAS_SKIN_COLOR
|
||||
dietflags = DIET_CARN
|
||||
has_organ = list(
|
||||
"heart" = /obj/item/organ/internal/heart,
|
||||
"lungs" = /obj/item/organ/internal/lungs,
|
||||
"liver" = /obj/item/organ/internal/liver,
|
||||
"kidneys" = /obj/item/organ/internal/kidneys,
|
||||
"brain" = /obj/item/organ/internal/brain,
|
||||
"appendix" = /obj/item/organ/internal/appendix,
|
||||
"eyes" = /obj/item/organ/internal/eyes,
|
||||
"ears" = /obj/item/organ/internal/ears)
|
||||
|
||||
|
||||
/datum/species/zombie/infectious
|
||||
name = "Infectious Zombie"
|
||||
mutanthands = /obj/item/zombie_hand
|
||||
icobase = 'icons/mob/human_races/r_zombie.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_zombie.dmi'
|
||||
brute_mod = 0.8 // 120 damage to KO a zombie, which kills it
|
||||
burn_mod = 0.8
|
||||
clone_mod = 0.8
|
||||
brain_mod = 0.8
|
||||
stamina_mod = 0.8
|
||||
speed_mod = 1.6
|
||||
default_language = "Zombie"
|
||||
var/heal_rate = 1
|
||||
var/regen_cooldown = 0
|
||||
|
||||
/datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H, amount)
|
||||
. = min(20, amount)
|
||||
|
||||
/datum/species/zombie/infectious/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, sharp = 0, obj/used_weapon = null)
|
||||
. = ..()
|
||||
if(damage)
|
||||
regen_cooldown = world.time + REGENERATION_DELAY
|
||||
|
||||
/datum/species/zombie/infectious/handle_life(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
H.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW
|
||||
|
||||
//Zombies never actually die, they just fall down until they regenerate enough to rise back up.
|
||||
//They must be restrained, beheaded or gibbed to stop being a threat.
|
||||
if(regen_cooldown < world.time)
|
||||
var/heal_amt = heal_rate
|
||||
if(H.InCritical())
|
||||
heal_amt *= 2
|
||||
H.heal_overall_damage(heal_amt,heal_amt)
|
||||
H.adjustToxLoss(-heal_amt)
|
||||
if(!H.InCritical() && prob(4))
|
||||
playsound(H, pick(spooks), 50, TRUE, 10)
|
||||
|
||||
//Congrats you somehow died so hard you stopped being a zombie
|
||||
/datum/species/zombie/infectious/handle_death(gibbed, mob/living/carbon/C)
|
||||
. = ..()
|
||||
var/obj/item/organ/internal/zombie_infection/infection
|
||||
infection = C.get_organ_slot("zombie_infection")
|
||||
if(infection)
|
||||
qdel(infection)
|
||||
|
||||
/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
|
||||
. = ..()
|
||||
// Deal with the source of this zombie corruption
|
||||
// Infection organ needs to be handled separately from mutant_organs
|
||||
// because it persists through species transitions
|
||||
if(mutanthands)
|
||||
H.drop_l_hand()
|
||||
H.drop_r_hand()
|
||||
H.put_in_hands(new mutanthands())
|
||||
H.put_in_hands(new mutanthands())
|
||||
var/obj/item/organ/internal/zombie_infection/infection
|
||||
infection = H.get_organ_slot("zombie_infection")
|
||||
if(!infection)
|
||||
infection = new()
|
||||
infection.insert(H)
|
||||
|
||||
/datum/species/zombie/infectious/on_species_loss(mob/living/carbon/human/C, datum/species/old_species)
|
||||
QDEL_NULL(C.r_hand)
|
||||
QDEL_NULL(C.l_hand)
|
||||
return ..()
|
||||
|
||||
#undef REGENERATION_DELAY
|
||||
@@ -243,7 +243,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
|
||||
|
||||
/mob/living/silicon/ai/proc/show_borg_info()
|
||||
stat(null, text("Connected cyborgs: [connected_robots.len]"))
|
||||
for(var/mob/living/silicon/robot/R in connected_robots)
|
||||
for(var/thing in connected_robots)
|
||||
var/mob/living/silicon/robot/R = thing
|
||||
var/robot_status = "Nominal"
|
||||
if(R.stat || !R.client)
|
||||
robot_status = "OFFLINE"
|
||||
@@ -251,8 +252,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
|
||||
robot_status = "DEPOWERED"
|
||||
// Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies!
|
||||
var/area/A = get_area(R)
|
||||
var/area_name = A ? sanitize(A.name) : "Unknown"
|
||||
stat(null, text("[R.name] | S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge] / [R.cell.maxcharge]" : "Empty"] | \
|
||||
Module: [R.designation] | Loc: [sanitize(A.name)] | Status: [robot_status]"))
|
||||
Module: [R.designation] | Loc: [area_name] | Status: [robot_status]"))
|
||||
|
||||
/mob/living/silicon/ai/rename_character(oldname, newname)
|
||||
if(!..(oldname, newname))
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
var/mode = 1;
|
||||
var/mode = 1
|
||||
|
||||
/obj/item/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
if(( (CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
braintype = "Robot"
|
||||
lawupdate = 0
|
||||
density = 0
|
||||
has_camera = FALSE
|
||||
req_one_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
|
||||
ventcrawler = 2
|
||||
magpulse = 1
|
||||
|
||||
@@ -85,6 +85,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
var/lockcharge //Used when locking down a borg to preserve cell charge
|
||||
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
|
||||
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
|
||||
var/has_camera = TRUE
|
||||
var/pdahide = 0 //Used to hide the borg from the messenger list
|
||||
var/tracking_entities = 0 //The number of known entities currently accessing the internal camera
|
||||
var/braintype = "Cyborg"
|
||||
@@ -135,7 +136,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
|
||||
init()
|
||||
|
||||
if(!camera && (!scrambledcodes || designation == "ERT"))
|
||||
if(has_camera && !camera)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.c_tag = real_name
|
||||
camera.network = list("SS13","Robots")
|
||||
@@ -238,7 +239,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
if(custom_name)
|
||||
return 0
|
||||
if(!allow_rename)
|
||||
to_chat(src, "<span class='warning'>Rename functionality is not enabled on this unit.</span>");
|
||||
to_chat(src, "<span class='warning'>Rename functionality is not enabled on this unit.</span>")
|
||||
return 0
|
||||
rename_self(braintype, 1)
|
||||
|
||||
@@ -1332,6 +1333,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
designation = "SpecOps"
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
has_camera = FALSE
|
||||
req_one_access = list(ACCESS_CENT_SPECOPS)
|
||||
ionpulse = 1
|
||||
magpulse = 1
|
||||
@@ -1420,6 +1422,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
designation = "Destroyer"
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
has_camera = FALSE
|
||||
req_one_access = list(ACCESS_CENT_SPECOPS)
|
||||
ionpulse = 1
|
||||
magpulse = 1
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
icon_state = "syndie_bloodhound"
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
has_camera = FALSE
|
||||
pdahide = 1
|
||||
faction = list("syndicate")
|
||||
bubble_icon = "syndibot"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/obj/machinery/bot_core/honkbot
|
||||
req_one_access = list(ACCESS_CLOWN, ACCESS_ROBOTICS, ACCESS_MIME)
|
||||
|
||||
/mob/living/simple_animal/bot/honkbot/Initialize()
|
||||
/mob/living/simple_animal/bot/honkbot/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
auto_patrol = TRUE
|
||||
|
||||
@@ -103,9 +103,9 @@
|
||||
name = "Space Wizard Corpse"
|
||||
outfit = /datum/outfit/wizardcorpse
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/clownoff/Initialize()
|
||||
/obj/effect/mob_spawn/human/corpse/clownoff/Initialize(mapload)
|
||||
mob_name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]"
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/datum/outfit/wizardcorpse
|
||||
name = "Space Wizard Corpse"
|
||||
|
||||
@@ -534,7 +534,7 @@ obj/effect/temp_visual/fireball
|
||||
duration = 9
|
||||
pixel_z = 270
|
||||
|
||||
/obj/effect/temp_visual/fireball/Initialize()
|
||||
/obj/effect/temp_visual/fireball/Initialize(mapload)
|
||||
. = ..()
|
||||
animate(src, pixel_z = 0, time = duration)
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
var/attempt_open = 0
|
||||
|
||||
// Pickup loot
|
||||
/mob/living/simple_animal/hostile/mimic/crate/Initialize()
|
||||
..()
|
||||
/mob/living/simple_animal/hostile/mimic/crate/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/obj/item/I in loc)
|
||||
I.loc = src
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
deathmessage = "wails as its form turns into a pulpy mush."
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
|
||||
/mob/living/simple_animal/hostile/netherworld/migo/Initialize()
|
||||
/mob/living/simple_animal/hostile/netherworld/migo/Initialize(mapload)
|
||||
. = ..()
|
||||
migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/voice/bcreep.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/mpatchedup.ogg', 'sound/voice/mfeelbetter.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heartbeat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/goonstation/effects/screech.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/goonstation/misc/airraid_loop.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/chainsaw.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshots/gunshot_silenced.ogg', 'sound/weapons/gunshots/gunshot.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlock_close.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlock_open.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/ambience/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/outbreak5.ogg', 'sound/ai/outbreak7.ogg', 'sound/ai/poweroff.ogg', 'sound/ai/radiation.ogg', 'sound/ai/shuttlecalled.ogg', 'sound/ai/shuttledock.ogg', 'sound/ai/shuttlerecalled.ogg', 'sound/ai/aimalf.ogg', 'sound/ambience/ambigen1.ogg', 'sound/ambience/ambigen3.ogg', 'sound/ambience/ambigen4.ogg', 'sound/ambience/ambigen5.ogg', 'sound/ambience/ambigen6.ogg', 'sound/ambience/ambigen10.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg') //hahahaha fuck you code divers
|
||||
|
||||
@@ -82,14 +82,14 @@
|
||||
|
||||
/obj/structure/spawner/nether/examine(mob/user)
|
||||
. = ..()
|
||||
if(isskeleton(user) || iszombie(user))
|
||||
if(isskeleton(user))
|
||||
. += "A direct link to another dimension full of creatures very happy to see you. <span class='nicegreen'>You can see your house from here!</span>"
|
||||
else
|
||||
. += "A direct link to another dimension full of creatures not very happy to see you. <span class='warning'>Entering the link would be a very bad idea.</span>"
|
||||
|
||||
/obj/structure/spawner/nether/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(isskeleton(user) || iszombie(user))
|
||||
if(isskeleton(user))
|
||||
to_chat(user, "<span class='notice'>You don't feel like going home yet...</span>")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] is violently pulled into the link!</span>", \
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
alert_on_shield_breach = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory/Initialize(mapload)
|
||||
..()
|
||||
. = ..()
|
||||
if(prob(50))
|
||||
// 50% chance of switching to extremely dangerous ranged variant
|
||||
melee_damage_lower = 10
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
LAssailant = null
|
||||
return ..()
|
||||
|
||||
/mob/Initialize()
|
||||
/mob/Initialize(mapload)
|
||||
GLOB.mob_list += src
|
||||
if(stat == DEAD)
|
||||
GLOB.dead_mob_list += src
|
||||
@@ -31,7 +31,7 @@
|
||||
GLOB.alive_mob_list += src
|
||||
set_focus(src)
|
||||
prepare_huds()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/atom/proc/prepare_huds()
|
||||
hud_list = list()
|
||||
@@ -752,7 +752,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
|
||||
if(client.holder && (client.holder.rights & R_ADMIN))
|
||||
is_admin = 1
|
||||
else if(stat != DEAD || istype(src, /mob/new_player))
|
||||
else if(stat != DEAD || isnewplayer(src))
|
||||
to_chat(usr, "<span class='notice'>You must be observing to use this!</span>")
|
||||
return
|
||||
|
||||
@@ -1297,8 +1297,6 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
.["Add Organ"] = "?_src_=vars;addorgan=[UID()]"
|
||||
.["Remove Organ"] = "?_src_=vars;remorgan=[UID()]"
|
||||
|
||||
.["Fix NanoUI"] = "?_src_=vars;fix_nano=[UID()]"
|
||||
|
||||
.["Add Verb"] = "?_src_=vars;addverb=[UID()]"
|
||||
.["Remove Verb"] = "?_src_=vars;remverb=[UID()]"
|
||||
|
||||
|
||||
@@ -434,7 +434,7 @@
|
||||
if(affecting)
|
||||
if(!affecting.buckled)
|
||||
affecting.pixel_x = 0
|
||||
affecting.pixel_y = 0 //used to be an animate, not quick enough for del'ing
|
||||
affecting.pixel_y = 0 //used to be an animate, not quick enough for qdel'ing
|
||||
affecting.layer = initial(affecting.layer)
|
||||
affecting.grabbed_by -= src
|
||||
affecting = null
|
||||
|
||||
@@ -459,7 +459,7 @@ GLOBAL_LIST_INIT(intents, list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM
|
||||
name = realname
|
||||
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || check_rights(R_ADMIN|R_MOD,0,M)) && M.get_preference(CHAT_DEAD))
|
||||
if(M.client && ((!isnewplayer(M) && M.stat == DEAD) || check_rights(R_ADMIN|R_MOD,0,M)) && M.get_preference(CHAT_DEAD))
|
||||
var/follow
|
||||
var/lname
|
||||
if(subject)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//Note that this proc does NOT do MMI related stuff!
|
||||
/mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num, var/forcekey = 0)
|
||||
|
||||
if(istype(src,/mob/new_player))
|
||||
if(isnewplayer(src))
|
||||
to_chat(usr, "<span class='warning'>cannot convert players who have not entered yet.</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -12,8 +12,13 @@
|
||||
stat = 2
|
||||
canmove = 0
|
||||
|
||||
/mob/new_player/New()
|
||||
/mob/new_player/Initialize(mapload)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
if(initialized)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
GLOB.mob_list += src
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
|
||||
/mob/new_player/verb/new_player_panel()
|
||||
set src = usr
|
||||
@@ -205,6 +210,7 @@
|
||||
if(!client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
||||
observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
|
||||
observer.key = key
|
||||
QDEL_NULL(mind)
|
||||
GLOB.respawnable_list += observer
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
var output = "<!DOCTYPE html><html><body>"
|
||||
if(polltype == POLLTYPE_MULTI || polltype == POLLTYPE_OPTION)
|
||||
select_query = GLOB.dbcon.NewQuery("SELECT text, percentagecalc, (SELECT COUNT(optionid) FROM [format_table_name("poll_vote")] WHERE optionid = poll_option.id GROUP BY optionid) AS votecount FROM [format_table_name("poll_option")] WHERE pollid = [pollid]");
|
||||
select_query = GLOB.dbcon.NewQuery("SELECT text, percentagecalc, (SELECT COUNT(optionid) FROM [format_table_name("poll_vote")] WHERE optionid = poll_option.id GROUP BY optionid) AS votecount FROM [format_table_name("poll_option")] WHERE pollid = [pollid]")
|
||||
select_query.Execute()
|
||||
var/list/options = list()
|
||||
var/total_votes = 1
|
||||
@@ -177,7 +177,7 @@
|
||||
output += "</table></td></tr>"
|
||||
output += "</table>"
|
||||
if(polltype == POLLTYPE_TEXT)
|
||||
select_query = GLOB.dbcon.NewQuery("SELECT replytext, COUNT(replytext) AS countresponse, GROUP_CONCAT(DISTINCT ckey SEPARATOR ', ') as ckeys FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] GROUP BY replytext ORDER BY countresponse DESC");
|
||||
select_query = GLOB.dbcon.NewQuery("SELECT replytext, COUNT(replytext) AS countresponse, GROUP_CONCAT(DISTINCT ckey SEPARATOR ', ') as ckeys FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] GROUP BY replytext ORDER BY countresponse DESC")
|
||||
select_query.Execute()
|
||||
output += {"
|
||||
<table width='900' align='center' bgcolor='#eeffee' cellspacing='0' cellpadding='4'>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
|
||||
|
||||
// Restrict some styles to specific species
|
||||
var/list/species_allowed = list("Human", "Slime People", "Infectious Zombie", "High-Functioning Zombie")
|
||||
var/list/species_allowed = list("Human", "Slime People")
|
||||
var/list/sprite_sheets = list() //For accessories common across species but need to use 'fitted' sprites (like underwear). e.g. list("Vox" = 'icons/mob/species/vox/iconfile.dmi')
|
||||
var/list/models_allowed = list() //Specifies which, if any, hairstyles or markings can be accessed by which prosthetics. Should equal the manufacturing company name in robolimbs.dm.
|
||||
var/list/heads_allowed = null //Specifies which, if any, alt heads a head marking, hairstyle or facial hair style is compatible with.
|
||||
|
||||
Reference in New Issue
Block a user