Merge remote-tracking branch 'upstream/master' into brass

This commit is contained in:
SabreML
2021-08-04 19:32:12 +01:00
699 changed files with 32075 additions and 47550 deletions
@@ -222,7 +222,7 @@
anchored = TRUE
/obj/effect/decal/cleanable/insectguts
name = "cockroach guts"
name = "bug guts"
desc = "One bug squashed. Four more will rise in its place."
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
@@ -53,6 +53,9 @@
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
return FALSE
/obj/effect/decal/cleanable/is_cleanable()
return TRUE
/obj/effect/decal/cleanable/Initialize(mapload)
. = ..()
if(loc && isturf(loc))
@@ -45,15 +45,15 @@
var/light = -1
var/flash = -1
// Clamp all values to MAX_EXPLOSION_RANGE
// We dont need to clamp here. It gets clamped inside explosion()
if(round(amount/12) > 0)
devastation = min (GLOB.max_ex_devastation_range, devastation + round(amount/12))
devastation += round(amount/12)
if(round(amount/6) > 0)
heavy = min (GLOB.max_ex_heavy_range, heavy + round(amount/6))
heavy += round(amount/6)
if(round(amount/3) > 0)
light = min (GLOB.max_ex_light_range, light + round(amount/3))
light += round(amount/3)
if(flashing && flashing_factor)
flash += (round(amount/4) * flashing_factor)
+3
View File
@@ -25,6 +25,9 @@
/obj/effect/acid_act()
return
/obj/effect/proc/is_cleanable() //Called when you want to clean something, and usualy delete it after
return FALSE
/obj/effect/mech_melee_attack(obj/mecha/M)
return 0
+44 -27
View File
@@ -1,8 +1,8 @@
/proc/gibs(atom/location, datum/dna/MobDNA) //CARN MARKER
new /obj/effect/gibspawner/generic(get_turf(location), MobDNA)
/proc/gibs(atom/location, datum/dna/mob_dna) //CARN MARKER
new /obj/effect/gibspawner/generic(get_turf(location), mob_dna)
/proc/hgibs(atom/location, datum/dna/MobDNA)
new /obj/effect/gibspawner/human(get_turf(location), MobDNA)
/proc/hgibs(atom/location, datum/dna/mob_dna)
new /obj/effect/gibspawner/human(get_turf(location), mob_dna)
/proc/xgibs(atom/location)
new /obj/effect/gibspawner/xeno(get_turf(location))
@@ -16,38 +16,55 @@
var/list/gibamounts = list()
var/list/gibdirections = list() //of lists
/obj/effect/gibspawner/New(location, datum/dna/MobDNA)
/obj/effect/gibspawner/Initialize(mapload, datum/dna/mob_dna)
..()
ASSERT(length(gibtypes) == length(gibamounts))
ASSERT(length(gibamounts) == length(gibdirections))
if(istype(loc,/turf)) //basically if a badmin spawns it
Gib(loc, MobDNA)
if(isturf(loc))
spawn_gibs(loc, mob_dna)
/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA = null)
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
to_chat(world, "<span class='warning'>Gib list length mismatch!</span>")
return
return INITIALIZE_HINT_QDEL // qdel once done
/**
* Spawns the gibs (and sparks if applicable) from the gib spawner.
*
* Arguments:
* * location - The position to spawn the gibs on.
* * mob_dna - The [/datum/dna] controlling the blood DNA and colour of the gibs.
*/
/obj/effect/gibspawner/proc/spawn_gibs(atom/location, datum/dna/mob_dna)
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sparks)
do_sparks(2, 1, location)
for(var/i = 1, i<= gibtypes.len, i++)
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
gib = new gibType(location)
for(var/gibtype in 1 to length(gibtypes))
if(!gibamounts[gibtype])
continue
for(var/I in 1 to gibamounts[gibtype])
var/gib_type = gibtypes[gibtype]
gib = new gib_type(location)
gib_dna(gib, mob_dna)
gib.blood_DNA = list()
if(MobDNA)
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
else if(istype(src, /obj/effect/gibspawner/xeno))
gib.blood_DNA["UNKNOWN DNA"] = "X*"
else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
gib.blood_DNA["Non-human DNA"] = "A+"
var/list/directions = gibdirections[i]
if(directions.len)
gib.streak(directions)
var/list/directions = gibdirections[gibtype]
if(length(directions))
gib.streak(directions)
qdel(src)
/**
* Assigns DNA and blood colour to mob gibs.
*
* Returns FALSE if there was no DNA data to transfer to the gibs, and TRUE if there was.
* Arguments:
* * gib - The [/obj/effect/decal/cleanable/blood/gibs] that is being edited.
* * mob_dna - The [/datum/dna] which is being transferred onto the gib.
*/
/obj/effect/gibspawner/proc/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!mob_dna)
return FALSE
gib.basecolor = mob_dna.species.blood_color
gib.update_icon()
gib.blood_DNA[mob_dna.unique_enzymes] = mob_dna.blood_type
return TRUE
+1 -2
View File
@@ -135,8 +135,7 @@
var/red_splash = list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0)
var/pure_red = list(0,0,0,0,0,0,0,0,0,1,0,0)
spawn(0)
new /obj/effect/hallucination/delusion(victim.loc, victim, force_kind = "demon", duration = duration, skip_nearby = 0)
new /obj/effect/hallucination/delusion(get_turf(victim), victim, 'icons/mob/mob.dmi', "daemon")
var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc)
chainsaw.flags |= NODROP | DROPDEL
@@ -15,6 +15,10 @@
gibamounts[6] = pick(0,1,2)
..()
/obj/effect/gibspawner/human/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!..()) // Probably admin spawned
gib.blood_DNA["Non-human DNA"] = "A+"
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up,/obj/effect/decal/cleanable/blood/gibs/xeno/down,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno/body,/obj/effect/decal/cleanable/blood/gibs/xeno/limb,/obj/effect/decal/cleanable/blood/gibs/xeno/core)
gibamounts = list(1,1,1,1,1,1,1)
@@ -24,6 +28,10 @@
gibamounts[6] = pick(0,1,2)
..()
/obj/effect/gibspawner/xeno/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!..())
gib.blood_DNA["UNKNOWN DNA"] = "X*"
/obj/effect/gibspawner/robot
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/robot/up,/obj/effect/decal/cleanable/blood/gibs/robot/down,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot/limb)
@@ -354,3 +354,12 @@
/obj/effect/temp_visual/impact_effect/ion
icon_state = "shieldsparkles"
duration = 6
/obj/effect/temp_visual/bsg_kaboom
name = "bluespace explosion"
icon = 'icons/effects/96x96.dmi'
icon_state = "explosionfast"
color = "blue"
pixel_x = -32
pixel_y = -32
duration = 42