mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
Applies what my mom taught me about conflict resolution
This commit is contained in:
@@ -9,21 +9,21 @@
|
||||
|
||||
/mob/proc/CanContractDisease(datum/disease/D)
|
||||
if(stat == DEAD)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(D.GetDiseaseID() in resistances)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(HasDisease(D))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(count_by_type(viruses, /datum/disease/advance) >= 3)
|
||||
return 0
|
||||
if(istype(D, /datum/disease/advance) && count_by_type(viruses, /datum/disease/advance) > 0)
|
||||
return FALSE
|
||||
|
||||
if(!(type in D.viable_mobtypes))
|
||||
return -1 //for stupid fucking monkies
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/mob/proc/ContractDisease(datum/disease/D)
|
||||
|
||||
@@ -298,7 +298,7 @@ var/list/advance_cures = list(
|
||||
if(HasSymptom(S))
|
||||
return
|
||||
|
||||
if(symptoms.len < 5 + rand(-1, 1))
|
||||
if(symptoms.len < (VIRUS_SYMPTOM_LIMIT - 1) + rand(-1, 1))
|
||||
symptoms += S
|
||||
else
|
||||
RemoveSymptom(pick(symptoms))
|
||||
@@ -364,7 +364,7 @@ var/list/advance_cures = list(
|
||||
if(!user)
|
||||
return
|
||||
|
||||
var/i = 5
|
||||
var/i = VIRUS_SYMPTOM_LIMIT
|
||||
|
||||
var/datum/disease/advance/D = new(0, null)
|
||||
D.symptoms = list()
|
||||
|
||||
@@ -48,12 +48,4 @@
|
||||
if(!D)
|
||||
name = "Reality Enhancer"
|
||||
symptoms = list(new/datum/symptom/sensory_restoration)
|
||||
..(process, D, copy)
|
||||
|
||||
// Sensory Destruction
|
||||
|
||||
/datum/disease/advance/sensory_destruction/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
|
||||
if(!D)
|
||||
name = "Reality Destruction"
|
||||
symptoms = list(new/datum/symptom/sensory_destruction)
|
||||
..(process, D, copy)
|
||||
@@ -15,8 +15,8 @@ Bonus
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
/datum/symptom/sensory_restoration
|
||||
name = "Sensory Restoration"
|
||||
/datum/symptom/mind_restoration
|
||||
name = "Mind Restoration"
|
||||
stealth = -1
|
||||
resistance = -4
|
||||
stage_speed = -4
|
||||
@@ -24,85 +24,42 @@ Bonus
|
||||
level = 5
|
||||
severity = 0
|
||||
|
||||
/datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A)
|
||||
/datum/symptom/mind_restoration/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 3))
|
||||
var/mob/living/M = A.affected_mob
|
||||
var/datum/reagents/RD = M.reagents
|
||||
|
||||
switch(A.stage)
|
||||
if(2)
|
||||
if(RD.check_and_add("oculine", 10, 10))
|
||||
to_chat(M, "<span class='notice'>Your hearing feels clearer and crisp.</span>")
|
||||
if(3)
|
||||
if(RD.check_and_add("antihol", 10, 10))
|
||||
to_chat(M, "<span class='notice'>You feel sober.</span>")
|
||||
RD.check_and_add("oculine", 10, 10)
|
||||
if(4)
|
||||
if(RD.check_and_add("synaphydramine", 10, 5))
|
||||
to_chat(M, "<span class='notice'>You feel focused.</span>")
|
||||
RD.check_and_add("antihol", 10, 10)
|
||||
RD.check_and_add("oculine", 10, 10)
|
||||
if(5)
|
||||
if(RD.check_and_add("mannitol", 10, 10))
|
||||
to_chat(M, "<span class='notice'>Your mind feels relaxed.</span>")
|
||||
RD.check_and_add("synaphydramine", 10, 5)
|
||||
RD.check_and_add("antihol", 10, 10)
|
||||
RD.check_and_add("oculine", 10, 10)
|
||||
if(A.stage >= 3)
|
||||
M.AdjustSlur(-2)
|
||||
M.AdjustDrunk(-4)
|
||||
M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3, 0, 1)
|
||||
if(A.stage >= 4)
|
||||
M.AdjustDrowsy(-2)
|
||||
if(RD.has_reagent("lsd"))
|
||||
RD.remove_reagent("lsd", 5)
|
||||
if(RD.has_reagent("histamine"))
|
||||
RD.remove_reagent("histamine", 5)
|
||||
M.AdjustHallucinate(-10)
|
||||
if(A.stage >= 5)
|
||||
RD.check_and_add("mannitol", 10, 10)
|
||||
|
||||
return
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
Sensory-Destruction
|
||||
noticable.
|
||||
Lowers resistance
|
||||
Decreases stage speed tremendously.
|
||||
Decreases transmittablity tremendously.
|
||||
the drugs hit them so hard they have to focus on not dying
|
||||
|
||||
Bonus
|
||||
The body generates Sensory destructive chemicals.
|
||||
You cannot taste anything anymore.
|
||||
ethanol for extremely drunk victim
|
||||
lsd to break the mind
|
||||
impedrezene to ruin the brain
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
/datum/symptom/sensory_destruction
|
||||
name = "Sensory destruction"
|
||||
/datum/symptom/sensory_restoration
|
||||
name = "Sensory Restoration"
|
||||
stealth = -1
|
||||
resistance = -2
|
||||
stage_speed = -3
|
||||
resistance = -3
|
||||
stage_speed = -2
|
||||
transmittable = -4
|
||||
level = 6
|
||||
severity = 5
|
||||
level = 4
|
||||
|
||||
/datum/symptom/sensory_destruction/Activate(var/datum/disease/advance/A)
|
||||
/datum/symptom/sensory_restoration/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 5))
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1)
|
||||
to_chat(M, "<span class='warning'><b>You can't taste a thing.</b></span>")
|
||||
if(2)
|
||||
to_chat(M, "<span class='warning'><b>You can't feel anything.</b></span>")
|
||||
if(prob(10))
|
||||
M.reagents.add_reagent("morphine",rand(5,7))
|
||||
if(3)
|
||||
M.reagents.add_reagent("ethanol",rand(5,7))
|
||||
to_chat(M, "<span class='warning'><b>You feel absolutely hammered.</b></span>")
|
||||
if(prob(15))
|
||||
M.reagents.add_reagent("morphine",rand(5,7))
|
||||
if(4)
|
||||
M.reagents.add_reagent_list(list("ethanol"=rand(7,15),"lsd"=rand(5,10)))
|
||||
to_chat(M, "<span class='warning'><b>You try to focus on not dying.</b></span>")
|
||||
if(prob(20))
|
||||
M.reagents.add_reagent("morphine",rand(5,7))
|
||||
if(5)
|
||||
M.reagents.add_reagent_list(list("haloperidol"=rand(5,15),"ethanol"=rand(7,20),"lsd"=rand(5,15)))
|
||||
to_chat(M, "<span class='warning'><b>u can count 2 potato!</b></span>")
|
||||
if(prob(25))
|
||||
M.reagents.add_reagent("morphine",rand(5,7))
|
||||
return
|
||||
if(4, 5)
|
||||
if(M.reagents.get_reagent_amount("oculine") < 20)
|
||||
M.reagents.add_reagent("oculine", 20)
|
||||
else
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 5))
|
||||
to_chat(M, "<span class='notice'>[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]</span>")
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Stimulant //gotta go fast
|
||||
|
||||
Noticable.
|
||||
Lowers resistance significantly.
|
||||
Decreases stage speed moderately..
|
||||
Decreases transmittablity tremendously.
|
||||
Moderate Level.
|
||||
|
||||
Bonus
|
||||
The body generates Ephedrine.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/stimulant
|
||||
|
||||
name = "Stimulant"
|
||||
stealth = -1
|
||||
resistance = -3
|
||||
stage_speed = -2
|
||||
transmittable = -4
|
||||
level = 3
|
||||
|
||||
/datum/symptom/stimulant/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 10))
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(5)
|
||||
if(M.reagents.get_reagent_amount("ephedrine") < 10)
|
||||
M.reagents.add_reagent("ephedrine", 10)
|
||||
else
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 5))
|
||||
to_chat(M, "<span class='notice'>[pick("You feel restless.", "You feel like running laps around the station.")]</span>")
|
||||
return
|
||||
@@ -47,44 +47,4 @@ Bonus
|
||||
M.BecomeNearsighted()
|
||||
if(prob(eyes.damage - 10 + 1))
|
||||
if(M.BecomeBlind())
|
||||
to_chat(M, "<span class='userdanger'>You go blind!</span>")
|
||||
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Ocular Restoration
|
||||
|
||||
Noticable.
|
||||
Lowers resistance significantly.
|
||||
Decreases stage speed moderately..
|
||||
Decreases transmittablity tremendously.
|
||||
High level.
|
||||
|
||||
Bonus
|
||||
Restores eyesight.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/visionaid
|
||||
|
||||
name = "Ocular Restoration"
|
||||
stealth = -1
|
||||
resistance = -3
|
||||
stage_speed = -2
|
||||
transmittable = -4
|
||||
level = 4
|
||||
|
||||
/datum/symptom/visionaid/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 5))
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
if(M.reagents.get_reagent_amount("oculine") < 20)
|
||||
M.reagents.add_reagent("oculine", 20)
|
||||
else
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB * 5))
|
||||
to_chat(M, "<span class='notice'>[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]</span>")
|
||||
return
|
||||
to_chat(M, "<span class='userdanger'>You go blind!</span>")
|
||||
@@ -1,47 +1,6 @@
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Weight Gain
|
||||
|
||||
Very Very Noticable.
|
||||
Decreases resistance.
|
||||
Decreases stage speed.
|
||||
Reduced transmittable.
|
||||
Intense Level.
|
||||
|
||||
Bonus
|
||||
Increases the weight gain of the mob,
|
||||
forcing it to eventually turn fat.
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/weight_gain
|
||||
|
||||
name = "Weight Gain"
|
||||
stealth = -3
|
||||
resistance = -3
|
||||
stage_speed = -2
|
||||
transmittable = -2
|
||||
level = 4
|
||||
severity = 1
|
||||
|
||||
/datum/symptom/weight_gain/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(1, 2, 3, 4)
|
||||
to_chat(M, "<span class='warning'>[pick("You feel blubbery.", "Your stomach hurts.")]</span>")
|
||||
else
|
||||
M.overeatduration = min(M.overeatduration + 100, 600)
|
||||
M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL)
|
||||
|
||||
return
|
||||
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Weight Loss
|
||||
|
||||
Very Very Noticable.
|
||||
@@ -77,45 +36,4 @@ Bonus
|
||||
else
|
||||
to_chat(M, "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>")
|
||||
M.overeatduration = max(M.overeatduration - 100, 0)
|
||||
M.nutrition = max(M.nutrition - 100, 0)
|
||||
|
||||
return
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
|
||||
Weight Even
|
||||
|
||||
Very Noticable.
|
||||
Decreases resistance.
|
||||
Decreases stage speed.
|
||||
Reduced transmittable.
|
||||
High level.
|
||||
|
||||
Bonus
|
||||
Causes the weight of the mob to
|
||||
be even, meaning eating isn't
|
||||
required anymore.
|
||||
|
||||
//////////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/symptom/weight_even
|
||||
|
||||
name = "Weight Even"
|
||||
stealth = -3
|
||||
resistance = -2
|
||||
stage_speed = -2
|
||||
transmittable = -2
|
||||
level = 4
|
||||
|
||||
/datum/symptom/weight_even/Activate(datum/disease/advance/A)
|
||||
..()
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
var/mob/living/M = A.affected_mob
|
||||
switch(A.stage)
|
||||
if(4, 5)
|
||||
M.overeatduration = 0
|
||||
M.nutrition = NUTRITION_LEVEL_WELL_FED + 50
|
||||
|
||||
return
|
||||
M.nutrition = max(M.nutrition - 100, 0)
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
var/assigned_role //assigned role is what job you're assigned to when you join the station.
|
||||
var/special_role //special roles are typically reserved for antags or roles like ERT. If you want to avoid a character being automatically announced by the AI, on arrival (becuase they're an off station character or something); ensure that special_role and assigned_role are equal.
|
||||
var/offstation_role = FALSE //set to true for ERT, deathsquad, abductors, etc, that can go from and to z2 at will and shouldn't be antag targets
|
||||
var/list/restricted_roles = list()
|
||||
|
||||
var/list/spell_list = list() // Wizard mode & "Give Spell" badmin button.
|
||||
|
||||
@@ -825,7 +825,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "IV drip crate"
|
||||
access = access_cmo
|
||||
access = access_medical
|
||||
|
||||
/datum/supply_packs/medical/surgery
|
||||
name = "Surgery Crate"
|
||||
@@ -1036,6 +1036,15 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
containername = "party equipment"
|
||||
announce_beacons = list("Bar" = list("Bar"))
|
||||
|
||||
/datum/supply_packs/organic/bar
|
||||
name = "Bar Starter Kit"
|
||||
contains = list(/obj/item/storage/box/drinkingglasses,
|
||||
/obj/item/circuitboard/soda,
|
||||
/obj/item/circuitboard/beer)
|
||||
cost = 20
|
||||
containername = "beer starter kit"
|
||||
announce_beacons = list("Bar" = list("Bar"))
|
||||
|
||||
//////// livestock
|
||||
/datum/supply_packs/organic/cow
|
||||
name = "Cow Crate"
|
||||
|
||||
@@ -482,6 +482,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
surplus = 25
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/dangerous/sniper_compact //For when you really really hate that one guy.
|
||||
name = "Compact Sniper Rifle"
|
||||
desc = "A compact, unscoped version of the operative sniper rifle. Packs a powerful punch, but ammo is limited."
|
||||
reference = "CSR"
|
||||
item = /obj/item/gun/projectile/automatic/sniper_rifle/compact
|
||||
cost = 16
|
||||
surplus = 0
|
||||
cant_discount = TRUE
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/dangerous/crossbow
|
||||
name = "Energy Crossbow"
|
||||
desc = "A miniature energy crossbow that is small enough both to fit into a pocket and to slip into a backpack unnoticed by observers. Fires bolts tipped with toxin, a poisonous substance that is the product of a living organism. Stuns enemies for a short period of time. Recharges automatically."
|
||||
@@ -921,7 +931,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
reference = "PB"
|
||||
item = /obj/item/pizza_bomb
|
||||
cost = 5
|
||||
surplus = 8
|
||||
surplus = 80
|
||||
|
||||
/datum/uplink_item/explosives/grenadier
|
||||
name = "Grenadier's belt"
|
||||
@@ -1597,6 +1607,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
item = /obj/item/storage/box/syndicate
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
cant_discount = TRUE // You fucking wish
|
||||
var/crate_value = 50
|
||||
|
||||
/datum/uplink_item/badass/surplus_crate/super
|
||||
name = "Syndicate Super Surplus Crate"
|
||||
desc = "A crate containing 125 telecrystals worth of random syndicate leftovers."
|
||||
reference = "SYSS"
|
||||
cost = 40
|
||||
crate_value = 125
|
||||
|
||||
/datum/uplink_item/badass/surplus_crate/spawn_item(turf/loc, obj/item/uplink/U)
|
||||
var/obj/structure/closet/crate/C = new(loc)
|
||||
@@ -1604,16 +1622,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
var/list/buyable_items = list()
|
||||
for(var/category in temp_uplink_list)
|
||||
buyable_items += temp_uplink_list[category]
|
||||
var/remaining_TC = crate_value
|
||||
var/list/bought_items = list()
|
||||
var/list/itemlog = list()
|
||||
U.uses -= cost
|
||||
U.used_TC = 20
|
||||
var/remaining_TC = 50
|
||||
U.used_TC = cost
|
||||
|
||||
var/datum/uplink_item/I
|
||||
while(remaining_TC)
|
||||
I = pick(buyable_items)
|
||||
if(!I.surplus)
|
||||
if(!I.surplus || prob(100 - I.surplus))
|
||||
continue
|
||||
if(I.cost > remaining_TC)
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user