mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into BookClub
This commit is contained in:
+10
-9
@@ -126,6 +126,7 @@
|
||||
|
||||
proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
var/icon/preview_icon = null
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
|
||||
var/g = "m"
|
||||
if (H.gender == FEMALE)
|
||||
@@ -170,32 +171,32 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD)
|
||||
face_s.Blend(eyes_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style]
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[head_organ.h_style]
|
||||
if(hair_style)
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
// I'll want to make a species-specific proc for this sooner or later
|
||||
// But this'll do for now
|
||||
if(H.get_species() == "Slime People")
|
||||
if(head_organ.species.name == "Slime People")
|
||||
hair_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_ADD)
|
||||
else
|
||||
hair_s.Blend(rgb(H.r_hair, H.g_hair, H.b_hair), ICON_ADD)
|
||||
hair_s.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
|
||||
face_s.Blend(hair_s, ICON_OVERLAY)
|
||||
|
||||
//Head Accessory
|
||||
if(H.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[H.ha_style]
|
||||
if(head_organ.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
head_accessory_s.Blend(rgb(H.r_headacc, H.g_headacc, H.b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(rgb(head_organ.r_headacc, head_organ.g_headacc, head_organ.b_headacc), ICON_ADD)
|
||||
face_s.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.f_style]
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
|
||||
if(facial_hair_style && facial_hair_style.species_allowed)
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(H.get_species() == "Slime People")
|
||||
if(head_organ.species.name == "Slime People")
|
||||
facial_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_ADD)
|
||||
else
|
||||
facial_s.Blend(rgb(H.r_facial, H.g_facial, H.b_facial), ICON_ADD)
|
||||
facial_s.Blend(rgb(head_organ.r_facial, head_organ.g_facial, head_organ.b_facial), ICON_ADD)
|
||||
face_s.Blend(facial_s, ICON_OVERLAY)
|
||||
|
||||
//Markings
|
||||
|
||||
@@ -30,20 +30,21 @@ BONUS
|
||||
var/mob/living/M = A.affected_mob
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
switch(A.stage)
|
||||
if(1, 2)
|
||||
to_chat(H, "<span class='warning'>Your chin itches.</span>")
|
||||
if(H.f_style == "Shaved")
|
||||
H.f_style = "Jensen Beard"
|
||||
H.update_hair()
|
||||
if(head_organ.f_style == "Shaved")
|
||||
head_organ.f_style = "Jensen Beard"
|
||||
H.update_fhair()
|
||||
if(3, 4)
|
||||
to_chat(H, "<span class='warning'>You feel tough.</span>")
|
||||
if(!(H.f_style == "Dwarf Beard") && !(H.f_style == "Very Long Beard") && !(H.f_style == "Full Beard"))
|
||||
H.f_style = "Full Beard"
|
||||
H.update_hair()
|
||||
if(!(head_organ.f_style == "Dwarf Beard") && !(head_organ.f_style == "Very Long Beard") && !(head_organ.f_style == "Full Beard"))
|
||||
head_organ.f_style = "Full Beard"
|
||||
H.update_fhair()
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You feel manly!</span>")
|
||||
if(!(H.f_style == "Dwarf Beard") && !(H.f_style == "Very Long Beard"))
|
||||
H.f_style = pick("Dwarf Beard", "Very Long Beard")
|
||||
H.update_hair()
|
||||
if(!(head_organ.f_style == "Dwarf Beard") && !(head_organ.f_style == "Very Long Beard"))
|
||||
head_organ.f_style = pick("Dwarf Beard", "Very Long Beard")
|
||||
H.update_fhair()
|
||||
return
|
||||
@@ -31,7 +31,7 @@ Bonus
|
||||
switch(A.stage)
|
||||
if(2)
|
||||
if(M.reagents.get_reagent_amount("oculine")<10)
|
||||
M.reagents.add_reagent("oculine"=10)
|
||||
M.reagents.add_reagent("oculine", 10)
|
||||
to_chat(M, "<span class='notice'>Your hearing feels clearer and crisp.</span>")
|
||||
if(3)
|
||||
if(M.reagents.get_reagent_amount("antihol") < 10 && M.reagents.get_reagent_amount("oculine") < 10 )
|
||||
|
||||
@@ -31,18 +31,20 @@ BONUS
|
||||
to_chat(M, "<span class='warning'>[pick("Your scalp itches.", "Your skin feels flakey.")]</span>")
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
switch(A.stage)
|
||||
if(3, 4)
|
||||
if(!(H.h_style == "Bald") && !(H.h_style == "Balding Hair"))
|
||||
if(!(head_organ.h_style == "Bald") && !(head_organ.h_style == "Balding Hair"))
|
||||
to_chat(H, "<span class='warning'>Your hair starts to fall out in clumps...</span>")
|
||||
spawn(50)
|
||||
H.h_style = "Balding Hair"
|
||||
head_organ.h_style = "Balding Hair"
|
||||
H.update_hair()
|
||||
if(5)
|
||||
if(!(H.f_style == "Shaved") || !(H.h_style == "Bald"))
|
||||
if(!(head_organ.f_style == "Shaved") || !(head_organ.h_style == "Bald"))
|
||||
to_chat(H, "<span class='warning'>Your hair starts to fall out in clumps...</span>")
|
||||
spawn(50)
|
||||
H.f_style = "Shaved"
|
||||
H.h_style = "Bald"
|
||||
head_organ.f_style = "Shaved"
|
||||
head_organ.h_style = "Bald"
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
return
|
||||
@@ -38,4 +38,16 @@
|
||||
if(prob(50))
|
||||
affected_mob.gib()
|
||||
else
|
||||
return
|
||||
return
|
||||
|
||||
/datum/disease/gbs/curable
|
||||
name = "Non-Contagious GBS"
|
||||
stage_prob = 5
|
||||
spread_text = "Non-Contagious"
|
||||
spread_flags = SPECIAL
|
||||
cure_text = "Cryoxadone"
|
||||
cures = list("cryoxadone")
|
||||
cure_chance = 10
|
||||
agent = "gibbis"
|
||||
spread_flags = NON_CONTAGIOUS
|
||||
disease_flags = CURABLE
|
||||
@@ -0,0 +1,51 @@
|
||||
/datum/disease/kuru
|
||||
name = "Space Kuru"
|
||||
max_stages = 4
|
||||
stage_prob = 5
|
||||
spread_text = "Non-Contagious"
|
||||
spread_flags = SPECIAL
|
||||
cure_text = "Incurable"
|
||||
agent = "Prions"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
desc = "Uncontrollable laughing."
|
||||
severity = BIOHAZARD
|
||||
spread_flags = NON_CONTAGIOUS
|
||||
|
||||
/datum/disease/kuru/stage_act()
|
||||
..()
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(50))
|
||||
affected_mob.emote("laugh")
|
||||
if(prob(50))
|
||||
affected_mob.Jitter(25)
|
||||
if(2)
|
||||
if (prob(50))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] laughs uncontrollably!</span>")
|
||||
affected_mob.Stun(10)
|
||||
affected_mob.Weaken(10)
|
||||
affected_mob.Jitter(250)
|
||||
affected_mob.drop_l_hand()
|
||||
affected_mob.drop_r_hand()
|
||||
if(3)
|
||||
if(prob(25))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel like you are about to drop dead!</span>")
|
||||
to_chat(affected_mob, "<span class='danger'>Your body convulses painfully!</span>")
|
||||
affected_mob.drop_l_hand()
|
||||
affected_mob.drop_r_hand()
|
||||
affected_mob.adjustBruteLoss(5)
|
||||
affected_mob.adjustOxyLoss(5)
|
||||
affected_mob.Stun(10)
|
||||
affected_mob.Weaken(10)
|
||||
affected_mob.Jitter(250)
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] laughs uncontrollably!</span>")
|
||||
if(4)
|
||||
if(prob(25))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel like you are going to die!</span>")
|
||||
affected_mob.adjustOxyLoss(75)
|
||||
affected_mob.adjustBruteLoss(75)
|
||||
affected_mob.drop_l_hand()
|
||||
affected_mob.drop_r_hand()
|
||||
affected_mob.Stun(10)
|
||||
affected_mob.Weaken(10)
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] laughs uncontrollably!</span>")
|
||||
@@ -0,0 +1,34 @@
|
||||
/datum/disease/vampire
|
||||
name = "Grave Fever"
|
||||
max_stages = 3
|
||||
stage_prob = 5
|
||||
spread_text = "Non-Contagious"
|
||||
spread_flags = SPECIAL
|
||||
cure_text = "Antibiotics"
|
||||
cures = list("spaceacillin")
|
||||
agent = "Grave Dust"
|
||||
cure_chance = 20
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
severity = DANGEROUS
|
||||
disease_flags = CURABLE
|
||||
spread_flags = NON_CONTAGIOUS
|
||||
|
||||
/datum/disease/vampire/stage_act()
|
||||
..()
|
||||
var/toxdamage = stage * 2
|
||||
var/stuntime = stage * 2
|
||||
|
||||
if(prob(10))
|
||||
affected_mob.emote(pick("cough","groan", "gasp"))
|
||||
affected_mob.losebreath++
|
||||
|
||||
if(prob(15))
|
||||
if(prob(33))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel sickly and weak.</span>")
|
||||
affected_mob.slowed += 3
|
||||
affected_mob.adjustToxLoss(toxdamage)
|
||||
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>Your joints ache horribly!</span>")
|
||||
affected_mob.Weaken(stuntime)
|
||||
affected_mob.Stun(stuntime)
|
||||
+2
-2
@@ -485,13 +485,13 @@
|
||||
if(!def_value)//If it's a custom objective, it will be an empty string.
|
||||
def_value = "custom"
|
||||
|
||||
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "blood", "debrain", "protect", "prevent", "harm", "brig", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "destroy", "maroon", "identity theft", "custom")
|
||||
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "blood", "debrain", "protect", "prevent", "brig", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "destroy", "maroon", "identity theft", "custom")
|
||||
if (!new_obj_type) return
|
||||
|
||||
var/datum/objective/new_objective = null
|
||||
|
||||
switch (new_obj_type)
|
||||
if ("assassinate","protect","debrain", "harm", "brig", "maroon")
|
||||
if ("assassinate","protect","debrain", "brig", "maroon")
|
||||
//To determine what to name the objective in explanation text.
|
||||
var/objective_type_capital = uppertext(copytext(new_obj_type, 1,2))//Capitalize first letter.
|
||||
var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text.
|
||||
|
||||
+37
-11
@@ -54,8 +54,13 @@ var/list/uplink_items = list()
|
||||
var/list/excludefrom = list() //Empty list does nothing. Place the name of gamemode you don't want this item to be available in here. This is so you dont have to list EVERY mode to exclude something.
|
||||
var/list/job = null
|
||||
var/surplus = 100 //Chance of being included in the surplus crate (when pick() selects it)
|
||||
var/hijack_only = 0 //can this item be purchased only during hijackings?
|
||||
|
||||
/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U)
|
||||
if(hijack_only)
|
||||
if(!(locate(/datum/objective/hijack) in usr.mind.objectives))
|
||||
to_chat(usr, "<span class='warning'>The Syndicate lacks resources to provide you with this item.</span>")
|
||||
return
|
||||
if(item)
|
||||
U.uses -= max(cost, 0)
|
||||
U.used_TC += cost
|
||||
@@ -89,15 +94,16 @@ var/list/uplink_items = list()
|
||||
|
||||
var/obj/I = spawn_item(get_turf(user), U)
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/A = user
|
||||
A.put_in_any_hand_if_possible(I)
|
||||
if(I)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/A = user
|
||||
A.put_in_any_hand_if_possible(I)
|
||||
|
||||
if(istype(I,/obj/item/weapon/storage/box/) && I.contents.len>0)
|
||||
for(var/atom/o in I)
|
||||
U.purchase_log += "<BIG>\icon[o]</BIG>"
|
||||
else
|
||||
U.purchase_log += "<BIG>\icon[I]</BIG>"
|
||||
if(istype(I,/obj/item/weapon/storage/box/) && I.contents.len>0)
|
||||
for(var/atom/o in I)
|
||||
U.purchase_log += "<BIG>\icon[o]</BIG>"
|
||||
else
|
||||
U.purchase_log += "<BIG>\icon[I]</BIG>"
|
||||
|
||||
//U.interact(user)
|
||||
return 1
|
||||
@@ -174,6 +180,16 @@ var/list/uplink_items = list()
|
||||
cost = 13
|
||||
job = list("Chaplain")
|
||||
|
||||
/datum/uplink_item/jobspecific/artistic_toolbox
|
||||
name = "Artistic Toolbox"
|
||||
desc = "An accursed toolbox that grants its followers extreme power at the cost of requiring repeated sacrifices to it. If sacrifices are not provided, it will turn on its follower."
|
||||
reference = "HGAT"
|
||||
item = /obj/item/weapon/storage/toolbox/green/memetic
|
||||
cost = 20
|
||||
job = list("Chaplain")
|
||||
surplus = 0 //No lucky chances from the crate; if you get this, this is ALL you're getting
|
||||
hijack_only = 1 //This is a murderbone weapon, as such, it should only be available in those scenarios.
|
||||
|
||||
//Janitor
|
||||
|
||||
/datum/uplink_item/jobspecific/cautionsign
|
||||
@@ -235,6 +251,16 @@ var/list/uplink_items = list()
|
||||
cost = 5
|
||||
job = list("Barber")
|
||||
|
||||
//Botanist
|
||||
|
||||
/datum/uplink_item/jobspecific/bee_briefcase
|
||||
name = "Briefcase Full of Bees"
|
||||
desc = "A seemingly innocent briefcase full of not-so-innocent Syndicate-bred bees. Inject the case with blood to train the bees to ignore the donor(s). It also wirelessly taps into station intercomms to broadcast a message of TERROR."
|
||||
reference = "BEE"
|
||||
item = /obj/item/weapon/bee_briefcase
|
||||
cost = 10
|
||||
job = list("Botanist")
|
||||
|
||||
//Engineer
|
||||
|
||||
/datum/uplink_item/jobspecific/powergloves
|
||||
@@ -302,7 +328,7 @@ var/list/uplink_items = list()
|
||||
reference = "TPB"
|
||||
item = /obj/item/weapon/reagent_containers/glass/bottle/traitor
|
||||
cost = 2
|
||||
job = list("Scientist","Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Chemist","Paramedic","Virologist","Bartender")
|
||||
job = list("Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Virologist","Bartender")
|
||||
|
||||
// DANGEROUS WEAPONS
|
||||
|
||||
@@ -618,7 +644,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/sleepy_pen
|
||||
name = "Sleepy Pen"
|
||||
desc = "A syringe disguised as a functional pen. It's filled with a potent anaesthetic. \The pen holds two doses of the mixture. The pen can be refilled."
|
||||
desc = "A syringe disguised as a functional pen. It's filled with a potent anaesthetic. \ The pen holds two doses of the mixture. The pen can be refilled."
|
||||
reference = "SP"
|
||||
item = /obj/item/weapon/pen/sleepy
|
||||
cost = 8
|
||||
@@ -673,7 +699,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/dehy_carp
|
||||
name = "Dehydrated Space Carp"
|
||||
desc = "Just add water to make your very own hostile to everything space carp. It looks just like a plushie."
|
||||
desc = "Just add water to make your very own hostile to everything space carp. It looks just like a plushie. The first person to squeeze it will be registered as its owner, who it will not attack. If no owner is registered, it'll just attack everyone."
|
||||
reference = "DSC"
|
||||
item = /obj/item/toy/carpplushie/dehy_carp
|
||||
cost = 3
|
||||
|
||||
Reference in New Issue
Block a user