Merge branch 'master' into placeholder

This commit is contained in:
Ferner
2021-02-20 03:12:27 +01:00
43 changed files with 225 additions and 83 deletions
+7
View File
@@ -0,0 +1,7 @@
--
-- Adds a deleted_by and deleted reason to ss13_characters in preparation for player-permitted un-delete
--
ALTER TABLE `ss13_characters`
ADD COLUMN `deleted_by` ENUM('player','staff') NULL DEFAULT NULL AFTER `gear_slot`,
ADD COLUMN `deleted_reason` TEXT NULL AFTER `deleted_by`;
+7 -1
View File
@@ -164,4 +164,10 @@
// Returns 1 if N is inbetween Min and Max
/proc/n_inrange(var/num, var/min=-1, var/max=1)
if(isnum(num)&&isnum(min)&&isnum(max))
return ((min <= num) && (num <= max))
return ((min <= num) && (num <= max))
#define MODULUS_FLOAT(X, Y) ( (X) - (Y) * round((X) / (Y)) )
// Will filter out extra rotations and negative rotations
// E.g: 540 becomes 180. -180 becomes 180.
#define SIMPLIFY_DEGREES(degrees) (MODULUS_FLOAT((degrees), 360))
+16
View File
@@ -55,6 +55,22 @@
else if(dx<0)
.+=360
/proc/get_projectile_angle(atom/source, atom/target)
var/sx = source.x * world.icon_size
var/sy = source.y * world.icon_size
var/tx = target.x * world.icon_size
var/ty = target.y * world.icon_size
var/atom/movable/AM
if(ismovable(source))
AM = source
sx += AM.step_x
sy += AM.step_y
if(ismovable(target))
AM = target
tx += AM.step_x
ty += AM.step_y
return SIMPLIFY_DEGREES(arctan(ty - sy, tx - sx))
//Returns location. Returns null if no location was found.
/proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = 0, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0)
/*
+2 -2
View File
@@ -36,8 +36,8 @@
suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo
suit_store = /obj/item/device/flashlight/pen
shoes = /obj/item/clothing/shoes/brown
bowman = /obj/item/device/radio/headset/heads/cmo
headset = /obj/item/device/radio/headset/heads/cmo/alt
headset = /obj/item/device/radio/headset/heads/cmo
bowman = /obj/item/device/radio/headset/heads/cmo/alt
tab_pda = /obj/item/modular_computer/handheld/pda/medical/cmo
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical/cmo
tablet = /obj/item/modular_computer/handheld/preset/medical/cmo
+4 -4
View File
@@ -41,11 +41,11 @@
M.facing_dir = null
M.update_canmove()
else
MA.anchored = TRUE
MA.anchored = TRUE
else
return 0
post_buckle(MA)
MA.layer = src.layer + 1
MA.layer = src.layer + 0.1
return 1
/obj/proc/unbuckle()
@@ -91,8 +91,8 @@
"<span class='notice'>You hear metal clanking.</span>")
else
MA.visible_message(\
"<span class='danger'>[MA.name] is buckled_to to [src] by [user.name]!</span>",\
"<span class='danger'>You are buckled_to to [src] by [user.name]!</span>",\
"<span class='danger'>[MA.name] is buckled to [src] by [user.name]!</span>",\
"<span class='danger'>You are buckled to [src] by [user.name]!</span>",\
"<span class='notice'>You hear metal clanking.</span>")
/obj/proc/user_unbuckle(mob/user)
+3 -3
View File
@@ -1,7 +1,7 @@
//generic procs copied from obj/effect/alien
/obj/effect/spider
name = "web"
desc = "It's stringy and sticky, eugh. Probably came from one of those giant spiders..."
desc = "It's stringy and sticky, eugh. Probably came from one of those greimorians..."
icon = 'icons/effects/effects.dmi'
anchored = TRUE
density = FALSE
@@ -321,14 +321,14 @@
qdel(O)
/obj/effect/decal/cleanable/spiderling_remains
name = "spiderling remains"
name = "greimorian larva remains"
desc = "Green squishy mess."
icon = 'icons/effects/effects.dmi'
icon_state = "greenshatter"
/obj/effect/spider/cocoon
name = "cocoon"
desc = "Something wrapped in silky spider web"
desc = "Something wrapped in silky greimorian web"
icon_state = "cocoon1"
health = 60
+1 -1
View File
@@ -24,7 +24,7 @@
return prob(60)
var/obj/structure/bed/B = A
if (istype(A, /obj/structure/bed) && B.buckled)//if it's a bed/chair and someone is buckled_to, it will not pass
if (istype(A, /obj/structure/bed) && B.buckled)//if it's a bed/chair and someone is buckled, it will not pass
return 0
if(istype(A, /obj/vehicle)) //no vehicles
@@ -157,8 +157,8 @@
spawn(0)
if(buckle(affecting))
affecting.visible_message(\
"<span class='danger'>[affecting.name] is buckled_to to [src] by [user.name]!</span>",\
"<span class='danger'>You are buckled_to to [src] by [user.name]!</span>",\
"<span class='danger'>[affecting.name] is buckled to [src] by [user.name]!</span>",\
"<span class='danger'>You are buckled to [src] by [user.name]!</span>",\
"<span class='notice'>You hear metal clanking.</span>")
qdel(W)
@@ -415,7 +415,6 @@
/obj/item/clothing/glasses/sunglasses/bst
name = "bluespace technician's glasses"
desc = "A pair of modified sunglasses. The word 'BST' is stamped on the side."
// var/list/obj/item/clothing/glasses/hud/health/hud = null
vision_flags = (SEE_TURFS|SEE_OBJS|SEE_MOBS)
see_invisible = SEE_INVISIBLE_NOLIGHTING
canremove = 0
@@ -443,12 +442,6 @@
to_chat(usr, "<span class='notice'>\The [src]'s vision mode is now <b>[mode]</b>.</span>")
/* New()
..()
src.hud += new/obj/item/clothing/glasses/hud/security(src)
src.hud += new/obj/item/clothing/glasses/hud/health(src)
return
*/
/obj/item/clothing/glasses/sunglasses/bst/attack_hand()
if(!usr)
return
@@ -109,6 +109,13 @@
allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Pharmacist", "First Responder", "Medical Intern")
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/suit/iaclabcoat
display_name = "IAC labcoat"
description = "It's a standard medical labcoat designed to be worn by the Interstellar Aid Corps."
path = /obj/item/clothing/suit/storage/toggle/labcoat/iac
allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "Pharmacist", "First Responder", "Medical Intern")
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/suit/poncho
display_name = "poncho selection"
path = /obj/item/clothing/accessory/poncho
+2 -2
View File
@@ -378,7 +378,7 @@ datum/preferences
else if(href_list["delete"])
if (!config.sql_saves)
return 0
if (alert(usr, "This will permanently delete the character you have loaded. Are you sure?", "Delete Character", "No", "Yes") == "Yes")
if (alert(usr, "You will be unable to re-create a character with the same name! Are you sure you want to delete the loaded character?", "Delete Character", "No", "Yes") == "Yes")
delete_character_sql(usr.client)
else
return 0
@@ -671,7 +671,7 @@ datum/preferences
to_chat(C, "<span class='notice'>Unable to establish database connection.</span>")
return
var/DBQuery/query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW() WHERE id = :char_id:")
var/DBQuery/query = dbcon.NewQuery("UPDATE ss13_characters SET deleted_at = NOW(), deleted_by = \"player\" WHERE id = :char_id:")
query.Execute(list("char_id" = current_character))
// Create a new character.
+12
View File
@@ -100,3 +100,15 @@
name = "hephaestus labcoat"
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Comes in Hephaestus colours."
icon_state = "labcoat_heph"
armor = list(
bio = ARMOR_BIO_RESISTANT
)
/obj/item/clothing/suit/storage/toggle/labcoat/iac
name = "iac labcoat"
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Comes in IAC colors."
icon_state = "labcoat_iac"
item_state = "labcoat_iac"
armor = list(
bio = ARMOR_BIO_RESISTANT
)
@@ -5,7 +5,7 @@
parent_organ = BP_HEAD
icon = 'icons/mob/npc/alien.dmi'
icon_state = "chitin"
vital = 1
vital = TRUE
/obj/item/organ/internal/brain/xeno
name = "thinkpan"
@@ -1414,6 +1414,7 @@
species.handle_post_spawn(src,kpg) // should be zero by default
maxHealth = species.total_health
health = maxHealth
spawn(0)
regenerate_icons()
@@ -378,7 +378,8 @@ This function restores all organs.
/mob/living/carbon/human/proc/get_organ(var/zone)
if(!zone) zone = BP_CHEST
if(!zone)
zone = BP_CHEST
if (zone in list(BP_EYES, BP_MOUTH))
zone = BP_HEAD
return organs_by_name[zone]
@@ -83,10 +83,21 @@
if (istype(buckled_to, /obj/structure/bed))
return
for(var/limb_tag in list(BP_L_LEG,BP_R_LEG,BP_L_FOOT,BP_R_FOOT))
var/static/support_limbs = list(
BP_L_LEG = BP_R_LEG,
BP_L_FOOT = BP_R_FOOT
)
var/has_opposite_limb = FALSE
for(var/limb_tag in list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT))
var/obj/item/organ/external/E = organs_by_name[limb_tag]
if(!E || (E.status & (ORGAN_MUTATED|ORGAN_DEAD)) || E.is_stump()) //should just be !E.is_usable() here but dislocation screws that up.
stance_damage += 2 // let it fail even if just foot&leg
has_opposite_limb = get_organ(support_limbs[limb_tag])
if(!has_opposite_limb)
stance_damage += 10 //No walking for you with no supporting limb, buddy.
break
else
stance_damage += 2
else if (E.is_malfunctioning())
//malfunctioning only happens intermittently so treat it as a missing limb when it procs
stance_damage += 2
@@ -100,20 +111,25 @@
// Canes and crutches help you stand (if the latter is ever added)
// One cane mitigates a broken leg+foot, or a missing foot.
// Two canes are needed for a lost leg. If you are missing both legs, canes aren't gonna help you.
if (l_hand && istype(l_hand, /obj/item/cane))
stance_damage -= 2
if (r_hand && istype(r_hand, /obj/item/cane))
stance_damage -= 2
// No double caning allowed, sorry. Canes also don't work if you're missing a functioning pair of feet or legs.
if(has_opposite_limb)
if(l_hand && istype(l_hand, /obj/item/cane))
stance_damage -= 2
else if(r_hand && istype(r_hand, /obj/item/cane))
stance_damage -= 2
// standing is poor
//Standing is poor.
if(stance_damage >= 4 || (stance_damage >= 2 && prob(5)))
if(!(lying || resting))
emote("scream")
if(!weakened)
custom_emote(VISIBLE_MESSAGE, "collapses!")
Weaken(3)
next_stance_collapse = world.time + (rand(8, 16) SECONDS)
if(stance_damage <= 5)
Weaken(3)
next_stance_collapse = world.time + (rand(8, 16) SECONDS)
else
Weaken(6) //No legs or feet means you should be really fucked.
/mob/living/carbon/human/proc/handle_grasp()
if(!l_hand && !r_hand)
@@ -83,20 +83,21 @@
zombie_type = SPECIES_ZOMBIE_SKRELL
/datum/species/skrell/handle_post_spawn(mob/living/carbon/human/H)
..()
H.set_psi_rank(PSI_COERCION, PSI_RANK_OPERANT)
/datum/species/skrell/handle_strip(var/mob/user, var/mob/living/carbon/human/H, var/action)
switch(action)
if("headtail")
if(!H.head)
if(!H.organs_by_name[BP_HEAD] || istype(H.organs_by_name[BP_HEAD], /obj/item/organ/external/stump))
to_chat(user, SPAN_WARNING("\The [H] doesn't have a head!"))
return
user.visible_message(SPAN_WARNING("\The [user] is trying to remove something from \the [H]'s headtails!"))
if(do_after(usr, HUMAN_STRIP_DELAY, act_target = H))
var/obj/item/storage/internal/skrell/S = locate() in H.head
if(do_after(user, HUMAN_STRIP_DELAY, act_target = H))
var/obj/item/storage/internal/skrell/S = locate() in H.organs_by_name[BP_HEAD]
var/obj/item/I = locate() in S
if(!I)
to_chat(usr, SPAN_WARNING("\The [H] had nothing in their headtail storage."))
to_chat(user, SPAN_WARNING("\The [H] had nothing in their headtail storage."))
return
S.remove_from_storage(I, get_turf(H))
return
@@ -865,10 +865,13 @@ There are several things that need to be remembered:
overlays_raw[shoe_layer] = ovr || result_layer
else
if(footprint_color) // Handles bloody feet.
var/image/bloodsies = image(species.blood_mask, "shoeblood")
bloodsies.color = footprint_color
bloodsies.appearance_flags = RESET_ALPHA
overlays_raw[SHOES_LAYER] = bloodsies
for(var/limb_tag in list(BP_L_FOOT, BP_R_FOOT))
var/obj/item/organ/external/E = get_organ(limb_tag)
if(E && !E.is_stump())
var/image/bloodsies = image(species.blood_mask, "shoeblood_[E.limb_name]")
bloodsies.color = footprint_color
bloodsies.appearance_flags = RESET_ALPHA
overlays_raw[SHOES_LAYER] = bloodsies
else
overlays_raw[SHOES_LAYER] = null
overlays_raw[SHOES_LAYER_ALT] = null
+1 -1
View File
@@ -113,7 +113,7 @@
var/buckle_message_user = ""
var/buckle_message_other = ""
if(buckled_to) //If the person is buckled_to, also unbuckle the person
if(buckled_to) //If the person is buckled, also unbuckle the person
buckle_message_user = " and unbuckle yourself"
buckle_message_other = " and to unbuckle themself"
buckled_to.user_unbuckle(src)
+1 -1
View File
@@ -4,7 +4,7 @@
desc = "A piece of juicy meat found in a person's head."
organ_tag = BP_BRAIN
parent_organ = BP_HEAD
vital = 1
vital = TRUE
icon_state = "brain"
force = 1.0
w_class = ITEMSIZE_SMALL
-1
View File
@@ -3,7 +3,6 @@
animate(pain, alpha = target, time = 15, easing = ELASTIC_EASING)
animate(pain, alpha = 0, time = 20)
mob/var/list/pain_stored = list()
mob/var/last_pain_message = ""
mob/var/next_pain_time = 0
+1 -1
View File
@@ -38,7 +38,7 @@
min_broken_damage = 50
w_class = ITEMSIZE_HUGE
body_part = UPPER_TORSO
vital = 1
vital = TRUE
parent_organ = null
limb_flags = 0
dislocated = -1
+3 -3
View File
@@ -156,7 +156,7 @@
icon_state = "surge_ipc"
organ_tag = "surge"
parent_organ = BP_CHEST
vital = 0
vital = FALSE
var/surge_left = 0
var/broken = 0
@@ -342,7 +342,7 @@
name = BP_BRAIN
organ_tag = BP_BRAIN
parent_organ = BP_CHEST
vital = 1
vital = TRUE
emp_coeff = 0.1
/obj/item/organ/internal/data
@@ -351,7 +351,7 @@
parent_organ = BP_GROIN
icon = 'icons/obj/cloning.dmi'
icon_state = "harddisk"
vital = 0
vital = FALSE
emp_coeff = 0.1
/obj/item/organ/internal/data/Initialize()
+13 -14
View File
@@ -4,13 +4,13 @@
/obj/item/organ/external/chest
name = "upper body"
limb_name = "chest"
limb_name = BP_CHEST
icon_name = "torso"
max_damage = 100
min_broken_damage = 35
w_class = ITEMSIZE_HUGE
body_part = UPPER_TORSO
vital = 1
vital = TRUE
amputation_point = "spine"
joint = "neck"
artery_name = "internal thoracic artery"
@@ -29,13 +29,12 @@
/obj/item/organ/external/groin
name = "lower body"
limb_name = "groin"
limb_name = BP_GROIN
icon_name = "groin"
max_damage = 100
min_broken_damage = 35
w_class = ITEMSIZE_LARGE
body_part = LOWER_TORSO
vital = 1
parent_organ = BP_CHEST
amputation_point = "lumbar"
joint = "hip"
@@ -51,7 +50,7 @@
return "[owner.get_pronoun("has")] [blood_type] running down their thighs!"
/obj/item/organ/external/arm
limb_name = "l_arm"
limb_name = BP_L_ARM
name = "left arm"
icon_name = "l_arm"
max_damage = 50
@@ -73,7 +72,7 @@
return "[owner.get_pronoun("has")] [blood_type] running down their sleeves!"
/obj/item/organ/external/arm/right
limb_name = "r_arm"
limb_name = BP_R_ARM
name = "right arm"
icon_name = "r_arm"
body_part = ARM_RIGHT
@@ -83,7 +82,7 @@
amputation_point = "right shoulder"
/obj/item/organ/external/leg
limb_name = "l_leg"
limb_name = BP_L_LEG
name = "left leg"
icon_name = "l_leg"
max_damage = 50
@@ -106,7 +105,7 @@
return "[owner.get_pronoun("has")] [blood_type] pooling at their feet!"
/obj/item/organ/external/leg/right
limb_name = "r_leg"
limb_name = BP_R_LEG
name = "right leg"
icon_name = "r_leg"
body_part = LEG_RIGHT
@@ -115,7 +114,7 @@
amputation_point = "right hip"
/obj/item/organ/external/foot
limb_name = "l_foot"
limb_name = BP_L_FOOT
name = "left foot"
icon_name = "l_foot"
max_damage = 35
@@ -142,7 +141,7 @@
..()
/obj/item/organ/external/foot/right
limb_name = "r_foot"
limb_name = BP_R_FOOT
name = "right foot"
icon_name = "r_foot"
body_part = FOOT_RIGHT
@@ -152,7 +151,7 @@
amputation_point = "right ankle"
/obj/item/organ/external/hand
limb_name = "l_hand"
limb_name = BP_L_HAND
name = "left hand"
icon_name = "l_hand"
max_damage = 35
@@ -191,7 +190,7 @@
..()
/obj/item/organ/external/hand/right
limb_name = "r_hand"
limb_name = BP_R_HAND
name = "right hand"
icon_name = "r_hand"
body_part = HAND_RIGHT
@@ -200,14 +199,14 @@
amputation_point = "right wrist"
/obj/item/organ/external/head
limb_name = "head"
limb_name = BP_HEAD
icon_name = "head"
name = BP_HEAD
max_damage = 75
min_broken_damage = 35
w_class = ITEMSIZE_NORMAL
body_part = HEAD | FACE
vital = 1
vital = TRUE
parent_organ = BP_CHEST
joint = "jaw"
artery_name = "cartoid artery"
+1 -2
View File
@@ -4,7 +4,6 @@
/obj/item/organ/external/groin/skeleton
name = "pelvis"
vital = 0
/obj/item/organ/external/arm/skeleton
dislocated = -1
@@ -33,5 +32,5 @@
/obj/item/organ/external/head/skeleton
name = "skull"
dislocated = -1
vital = 0
vital = FALSE
+2
View File
@@ -389,6 +389,8 @@
else
user.visible_message(SPAN_WARNING("\The [user] hits \the [src], but it doesn't break."), SPAN_WARNING("You hit \the [src], but it doesn't break."), SPAN_WARNING("You hear something hitting against glass."))
/obj/machinery/light/bullet_act(obj/item/projectile/P, def_zone)
shatter()
// returns whether this light has power
// true if area has power
+3 -3
View File
@@ -311,7 +311,7 @@
/obj/item/projectile/proc/old_style_target(atom/target, atom/source)
if(!source)
source = get_turf(src)
setAngle(Get_Angle(source, target))
setAngle(get_projectile_angle(source, target))
/obj/item/projectile/proc/fire(angle, atom/direct_target)
//If no angle needs to resolve it from xo/yo!
@@ -332,7 +332,7 @@
qdel(src)
return
var/turf/target = locate(Clamp(starting + xo, 1, world.maxx), Clamp(starting + yo, 1, world.maxy), starting.z)
setAngle(Get_Angle(src, target))
setAngle(get_projectile_angle(src, target))
if(dispersion)
setAngle(Angle + rand(-dispersion, dispersion))
original_angle = Angle
@@ -368,7 +368,7 @@
else if(targloc && curloc)
yo = targloc.y - curloc.y
xo = targloc.x - curloc.x
setAngle(Get_Angle(src, targloc))
setAngle(get_projectile_angle(src, targloc))
else
crash_with("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!")
qdel(src)
+7 -2
View File
@@ -13,7 +13,6 @@
animate_movement=1
light_range = 3
can_buckle = 1
buckle_movable = 1
buckle_lying = 0
@@ -47,6 +46,10 @@
..()
//spawn the cell you want in each vehicle
/obj/vehicle/Initialize()
. = ..()
LAZYADD(can_buckle, /mob/living)
/obj/vehicle/Move()
if(world.time > l_move_time + move_delay)
var/old_loc = get_turf(src)
@@ -75,6 +78,9 @@
else
return 0
/obj/vehicle/proc/create_vehicle_overlay()
return
/obj/vehicle/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/hand_labeler))
return
@@ -296,7 +302,6 @@
C.pixel_y += mob_offset_y
else
C.pixel_y += load_offset_y
C.layer = layer + 0.1 //so it sits above the vehicle
if(ismob(C))
buckle(C)
+44
View File
@@ -35,6 +35,50 @@
-->
<div class="commit sansserif">
<h2 class="date">19 February 2021</h2>
<h3 class="author">Arrow768 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Updates the character deletion warning to reflect that it is not possible to create another character with the same name.</li>
</ul>
<h3 class="author">Geeves updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Three Towns Cider cans now have a crushed icon state.</li>
<li class="bugfix">Removing items from skrell headtail pocket storage now works properly. It used to check if they had a hat, not a head.</li>
</ul>
<h3 class="author">William Murdoch updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added a new labcoat in IAC colors to the loadout.</li>
</ul>
<h2 class="date">18 February 2021</h2>
<h3 class="author">Alberyk updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixed vehicles not working properly.</li>
</ul>
<h3 class="author">Geeves updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes CMO headset selection being flipped.</li>
<li class="bugfix">Fixes how projectile angles are calculated, this should fix emitter shots going diagonally.</li>
<li class="rscadd">Shooting light fixtures will now cause them to break.</li>
</ul>
<h3 class="author">MattAtlas updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">The groin is no longer vital.</li>
<li class="tweak">Reworks how stance damage works slightly. Having no feet or no legs means you can no longer walk at all. Behaviour with only one foot unchanged.</li>
<li class="tweak">Canes no longer help you when you have no legs or feet.</li>
<li class="bugfix">Non-existant feet are no longer bloody.</li>
</ul>
<h2 class="date">17 February 2021</h2>
<h3 class="author">Sparky_hotdog updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">Fixed a few grammar issues when buckling people to things.</li>
</ul>
<h3 class="author">WickedCybs updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">References to spiderlings and spiders should now reference greimorians. Overt references like &#x27;spiderling remains&#x27; are now &#x27;greimorian larva remains&#x27; too.</li>
</ul>
<h2 class="date">16 February 2021</h2>
<h3 class="author">Geeves updated:</h3>
<ul class="changes bgimages16">
+31
View File
@@ -18348,3 +18348,34 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
the lighting control program, and via individual APCs.
Yonnimer:
- rscadd: Makes dionae naturally insulated against being shocked
2021-02-17:
Sparky_hotdog:
- spellcheck: Fixed a few grammar issues when buckling people to things.
WickedCybs:
- bugfix: References to spiderlings and spiders should now reference greimorians.
Overt references like &#x27;spiderling remains&#x27; are now &#x27;greimorian
larva remains&#x27; too.
2021-02-18:
Alberyk:
- bugfix: Fixed vehicles not working properly.
Geeves:
- bugfix: Fixes CMO headset selection being flipped.
- bugfix: Fixes how projectile angles are calculated, this should fix emitter shots
going diagonally.
- rscadd: Shooting light fixtures will now cause them to break.
MattAtlas:
- tweak: The groin is no longer vital.
- tweak: Reworks how stance damage works slightly. Having no feet or no legs means
you can no longer walk at all. Behaviour with only one foot unchanged.
- tweak: Canes no longer help you when you have no legs or feet.
- bugfix: Non-existant feet are no longer bloody.
2021-02-19:
Arrow768:
- tweak: Updates the character deletion warning to reflect that it is not possible
to create another character with the same name.
Geeves:
- bugfix: Three Towns Cider cans now have a crushed icon state.
- bugfix: Removing items from skrell headtail pocket storage now works properly.
It used to check if they had a hat, not a head.
William Murdoch:
- rscadd: Added a new labcoat in IAC colors to the loadout.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 KiB

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

+1 -1
View File
@@ -29564,7 +29564,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -24
},
/obj/item/weldpack{
/obj/item/reagent_containers/weldpack{
pixel_y = -10
},
/turf/simulated/floor/tiled/dark,
+3 -3
View File
@@ -7289,7 +7289,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/obj/machinery/status_display{
layer = 4;
@@ -8259,7 +8259,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -12046,7 +12046,7 @@
"avD" = (
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/tiled,
/area/bridge/aibunker)
+1 -1
View File
@@ -600,7 +600,7 @@
"abq" = (
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/airless,
/area/mine/unexplored)
+2 -2
View File
@@ -4161,7 +4161,7 @@
/obj/effect/decal/cleanable/cobweb2,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
@@ -7945,7 +7945,7 @@
},
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/tiled/white,
/area/maintenance/medbay_virology)
+2 -2
View File
@@ -141,7 +141,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/plating,
/area/store)
@@ -387,7 +387,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/lino/grey,
/area/store)
+4 -4
View File
@@ -82,7 +82,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/tiled,
/area/dungeon/sol_outpost)
@@ -115,7 +115,7 @@
/obj/structure/toilet,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/tiled/white,
@@ -638,7 +638,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/turf/simulated/floor/wood,
/area/dungeon/sol_outpost)
@@ -960,7 +960,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
icon_state = "spiderling";
name = "dead spider"
name = "dead greimorian"
},
/obj/machinery/light{
brightness_color = "#FA8282"