Revert "Revert "Merge remote-tracking branch 'upstream/master'""
This reverts commit 1509d9d183.
This commit is contained in:
@@ -56,7 +56,7 @@
|
||||
if(used)
|
||||
to_chat(H, "You already used this contract!")
|
||||
return
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src)
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src, ignore_category = POLL_IGNORE_WIZARD)
|
||||
if(LAZYLEN(candidates))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
@@ -241,7 +241,7 @@
|
||||
return
|
||||
if(used)
|
||||
return
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src)
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src, ignore_category = POLL_IGNORE_DEMON)
|
||||
if(LAZYLEN(candidates))
|
||||
if(used || QDELETED(src))
|
||||
return
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
for(var/obj/item/abductor/gizmo/G in B.contents)
|
||||
console.AddGizmo(G)
|
||||
|
||||
/datum/outfit/abductor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/abductor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(!visualsOnly)
|
||||
link_to_console(H)
|
||||
@@ -49,7 +49,7 @@
|
||||
/obj/item/abductor/gizmo = 1
|
||||
)
|
||||
|
||||
/datum/outfit/abductor/scientist/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/abductor/scientist/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(!visualsOnly)
|
||||
var/obj/item/implant/abductor/beamplant = new
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
"<span class='danger'>You start tenderly lifting [skewee] off of [src]...</span>")
|
||||
if(!do_after(user, 60, target = skewee))
|
||||
skewee.visible_message("<span class='warning'>[skewee] painfully slides back down [src].</span>")
|
||||
skewee.emote("moan")
|
||||
skewee.say("Oof, ouch owwie!!", forced = "fail brass skewer removal")
|
||||
return
|
||||
skewee.visible_message("<span class='danger'>[skewee] comes free of [src] with a squelching pop!</span>", \
|
||||
"<span class='boldannounce'>You come free of [src]!</span>")
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball(null))
|
||||
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball.")
|
||||
if(APPRENTICE_BLUESPACE)
|
||||
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null))
|
||||
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null))
|
||||
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null))
|
||||
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt.")
|
||||
if(APPRENTICE_HEALING)
|
||||
|
||||
@@ -487,7 +487,7 @@
|
||||
r_pocket = /obj/item/ammo_box/magazine/recharge/ctf
|
||||
r_hand = /obj/item/gun/ballistic/automatic/laser/ctf
|
||||
|
||||
/datum/outfit/ctf/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE)
|
||||
/datum/outfit/ctf/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/list/no_drops = list()
|
||||
@@ -529,7 +529,7 @@
|
||||
r_hand = /obj/item/gun/energy/laser/instakill/blue
|
||||
shoes = /obj/item/clothing/shoes/jackboots/fast
|
||||
|
||||
/datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
var/obj/item/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CTF_RED)
|
||||
@@ -537,7 +537,7 @@
|
||||
R.independent = TRUE
|
||||
H.dna.species.stunmod = 0
|
||||
|
||||
/datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
var/obj/item/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CTF_BLUE)
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
uniform = /obj/item/clothing/under/pants/youngfolksjeans
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/beachbum/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/beachbum/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -2299,10 +2299,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.shirt_color = shirt_color
|
||||
character.socks_color = socks_color
|
||||
|
||||
|
||||
character.backbag = backbag
|
||||
character.jumpsuit_style = jumpsuit_style
|
||||
|
||||
var/datum/species/chosen_species
|
||||
if(!roundstart_checks || (pref_species.id in GLOB.roundstart_races))
|
||||
chosen_species = pref_species.type
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!(damagetype & (BRUTELOSS | FIRELOSS | TOXLOSS | OXYLOSS) ))
|
||||
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||
|
||||
death(FALSE, penalize = TRUE)
|
||||
death(FALSE)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/obj/item/clothing/gloves/ComponentInitialize()
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /obj/item/clothing/gloves/clean_blood)
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
|
||||
|
||||
/obj/item/clothing/gloves/clean_blood(datum/source, strength)
|
||||
. = ..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
ears = /obj/item/radio/headset/headset_cent/alt
|
||||
|
||||
/datum/outfit/ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
/obj/item/gun/energy/e_gun=1)
|
||||
l_pocket = /obj/item/switchblade
|
||||
|
||||
/datum/outfit/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
/datum/outfit/ert/commander/alert
|
||||
name = "ERT Commander - Amber Alert"
|
||||
|
||||
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert
|
||||
glasses = /obj/item/clothing/glasses/thermal/eyepatch
|
||||
backpack_contents = list(/obj/item/storage/box/engineer=1,\
|
||||
@@ -76,7 +76,7 @@
|
||||
/obj/item/gun/energy/e_gun/stun=1,\
|
||||
/obj/item/melee/baton/loaded=1)
|
||||
|
||||
/datum/outfit/ert/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
/datum/outfit/ert/security/alert
|
||||
name = "ERT Security - Amber Alert"
|
||||
|
||||
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert/sec
|
||||
backpack_contents = list(/obj/item/storage/box/engineer=1,\
|
||||
/obj/item/storage/box/handcuffs=1,\
|
||||
@@ -120,7 +120,7 @@
|
||||
/obj/item/reagent_containers/hypospray/combat=1,\
|
||||
/obj/item/gun/medbeam=1)
|
||||
|
||||
/datum/outfit/ert/medic/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/medic/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
@@ -166,7 +166,7 @@
|
||||
/obj/item/gun/energy/e_gun=1,\
|
||||
/obj/item/construction/rcd/loaded=1)
|
||||
|
||||
/datum/outfit/ert/engineer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/engineer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
@@ -214,7 +214,7 @@
|
||||
l_hand = /obj/item/storage/toolbox/plastitanium
|
||||
gloves = /obj/item/clothing/gloves/color/yellow
|
||||
|
||||
/datum/outfit/ert/greybois/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/greybois/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
@@ -238,7 +238,7 @@
|
||||
l_hand = /obj/item/clipboard
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/centcom_official/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/centcom_official/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
/obj/item/reagent_containers/hypospray/combat/heresypurge=1,
|
||||
/obj/item/gun/medbeam=1)
|
||||
|
||||
/datum/outfit/ert/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/ert/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
belt = /obj/item/tank/internals/emergency_oxygen/double
|
||||
id = /obj/item/card/id/gold
|
||||
|
||||
/datum/outfit/santa/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/santa/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
H.fully_replace_character_name(H.real_name, "Santa Claus")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
l_pocket = /obj/item/grenade/chem_grenade/cleaner
|
||||
backpack_contents = list(/obj/item/stack/tile/plasteel=6)
|
||||
|
||||
/datum/outfit/tournament/janitor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/tournament/janitor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
/datum/outfit/pirate/space/captain
|
||||
head = /obj/item/clothing/head/helmet/space/pirate
|
||||
|
||||
/datum/outfit/pirate/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/pirate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
H.faction |= "pirate"
|
||||
|
||||
var/obj/item/radio/R = H.ears
|
||||
@@ -125,7 +125,7 @@
|
||||
id = /obj/item/card/id
|
||||
r_hand = /obj/item/twohanded/fireaxe
|
||||
|
||||
/datum/outfit/tunnel_clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/tunnel_clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
r_pocket = /obj/item/scalpel
|
||||
r_hand = /obj/item/twohanded/fireaxe
|
||||
|
||||
/datum/outfit/psycho/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/psycho/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
for(var/obj/item/carried_item in H.get_equipped_items(TRUE))
|
||||
carried_item.add_mob_blood(H)//Oh yes, there will be blood...
|
||||
for(var/obj/item/I in H.held_items)
|
||||
@@ -170,7 +170,7 @@
|
||||
id = /obj/item/card/id/syndicate
|
||||
belt = /obj/item/pda/heads
|
||||
|
||||
/datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
U.attach_accessory(new /obj/item/clothing/accessory/waistcoat(H))
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
back = /obj/item/storage/backpack/satchel/leather
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/centcom_commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/centcom_commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
back = /obj/item/storage/backpack/satchel/leather
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/spec_ops/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/spec_ops/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
back = /obj/item/storage/backpack
|
||||
backpack_contents = list(/obj/item/storage/box=1)
|
||||
|
||||
/datum/outfit/wizard/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/wizard/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/soviet/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/soviet/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
r_hand = /obj/item/gun/ballistic/automatic/tommygun
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/mobster/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/mobster/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -391,7 +391,7 @@
|
||||
/obj/item/flashlight=1,\
|
||||
/obj/item/grenade/plastic/x4=1)
|
||||
|
||||
/datum/outfit/death_commando/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/death_commando/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
ears = /obj/item/radio/headset
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/vr/pre_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/vr/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
H.dna.species.before_equip_job(null, H)
|
||||
|
||||
/datum/outfit/vr/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/vr/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
var/obj/item/card/id/id = H.wear_id
|
||||
if (istype(id))
|
||||
id.access |= get_all_accesses()
|
||||
@@ -25,9 +25,10 @@
|
||||
backpack_contents = list(/obj/item/storage/box/syndie=1,\
|
||||
/obj/item/kitchen/knife/combat/survival)
|
||||
|
||||
/datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
. = ..()
|
||||
var/obj/item/uplink/U = new /obj/item/uplink/nuclear_restricted(H, H.key, 80)
|
||||
var/key = H.key ? H.key : preference_source ? preference_source.key : null
|
||||
var/obj/item/uplink/U = new /obj/item/uplink/nuclear_restricted(H, key, 80)
|
||||
H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK)
|
||||
var/obj/item/implant/weapons_auth/W = new
|
||||
W.implant(H)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
var/list/vv_values
|
||||
var/list/stored_access
|
||||
|
||||
/datum/outfit/varedit/pre_equip(mob/living/carbon/human/H, visualsOnly)
|
||||
/datum/outfit/varedit/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
H.delete_equipment() //Applying VV to wrong objects is not reccomended.
|
||||
. = ..()
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
GLOB.custom_outfits += O
|
||||
to_chat(usr,"Outfit registered, use select equipment to equip it.")
|
||||
|
||||
/datum/outfit/varedit/post_equip(mob/living/carbon/human/H, visualsOnly)
|
||||
/datum/outfit/varedit/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
. = ..()
|
||||
//Apply VV
|
||||
for(var/slot in vv_values)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/obj/item/clothing/shoes/ComponentInitialize()
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /obj/item/clothing/shoes/clean_blood)
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
|
||||
|
||||
/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
|
||||
if(rand(2)>1)
|
||||
|
||||
@@ -519,6 +519,16 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/captain
|
||||
icon_state = "winterhood_captain"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hop
|
||||
name = "head of personnel's winter coat"
|
||||
icon_state = "coathop"
|
||||
item_state = "coathop"
|
||||
armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 5, "rad" = 0, "fire" = 0, "acid" = 5)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/hop
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/hop
|
||||
icon_state = "winterhood_hop"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security
|
||||
name = "security winter coat"
|
||||
icon_state = "coatsecurity"
|
||||
@@ -533,6 +543,20 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/security
|
||||
icon_state = "winterhood_security"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hos
|
||||
name = "head of security's winter coat"
|
||||
icon_state = "coathos"
|
||||
item_state = "coathos"
|
||||
armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 15, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 55)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/hos
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hos/Initialize()
|
||||
. = ..()
|
||||
allowed = GLOB.security_wintercoat_allowed
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/hos
|
||||
icon_state = "winterhood_hos"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/medical
|
||||
name = "medical winter coat"
|
||||
icon_state = "coatmedical"
|
||||
@@ -544,6 +568,39 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/medical
|
||||
icon_state = "winterhood_medical"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/cmo
|
||||
name = "chief medical officer's winter coat"
|
||||
icon_state = "coatcmo"
|
||||
item_state = "coatcmo"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/cmo
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/cmo
|
||||
icon_state = "winterhood_cmo"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/chemistry
|
||||
name = "chemistry winter coat"
|
||||
icon_state = "coatchemistry"
|
||||
item_state = "coatchemistry"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 30, "rad" = 0, "fire" = 30, "acid" = 45)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/chemistry
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/chemistry
|
||||
icon_state = "winterhood_chemistry"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/viro
|
||||
name = "virology winter coat"
|
||||
icon_state = "coatviro"
|
||||
item_state = "coatviro"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 30, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/viro
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/viro
|
||||
icon_state = "winterhood_viro"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/science
|
||||
name = "science winter coat"
|
||||
icon_state = "coatscience"
|
||||
@@ -555,6 +612,49 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/science
|
||||
icon_state = "winterhood_science"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/robotics
|
||||
name = "robotics winter coat"
|
||||
icon_state = "coatrobotics"
|
||||
item_state = "coatrobotics"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/screwdriver, /obj/item/crowbar, /obj/item/wrench, /obj/item/stack/cable_coil, /obj/item/weldingtool, /obj/item/multitool)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/robotics
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/robotics
|
||||
icon_state = "winterhood_robotics"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/genetics
|
||||
name = "genetics winter coat"
|
||||
icon_state = "coatgenetics"
|
||||
item_state = "coatgenetics"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/genetics
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/genetics
|
||||
icon_state = "winterhood_genetics"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/rd
|
||||
name = "research director's winter coat"
|
||||
icon_state = "coatrd"
|
||||
item_state = "coatrd"
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 5,"energy" = 0, "bomb" = 15, "bio" = 5, "rad" = 5, "fire" = 0, "acid" = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/rd
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/rd
|
||||
icon_state = "winterhood_rd"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/ce
|
||||
name = "chief engineer's winter coat"
|
||||
icon_state = "coatce"
|
||||
item_state = "coatce"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 30, "fire" = 35, "acid" = 45)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/ce
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/ce
|
||||
icon_state = "winterhood_ce"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/engineering
|
||||
name = "engineering winter coat"
|
||||
icon_state = "coatengineer"
|
||||
@@ -585,6 +685,26 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/hydro
|
||||
icon_state = "winterhood_hydro"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/cosmic
|
||||
name = "cosmic winter coat"
|
||||
icon_state = "coatcosmic"
|
||||
item_state = "coatcosmic"
|
||||
allowed = list(/obj/item/flashlight)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/cosmic
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/cosmic
|
||||
icon_state = "winterhood_cosmic"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/janitor
|
||||
name = "janitors winter coat"
|
||||
icon_state = "coatjanitor"
|
||||
item_state = "coatjanitor"
|
||||
allowed = list(/obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/grenade/chem_grenade,/obj/item/lightreplacer,/obj/item/flashlight,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/spray,/obj/item/soap,/obj/item/holosign_creator,/obj/item/key/janitor,/obj/item/melee/flyswatter,/obj/item/paint/paint_remover,/obj/item/storage/bag/trash,/obj/item/reagent_containers/glass/bucket)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/janitor
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/janitor
|
||||
icon_state = "winterhood_janitor"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/cargo
|
||||
name = "cargo winter coat"
|
||||
icon_state = "coatcargo"
|
||||
@@ -594,6 +714,15 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/cargo
|
||||
icon_state = "winterhood_cargo"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/qm
|
||||
name = "quartermaster's winter coat"
|
||||
icon_state = "coatqm"
|
||||
item_state = "coatqm"
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/qm
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/qm
|
||||
icon_state = "winterhood_qm"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/miner
|
||||
name = "mining winter coat"
|
||||
icon_state = "coatminer"
|
||||
|
||||
@@ -158,3 +158,31 @@
|
||||
time = 50
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/wintercoat_cosmic
|
||||
name = "Cosmic Winter Coat"
|
||||
result = /obj/item/clothing/suit/hooded/wintercoat/cosmic
|
||||
reqs = list(/obj/item/clothing/suit/hooded/wintercoat = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/captain = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hop = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hos = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/rd = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/ce = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/cmo = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/qm = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/robotics = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/engineering = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/science = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/genetics = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/chemistry = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/medical = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/viro = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/janitor = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/cargo = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/hydro = 1,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/miner = 1)
|
||||
time = 60
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
/datum/round_event_control/wizard/canSpawnEvent(var/players_amt, var/gamemode)
|
||||
if(istype(SSticker.mode, /datum/game_mode/dynamic))
|
||||
var/var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
if (locate(/datum/dynamic_ruleset/midround/from_ghosts/wizard) in mode.executed_rules)
|
||||
return can_be_midround_wizard && ..()
|
||||
return ..()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Major Space Dust"
|
||||
typepath = /datum/round_event/meteor_wave/major_dust
|
||||
weight = 8
|
||||
gamemode_blacklist = list("dynamic")
|
||||
|
||||
/datum/round_event/meteor_wave/major_dust
|
||||
wave_name = "space dust"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
min_players = 15
|
||||
max_occurrences = 3
|
||||
earliest_start = 25 MINUTES
|
||||
gamemode_blacklist = list("dynamic")
|
||||
|
||||
/datum/round_event/meteor_wave
|
||||
startWhen = 6
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
typepath = /datum/round_event/processor_overload
|
||||
weight = 15
|
||||
min_players = 20
|
||||
gamemode_blacklist = list("dynamic")
|
||||
|
||||
/datum/round_event/processor_overload
|
||||
announceWhen = 1
|
||||
|
||||
@@ -546,3 +546,10 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and
|
||||
|
||||
/datum/holiday/easter/getStationPrefix()
|
||||
return pick("Fluffy","Bunny","Easter","Egg")
|
||||
|
||||
//Random citadel thing for halloween species
|
||||
/proc/force_enable_halloween_species()
|
||||
var/list/oldlist = SSevents.holidays
|
||||
SSevents.holidays = list(HALLOWEEN = new /datum/holiday/halloween)
|
||||
generate_selectable_species(FALSE)
|
||||
SSevents.holidays = oldlist
|
||||
|
||||
@@ -101,8 +101,9 @@
|
||||
//Equip the rest of the gear
|
||||
H.dna.species.before_equip_job(src, H, visualsOnly)
|
||||
|
||||
if(outfit_override || outfit)
|
||||
H.equipOutfit(outfit_override ? outfit_override : outfit, visualsOnly)
|
||||
var/datum/outfit/job/O = outfit_override || outfit
|
||||
if(O)
|
||||
H.equipOutfit(O, visualsOnly, preference_source) //mob doesn't have a client yet.
|
||||
|
||||
H.dna.species.after_equip_job(src, H, visualsOnly)
|
||||
|
||||
@@ -177,8 +178,8 @@
|
||||
|
||||
var/pda_slot = SLOT_BELT
|
||||
|
||||
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
switch(H.backbag)
|
||||
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
switch(preference_source?.prefs.backbag)
|
||||
if(GBACKPACK)
|
||||
back = /obj/item/storage/backpack //Grey backpack
|
||||
if(GSATCHEL)
|
||||
@@ -196,7 +197,7 @@
|
||||
|
||||
//converts the uniform string into the path we'll wear, whether it's the skirt or regular variant
|
||||
var/holder
|
||||
if(H.jumpsuit_style == PREF_SKIRT)
|
||||
if(preference_source && preference_source.prefs.jumpsuit_style == PREF_SKIRT)
|
||||
holder = "[uniform]/skirt"
|
||||
if(!text2path(holder))
|
||||
holder = "[uniform]"
|
||||
@@ -204,7 +205,7 @@
|
||||
holder = "[uniform]"
|
||||
uniform = text2path(holder)
|
||||
|
||||
/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -232,6 +233,8 @@
|
||||
PDA.owner = H.real_name
|
||||
PDA.ownjob = J.title
|
||||
PDA.update_label()
|
||||
if(preference_source && !PDA.equipped) //PDA's screen color, font style and look depend on client preferences.
|
||||
PDA.update_style(preference_source)
|
||||
|
||||
/datum/outfit/job/get_chameleon_disguise_info()
|
||||
var/list/types = ..()
|
||||
|
||||
@@ -28,15 +28,16 @@ Assistant
|
||||
name = "Assistant"
|
||||
jobtype = /datum/job/assistant
|
||||
|
||||
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
var/suited = !preference_source || preference_source.prefs.jumpsuit_style == PREF_SUIT
|
||||
if (CONFIG_GET(flag/grey_assistants))
|
||||
if(H.jumpsuit_style == PREF_SUIT)
|
||||
if(suited)
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
else
|
||||
uniform = /obj/item/clothing/under/skirt/color/grey
|
||||
else
|
||||
if(H.jumpsuit_style == PREF_SUIT)
|
||||
if(suited)
|
||||
uniform = /obj/item/clothing/under/color/random
|
||||
else
|
||||
uniform = /obj/item/clothing/under/skirt/color/random
|
||||
|
||||
@@ -16,11 +16,6 @@
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CLOWN
|
||||
|
||||
|
||||
/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M)
|
||||
. = ..()
|
||||
H.apply_pref_name("clown", M.client)
|
||||
|
||||
/datum/outfit/job/clown
|
||||
name = "Clown"
|
||||
jobtype = /datum/job/clown
|
||||
@@ -48,11 +43,15 @@
|
||||
|
||||
chameleon_extras = /obj/item/stamp/clown
|
||||
|
||||
/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) //rename the mob AFTER they're equipped so their ID gets updated properly.
|
||||
var/client/C = H.client || preference_source
|
||||
if(C)
|
||||
H.apply_pref_name("clown", C) //rename the mob AFTER they're equipped so their ID gets updated properly.
|
||||
else
|
||||
H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names))
|
||||
H.dna.add_mutation(CLOWNMUT)
|
||||
H.dna.add_mutation(SMILE)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
mask = /obj/item/clothing/mask/fakemoustache/italian
|
||||
backpack_contents = list(/obj/item/sharpener = 1)
|
||||
|
||||
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
var/datum/job/cook/J = SSjob.GetJobType(jobtype)
|
||||
if(J) // Fix for runtime caused by invalid job being passed
|
||||
@@ -39,7 +39,7 @@
|
||||
if(!visualsOnly)
|
||||
J.cooks++
|
||||
|
||||
/datum/outfit/job/cook/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/cook/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/obj/item/barcodescanner = 1
|
||||
)
|
||||
|
||||
/datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
chameleon_extras = list(/obj/item/gun/ballistic/revolver/detective, /obj/item/clothing/glasses/sunglasses)
|
||||
|
||||
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
var/obj/item/clothing/mask/cigarette/cig = H.wear_mask
|
||||
if(istype(cig)) //Some species specfic changes can mess this up (plasmamen)
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
chameleon_extras = /obj/item/stamp/law
|
||||
|
||||
|
||||
/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
satchel = /obj/item/storage/backpack/mime
|
||||
|
||||
|
||||
/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
|
||||
if(visualsOnly)
|
||||
@@ -47,3 +47,9 @@
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
|
||||
H.mind.miming = 1
|
||||
|
||||
var/client/C = H.client || preference_source
|
||||
if(C)
|
||||
H.apply_pref_name("mime", C)
|
||||
else
|
||||
H.fully_replace_character_name(H.real_name, pick(GLOB.mime_names))
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
/obj/item/gun/energy/kinetic_accelerator=1,\
|
||||
/obj/item/stack/marker_beacon/ten=1)
|
||||
|
||||
/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
max_matter = 600 //Bigger container and faster speeds due to being specialized and stationary.
|
||||
no_ammo_message = "<span class='warning'>Internal matter exhausted. Please add additional materials.</span>"
|
||||
delay_mod = 0.5
|
||||
adjacency_check = FALSE
|
||||
upgrade = TRUE
|
||||
var/obj/machinery/computer/camera_advanced/base_construction/console
|
||||
|
||||
@@ -207,19 +206,14 @@
|
||||
to_chat(owner, "Build mode is now [buildmode].")
|
||||
|
||||
/datum/action/innate/aux_base/airlock_type
|
||||
name = "Change Airlock Settings"
|
||||
name = "Select Airlock Type"
|
||||
button_icon_state = "airlock_select"
|
||||
|
||||
/datum/action/innate/aux_base/airlock_type/Activate()
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/mode = alert("Modify Type or Access?", "Airlock Settings", "Type", "Access", "None")
|
||||
switch(mode)
|
||||
if("Type")
|
||||
B.RCD.change_airlock_setting(usr)
|
||||
if("Access")
|
||||
B.RCD.change_airlock_access(usr)
|
||||
B.RCD.change_airlock_access(usr)
|
||||
|
||||
|
||||
/datum/action/innate/aux_base/window_type
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
to_chat(owner, "<span class='notice'>[src] breaks down as it tries to activate.</span>")
|
||||
else
|
||||
owner.revive(full_heal = 1)
|
||||
owner.log_message("[owner] used an implanted [src] to heal themselves! Keep fighting, it's just a flesh wound!", LOG_ATTACK, color="green") //Logging for implanted legion core use
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/regenerative_core/on_life()
|
||||
@@ -85,6 +86,21 @@
|
||||
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self"))
|
||||
H.revive(full_heal = 1)
|
||||
qdel(src)
|
||||
user.log_message("[user] used [src] to heal [H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another.
|
||||
|
||||
/obj/item/organ/regenerative_core/attack_self(mob/user) //Knouli's first hack! Allows for the use of the core in hand rather than needing to click on the target, yourself, to selfheal. Its a rip of the proc just above - but skips on distance check and only uses 'user' rather than 'target'
|
||||
if(ishuman(user)) //Check if user is human, no need for distance check as it's self heal
|
||||
var/mob/living/carbon/human/H = user //Set H to user rather than target
|
||||
if(inert) //Inert cores are useless
|
||||
to_chat(user, "<span class='notice'>[src] has decayed and can no longer be used to heal.</span>")
|
||||
return
|
||||
else //Skip on check if the target to be healed is dead as, if you are dead, you're not going to be able to use it on yourself!
|
||||
to_chat(user, "<span class='notice'>You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.</span>")
|
||||
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self"))
|
||||
H.revive(full_heal = 1)
|
||||
qdel(src)
|
||||
H.log_message("[H] used [src] to heal themselves! Making use of Knouli's sexy and intelligent use-in-hand proc!", LOG_ATTACK, color="green") //Logging for 'new' style legion core use, when using the core in-hand.
|
||||
|
||||
|
||||
/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
|
||||
. = ..()
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
new /obj/item/clothing/gloves/color/black(src)
|
||||
new /obj/item/clothing/gloves/color/black(src)
|
||||
new /obj/item/clothing/gloves/color/black(src)
|
||||
new /obj/item/clothing/suit/hooded/wintercoat/miner(src) //yes, even both mining locker types
|
||||
new /obj/item/clothing/suit/hooded/wintercoat/miner(src)
|
||||
new /obj/item/clothing/suit/hooded/wintercoat/miner(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/miner
|
||||
name = "miner's equipment"
|
||||
@@ -61,6 +64,7 @@
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
new /obj/item/survivalcapsule(src)
|
||||
new /obj/item/assault_pod/mining(src)
|
||||
new /obj/item/clothing/suit/hooded/wintercoat/miner(src) //because you know you want it
|
||||
|
||||
|
||||
/**********************Shuttle Computer**************************/
|
||||
|
||||
@@ -473,10 +473,7 @@
|
||||
var/free_space = 0
|
||||
for(var/list/category in list(GLOB.command_positions) + list(GLOB.supply_positions) + list(GLOB.engineering_positions) + list(GLOB.nonhuman_positions - "pAI") + list(GLOB.civilian_positions) + list(GLOB.medical_positions) + list(GLOB.science_positions) + list(GLOB.security_positions))
|
||||
var/cat_color = "fff" //random default
|
||||
if(SSjob.name_occupations && SSjob.name_occupations[category[1]])
|
||||
cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color
|
||||
else
|
||||
cat_color = SSjob.occupations[category[1]].selection_color
|
||||
cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color
|
||||
dat += "<fieldset style='width: 185px; border: 2px solid [cat_color]; display: inline'>"
|
||||
dat += "<legend align='center' style='color: [cat_color]'>[SSjob.name_occupations[category[1]].exp_type_department]</legend>"
|
||||
|
||||
|
||||
@@ -264,6 +264,7 @@ Works together with spawning an observer, noted above.
|
||||
*/
|
||||
|
||||
/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE)
|
||||
penalize = suiciding || penalize // suicide squad.
|
||||
if(!key || cmptext(copytext(key,1,2),"@") || (!special && SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse) & COMPONENT_BLOCK_GHOSTING))
|
||||
return //mob has no key, is an aghost or some component hijacked.
|
||||
stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now
|
||||
|
||||
@@ -170,6 +170,7 @@
|
||||
stop_pulling()
|
||||
if(HAS_TRAIT(src, TRAIT_PACIFISM))
|
||||
to_chat(src, "<span class='notice'>You gently let go of [throwable_mob].</span>")
|
||||
return
|
||||
adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring
|
||||
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
|
||||
var/turf/end_T = get_turf(target)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
adjustStaminaLoss(damage_amount, forced = forced)
|
||||
//citadel code
|
||||
if(AROUSAL)
|
||||
adjustArousalLoss(damage_amount, forced = forced)
|
||||
adjustArousalLoss(damage_amount)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(CONFIG_GET(flag/disable_stambuffer))
|
||||
togglesprint()
|
||||
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /mob/living/carbon/human/clean_blood)
|
||||
RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
|
||||
|
||||
|
||||
/mob/living/carbon/human/ComponentInitialize()
|
||||
|
||||
@@ -339,8 +339,10 @@
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
|
||||
/mob/living/carbon/human/mech_melee_attack(obj/mecha/M)
|
||||
|
||||
if(M.occupant.a_intent == INTENT_HARM)
|
||||
if(HAS_TRAIT(M.occupant, TRAIT_PACIFISM))
|
||||
to_chat(M.occupant, "<span class='warning'>You don't want to harm other living beings!</span>")
|
||||
return
|
||||
M.do_attack_animation(src)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
var/shirt_color = "FFFFFF"
|
||||
var/socks = "Nude" //Which socks the player wants
|
||||
var/socks_color = "FFFFFF"
|
||||
var/backbag = DBACKPACK //Which backpack type the player has chosen.
|
||||
var/jumpsuit_style = PREF_SUIT //suit/skirt
|
||||
|
||||
//Equipment slots
|
||||
var/obj/item/wear_suit = null
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
sec_hud_set_security_status()
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/proc/equipOutfit(outfit, visualsOnly = FALSE)
|
||||
/mob/living/carbon/human/proc/equipOutfit(outfit, visualsOnly = FALSE, client/preference_source)
|
||||
var/datum/outfit/O = null
|
||||
|
||||
if(ispath(outfit))
|
||||
@@ -263,7 +263,7 @@
|
||||
if(!O)
|
||||
return 0
|
||||
|
||||
return O.equip(src, visualsOnly)
|
||||
return O.equip(src, visualsOnly, preference_source)
|
||||
|
||||
|
||||
//delete all equipment without dropping anything
|
||||
|
||||
@@ -118,11 +118,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
..()
|
||||
|
||||
|
||||
/proc/generate_selectable_species()
|
||||
/proc/generate_selectable_species(clear = FALSE)
|
||||
if(clear)
|
||||
GLOB.roundstart_races = list()
|
||||
GLOB.roundstart_race_names = list()
|
||||
for(var/I in subtypesof(/datum/species))
|
||||
var/datum/species/S = new I
|
||||
if(S.check_roundstart_eligible())
|
||||
GLOB.roundstart_races += S.id
|
||||
GLOB.roundstart_races |= S.id
|
||||
GLOB.roundstart_race_names["[S.name]"] = S.id
|
||||
qdel(S)
|
||||
if(!GLOB.roundstart_races.len)
|
||||
@@ -1476,7 +1479,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
|
||||
/datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM))
|
||||
if(!attacker_style && HAS_TRAIT(user, TRAIT_PACIFISM))
|
||||
to_chat(user, "<span class='warning'>You don't want to harm [target]!</span>")
|
||||
return FALSE
|
||||
if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) //CITADEL CHANGE - makes it impossible to punch while in stamina softcrit
|
||||
@@ -1678,6 +1681,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
return
|
||||
if(M.mind)
|
||||
attacker_style = M.mind.martial_art
|
||||
if(attacker_style?.pacifism_check && HAS_TRAIT(M, TRAIT_PACIFISM)) // most martial arts are quite harmful, alas.
|
||||
attacker_style = null
|
||||
if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK))
|
||||
log_combat(M, H, "attempted to touch")
|
||||
H.visible_message("<span class='warning'>[M] attempted to touch [H]!</span>")
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/datum/species/insect
|
||||
name = "Anthromorphic Insect"
|
||||
id = "insect"
|
||||
say_mod = "flutters"
|
||||
default_color = "00FF00"
|
||||
species_traits = list(LIPS,NOEYES,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR)
|
||||
species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR)
|
||||
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
|
||||
mutant_bodyparts = list("mam_ears", "mam_snout", "mam_tail", "taur", "insect_wings", "mam_snouts", "insect_fluff","horns")
|
||||
default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None",
|
||||
@@ -12,54 +11,36 @@
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/insect
|
||||
liked_food = VEGETABLES | DAIRY
|
||||
disliked_food = FRUIT | GROSS
|
||||
toxic_food = MEAT | RAW
|
||||
mutanteyes = /obj/item/organ/eyes/insect
|
||||
liked_food = MEAT | FRUIT
|
||||
disliked_food = TOXIC
|
||||
should_draw_citadel = TRUE
|
||||
exotic_bloodtype = "BUG"
|
||||
|
||||
/datum/species/insect/on_species_gain(mob/living/carbon/C)
|
||||
/datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
|
||||
/datum/species/insect/spec_stun(mob/living/carbon/human/H,amount)
|
||||
if(H)
|
||||
stop_wagging_tail(H)
|
||||
. = ..()
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(!H.dna.features["insect_wings"])
|
||||
H.dna.features["insect_wings"] = "[(H.client && H.client.prefs && LAZYLEN(H.client.prefs.features) && H.client.prefs.features["insect_wings"]) ? H.client.prefs.features["insect_wings"] : "None"]"
|
||||
handle_mutant_bodyparts(H)
|
||||
|
||||
/datum/species/insect/random_name(gender,unique,lastname)
|
||||
if(unique)
|
||||
return random_unique_moth_name()
|
||||
/datum/species/insect/can_wag_tail(mob/living/carbon/human/H)
|
||||
return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
var/randname = moth_name()
|
||||
/datum/species/insect/is_wagging_tail(mob/living/carbon/human/H)
|
||||
return ("mam_waggingtail" in mutant_bodyparts)
|
||||
|
||||
if(lastname)
|
||||
randname += " [lastname]"
|
||||
/datum/species/insect/start_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_tail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_tail"
|
||||
mutant_bodyparts |= "mam_waggingtail"
|
||||
H.update_body()
|
||||
|
||||
return randname
|
||||
/datum/species/insect/stop_wagging_tail(mob/living/carbon/human/H)
|
||||
if("mam_waggingtail" in mutant_bodyparts)
|
||||
mutant_bodyparts -= "mam_waggingtail"
|
||||
mutant_bodyparts |= "mam_tail"
|
||||
H.update_body()
|
||||
|
||||
/datum/species/insect/handle_fire(mob/living/carbon/human/H, no_protection = FALSE)
|
||||
..()
|
||||
if(H.dna.features["insect_wings"] != "Burnt Off" && H.dna.features["insect_wings"] != "None" && H.bodytemperature >= 800 && H.fire_stacks > 0) //do not go into the extremely hot light. you will not survive
|
||||
to_chat(H, "<span class='danger'>Your precious wings burn to a crisp!</span>")
|
||||
if(H.dna.features["insect_wings"] != "None")
|
||||
H.dna.features["insect_wings"] = "Burnt Off"
|
||||
handle_mutant_bodyparts(H)
|
||||
|
||||
/datum/species/insect/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if(chem.id == "pestkiller")
|
||||
H.adjustToxLoss(3)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
|
||||
/datum/species/insect/check_weakness(obj/item/weapon, mob/living/attacker)
|
||||
if(istype(weapon, /obj/item/melee/flyswatter))
|
||||
return 9 //flyswatters deal 10x damage to insects
|
||||
return 0
|
||||
|
||||
/datum/species/insect/space_move(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if(H.loc && !isspaceturf(H.loc) && (H.dna.features["insect_wings"] != "Burnt Off" && H.dna.features["insect_wings"] != "None"))
|
||||
var/datum/gas_mixture/current = H.loc.return_air()
|
||||
if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible
|
||||
return TRUE
|
||||
/datum/species/insect/qualifies_for_rank(rank, list/features)
|
||||
return TRUE
|
||||
@@ -92,6 +92,9 @@
|
||||
|
||||
/mob/living/mech_melee_attack(obj/mecha/M)
|
||||
if(M.occupant.a_intent == INTENT_HARM)
|
||||
if(HAS_TRAIT(M.occupant, TRAIT_PACIFISM))
|
||||
to_chat(M.occupant, "<span class='warning'>You don't want to harm other living beings!</span>")
|
||||
return
|
||||
M.do_attack_animation(src)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
|
||||
@@ -58,7 +58,10 @@
|
||||
var/canholo = TRUE
|
||||
var/obj/item/card/id/access_card = null
|
||||
var/chassis = "repairbot"
|
||||
var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE, "fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE) //assoc value is whether it can be picked up.
|
||||
var/list/possible_chassis = list("cat" = TRUE, "mouse" = TRUE, "monkey" = TRUE, "corgi" = FALSE,
|
||||
"fox" = FALSE, "repairbot" = TRUE, "rabbit" = TRUE, "borgi" = FALSE ,
|
||||
"parrot" = FALSE, "bear" = FALSE , "mushroom" = FALSE, "crow" = FALSE ,
|
||||
"fairy" = FALSE , "spiderbot" = FALSE) //assoc value is whether it can be picked up.
|
||||
var/static/item_head_icon = 'icons/mob/pai_item_head.dmi'
|
||||
var/static/item_lh_icon = 'icons/mob/pai_item_lh.dmi'
|
||||
var/static/item_rh_icon = 'icons/mob/pai_item_rh.dmi'
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
var/obj/item/paicard/paicard // Inserted pai card.
|
||||
var/allow_pai = 1 // Are we even allowed to insert a pai card.
|
||||
var/bot_name
|
||||
var/oil_spill_type = /obj/effect/decal/cleanable/oil
|
||||
|
||||
var/list/player_access = list() //Additonal access the bots gets when player controlled
|
||||
var/emagged = FALSE
|
||||
@@ -216,9 +217,9 @@
|
||||
to_chat(user, "[src] is in pristine condition.")
|
||||
|
||||
/mob/living/simple_animal/bot/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
|
||||
if(amount>0 && prob(10))
|
||||
new /obj/effect/decal/cleanable/oil(loc)
|
||||
. = ..()
|
||||
if(. && prob(10))
|
||||
new oil_spill_type(loc)
|
||||
|
||||
/mob/living/simple_animal/bot/updatehealth()
|
||||
..()
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
bot_core_type = /obj/machinery/bot_core/honkbot
|
||||
window_id = "autohonk"
|
||||
window_name = "Honkomatic Bike Horn Unit v1.0.7"
|
||||
oil_spill_type = /obj/effect/decal/cleanable/oil/slippery //slip and slide fun for the whole family
|
||||
data_hud_type = DATA_HUD_SECURITY_BASIC // show jobs
|
||||
path_image_color = "#FF69B4"
|
||||
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
var/reagent_id = null
|
||||
|
||||
if(emagged == 2) //Emagged! Time to poison everybody.
|
||||
reagent_id = "toxin"
|
||||
reagent_id = HAS_TRAIT(C, TRAIT_TOXINLOVER)? "charcoal" : "toxin"
|
||||
|
||||
else
|
||||
if(treat_virus)
|
||||
|
||||
@@ -522,10 +522,10 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
//gets ID card object from special clothes slot or null.
|
||||
/mob/proc/get_idcard(hand_first = TRUE)
|
||||
var/obj/item/held_item = get_active_held_item()
|
||||
. = held_item?.GetID()
|
||||
. = held_item ? held_item.GetID() : null
|
||||
if(!.) //If so, then check the inactive hand
|
||||
held_item = get_inactive_held_item()
|
||||
. = held_item?.GetID()
|
||||
. = held_item ? held_item.GetID() : null
|
||||
|
||||
/mob/proc/get_id_in_hand()
|
||||
var/obj/item/held_item = get_active_held_item()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
implants = list(/obj/item/implant/explosive)
|
||||
|
||||
|
||||
/datum/outfit/ninja/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/ninja/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
if(istype(H.wear_suit, suit))
|
||||
var/obj/item/clothing/suit/space/space_ninja/S = H.wear_suit
|
||||
if(istype(H.belt, belt))
|
||||
|
||||
@@ -69,12 +69,12 @@
|
||||
/obj/item/projectile/beam/disabler
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
damage = 24 // Citadel change for balance from 36
|
||||
damage = 28 // Citadel change for balance from 36
|
||||
damage_type = STAMINA
|
||||
flag = "energy"
|
||||
hitsound = 'sound/weapons/tap.ogg'
|
||||
eyeblur = 0
|
||||
speed = 0.7
|
||||
speed = 0.6
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
tracer_type = /obj/effect/projectile/tracer/disabler
|
||||
|
||||
@@ -382,9 +382,10 @@
|
||||
|
||||
/obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
var/obj/item/reagent_containers/B = beaker
|
||||
B.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
user.put_in_hands(beaker)
|
||||
user.put_in_hands(B)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
else
|
||||
@@ -396,7 +397,6 @@
|
||||
cell = null
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/chem_dispenser/proc/get_macro_resolution()
|
||||
|
||||
@@ -515,6 +515,7 @@
|
||||
///Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
|
||||
/datum/reagent/lube/superlube
|
||||
name = "Super Duper Lube"
|
||||
id = "superlube"
|
||||
description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]."
|
||||
lube_kind = TURF_WET_SUPERLUBE
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "clownflower"
|
||||
volume = 30
|
||||
list_reagents = list(/datum/reagent/lube/superlube = 30)
|
||||
list_reagents = list("superlube" = 30)
|
||||
|
||||
/obj/item/reagent_containers/spray/waterflower/cyborg
|
||||
reagent_flags = NONE
|
||||
|
||||
@@ -41,6 +41,14 @@
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/board/ayyplantgenes
|
||||
name = "Machine Design (Alien Plant DNA Manipulator Board)"
|
||||
desc = "The circuit board for an advanced plant DNA manipulator, utilizing alien technologies."
|
||||
id = "ayyplantgenes"
|
||||
build_path = /obj/item/circuitboard/machine/plantgenes/vault
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/board/deepfryer
|
||||
name = "Machine Design (Deep Fryer)"
|
||||
desc = "The circuit board for a Deep Fryer."
|
||||
|
||||
@@ -84,8 +84,9 @@
|
||||
investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] has built [amount] of [path] at a [src]([type]).")
|
||||
for(var/i in 1 to amount)
|
||||
var/obj/item/I = new path(get_turf(src))
|
||||
if(efficient_with(I.type))
|
||||
var/obj/O = new path(get_turf(src))
|
||||
if(efficient_with(O.type) && isitem(O))
|
||||
var/obj/item/I = O
|
||||
I.materials = matlist.Copy()
|
||||
SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]"))
|
||||
|
||||
|
||||
@@ -616,7 +616,7 @@
|
||||
/datum/techweb_node/botany
|
||||
id = "botany"
|
||||
display_name = "Botanical Engineering"
|
||||
description = "Botanical tools"
|
||||
description = "Botanical tools."
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("diskplantgene", "portaseeder", "plantgenes", "flora_gun", "hydro_tray", "biogenerator", "seed_extractor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
@@ -1047,14 +1047,14 @@
|
||||
display_name = "Alien Biological Tools"
|
||||
description = "Advanced biological tools."
|
||||
prereq_ids = list("alientech", "advance_surgerytools")
|
||||
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery")
|
||||
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery", "ayyplantgenes")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/alien_engi
|
||||
id = "alien_engi"
|
||||
display_name = "Alien Engineering"
|
||||
description = "Alien engineering tools"
|
||||
description = "Alien engineering tools."
|
||||
prereq_ids = list("alientech", "exp_tools")
|
||||
design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
id = /obj/item/card/id/syndicate/anyone
|
||||
implants = list(/obj/item/implant/weapons_auth)
|
||||
|
||||
/datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/H)
|
||||
/datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
|
||||
H.faction |= ROLE_SYNDICATE
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate/comms
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
if("legs" in S.default_features)
|
||||
if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG)
|
||||
if(DIGITIGRADE in S.species_traits)
|
||||
digitigrade_type = lowertext(H.dna.features.["legs"])
|
||||
digitigrade_type = lowertext(H.dna.features["legs"])
|
||||
else
|
||||
digitigrade_type = null
|
||||
|
||||
@@ -363,9 +363,9 @@
|
||||
Smark = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
|
||||
if(Smark)
|
||||
body_markings_icon = Smark.icon
|
||||
if(H.dna.features.["mam_body_markings"] != "None")
|
||||
body_markings = lowertext(H.dna.features.["mam_body_markings"])
|
||||
aux_marking = lowertext(H.dna.features.["mam_body_markings"])
|
||||
if(H.dna.features["mam_body_markings"] != "None")
|
||||
body_markings = lowertext(H.dna.features["mam_body_markings"])
|
||||
aux_marking = lowertext(H.dna.features["mam_body_markings"])
|
||||
else
|
||||
body_markings = "plain"
|
||||
aux_marking = "plain"
|
||||
|
||||
@@ -110,4 +110,4 @@
|
||||
requires_tech = TRUE
|
||||
replaced_by = null
|
||||
|
||||
#undef EXPDIS_FAIL_MSG
|
||||
#undef BASE_HUMAN_REWARD
|
||||
@@ -212,7 +212,6 @@ obj/item/organ/heart/cybernetic/upgraded/on_life()
|
||||
ramount += regen_amount
|
||||
|
||||
/obj/item/organ/heart/cybernetic/upgraded/proc/used_dose()
|
||||
. = ..()
|
||||
addtimer(VARSET_CALLBACK(src, dose_available, TRUE), 5 MINUTES)
|
||||
ramount = 0
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
#define STANDARD_ORGAN_THRESHOLD 100
|
||||
#define STANDARD_ORGAN_HEALING 0.001
|
||||
|
||||
/obj/item/organ
|
||||
name = "organ"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
|
||||
@@ -1804,6 +1804,21 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
cost = 4
|
||||
restricted_roles = list("Cook", "Botanist", "Clown", "Mime")
|
||||
|
||||
/datum/uplink_item/role_restricted/strange_seeds
|
||||
name = "Pack of strange seeds"
|
||||
desc = "Mysterious seeds as strange as their name implies. Spooky."
|
||||
item = /obj/item/seeds/random
|
||||
cost = 2
|
||||
restricted_roles = list("Botanist")
|
||||
illegal_tech = FALSE
|
||||
|
||||
/datum/uplink_item/role_restricted/strange_seeds_10pack
|
||||
name = "Pack of strange seeds x10"
|
||||
desc = "Mysterious seeds as strange as their name implies. Spooky. These come in bulk"
|
||||
item = /obj/item/storage/box/strange_seeds_10pack
|
||||
cost = 20
|
||||
restricted_roles = list("Botanist")
|
||||
|
||||
/datum/uplink_item/role_restricted/ez_clean_bundle
|
||||
name = "EZ Clean Grenade Bundle"
|
||||
desc = "A box with three cleaner grenades using the trademark Waffle Co. formula. Serves as a cleaner and causes acid damage to anyone standing nearby. \
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
products = list(/obj/item/clothing/glasses/hud/diagnostic = 3,
|
||||
/obj/item/clothing/under/rank/roboticist = 3,
|
||||
/obj/item/clothing/under/rank/roboticist/skirt = 3,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/robotics = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat = 3,
|
||||
/obj/item/clothing/shoes/sneakers/black = 3,
|
||||
/obj/item/clothing/gloves/fingerless = 3,
|
||||
@@ -258,6 +259,7 @@
|
||||
vend_reply = "Thank you for using the JaniDrobe!"
|
||||
products = list(/obj/item/clothing/under/rank/janitor = 2,
|
||||
/obj/item/clothing/under/rank/janitor/skirt = 2,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/janitor = 3,
|
||||
/obj/item/cartridge/janitor = 3,
|
||||
/obj/item/clothing/gloves/color/black = 2,
|
||||
/obj/item/clothing/head/soft/purple = 2,
|
||||
@@ -340,6 +342,7 @@
|
||||
vend_reply = "Thank you for using the ChemDrobe!"
|
||||
products = list(/obj/item/clothing/under/rank/chemist = 3,
|
||||
/obj/item/clothing/under/rank/chemist/skirt = 3,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/chemistry = 3,
|
||||
/obj/item/clothing/shoes/sneakers/white = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat/chemist = 3,
|
||||
/obj/item/storage/backpack/chemistry = 3,
|
||||
@@ -359,6 +362,7 @@
|
||||
vend_reply = "Thank you for using the GeneDrobe!"
|
||||
products = list(/obj/item/clothing/under/rank/geneticist = 3,
|
||||
/obj/item/clothing/under/rank/geneticist/skirt = 3,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/genetics = 3,
|
||||
/obj/item/clothing/shoes/sneakers/white = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat/genetics = 3,
|
||||
/obj/item/storage/backpack/genetics = 3,
|
||||
@@ -376,6 +380,7 @@
|
||||
vend_reply = "Thank you for using the ViroDrobe"
|
||||
products = list(/obj/item/clothing/under/rank/virologist = 3,
|
||||
/obj/item/clothing/under/rank/virologist/skirt = 3,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/viro = 3,
|
||||
/obj/item/clothing/shoes/sneakers/white = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat/virologist = 3,
|
||||
/obj/item/clothing/mask/surgical = 3,
|
||||
|
||||
Reference in New Issue
Block a user