mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -3585,13 +3585,13 @@ var/list/grind_products = list()
|
||||
volume = 100
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask
|
||||
name = "Captain's Flask"
|
||||
name = "captain\'s flask"
|
||||
desc = "A metal flask belonging to the captain"
|
||||
icon_state = "flask"
|
||||
volume = 60
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dflask
|
||||
name = "Detective's Flask"
|
||||
name = "detective\'s flask"
|
||||
desc = "A well used metal flask with the detective's name etched into it."
|
||||
icon_state = "dflask"
|
||||
volume = 60
|
||||
|
||||
@@ -710,3 +710,100 @@ obj/item/clothing/suit/justice
|
||||
icon_state = "creamsuit"
|
||||
item_state = "creamsuit"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_orange
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
item_state = "creamsuit"
|
||||
color = "bride_orange"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/wedding/suit_white
|
||||
name = "white suit"
|
||||
desc = "A fabulous white suit with orange shirt."
|
||||
icon_state = "white_suit"
|
||||
item_state = "creamsuit"
|
||||
color = "white_suit"
|
||||
|
||||
/obj/item/clothing/under/wedding/bridesmaid
|
||||
name = "yellow dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bridesmaid"
|
||||
item_state = "creamsuit"
|
||||
color = "bridesmaid"
|
||||
|
||||
/obj/item/clothing/under/wedding/firedress
|
||||
name = "flaming hot black dress"
|
||||
desc = "A small black dress with blue flames print on it."
|
||||
icon_state = "dress_fire"
|
||||
color = "dress_fire"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_orange
|
||||
name = "orange dress"
|
||||
icon_state = "d_orange"
|
||||
color = "d_orange"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_green
|
||||
name = "green dress"
|
||||
icon_state = "d_green"
|
||||
color = "d_green"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_purple
|
||||
name = "purple dress"
|
||||
icon_state = "d_purple"
|
||||
color = "d_purple"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_red
|
||||
name = "red dress"
|
||||
icon_state = "d_red"
|
||||
color = "d_red"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_blue
|
||||
name = "blue dress"
|
||||
icon_state = "d_blue"
|
||||
color = "d_blue"
|
||||
|
||||
/obj/item/clothing/under/wedding/officer_blue
|
||||
name = "blue officer dress"
|
||||
icon_state = "officer_blue"
|
||||
color = "officer_blue"
|
||||
|
||||
/obj/item/clothing/under/wedding/dress_vampire
|
||||
name = "vampire dress"
|
||||
icon_state = "d_vampire"
|
||||
color = "d_vampire"
|
||||
|
||||
/obj/item/clothing/under/wedding/orangedress
|
||||
name = "orange dress"
|
||||
desc = "A small and not puffy orange dress."
|
||||
icon_state = "dress_orange"
|
||||
item_state = "creamsuit"
|
||||
color = "dress_orange"
|
||||
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_pink
|
||||
name = "pink swimsuit"
|
||||
desc = "A rather skimpy pink swimsuit."
|
||||
icon_state = "stripper_p_under"
|
||||
color = "stripper_p"
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_green
|
||||
name = "green swimsuit"
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g_under"
|
||||
color = "stripper_g"
|
||||
|
||||
/obj/item/clothing/suit/stripper/stripper_pink
|
||||
name = "pink skimpy dress"
|
||||
desc = "A rather skimpy pink dress."
|
||||
icon_state = "stripper_p_over"
|
||||
item_state = "stripper_p"
|
||||
|
||||
/obj/item/clothing/suit/stripper/stripper_green
|
||||
name = "green skimpy dress"
|
||||
desc = "A rather skimpy green dress."
|
||||
icon_state = "stripper_g_over"
|
||||
item_state = "stripper_g"
|
||||
@@ -164,6 +164,8 @@
|
||||
atkcarbon = 1
|
||||
atksilicon = 0
|
||||
attacktext = "bites"
|
||||
melee_damage_lower = 0.1
|
||||
melee_damage_upper = 0.5 //They're just roaches!
|
||||
layer = 2.5 //so they can hide under objects
|
||||
|
||||
Bump(var/mob/M)
|
||||
|
||||
@@ -252,6 +252,13 @@
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "odysseus_spec_id"
|
||||
|
||||
/obj/item/weapon/clipboard/fluff/mcreary_journal //sirribbot: James McReary
|
||||
name = "McReary's journal"
|
||||
desc = "A journal with a warning sticker on the front cover. The initials \"J.M.\" are written on the back."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "mcreary_journal"
|
||||
item_state = "mcreary_journal"
|
||||
|
||||
//////////////////////////////////
|
||||
//////////// Clothing ////////////
|
||||
//////////////////////////////////
|
||||
@@ -326,7 +333,6 @@
|
||||
desc = "Because when you're the toughest Mother Hubbard on the station, nobody's criticizing your fashion sense."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "enos_adlai_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//////////// Suits ////////////
|
||||
|
||||
@@ -398,8 +404,17 @@
|
||||
item_state = "tian_dress"
|
||||
color = "tian_dress"
|
||||
|
||||
/obj/item/clothing/under/rank/bartender/fluff/classy //searif: Ara Al-Jazari
|
||||
name = "classy bartender uniform"
|
||||
desc = "A prim and proper uniform that looks very similar to a bartender's, the only differences being a red tie, waistcoat and a rag hanging out of the back pocket."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "ara_bar_uniform"
|
||||
item_state = "ara_bar_uniform"
|
||||
color = "ara_bar_uniform"
|
||||
|
||||
//////////// Masks ////////////
|
||||
|
||||
/*
|
||||
/obj/item/clothing/mask/fluff/flagmask //searif: Tsiokeriio Tarbell
|
||||
name = "\improper First Nations facemask"
|
||||
desc = "A simple cloth rag that bears the flag of the first nations."
|
||||
@@ -409,6 +424,7 @@
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
*/
|
||||
|
||||
/obj/item/clothing/mask/mara_kilpatrick_1 //staghorn: Mara Kilpatrick
|
||||
name = "shamrock pendant"
|
||||
|
||||
@@ -362,35 +362,35 @@
|
||||
O = locate(/obj/item, input.loc)
|
||||
if (O)
|
||||
if (istype(O,/obj/item/weapon/ore/iron))
|
||||
ore_iron++;
|
||||
ore_iron = ore_iron + O:amount;
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/glass))
|
||||
ore_glass++;
|
||||
ore_glass = ore_glass + O:amount;
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/diamond))
|
||||
ore_diamond++;
|
||||
ore_diamond = ore_diamond + O:amount;
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/plasma))
|
||||
ore_plasma++
|
||||
ore_plasma = ore_plasma + O:amount
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/gold))
|
||||
ore_gold++
|
||||
ore_gold = ore_gold + O:amount
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/silver))
|
||||
ore_silver++
|
||||
ore_silver = ore_silver + O:amount
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/uranium))
|
||||
ore_uranium++
|
||||
ore_uranium = ore_uranium + O:amount
|
||||
del(O)
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/clown))
|
||||
ore_clown++
|
||||
ore_clown = ore_clown + O:amount
|
||||
del(O)
|
||||
continue
|
||||
O.loc = src.output.loc
|
||||
|
||||
@@ -27,6 +27,48 @@
|
||||
if (src.output && src.input)
|
||||
if (locate(/obj/structure/ore_box, input.loc))
|
||||
var/obj/structure/ore_box/BOX = locate(/obj/structure/ore_box, input.loc)
|
||||
BOX.update()
|
||||
if (BOX.amt_diamond > 0)
|
||||
var/obj/item/weapon/ore/diamond/G = new /obj/item/weapon/ore/diamond
|
||||
G.amount = BOX.amt_diamond
|
||||
G.loc = output.loc
|
||||
BOX.amt_diamond = 0
|
||||
if (BOX.amt_glass > 0)
|
||||
var/obj/item/weapon/ore/glass/G = new /obj/item/weapon/ore/glass
|
||||
G.amount = BOX.amt_glass
|
||||
G.loc = output.loc
|
||||
BOX.amt_glass = 0
|
||||
if (BOX.amt_plasma > 0)
|
||||
var/obj/item/weapon/ore/plasma/G = new /obj/item/weapon/ore/plasma
|
||||
G.amount = BOX.amt_plasma
|
||||
G.loc = output.loc
|
||||
BOX.amt_plasma = 0
|
||||
if (BOX.amt_iron > 0)
|
||||
var/obj/item/weapon/ore/iron/G = new /obj/item/weapon/ore/iron
|
||||
G.amount = BOX.amt_iron
|
||||
G.loc = output.loc
|
||||
BOX.amt_iron = 0
|
||||
if (BOX.amt_silver > 0)
|
||||
var/obj/item/weapon/ore/silver/G = new /obj/item/weapon/ore/silver
|
||||
G.amount = BOX.amt_silver
|
||||
G.loc = output.loc
|
||||
BOX.amt_silver = 0
|
||||
if (BOX.amt_gold > 0)
|
||||
var/obj/item/weapon/ore/gold/G = new /obj/item/weapon/ore/gold
|
||||
G.amount = BOX.amt_gold
|
||||
G.loc = output.loc
|
||||
BOX.amt_gold = 0
|
||||
if (BOX.amt_uranium > 0)
|
||||
var/obj/item/weapon/ore/uranium/G = new /obj/item/weapon/ore/uranium
|
||||
G.amount = BOX.amt_uranium
|
||||
G.loc = output.loc
|
||||
BOX.amt_uranium = 0
|
||||
if (BOX.amt_clown > 0)
|
||||
var/obj/item/weapon/ore/clown/G = new /obj/item/weapon/ore/clown
|
||||
G.amount = BOX.amt_clown
|
||||
G.loc = output.loc
|
||||
BOX.amt_clown = 0
|
||||
|
||||
var/i = 0
|
||||
for (var/obj/item/weapon/ore/O in BOX.contents)
|
||||
BOX.contents -= O
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name = "Rock"
|
||||
icon = 'Mining.dmi'
|
||||
icon_state = "ore"
|
||||
var/amount = 1
|
||||
|
||||
/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -51,6 +51,14 @@
|
||||
desc = "A heavy box used for storing ore."
|
||||
density = 1
|
||||
var/capacity = 200
|
||||
var/amt_gold = 0
|
||||
var/amt_silver = 0
|
||||
var/amt_diamond = 0
|
||||
var/amt_glass = 0
|
||||
var/amt_iron = 0
|
||||
var/amt_plasma = 0
|
||||
var/amt_uranium = 0
|
||||
var/amt_clown = 0
|
||||
|
||||
New()
|
||||
if(prob(50))
|
||||
@@ -69,9 +77,45 @@
|
||||
user << "\blue You empty the satchel into the box."
|
||||
else
|
||||
user << "\blue The ore box is full."
|
||||
|
||||
return
|
||||
|
||||
/obj/structure/ore_box/proc/update(obj, mob/user as mob)
|
||||
for (var/obj/item/weapon/ore/C in contents)
|
||||
if (istype(C,/obj/item/weapon/ore/diamond))
|
||||
amt_diamond++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/glass))
|
||||
amt_glass++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/plasma))
|
||||
amt_plasma++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/iron))
|
||||
amt_iron++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/silver))
|
||||
amt_silver++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/gold))
|
||||
amt_gold++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/uranium))
|
||||
amt_uranium++
|
||||
del(C)
|
||||
continue
|
||||
else if (istype(C,/obj/item/weapon/ore/clown))
|
||||
amt_clown++
|
||||
del(C)
|
||||
continue
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/ore_box/attack_hand(obj, mob/user as mob)
|
||||
var/amt_gold = 0
|
||||
var/amt_silver = 0
|
||||
@@ -126,12 +170,53 @@
|
||||
user << browse("[dat]", "window=orebox")
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/ore_box/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["removeall"])
|
||||
if (amt_diamond > 0)
|
||||
var/obj/item/weapon/ore/diamond/G = new /obj/item/weapon/ore/diamond
|
||||
G.amount = src.amt_diamond
|
||||
G.loc = src.loc
|
||||
src.amt_diamond = 0
|
||||
if (amt_glass > 0)
|
||||
var/obj/item/weapon/ore/glass/G = new /obj/item/weapon/ore/glass
|
||||
G.amount = src.amt_glass
|
||||
G.loc = src.loc
|
||||
src.amt_glass = 0
|
||||
if (amt_plasma > 0)
|
||||
var/obj/item/weapon/ore/plasma/G = new /obj/item/weapon/ore/plasma
|
||||
G.amount = src.amt_plasma
|
||||
G.loc = src.loc
|
||||
src.amt_plasma = 0
|
||||
if (amt_iron > 0)
|
||||
var/obj/item/weapon/ore/iron/G = new /obj/item/weapon/ore/iron
|
||||
G.amount = src.amt_iron
|
||||
G.loc = src.loc
|
||||
src.amt_iron = 0
|
||||
if (amt_silver > 0)
|
||||
var/obj/item/weapon/ore/silver/G = new /obj/item/weapon/ore/silver
|
||||
G.amount = src.amt_silver
|
||||
G.loc = src.loc
|
||||
src.amt_silver = 0
|
||||
if (amt_gold > 0)
|
||||
var/obj/item/weapon/ore/gold/G = new /obj/item/weapon/ore/gold
|
||||
G.amount = src.amt_gold
|
||||
G.loc = src.loc
|
||||
src.amt_gold = 0
|
||||
if (amt_uranium > 0)
|
||||
var/obj/item/weapon/ore/uranium/G = new /obj/item/weapon/ore/uranium
|
||||
G.amount = src.amt_uranium
|
||||
G.loc = src.loc
|
||||
src.amt_uranium = 0
|
||||
if (amt_clown > 0)
|
||||
var/obj/item/weapon/ore/clown/G = new /obj/item/weapon/ore/clown
|
||||
G.amount = src.amt_clown
|
||||
G.loc = src.loc
|
||||
src.amt_clown = 0
|
||||
for (var/obj/item/weapon/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
|
||||
@@ -163,8 +163,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(corpse.ajourn)
|
||||
corpse.ajourn=0
|
||||
client.mob = corpse
|
||||
if (corpse.stat==2)
|
||||
verbs += /mob/proc/ghost
|
||||
if (corpse.stat==2 || istype(corpse, /mob/living/simple_animal/mouse ))
|
||||
corpse.verbs += /mob/proc/ghost
|
||||
del(src)
|
||||
|
||||
/mob/dead/observer/proc/become_mouse()
|
||||
|
||||
@@ -85,6 +85,8 @@ I kind of like the right click only--the window version can get a little confusi
|
||||
M.show_message(text("\green <B>[user] vomits globs of vile stuff all over [src]!</B>"), 1)
|
||||
A.tick()
|
||||
|
||||
// This one is currently broken, however the other one isn't. And they both do the same thing. Weird.
|
||||
/*
|
||||
/mob/living/carbon/alien/humanoid/proc/corrode_target() //Aliens only see items on the list of objects that they can actually spit on./N
|
||||
set name = "Spit Corrosive Acid (200)"
|
||||
set desc = "Drench an object in acid, destroying it over time."
|
||||
@@ -106,7 +108,7 @@ I kind of like the right click only--the window version can get a little confusi
|
||||
else
|
||||
src << "\green Target is too far away."
|
||||
return
|
||||
|
||||
*/
|
||||
/mob/living/carbon/alien/humanoid/verb/corrode(obj/O as anything in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N
|
||||
set name = "Corrode with Acid (200)"
|
||||
set desc = "Drench an object in acid, destroying it over time."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
src.name = text("alien drone ([rand(1, 1000)])")
|
||||
src.real_name = src.name
|
||||
spawn (1)
|
||||
src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode_target
|
||||
// src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode
|
||||
src.verbs -= /mob/living/carbon/alien/humanoid/verb/ActivateHuggers
|
||||
src.stand_icon = new /icon('alien.dmi', "aliend_s")
|
||||
src.lying_icon = new /icon('alien.dmi', "aliend_l")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
src.name = text("alien sentinel ([rand(1, 1000)])")
|
||||
src.real_name = src.name
|
||||
spawn (1)
|
||||
src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode_target
|
||||
// src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode
|
||||
src.stand_icon = new /icon('alien.dmi', "aliens_s")
|
||||
src.lying_icon = new /icon('alien.dmi', "aliens_l")
|
||||
src.resting_icon = new /icon('alien.dmi', "aliens_sleep")
|
||||
@@ -182,5 +182,5 @@
|
||||
A.current = U
|
||||
A.yo = U.y - T.y
|
||||
A.xo = U.x - T.x
|
||||
A.process()
|
||||
A.fired()
|
||||
return
|
||||
@@ -7,7 +7,7 @@
|
||||
// src.name = text("alien ([rand(1, 1000)])")
|
||||
src.real_name = src.name
|
||||
spawn (1)
|
||||
src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode_target
|
||||
// src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode
|
||||
src.verbs += /mob/living/carbon/alien/humanoid/sentinel/verb/spit
|
||||
src.verbs -= /mob/living/carbon/alien/humanoid/verb/ventcrawl
|
||||
src.stand_icon = new /icon('alien.dmi', "queen_s")
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
if(istype(M) && M.lying) //Pulling lying down people is slower
|
||||
tally += 3
|
||||
|
||||
if(mRun in mutations)
|
||||
if(MINCREASERUN in mutations)
|
||||
tally = 0
|
||||
|
||||
return tally
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
handle_disabilities()
|
||||
|
||||
//Status updates, death etc.
|
||||
UpdateLuminosity()
|
||||
// UpdateLuminosity()
|
||||
handle_regular_status_updates()
|
||||
|
||||
if(client)
|
||||
|
||||
@@ -413,8 +413,35 @@
|
||||
|
||||
|
||||
msg += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=\ref[src];criminal=1'>\[[criminal]\]</a>\n"
|
||||
msg += "<span class = 'deptradio'>Security records:</span> <a href='?src=\ref[src];secrecord=`'>\[View\]</a>\n"
|
||||
//msg += "\[Set Hostile Identification\]\n"
|
||||
|
||||
if(istype(usr, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
var/perpname = "wot"
|
||||
var/medical = "None"
|
||||
|
||||
if(wear_id)
|
||||
if(istype(wear_id,/obj/item/weapon/card/id))
|
||||
perpname = wear_id:registered_name
|
||||
else if(istype(wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/tempPda = wear_id
|
||||
perpname = tempPda.owner
|
||||
else
|
||||
perpname = src.name
|
||||
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
medical = R.fields["p_stat"]
|
||||
|
||||
|
||||
msg += "<span class = 'deptradio'>Physical status:</span> <a href='?src=\ref[src];medical=1'>\[[medical]\]</a>\n"
|
||||
msg += "<span class = 'deptradio'>Medical records:</span> <a href='?src=\ref[src];medrecord=`'>\[View\]</a>\n"
|
||||
|
||||
|
||||
if(print_flavor_text()) msg += "[print_flavor_text()]\n"
|
||||
|
||||
msg += "\blue *---------*"
|
||||
|
||||
@@ -136,6 +136,9 @@
|
||||
lying_icon = new /icon('human.dmi', "body_[g]_l")
|
||||
icon = stand_icon
|
||||
rebuild_appearance()
|
||||
update_clothing()
|
||||
update_body()
|
||||
update_face()
|
||||
|
||||
src << "\blue Your icons have been generated!"
|
||||
|
||||
@@ -151,9 +154,10 @@
|
||||
|
||||
..()
|
||||
|
||||
spawn(5) // Failsafe for.. weirdness.
|
||||
update_clothing()
|
||||
spawn(33)
|
||||
update_body()
|
||||
update_clothing()
|
||||
update_face()
|
||||
|
||||
/*var/known_languages = list()
|
||||
known_languages.Add("english")*/
|
||||
@@ -315,7 +319,7 @@
|
||||
if(istype(M) && M.lying) //Pulling lying down people is slower
|
||||
tally += 3
|
||||
|
||||
if(mRun in mutations)
|
||||
if(MINCREASERUN in mutations)
|
||||
tally = 0
|
||||
|
||||
return tally
|
||||
@@ -2596,10 +2600,110 @@ It can still be worn/put on as normal.
|
||||
|
||||
if(!modified)
|
||||
usr << "\red Unable to locate a data core entry for this person."
|
||||
|
||||
if (href_list["secrecord"])
|
||||
if(istype(usr, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
|
||||
var/perpname = "wot"
|
||||
var/read = 0
|
||||
|
||||
if(wear_id)
|
||||
if(istype(wear_id,/obj/item/weapon/card/id))
|
||||
perpname = wear_id:registered_name
|
||||
else if(istype(wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/tempPda = wear_id
|
||||
perpname = tempPda.owner
|
||||
else
|
||||
perpname = src.name
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud))
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||
usr << "<b>Minor Crimes:</b> [R.fields["mi_crim"]]"
|
||||
usr << "<b>Details:</b> [R.fields["mi_crim_d"]]"
|
||||
usr << "<b>Major Crimes:</b> [R.fields["ma_crim"]]"
|
||||
usr << "<b>Details:</b> [R.fields["ma_crim_d"]]"
|
||||
usr << "<b>Notes:</b> [R.fields["notes"]]"
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
usr << "\red Unable to locate a data core entry for this person."
|
||||
|
||||
|
||||
if (href_list["medical"])
|
||||
if(istype(usr, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
var/perpname = "wot"
|
||||
var/modified = 0
|
||||
|
||||
if(wear_id)
|
||||
if(istype(wear_id,/obj/item/weapon/card/id))
|
||||
perpname = wear_id:registered_name
|
||||
else if(istype(wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/tempPda = wear_id
|
||||
perpname = tempPda.owner
|
||||
else
|
||||
perpname = src.name
|
||||
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
|
||||
var/setmedical = input(usr, "Specify a new criminal status for this person.", "Medical HUD", R.fields["p_stat"]) in list("*Deceased*", "*Unconscious*", "Physically Unfit", "Active", "Cancel")
|
||||
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
if(setmedical != "Cancel")
|
||||
R.fields["p_stat"] = setmedical
|
||||
modified = 1
|
||||
|
||||
spawn()
|
||||
H.handle_regular_hud_updates()
|
||||
|
||||
if(!modified)
|
||||
usr << "\red Unable to locate a data core entry for this person."
|
||||
|
||||
if (href_list["medrecord"])
|
||||
if(istype(usr, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
var/perpname = "wot"
|
||||
var/read = 0
|
||||
|
||||
if(wear_id)
|
||||
if(istype(wear_id,/obj/item/weapon/card/id))
|
||||
perpname = wear_id:registered_name
|
||||
else if(istype(wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/tempPda = wear_id
|
||||
perpname = tempPda.owner
|
||||
else
|
||||
perpname = src.name
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.medical)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]"
|
||||
usr << "<b>DNA:</b> [R.fields["b_dna"]]"
|
||||
usr << "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]"
|
||||
usr << "<b>Details:</b> [R.fields["mi_dis_d"]]"
|
||||
usr << "<b>Major Disabilities:</b> [R.fields["ma_dis"]]"
|
||||
usr << "<b>Details:</b> [R.fields["ma_dis_d"]]"
|
||||
usr << "<b>Notes:</b> [R.fields["notes"]]"
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
usr << "\red Unable to locate a data core entry for this person."
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
|
||||
///eyecheck()
|
||||
///Returns a number between -1 to 2
|
||||
/mob/living/carbon/human/eyecheck()
|
||||
@@ -2692,7 +2796,7 @@ It can still be worn/put on as normal.
|
||||
/mob/living/carbon/human/proc/morph()
|
||||
set name = "Morph"
|
||||
set category = "Superpower"
|
||||
if(!(mMorph in mutations))
|
||||
if(!(MMORPH in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
return
|
||||
|
||||
@@ -2772,17 +2876,21 @@ It can still be worn/put on as normal.
|
||||
gender = MALE
|
||||
else
|
||||
gender = FEMALE
|
||||
rebuild_appearance()
|
||||
update_body()
|
||||
check_dna()
|
||||
|
||||
for(var/mob/M in view())
|
||||
visible_message("\blue \The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
|
||||
|
||||
spawn(10)
|
||||
rebuild_appearance()
|
||||
update_body()
|
||||
update_clothing()
|
||||
update_face()
|
||||
|
||||
/mob/living/carbon/human/proc/remotesay()
|
||||
set name = "Project mind"
|
||||
set category = "Superpower"
|
||||
if(!(mRemotetalk in src.mutations))
|
||||
if(!(MREMOTETALK in src.mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
return
|
||||
var/list/creatures = list()
|
||||
@@ -2793,7 +2901,7 @@ It can still be worn/put on as normal.
|
||||
return
|
||||
|
||||
var/say = input ("What do you wish to say")
|
||||
if(mRemotetalk in target.mutations)
|
||||
if(MREMOTETALK in target.mutations)
|
||||
target.show_message("\blue You hear [src.real_name]'s voice: [say]")
|
||||
else
|
||||
target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
|
||||
@@ -2807,7 +2915,7 @@ It can still be worn/put on as normal.
|
||||
set name = "Remote View"
|
||||
set category = "Superpower"
|
||||
|
||||
if(!(mRemote in src.mutations))
|
||||
if(!(MREMOTEVIEW in src.mutations))
|
||||
reset_view(0)
|
||||
remoteobserve = null
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
|
||||
@@ -56,19 +56,20 @@
|
||||
|
||||
if (stat != 2) //still breathing
|
||||
|
||||
if(!(MNOBREATH in mutations)) //No breathing needed
|
||||
|
||||
//First, resolve location and get a breath
|
||||
//First, resolve location and get a breath
|
||||
|
||||
if(air_master.current_cycle%4==2)
|
||||
//Only try to take a breath every 4 seconds, unless suffocating
|
||||
spawn(0) breathe()
|
||||
if(air_master.current_cycle%4==2)
|
||||
//Only try to take a breath every 4 seconds, unless suffocating
|
||||
spawn(0) breathe()
|
||||
|
||||
else //Still give containing object the chance to interact
|
||||
if(istype(loc, /obj/))
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
else //Still give containing object the chance to interact
|
||||
if(istype(loc, /obj/))
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
|
||||
src.handle_shock()
|
||||
src.handle_shock()
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
@@ -104,7 +105,7 @@
|
||||
handle_random_events()
|
||||
|
||||
//Status updates, death etc.
|
||||
UpdateLuminosity()
|
||||
// UpdateLuminosity()
|
||||
handle_regular_status_updates()
|
||||
|
||||
handle_pain()
|
||||
@@ -168,7 +169,7 @@
|
||||
|
||||
|
||||
handle_disabilities()
|
||||
if(mHallucination in mutations)
|
||||
if(MHALLUCINATION in mutations)
|
||||
hallucination = 100
|
||||
halloss = 0
|
||||
|
||||
@@ -198,7 +199,7 @@
|
||||
Paralyse(15)
|
||||
setHalLoss(99)
|
||||
|
||||
if(mSmallsize in mutations)
|
||||
if(MSMALLSIZE in mutations)
|
||||
if(!(pass_flags & PASSTABLE))
|
||||
pass_flags |= PASSTABLE
|
||||
else
|
||||
@@ -207,7 +208,7 @@
|
||||
|
||||
|
||||
|
||||
if (mRegen in mutations)
|
||||
if (MREGENERATE in mutations)
|
||||
adjustBruteLoss(-2)
|
||||
adjustToxLoss(-2)
|
||||
adjustOxyLoss(-2)
|
||||
@@ -215,24 +216,24 @@
|
||||
updatehealth()
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/morph in src.verbs))
|
||||
if(mMorph in mutations)
|
||||
if(MMORPH in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/morph
|
||||
else
|
||||
if(!(mMorph in mutations))
|
||||
if(!(MMORPH in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/remoteobserve in src.verbs))
|
||||
if(mRemote in mutations)
|
||||
if(MREMOTEVIEW in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/remoteobserve
|
||||
else
|
||||
if(!(mRemote in mutations))
|
||||
if(!(MREMOTEVIEW in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/remotesay in src.verbs))
|
||||
if(mRemotetalk in mutations)
|
||||
if(MREMOTETALK in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/remotesay
|
||||
else
|
||||
if(!(mRemotetalk in mutations))
|
||||
if(!(MREMOTETALK in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
|
||||
|
||||
@@ -321,9 +322,10 @@
|
||||
if (radiation)
|
||||
if (radiation > 100)
|
||||
radiation = 100
|
||||
Weaken(10)
|
||||
src << "\red You feel weak."
|
||||
emote("collapse")
|
||||
if(prob(3))
|
||||
Weaken(10)
|
||||
src << "\red You feel weak."
|
||||
emote("collapse")
|
||||
|
||||
if (radiation < 0)
|
||||
radiation = 0
|
||||
@@ -380,6 +382,7 @@
|
||||
**/
|
||||
breathe()
|
||||
|
||||
if(MNOBREATH in mutations) return
|
||||
if(reagents.has_reagent("lexorin")) return
|
||||
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
|
||||
|
||||
@@ -487,7 +490,7 @@
|
||||
canmove = 1
|
||||
|
||||
handle_breath(datum/gas_mixture/breath)
|
||||
if(nodamage || REBREATHER in augmentations || (mNobreath in mutations))
|
||||
if(nodamage || REBREATHER in augmentations || MNOBREATH in mutations)
|
||||
return
|
||||
|
||||
if(!breath || (breath.total_moles == 0))
|
||||
@@ -541,7 +544,7 @@
|
||||
oxygen_alert = max(oxygen_alert, 1)*/
|
||||
else // We're in safe limits
|
||||
adjustOxyLoss(-5)
|
||||
oxygen_used = breath.oxygen/6
|
||||
oxygen_used = breath.oxygen
|
||||
oxygen_alert = 0
|
||||
|
||||
breath.oxygen -= oxygen_used
|
||||
@@ -1456,7 +1459,7 @@
|
||||
if (machine)
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else if(!(mRemote in mutations) && !client.adminobs)
|
||||
else if(!(MREMOTEVIEW in mutations) && !client.adminobs)
|
||||
reset_view(null)
|
||||
if(remoteobserve)
|
||||
remoteobserve = null
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
handle_disabilities()
|
||||
|
||||
//Status updates, death etc.
|
||||
UpdateLuminosity()
|
||||
// UpdateLuminosity()
|
||||
handle_regular_status_updates()
|
||||
|
||||
if(client)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
|
||||
/mob/living/proc/burn_skin(burn_amount, used_weapon = null)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(mShock in src.mutations)
|
||||
if(MSHOCK in src.mutations)
|
||||
return 0
|
||||
//world << "DEBUG: burn_skin(), mutations=[mutations]"
|
||||
if (COLD_RESISTANCE in src.mutations) //fireproof
|
||||
|
||||
@@ -125,6 +125,9 @@
|
||||
icons += "B.A.N.N.E.D."
|
||||
if (src.name == "M00X-BC" && src.ckey == "searif")
|
||||
icons += "M00X-BC"
|
||||
if (src.name == "TRIBUNAL" && src.ckey == "serithi")
|
||||
icons += "Tribunal"
|
||||
icons += "Tribunal Malfunctioning"
|
||||
icontype = input("Please, select a display!", "AI", null/*, null*/) in icons
|
||||
if(icontype == "Blue")
|
||||
icon_state = "ai"
|
||||
@@ -156,6 +159,10 @@
|
||||
icon_state = "ai-malf"
|
||||
else if(icontype == "Static")
|
||||
icon_state = "ai-static"
|
||||
else if(icontype == "Tribunal")
|
||||
icon_state = "ai-tribunal"
|
||||
else if(icontype == "Tribunal Malfunctioning")
|
||||
icon_state = "ai-tribunal-malf"
|
||||
else//(icontype == "Matrix")
|
||||
icon_state = "ai-matrix"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
handle_regular_status_updates()
|
||||
|
||||
if(client)
|
||||
UpdateLuminosity()
|
||||
// UpdateLuminosity()
|
||||
handle_regular_hud_updates()
|
||||
update_items()
|
||||
if (src.stat != 2) //still using power
|
||||
|
||||
@@ -674,9 +674,9 @@
|
||||
/mob/proc/get_damage()
|
||||
return health
|
||||
|
||||
/mob/proc/UpdateLuminosity()
|
||||
ul_SetLuminosity(LuminosityRed, LuminosityGreen, LuminosityBlue)//Current hardcode max at 7, should likely be a const somewhere else
|
||||
return 1
|
||||
///mob/proc/UpdateLuminosity()
|
||||
// ul_SetLuminosity(ul_Red, ul_Green, ul_Blue)//Current hardcode max at 7, should likely be a const somewhere else
|
||||
// return 1
|
||||
|
||||
/mob/proc/pull_damage()
|
||||
if(ishuman(src))
|
||||
|
||||
@@ -358,14 +358,17 @@
|
||||
preferences.randomize_appearance_for(new_character)
|
||||
else
|
||||
preferences.copy_to(new_character)
|
||||
if((preferences.species == "Soghun") && (is_alien_whitelisted(src, "Soghun"))) //This probably shouldn't be here, but I can't think of any other way
|
||||
if((preferences.species == "Soghun") && ((is_alien_whitelisted(src, "Soghun")) || !config.usealienwhitelist)) //This probably shouldn't be here, but I can't think of any other way
|
||||
new_character.mutantrace = "lizard"
|
||||
new_character.soghun_talk_understand = 1
|
||||
new_character.voice_name = "Soghun"
|
||||
if((preferences.species == "Skrell") && (is_alien_whitelisted(src, "Skrell")))
|
||||
if((preferences.species == "Skrell") && ((is_alien_whitelisted(src, "Skrell")) || !config.usealienwhitelist))
|
||||
new_character.mutantrace = "skrell"
|
||||
new_character.skrell_talk_understand = 1
|
||||
new_character.voice_name = "Skrell"
|
||||
new_character.update_clothing()
|
||||
new_character.update_body()
|
||||
new_character.update_face() //Hotfix for non-updating sprites.
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
|
||||
new_character.dna.ready_dna(new_character)
|
||||
|
||||
@@ -799,7 +799,7 @@ datum/preferences
|
||||
new_species += "Tajaran"
|
||||
new_species += "Soghun"
|
||||
new_species += "Skrell"
|
||||
if(!whitelisted)
|
||||
if(!whitelisted && config.usealienwhitelist)
|
||||
alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
|
||||
species = input("Please select a species", "Character Generation", null) in new_species
|
||||
if(prev_species != species)
|
||||
|
||||
@@ -552,7 +552,8 @@
|
||||
owner.original_name = owner.real_name
|
||||
H.name = "[owner.original_name]'s head"
|
||||
|
||||
owner.update_face()
|
||||
if(ishuman(owner))
|
||||
owner.update_face()
|
||||
owner.update_body()
|
||||
owner.death()
|
||||
if(ARM_RIGHT)
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
response_harm = "kicks the"
|
||||
var/turns_since_scan = 0
|
||||
var/mob/living/simple_animal/mouse/movement_target
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/cat/Life()
|
||||
//MICE!
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "kicks the"
|
||||
minbodytemp = 250
|
||||
min_oxy = 1
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/kobold/Life()
|
||||
..()
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
var/color //brown, gray and white
|
||||
layer = 2.5 //so they can hide under objects
|
||||
swap_on_mobbump = 0
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/mouse/Life()
|
||||
..()
|
||||
@@ -143,4 +146,7 @@
|
||||
//Simple pass check.
|
||||
if(O.ZCanPass(T, 1) && !(O in open) && !(O in closed) && O in possibles)
|
||||
open += O
|
||||
*/
|
||||
*/
|
||||
|
||||
mob/living/simple_animal/mouse/restrained() //Hotfix to stop mice from doing things with MouseDrop
|
||||
return 1
|
||||
@@ -15,6 +15,9 @@
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently moves aside the"
|
||||
response_harm = "swats the"
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
l_ear = new /obj/item/device/radio/headset/headset_eng()
|
||||
|
||||
|
||||
@@ -41,12 +41,11 @@
|
||||
for(var/mob/M in view(src,7))
|
||||
M << "<b>[src]</b> [pick(speak_emote)], \"[message]\""
|
||||
|
||||
/mob/living/simple_animal/emote(var/message = null, var/m_type=1, var/act = "auto")
|
||||
/mob/living/simple_animal/emote(var/act = "auto", var/m_type=1, var/message = null)
|
||||
switch(act)
|
||||
if ("scream")
|
||||
message = "<B>[src]</B> makes a loud and pained whimper"
|
||||
m_type = 2
|
||||
|
||||
if ("custom")
|
||||
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
|
||||
if (!input)
|
||||
@@ -60,7 +59,6 @@
|
||||
alert("Unable to use this emote, must be either hearable or visible.")
|
||||
return
|
||||
message = "<B>[src]</B> [input]"
|
||||
|
||||
if ("me")
|
||||
if(silent)
|
||||
return
|
||||
|
||||
@@ -7,6 +7,7 @@ var/global/list/uneatable = list(
|
||||
/obj/effect/expl_particles,
|
||||
/obj/effect/forcefield,
|
||||
/obj/effect/effect,
|
||||
/obj/effect/sign,
|
||||
/mob/aiEye,
|
||||
/mob/dead/observer // Stop ghosts being ate and not being able to get back to their bodies
|
||||
)
|
||||
@@ -256,8 +257,6 @@ var/global/list/uneatable = list(
|
||||
gain = 100
|
||||
spawn()
|
||||
A:gib()
|
||||
//Sleep being called in process() :|
|
||||
// sleep(1)
|
||||
else if(istype(A,/obj/))
|
||||
|
||||
if (istype(A,/obj/item/weapon/storage/backpack/holding))
|
||||
|
||||
@@ -86,6 +86,6 @@
|
||||
/obj/item/ammo_casing/shotgun/dart
|
||||
name = "shotgun darts"
|
||||
desc = "A dart for use in shotguns."
|
||||
icon_state = "blshell" //someone, draw the icon, please.
|
||||
icon_state = "dart"
|
||||
projectile_type = "/obj/item/projectile/energy/dart"
|
||||
m_amt = 12500
|
||||
@@ -694,6 +694,8 @@
|
||||
M.weakened += 2
|
||||
if(prob(20))
|
||||
M.paralysis += 2
|
||||
if(istype(M,/mob/living/simple_animal/mouse))
|
||||
continue
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/name = pick(M:organs)
|
||||
var/datum/organ/external/temp = M:organs[name]
|
||||
|
||||
Reference in New Issue
Block a user