mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Fixes and tweaks to the previous.
This commit is contained in:
@@ -43,7 +43,7 @@ proc/random_name(gender, species = "Human")
|
||||
if(species)
|
||||
current_species = all_species[species]
|
||||
|
||||
if(!current_species)
|
||||
if(!current_species || current_species.name == "Human")
|
||||
if(gender==FEMALE)
|
||||
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
else
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
|
||||
/obj/machinery/gibber
|
||||
name = "Gibber"
|
||||
name = "gibber"
|
||||
desc = "The name isn't descriptive enough?"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "grinder"
|
||||
density = 1
|
||||
anchored = 1
|
||||
req_access = list(access_kitchen,access_morgue)
|
||||
|
||||
var/operating = 0 //Is it on?
|
||||
var/dirty = 0 // Does it need cleaning?
|
||||
var/mob/living/occupant // Mob who has been put inside
|
||||
|
||||
var/gib_time = 40 // Time from starting until meat appears
|
||||
var/gib_throw_dir // Direction to spit meat and gibs in.
|
||||
var/gib_throw_dir = WEST // Direction to spit meat and gibs in.
|
||||
|
||||
use_power = 1
|
||||
idle_power_usage = 2
|
||||
@@ -29,6 +30,7 @@
|
||||
if(input_obj)
|
||||
if(isturf(input_obj.loc))
|
||||
input_plate = input_obj.loc
|
||||
gib_throw_dir = i
|
||||
del(input_obj)
|
||||
break
|
||||
|
||||
@@ -78,14 +80,18 @@
|
||||
else
|
||||
src.startgibbing(user)
|
||||
|
||||
/obj/machinery/gibber/examine()
|
||||
..()
|
||||
usr << "The safety guard is [emagged ? "<span class='danger'>disabled</span>" : "enabled"]."
|
||||
|
||||
/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user)
|
||||
|
||||
if(istype(W,/obj/item/weapon/card/emag))
|
||||
if(emagged)
|
||||
user << "The gibber safety guard is already disabled."
|
||||
if(istype(W,/obj/item/weapon/card))
|
||||
if(!allowed(user) && !istype(W,/obj/item/weapon/card/emag))
|
||||
user << "<span class='danger'>Access denied.</span>"
|
||||
return
|
||||
user << "<span class='danger'>You disable the gibber safety guard.</span>"
|
||||
emagged = 1
|
||||
emagged = !emagged
|
||||
user << "<span class='danger'>You [emagged ? "disable" : "enable"] the gibber safety guard.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = W
|
||||
@@ -199,7 +205,7 @@
|
||||
slab_nutrition /= slab_count
|
||||
|
||||
for(var/i=1 to slab_count)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(get_turf(src))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src)
|
||||
new_meat.name = "[slab_name] [new_meat.name]"
|
||||
new_meat.reagents.add_reagent("nutriment",slab_nutrition)
|
||||
|
||||
@@ -220,9 +226,14 @@
|
||||
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
operating = 0
|
||||
for (var/obj/item/thing in contents)
|
||||
for (var/obj/thing in contents)
|
||||
// Todo: unify limbs and internal organs
|
||||
// There's a chance that the gibber will fail to destroy some evidence.
|
||||
if((istype(thing,/obj/item/weapon/organ) || istype(thing,/obj/item/organ)) && prob(80))
|
||||
del(thing)
|
||||
continue
|
||||
thing.loc = get_turf(thing) // Drop it onto the turf for throwing.
|
||||
thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) // Being pelted with bits of meat and bone would hurt.
|
||||
thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),emagged ? 15 : 30) // Being pelted with bits of meat and bone would hurt.
|
||||
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA, var/spawn_inside, gibber_type = /obj/effect/gibspawner/generic, var/fleshcolor, var/bloodcolor)
|
||||
if(!spawn_inside)
|
||||
location = get_turf(location)
|
||||
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA, gibber_type = /obj/effect/gibspawner/generic, var/fleshcolor, var/bloodcolor)
|
||||
new gibber_type(location,viruses,MobDNA,fleshcolor,bloodcolor)
|
||||
|
||||
/obj/effect/gibspawner
|
||||
@@ -17,8 +15,6 @@
|
||||
|
||||
if(fleshcolor) src.fleshcolor = fleshcolor
|
||||
if(bloodcolor) src.bloodcolor = bloodcolor
|
||||
|
||||
if(istype(loc,/turf)) //basically if a badmin spawns it
|
||||
Gib(loc,viruses,MobDNA)
|
||||
|
||||
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
||||
@@ -33,7 +29,7 @@
|
||||
|
||||
if(sparks)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
s.set_up(2, 1, get_turf(location)) // Not sure if it's safe to pass an arbitrary object to set_up, todo
|
||||
s.start()
|
||||
|
||||
for(var/i = 1, i<= gibtypes.len, i++)
|
||||
@@ -62,6 +58,7 @@
|
||||
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type
|
||||
else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
|
||||
gib.blood_DNA["Non-human DNA"] = "A+"
|
||||
if(istype(location,/turf/))
|
||||
var/list/directions = gibdirections[i]
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
|
||||
@@ -641,12 +641,12 @@ datum/preferences
|
||||
else if((current_species.flags & IS_WHITELISTED) && !is_alien_whitelisted(user,current_species))
|
||||
restricted = 1
|
||||
|
||||
if(restricted && !check_rights(R_ADMIN, 0))
|
||||
if(restricted)
|
||||
if(restricted == 1)
|
||||
dat += "<font color='red'><b>You cannot play as this species.</br><small>If you wish to be whitelisted, you can make an application post on <a href='http://baystation12.net/forums/viewtopic.php?f=46&t=5319'>the forums</a>.</small></b></font>"
|
||||
dat += "<font color='red'><b>You cannot play as this species.</br><small>If you wish to be whitelisted, you can make an application post on <a href='http://baystation12.net/forums/viewtopic.php?f=46&t=5319'>the forums</a>.</small></b></font></br>"
|
||||
else if(restricted == 2)
|
||||
dat += "<font color='red'><b>You cannot play as this species.</br><small>This species is not available for play as a station race..</small></b></font>"
|
||||
else
|
||||
dat += "<font color='red'><b>You cannot play as this species.</br><small>This species is not available for play as a station race..</small></b></font></br>"
|
||||
if(!restricted || check_rights(R_ADMIN, 0))
|
||||
dat += "\[<a href='?src=\ref[user];preference=species;task=input;newspecies=[species_preview]'>select</a>\]"
|
||||
dat += "</center></body>"
|
||||
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud,
|
||||
/obj/item/clothing/under/golem, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits.
|
||||
var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits.
|
||||
for(var/U in typesof(/obj/item/clothing/under)-blocked)
|
||||
var/obj/item/clothing/under/V = new U
|
||||
src.clothing_choices[V.name] = U
|
||||
@@ -67,8 +66,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/blocked = list(/obj/item/clothing/head/chameleon,
|
||||
/obj/item/clothing/head/space/golem, /obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
|
||||
var/blocked = list(/obj/item/clothing/head/chameleon,/obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats.
|
||||
for(var/U in typesof(/obj/item/clothing/head)-blocked)
|
||||
var/obj/item/clothing/head/V = new U
|
||||
src.clothing_choices[V.name] = U
|
||||
@@ -119,8 +117,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/blocked = list(/obj/item/clothing/suit/chameleon,
|
||||
/obj/item/clothing/suit/golem, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice,
|
||||
var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice,
|
||||
/obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits.
|
||||
for(var/U in typesof(/obj/item/clothing/suit)-blocked)
|
||||
var/obj/item/clothing/suit/V = new U
|
||||
@@ -172,8 +169,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
var/blocked = list(/obj/item/clothing/shoes/chameleon,
|
||||
/obj/item/clothing/shoes/golem, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes.
|
||||
var/blocked = list(/obj/item/clothing/shoes/chameleon, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes.
|
||||
for(var/U in typesof(/obj/item/clothing/shoes)-blocked)
|
||||
var/obj/item/clothing/shoes/V = new U
|
||||
src.clothing_choices[V.name] = U
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
brainmob.client.screen.len = null //clear the hud
|
||||
|
||||
/obj/item/organ/brain/proc/transfer_identity(var/mob/living/carbon/H)
|
||||
name = "[H]'s brain"
|
||||
name = "\the [H]'s [initial(src.name)]"
|
||||
brainmob = new(src)
|
||||
brainmob.name = H.real_name
|
||||
brainmob.real_name = H.real_name
|
||||
@@ -39,7 +39,7 @@
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
brainmob << "\blue You feel slightly disoriented. That's normal when you're just a brain."
|
||||
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [initial(src.name)].</span>"
|
||||
callHook("debrain", list(brainmob))
|
||||
|
||||
/obj/item/organ/brain/examine(mob/user) // -- TLE
|
||||
@@ -73,3 +73,21 @@
|
||||
brainmob.mind.transfer_to(target)
|
||||
else
|
||||
target.key = brainmob.key
|
||||
|
||||
/obj/item/organ/brain/slime
|
||||
name = "slime core"
|
||||
desc = "A complex, organic knot of jelly and crystalline particles."
|
||||
prosthetic_name = null
|
||||
prosthetic_icon = null
|
||||
robotic = 2
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "green slime extract"
|
||||
|
||||
/obj/item/organ/brain/golem
|
||||
name = "chem"
|
||||
desc = "A tightly furled roll of paper, covered with indecipherable runes."
|
||||
prosthetic_name = null
|
||||
prosthetic_icon = null
|
||||
robotic = 2
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll"
|
||||
@@ -57,7 +57,7 @@
|
||||
for(var/mob/N in viewers(src, null))
|
||||
if(N.client)
|
||||
N.show_message(text("\red <B>[M] bursts out of [src]!</B>"), 2)
|
||||
. = ..(null,1)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/attack_hand(mob/M as mob)
|
||||
if(!istype(M, /mob/living/carbon)) return
|
||||
|
||||
@@ -8,8 +8,26 @@
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
|
||||
for(var/datum/organ/internal/I in internal_organs)
|
||||
var/obj/item/organ/current_organ = I.remove()
|
||||
current_organ.loc = src.loc
|
||||
current_organ.organ_data.rejecting = null
|
||||
var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in current_organ.reagents.reagent_list
|
||||
if(!organ_blood || !organ_blood.data["blood_DNA"])
|
||||
src.vessel.trans_to(current_organ, 5, 1, 1)
|
||||
|
||||
current_organ.removed(src)
|
||||
|
||||
if(current_organ && istype(loc,/turf))
|
||||
var/target_dir = pick(cardinal)
|
||||
var/turf/target_turf = loc
|
||||
var/steps = rand(1,2)
|
||||
for(var/i = 0;i<steps;i++)
|
||||
target_turf = get_step(target_turf,target_dir)
|
||||
current_organ.throw_at(target_turf)
|
||||
|
||||
..(species.gibbed_anim)
|
||||
gibs(loc, viruses, dna, null, null, species.flesh_color, species.blood_color)
|
||||
gibs(loc, viruses, dna, null, species.flesh_color, species.blood_color)
|
||||
|
||||
/mob/living/carbon/human/dust()
|
||||
if(species)
|
||||
|
||||
@@ -52,7 +52,10 @@
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
|
||||
msg += "<EM>[src.name]</EM>!\n"
|
||||
msg += "<EM>[src.name]</EM>"
|
||||
if(species.name != "Human")
|
||||
msg += ", a <b><font color='[species.flesh_color]'>[species.name]</font></b>"
|
||||
msg += "!\n"
|
||||
|
||||
//uniform
|
||||
if(w_uniform && !skipjumpsuit)
|
||||
|
||||
@@ -751,13 +751,13 @@
|
||||
|
||||
if(!lastpuke)
|
||||
lastpuke = 1
|
||||
src << "<spawn class='warning'>You feel nauseous..."
|
||||
src << "<span class='warning'>You feel nauseous...</span>"
|
||||
spawn(150) //15 seconds until second warning
|
||||
src << "<spawn class='warning'>You feel like you are about to throw up!"
|
||||
src << "<span class='warning'>You feel like you are about to throw up!</span>"
|
||||
spawn(100) //and you have 10 more for mad dash to the bucket
|
||||
Stun(5)
|
||||
|
||||
src.visible_message("<spawn class='warning'>[src] throws up!","<spawn class='warning'>You throw up!")
|
||||
src.visible_message("<span class='warning'>[src] throws up!</span>","<span class='warning'>You throw up!</span>")
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/turf/location = loc
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
/datum/species/shadow
|
||||
name = "Shadow"
|
||||
name_plural = "shadows"
|
||||
|
||||
icobase = 'icons/mob/human_races/r_shadow.dmi'
|
||||
deform = 'icons/mob/human_races/r_shadow.dmi'
|
||||
|
||||
language = "Sol Common" //todo?
|
||||
unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp)
|
||||
light_dam = 2
|
||||
darksight = 8
|
||||
flags = IS_RESTRICTED | NO_SCAN | NO_SLIP | NO_POISON
|
||||
has_organ = list()
|
||||
|
||||
blood_color = "#CCCCCC"
|
||||
flesh_color = "#AAAAAA"
|
||||
|
||||
remains_type = /obj/effect/decal/cleanable/ash
|
||||
death_message = "dissolves into ash..."
|
||||
|
||||
flags = IS_RESTRICTED | NO_BLOOD | NO_POISON | NO_SCAN | NO_SLIP | NO_POISON
|
||||
|
||||
/datum/species/shadow/handle_death(var/mob/living/carbon/human/H)
|
||||
spawn(1)
|
||||
new /obj/effect/decal/cleanable/ash(H.loc)
|
||||
del(H)
|
||||
@@ -175,10 +175,6 @@
|
||||
add_inherent_verbs(H)
|
||||
|
||||
/datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns).
|
||||
if(flags & IS_SYNTHETIC)
|
||||
H.h_style = ""
|
||||
spawn(100)
|
||||
H.update_hair()
|
||||
return
|
||||
|
||||
// Only used for alien plasma weeds atm, but could be used for Dionaea later.
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
/datum/species/golem
|
||||
name = "Golem"
|
||||
name_plural = "golems"
|
||||
|
||||
icobase = 'icons/mob/human_races/r_golem.dmi'
|
||||
deform = 'icons/mob/human_races/r_golem.dmi'
|
||||
|
||||
language = "Sol Common" //todo?
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch)
|
||||
flags = IS_RESTRICTED | NO_BREATHE | NO_PAIN | NO_BLOOD | IS_SYNTHETIC | NO_SCAN | NO_POISON
|
||||
@@ -8,6 +12,15 @@
|
||||
breath_type = null
|
||||
poison_type = null
|
||||
|
||||
blood_color = "#515573"
|
||||
flesh_color = "#137E8F"
|
||||
|
||||
has_organ = list(
|
||||
"brain" = /datum/organ/internal/brain/golem
|
||||
)
|
||||
|
||||
death_message = "becomes completely motionless..."
|
||||
|
||||
/datum/species/golem/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
if(H.mind)
|
||||
H.mind.assigned_role = "Golem"
|
||||
|
||||
@@ -1,10 +1,24 @@
|
||||
/datum/species/slime
|
||||
name = "Slime"
|
||||
name_plural = "slimes"
|
||||
|
||||
icobase = 'icons/mob/human_races/r_slime.dmi'
|
||||
deform = 'icons/mob/human_races/r_slime.dmi'
|
||||
|
||||
language = "Sol Common" //todo?
|
||||
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
|
||||
flags = IS_RESTRICTED | NO_SCAN | NO_SLIP | NO_BREATHE
|
||||
flags = IS_RESTRICTED | NO_BLOOD | NO_SCAN | NO_SLIP | NO_BREATHE
|
||||
darksight = 3
|
||||
|
||||
blood_color = "#05FF9B"
|
||||
flesh_color = "#05FFFB"
|
||||
|
||||
has_organ = list(
|
||||
"brain" = /datum/organ/internal/brain/slime
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
)
|
||||
|
||||
breath_type = null
|
||||
poison_type = null
|
||||
@@ -201,7 +201,11 @@
|
||||
blood_color = "#1F181F"
|
||||
flesh_color = "#575757"
|
||||
|
||||
has_organ = list(
|
||||
"heart" = /datum/organ/internal/heart,
|
||||
"brain" = /datum/organ/internal/brain,
|
||||
)
|
||||
has_organ = list() //TODO: Positronic brain.
|
||||
|
||||
/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(flags & IS_SYNTHETIC)
|
||||
H.h_style = ""
|
||||
spawn(100)
|
||||
if(H) H.update_hair()
|
||||
|
||||
@@ -490,7 +490,10 @@ proc/get_damage_icon_part(damage_state, body_part)
|
||||
/mob/living/carbon/human/regenerate_icons()
|
||||
..()
|
||||
if(monkeyizing) return
|
||||
|
||||
update_mutations(0)
|
||||
update_body(0)
|
||||
update_hair(0)
|
||||
update_inv_w_uniform(0)
|
||||
update_inv_wear_id(0)
|
||||
update_inv_gloves(0)
|
||||
|
||||
@@ -678,90 +678,6 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
target.enahnced = 1
|
||||
del(src)*/
|
||||
|
||||
////////Adamantine Golem stuff I dunno where else to put it
|
||||
|
||||
// This will eventually be removed.
|
||||
|
||||
/obj/item/clothing/under/golem
|
||||
name = "adamantine skin"
|
||||
desc = "a golem's skin"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
item_color = "golem"
|
||||
has_sensor = 0
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
canremove = 0
|
||||
|
||||
/obj/item/clothing/suit/golem
|
||||
name = "adamantine shell"
|
||||
desc = "a golem's thick outter shell"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.50
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS|HEAD
|
||||
slowdown = 1.0
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS | HEAD
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS | HEAD
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
canremove = 0
|
||||
armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/shoes/golem
|
||||
name = "golem's feet"
|
||||
desc = "sturdy adamantine feet"
|
||||
icon_state = "golem"
|
||||
item_state = null
|
||||
canremove = 0
|
||||
flags = NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/golem
|
||||
name = "golem's face"
|
||||
desc = "the imposing face of an adamantine golem"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
canremove = 0
|
||||
siemens_coefficient = 0
|
||||
unacidable = 1
|
||||
|
||||
/obj/item/clothing/mask/gas/golem
|
||||
name = "golem's face"
|
||||
desc = "the imposing face of an adamantine golem"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
canremove = 0
|
||||
siemens_coefficient = 0
|
||||
unacidable = 1
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/golem
|
||||
name = "golem's hands"
|
||||
desc = "strong adamantine hands"
|
||||
icon_state = "golem"
|
||||
item_state = null
|
||||
siemens_coefficient = 0
|
||||
canremove = 0
|
||||
|
||||
|
||||
/obj/item/clothing/head/space/golem
|
||||
icon_state = "golem"
|
||||
item_state = "dermal"
|
||||
item_color = "dermal"
|
||||
name = "golem's head"
|
||||
desc = "a golem's head"
|
||||
canremove = 0
|
||||
unacidable = 1
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/effect/golemrune
|
||||
anchored = 1
|
||||
desc = "a strange rune used to create golems. It glows when spirits are nearby."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/silicon/gib()
|
||||
..("gibbed-r")
|
||||
gibs(loc, viruses, null, null, /obj/effect/gibspawner/robot)
|
||||
gibs(loc, viruses, null, /obj/effect/gibspawner/robot)
|
||||
|
||||
/mob/living/silicon/dust()
|
||||
..("dust-r", /obj/effect/decal/remains/robot)
|
||||
|
||||
@@ -197,6 +197,9 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/gib()
|
||||
..(icon_gib,1)
|
||||
|
||||
/mob/living/simple_animal/emote(var/act, var/type, var/desc)
|
||||
if(act)
|
||||
..(act, type, desc)
|
||||
@@ -263,14 +266,14 @@
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch))
|
||||
|
||||
if(meat_type && (stat == DEAD))
|
||||
if(meat_amount && (meat_amount/2) >= 1)
|
||||
for(var/i = 0; i < meat_amount/2; i++)
|
||||
var/actual_meat_amount = max(1,(meat_amount/2))
|
||||
if(meat_type && actual_meat_amount>0 && (stat == DEAD))
|
||||
for(var/i=0;i<actual_meat_amount;i++)
|
||||
var/obj/item/meat = new meat_type(get_turf(src))
|
||||
meat.name = "[src.name] [meat.name]"
|
||||
if(small)
|
||||
user.visible_message("<span class='danger'>[user] chops up \the [src]!</span>")
|
||||
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
del(src)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] butchers \the [src] messily!</span>")
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
/obj/item/organ/diona/removed(var/mob/living/target,var/mob/living/user)
|
||||
|
||||
..()
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(!istype(target))
|
||||
del(src)
|
||||
@@ -51,9 +52,9 @@
|
||||
if(!diona)
|
||||
del(src)
|
||||
|
||||
spawn(1) // So it has time to be thrown about by the gib() proc.
|
||||
var/mob/living/carbon/alien/diona/D = new(get_turf(src))
|
||||
diona.request_player(D)
|
||||
|
||||
del(src)
|
||||
|
||||
// These are different to the standard diona organs as they have a purpose in other
|
||||
@@ -221,6 +222,8 @@
|
||||
icon_state = "brain-prosthetic"
|
||||
organ_tag = "stack"
|
||||
robotic = 2
|
||||
prosthetic_name = null
|
||||
prosthetic_icon = null
|
||||
|
||||
/obj/item/organ/stack/vox
|
||||
name = "vox cortical stack"
|
||||
@@ -662,10 +662,9 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
"<span class='moderate'><b>Your [display_name] goes flying off!</b></span>",\
|
||||
"You hear a terrible sound of ripping tendons and flesh.")
|
||||
|
||||
if(organ)
|
||||
//Throw organs around
|
||||
var/lol = pick(cardinal)
|
||||
step(organ,lol)
|
||||
if(istype(owner.loc,/turf) && organ)
|
||||
step(organ,pick(cardinal))
|
||||
|
||||
owner.update_body(1)
|
||||
|
||||
|
||||
@@ -250,6 +250,14 @@
|
||||
/datum/organ/internal/brain/xeno
|
||||
removed_type = /obj/item/organ/brain/xeno
|
||||
|
||||
/datum/organ/internal/brain/golem
|
||||
name = "golem chem"
|
||||
removed_type = /obj/item/organ/brain/golem
|
||||
|
||||
/datum/organ/internal/brain/slime
|
||||
name = "slime core"
|
||||
removed_type = /obj/item/organ/brain/slime
|
||||
|
||||
/datum/organ/internal/eyes
|
||||
name = "eyes"
|
||||
parent_organ = "head"
|
||||
@@ -271,7 +279,13 @@
|
||||
|
||||
if(!removed_type) return 0
|
||||
|
||||
var/obj/item/organ/removed_organ = new removed_type(get_turf(user))
|
||||
var/turf/target_loc
|
||||
if(user)
|
||||
target_loc = get_turf(user)
|
||||
else
|
||||
target_loc = get_turf(owner)
|
||||
|
||||
var/obj/item/organ/removed_organ = new removed_type(target_loc)
|
||||
|
||||
if(istype(removed_organ))
|
||||
removed_organ.organ_data = src
|
||||
|
||||
@@ -153,10 +153,10 @@
|
||||
|
||||
/obj/item/organ/proc/removed(var/mob/living/target,var/mob/living/user)
|
||||
|
||||
if(!target || !user)
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(organ_data.vital)
|
||||
if(target && user && organ_data.vital)
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> removed a vital organ ([src]) from [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
target.attack_log += "\[[time_stamp()]\]<font color='orange'> had a vital organ ([src]) removed by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
if(istype(user, /mob/living))
|
||||
var/mob/living/M = user
|
||||
if (HULK in M.mutations)
|
||||
M << "\red Your fingers are much too large for the trigger guard!"
|
||||
M << "<span class='danger'>Your fingers are much too large for the trigger guard!</span>"
|
||||
return
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -665,7 +665,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||
name = "meat"
|
||||
desc = "A slab of meat"
|
||||
desc = "A slab of green meat. Smells like acid."
|
||||
icon_state = "xenomeat"
|
||||
filling_color = "#43DE18"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
name = "meat"
|
||||
desc = "A slab of meat"
|
||||
desc = "A slab of meat."
|
||||
icon_state = "meat"
|
||||
health = 180
|
||||
filling_color = "#FF1C1C"
|
||||
@@ -14,7 +14,7 @@
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src)
|
||||
user << "You cut the meat in thin strips."
|
||||
user << "You cut the meat into thin strips."
|
||||
del(src)
|
||||
else
|
||||
..()
|
||||
@@ -32,4 +32,4 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
|
||||
name = "Corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
desc = "Tastes like... well, you know."
|
||||
Reference in New Issue
Block a user