Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Research major property rebalance #6225

Merged
merged 82 commits into from
May 28, 2024
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
4d1511c
Update Chemistry-Generator.dm
iloveloopers May 1, 2024
e8bf8f6
Update other.dm
iloveloopers May 1, 2024
73e887f
Update other.dm
iloveloopers May 1, 2024
2b60b53
Update other.dm
iloveloopers May 1, 2024
d334f6c
Update prop_negative.dm
iloveloopers May 1, 2024
cc2b222
Update prop_special.dm
iloveloopers May 1, 2024
2bdea43
Update prop_neutral.dm
iloveloopers May 1, 2024
62feeee
Update chem_property.dm
iloveloopers May 1, 2024
04175d1
Update chem_simulator.dm
iloveloopers May 1, 2024
72dac27
Update prop_positive.dm
iloveloopers May 1, 2024
270565a
Update prop_positive.dm
iloveloopers May 1, 2024
44b134e
Update Chemistry-Reagents.dm
iloveloopers May 1, 2024
1a1bf6e
Update prop_positive.dm
iloveloopers May 1, 2024
42e46a2
Merge branch 'cmss13-devs:master' into property_rebalance
iloveloopers May 5, 2024
90fd74c
Update prop_special.dm
iloveloopers May 5, 2024
5d03de2
Merge branch 'master' into property_rebalance
iloveloopers May 13, 2024
08913d0
Update prop_positive.dm
iloveloopers May 18, 2024
a30ff95
Update prop_positive.dm
iloveloopers May 18, 2024
fc5b03a
Update chemsmoke.dm
iloveloopers May 21, 2024
8a10ee5
Update chemsmoke.dm
iloveloopers May 21, 2024
88be7b8
Merge branch 'master' into property_rebalance
iloveloopers May 21, 2024
19e9ff2
slightly better now
iloveloopers May 21, 2024
0a2cbd4
way too punishing
iloveloopers May 21, 2024
39bdf21
why was it like this anyways?
iloveloopers May 22, 2024
eb3ea3b
Update flamer.dm
iloveloopers May 22, 2024
e428ff7
Update prop_special.dm
iloveloopers May 22, 2024
020625d
Update chemsmoke.dm
iloveloopers May 22, 2024
fedf7fa
Update prop_special.dm
iloveloopers May 22, 2024
46b7b2e
Update prop_positive.dm
iloveloopers May 22, 2024
8f528b1
Update Chemistry-Generator.dm
iloveloopers May 22, 2024
e67016b
Update flamer.dm
iloveloopers May 22, 2024
21929fa
Merge branch 'master' into property_rebalance
iloveloopers May 22, 2024
9eecef0
Merge branch 'master' into property_rebalance
iloveloopers May 22, 2024
bc53b3b
Update say.dm
iloveloopers May 22, 2024
eae6d67
Update xeno_verbs.dm
iloveloopers May 22, 2024
f3bb6df
Update prop_positive.dm
iloveloopers May 23, 2024
e493245
Merge branch 'master' into property_rebalance
iloveloopers May 23, 2024
184dba5
Update flamer.dm
iloveloopers May 23, 2024
3a1387d
Merge branch 'cmss13-devs:master' into property_rebalance
iloveloopers May 23, 2024
0682c53
Update XenoProcs.dm
iloveloopers May 23, 2024
7ffdace
Update Xenomorph.dm
iloveloopers May 23, 2024
325ced4
Update life.dm
iloveloopers May 23, 2024
336825e
Update XenoProcs.dm
iloveloopers May 23, 2024
51aae0e
Update life.dm
iloveloopers May 23, 2024
7838616
Update XenoProcs.dm
iloveloopers May 23, 2024
a51c704
Update life.dm
iloveloopers May 23, 2024
e1e1d5f
Update Xenomorph.dm
iloveloopers May 23, 2024
cdea9a2
Update colonialmarines.dme
iloveloopers May 24, 2024
b46d704
Add files via upload
iloveloopers May 24, 2024
f2e3e2f
Update toxin_buildup.dm
iloveloopers May 24, 2024
ef1da7c
Update speed_modifier.dm
iloveloopers May 24, 2024
3f3aa72
Update healing_reduction.dm
iloveloopers May 24, 2024
e2ed294
Update XenoProcs.dm
iloveloopers May 24, 2024
f59bef5
Update XenoProcs.dm
iloveloopers May 24, 2024
20b7835
Update life.dm
iloveloopers May 24, 2024
cb8702f
Update Xenomorph.dm
iloveloopers May 24, 2024
4daf778
Update XenoProcs.dm
iloveloopers May 24, 2024
48d4e5b
Update fruit.dm
iloveloopers May 24, 2024
bd3ac08
Update prop_negative.dm
iloveloopers May 24, 2024
0f1955a
Update prop_positive.dm
iloveloopers May 24, 2024
4445ac8
Update prop_special.dm
iloveloopers May 24, 2024
0cb7ebc
Update pistol.dm
iloveloopers May 24, 2024
b220a54
Update revolver.dm
iloveloopers May 24, 2024
d4826dc
Update rifle.dm
iloveloopers May 24, 2024
feabd1a
Update smg.dm
iloveloopers May 24, 2024
6aeac91
Update prop_positive.dm
iloveloopers May 24, 2024
8999e2e
Merge branch 'master' into property_rebalance
iloveloopers May 24, 2024
33f2003
vsc test
iloveloopers May 24, 2024
1f41ea6
interference component and stuff
iloveloopers May 25, 2024
ac5d94f
Merge remote-tracking branch 'upstream/master' into property_rebalance
iloveloopers May 25, 2024
9062b75
quick fix
iloveloopers May 25, 2024
cc24c32
Apply suggestions from code review
iloveloopers May 25, 2024
5b376bc
test
iloveloopers May 25, 2024
91b6f0d
overwatch fix and interference overflow fix
iloveloopers May 25, 2024
2294031
Reduce awareness spam if immune while getting applied
Drulikar May 25, 2024
39aad11
grace period rework + overwatch fix
iloveloopers May 25, 2024
6f42d04
grace period buff
iloveloopers May 26, 2024
f54ce55
Merge branch 'master' into property_rebalance
iloveloopers May 26, 2024
ece7e03
daze component + some touch ups
iloveloopers May 26, 2024
3f45704
Merge remote-tracking branch 'upstream/master' into property_rebalance
iloveloopers May 26, 2024
be392c6
Update code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm
iloveloopers May 28, 2024
f50fbd1
true
iloveloopers May 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions code/game/objects/effects/effect_system/chemsmoke.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
time_to_live = 300
anchored = TRUE
smokeranking = SMOKE_RANK_HIGH
alpha = 100
var/obj/chemholder

/obj/effect/particle_effect/smoke/chem/Initialize()
. = ..()
Expand Down Expand Up @@ -138,10 +140,10 @@
var/dist = cheap_pythag(T.x - location.x, T.y - location.y)
if(!dist)
dist = 1
R.reaction_mob(A, volume = R.volume / dist, permeable = FALSE)
R.reaction_mob(A, volume = R.volume * POTENCY_MULTIPLIER_VLOW / dist, permeable = FALSE)
else if(istype(A, /obj))
R.reaction_obj(A, R.volume)
sleep(30)
sleep(3 SECONDS)


//build smoke icon
Expand Down Expand Up @@ -199,10 +201,7 @@
smoke.pixel_x = -32 + rand(-8,8)
smoke.pixel_y = -32 + rand(-8,8)
walk_to(smoke, T)
smoke.set_opacity(1) //switching opacity on after the smoke has spawned, and then
sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner
if(smoke.opacity)
smoke.set_opacity(0)
sleep(150+rand(0,20))
fadeOut(smoke)
qdel(smoke)

Expand Down Expand Up @@ -259,3 +258,8 @@
targetTurfs = complete

return

/obj/effect/particle_effect/smoke/chem/affect(mob/living/carbon/M)
if(reagents.reagent_list.len)
for(var/datum/reagent/reagent in reagents.reagent_list)
reagent.reaction_mob(M, volume = reagent.volume * POTENCY_MULTIPLIER_VLOW, permeable = FALSE)
4 changes: 3 additions & 1 deletion code/modules/reagents/Chemistry-Generator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,9 @@
PROPERTY_NEUROSHIELDING = list(PROPERTY_ALCOHOLIC, PROPERTY_BALDING),\
PROPERTY_ANTIADDICTIVE = list(PROPERTY_PSYCHOSTIMULATING, PROPERTY_ANTIHALLUCINOGENIC),\
PROPERTY_ADDICTIVE = list(PROPERTY_PSYCHOSTIMULATING, PROPERTY_NEUROTOXIC),\
PROPERTY_CIPHERING_PREDATOR = list(PROPERTY_CIPHERING, PROPERTY_CROSSMETABOLIZING))
PROPERTY_CIPHERING_PREDATOR = list(PROPERTY_CIPHERING, PROPERTY_CROSSMETABOLIZING),\
PROPERTY_FIRE_PENETRATING = list(PROPERTY_OXYGENATING, PROPERTY_VISCOUS),\
PROPERTY_BONEMENDING = list(PROPERTY_HYPERDENSIFICATING, PROPERTY_NUTRITIOUS))
var/datum/chem_property/match
var/datum/chem_property/initial_property
for(var/datum/chem_property/P in properties)
Expand Down
17 changes: 10 additions & 7 deletions code/modules/reagents/Chemistry-Reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,17 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
if(potency <= 0)
continue
P.process(M, potency, delta_time)
if(flags & REAGENT_CANNOT_OVERDOSE)
continue
if(overdose && volume > overdose)
P.process_overdose(M, potency, delta_time)
if(overdose_critical && volume > overdose_critical)
P.process_critical(M, potency, delta_time)
var/overdose_message = "[istype(src, /datum/reagent/generated) ? "custom chemical" : initial(name)] overdose"
M.last_damage_data = create_cause_data(overdose_message, last_source_mob?.resolve())
if(flags & REAGENT_CANNOT_OVERDOSE)
var/ammount_overdosed = volume - overdose
holder.remove_reagent(id, ammount_overdosed)
holder.add_reagent("sugar", ammount_overdosed)
else
P.process_overdose(M, potency, delta_time)
if(overdose_critical && volume > overdose_critical)
P.process_critical(M, potency, delta_time)
var/overdose_message = "[istype(src, /datum/reagent/generated) ? "custom chemical" : initial(name)] overdose"
M.last_damage_data = create_cause_data(overdose_message, last_source_mob?.resolve())

if(mods[REAGENT_PURGE])
holder.remove_all_type(/datum/reagent,mods[REAGENT_PURGE] * delta_time)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@
min_creation_cost += slots_used - 2
for(var/datum/chem_property/P in creation_template)
creation_cost += max(abs(P.value), 1) * P.level
if(P.level > 5) // a penalty is added at each level above 5 (+1 at 6, +2 at 7, +4 at 8, +5 at 9, +7 at 10)
if(P.level > 5 && P.cost_penalty) // a penalty is added at each level above 5 (+1 at 6, +2 at 7, +4 at 8, +5 at 9, +7 at 10)
creation_cost += P.level - 6 + ceil((P.level - 5) / 2)
creation_cost += ((new_od_level - 10) / 5) * 3 //3 cost for every 5 units above 10
for(var/rarity in creation_complexity)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/reagents/chemistry_properties/chem_property.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
var/updates_stats = FALSE //should the property change other variables in the reagent when added or removed?
/// Should reagent with this property explode/start fire when mixed more than overdose threshold at once?
var/volatile = FALSE
/// a cost penalty is added at each level above 5 (+1 at 6, +2 at 7, +4 at 8, +5 at 9, +7 at 10)
var/cost_penalty = TRUE

/datum/chem_property/Destroy()
holder = null
Expand Down
3 changes: 3 additions & 0 deletions code/modules/reagents/chemistry_properties/prop_negative.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
rarity = PROPERTY_COMMON
starter = TRUE
value = 1 //has a combat use
cost_penalty = FALSE

/datum/chem_property/negative/corrosive/process(mob/living/M, potency = 1, delta_time)
..()
Expand Down Expand Up @@ -243,6 +244,7 @@
description = "Ruptures endothelial cells making up bloodvessels, causing blood to escape from the circulatory system."
rarity = PROPERTY_UNCOMMON
value = 2
cost_penalty = FALSE

/datum/chem_property/negative/hemorrhaging/process(mob/living/M, potency = 1, delta_time)
if(!ishuman(M))
Expand Down Expand Up @@ -411,6 +413,7 @@
description = "Breaks down neurons causing widespread damage to the central nervous system and brain functions. Exposure may cause disorientation or unconsciousness to affected persons."
rarity = PROPERTY_COMMON
category = PROPERTY_TYPE_TOXICANT|PROPERTY_TYPE_STIMULANT
cost_penalty = FALSE

/datum/chem_property/negative/neurotoxic/process(mob/living/M, potency = 1)
M.apply_damage(POTENCY_MULTIPLIER_MEDIUM * potency, BRAIN)
Expand Down
1 change: 1 addition & 0 deletions code/modules/reagents/chemistry_properties/prop_neutral.dm
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,7 @@
rarity = PROPERTY_RARE
starter = FALSE
value = 3
cost_penalty = FALSE
var/heal_amount = 0.75

/datum/chem_property/neutral/transformative/process(mob/living/M, potency = 1, delta_time)
Expand Down
54 changes: 46 additions & 8 deletions code/modules/reagents/chemistry_properties/prop_positive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
rarity = PROPERTY_COMMON
starter = TRUE
value = 1
cost_penalty = FALSE

/datum/chem_property/positive/anticorrosive/process(mob/living/M, potency = 1)
M.heal_limb_damage(0, potency)
Expand All @@ -47,6 +48,7 @@
rarity = PROPERTY_COMMON
starter = TRUE
value = 1
cost_penalty = FALSE

/datum/chem_property/positive/neogenetic/process(mob/living/M, potency = 1)
M.heal_limb_damage(potency, 0)
Expand Down Expand Up @@ -167,10 +169,9 @@
value = 3

/datum/chem_property/positive/nervestimulating/process(mob/living/M, potency = 1)
M.adjust_effect(potency*-1, PARALYZE)
M.adjust_effect(potency*-1, STUN)
M.adjust_effect(potency*-1, WEAKEN)
M.adjust_effect(-0.5*potency, STUN)
M.adjust_effect(potency*-0.80, PARALYZE)
M.adjust_effect(potency*-0.80, STUN)
M.adjust_effect(potency*-0.80, WEAKEN)
if(potency > CREATE_MAX_TIER_1)
M.stuttering = max(M.stuttering - POTENCY_MULTIPLIER_MEDIUM * potency, 0)
M.confused = max(M.confused - POTENCY_MULTIPLIER_MEDIUM * potency, 0)
Expand Down Expand Up @@ -199,7 +200,7 @@
category = PROPERTY_TYPE_STIMULANT

/datum/chem_property/positive/musclestimulating/process(mob/living/M, potency = 1)
M.reagent_move_delay_modifier -= POTENCY_MULTIPLIER_VLOW * potency
M.reagent_move_delay_modifier -= 0.15 * potency
M.recalculate_move_delay = TRUE
M.nutrition = max (0, M.nutrition - 0.5 * HUNGER_FACTOR)
if(prob(10))
Expand Down Expand Up @@ -399,7 +400,7 @@
L.time_to_knit = 600 // 6 mins
if(L.time_to_knit && (L.status & LIMB_BROKEN) && L.knitting_time == -1)
if(!(L.status & LIMB_SPLINTED))
potency -= 2.5 // It'll work, but we're effectively 5 level lower.
potency -= 1 // It'll work, but we're effectively 2 levels lower.
if(potency > 0)
var/total_knitting_time = world.time + L.time_to_knit - min(150*potency, L.time_to_knit - 50)
L.knitting_time = total_knitting_time
Expand Down Expand Up @@ -450,6 +451,7 @@
description = "Causes a temporal freeze of all neurological processes and cellular respirations in the brain. This allows the brain to be preserved for long periods of time."
rarity = PROPERTY_UNCOMMON
category = PROPERTY_TYPE_REACTANT
cost_penalty = FALSE

/datum/chem_property/positive/neurocryogenic/process(mob/living/M, potency = 1, delta_time)
if(prob(10 * delta_time))
Expand Down Expand Up @@ -548,6 +550,7 @@
rarity = PROPERTY_RARE
category = PROPERTY_TYPE_REACTANT
value = 3
cost_penalty = FALSE
COOLDOWN_DECLARE(ghost_notif)

/datum/chem_property/positive/defibrillating/on_delete(mob/living/M)
Expand Down Expand Up @@ -684,6 +687,7 @@
rarity = PROPERTY_DISABLED
category = PROPERTY_TYPE_REACTANT|PROPERTY_TYPE_COMBUSTIBLE
value = 2
cost_penalty = FALSE

var/intensitymod_per_level = 0
var/radiusmod_per_level = 0
Expand Down Expand Up @@ -777,8 +781,6 @@
rarity = PROPERTY_COMMON
value = 1
range_per_level = 1
duration_per_level = -1
intensity_per_level = -1

intensitymod_per_level = -0.05
radiusmod_per_level = 0.05
Expand Down Expand Up @@ -835,6 +837,7 @@
description = "Disrupts certain neurological processes related to communication in animals."
rarity = PROPERTY_UNCOMMON
category = PROPERTY_TYPE_TOXICANT
cost_penalty = FALSE

/datum/chem_property/positive/disrupting/process(mob/living/M, potency = 1)
to_chat(M, SPAN_NOTICE("Your mind feels oddly... quiet."))
Expand All @@ -857,6 +860,7 @@
description = "Neutralizes certain reactive chemicals and plasmas on contact. Unsafe to administer intravenously."
rarity = PROPERTY_UNCOMMON
category = PROPERTY_TYPE_IRRITANT
cost_penalty = FALSE

/datum/chem_property/positive/neutralizing/process(mob/living/M, potency = 1)
M.apply_damages(0, potency, potency * POTENCY_MULTIPLIER_LOW)
Expand Down Expand Up @@ -992,3 +996,37 @@

/datum/chem_property/positive/anticarcinogenic/process_critical(mob/living/M, potency = 1)
M.take_limb_damage(POTENCY_MULTIPLIER_MEDIUM * potency)//Hyperactive apoptosis

/datum/chem_property/positive/regulating
name = PROPERTY_REGULATING
code = "REG"
description = "The chemical regulates its own metabolization, any ammount overdosed is turned into sugar."
rarity = PROPERTY_COMMON
category = PROPERTY_TYPE_METABOLITE
max_level = 1
value = 1

/datum/chem_property/positive/regulating/reset_reagent()
holder.flags = initial(holder.flags)
..()

/datum/chem_property/positive/regulating/update_reagent()
holder.flags |= REAGENT_CANNOT_OVERDOSE
..()

/datum/chem_property/positive/firepenetrating
name = PROPERTY_FIRE_PENETRATING
code = "PTR"
description = "Gives the chemical a unique, anomalous combustion chemistry, causing the flame to react with flame-resistant material and obliterate through it."
rarity = PROPERTY_RARE
category = PROPERTY_TYPE_REACTANT
value = 8
max_level = 1

/datum/chem_property/positive/firepenetrating/reset_reagent()
holder.fire_penetrating = initial(holder.fire_penetrating)
..()

/datum/chem_property/positive/firepenetrating/update_reagent()
holder.fire_penetrating = TRUE
..()
38 changes: 4 additions & 34 deletions code/modules/reagents/chemistry_properties/prop_special.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,16 @@
/datum/chem_property/special/boosting
name = PROPERTY_BOOSTING
code = "BST"
description = "Boosts the potency of all other properties in this chemical when inside the body."
description = "Boosts the potency of all other properties in this chemical when inside the body by up to 4 levels."
rarity = PROPERTY_LEGENDARY
category = PROPERTY_TYPE_METABOLITE
max_level = 4

/datum/chem_property/special/boosting/pre_process(mob/living/M)
if(level > max_level)
Drulikar marked this conversation as resolved.
Show resolved Hide resolved
level = max_level
return list(REAGENT_BOOST = level)

/datum/chem_property/special/regulating
name = PROPERTY_REGULATING
code = "REG"
description = "The chemical regulates its own metabolization and can thus never cause overdosis."
rarity = PROPERTY_LEGENDARY
category = PROPERTY_TYPE_METABOLITE
max_level = 1

/datum/chem_property/special/regulating/reset_reagent()
holder.flags = initial(holder.flags)
..()

/datum/chem_property/special/regulating/update_reagent()
holder.flags |= REAGENT_CANNOT_OVERDOSE
..()

/datum/chem_property/special/hypergenetic
name = PROPERTY_HYPERGENETIC
code = "HGN"
Expand Down Expand Up @@ -352,20 +339,3 @@
holder.durationfire += 1 * level
holder.durationmod += 0.1 * level
..()

/datum/chem_property/special/firepenetrating
name = PROPERTY_FIRE_PENETRATING
code = "PTR"
description = "Gives the chemical a unique, anomalous combustion chemistry, causing the flame to react with flame-resistant material and obliterate through it."
rarity = PROPERTY_LEGENDARY
category = PROPERTY_TYPE_REACTANT
value = 8
max_level = 1

/datum/chem_property/special/firepenetrating/reset_reagent()
holder.fire_penetrating = initial(holder.fire_penetrating)
..()

/datum/chem_property/special/firepenetrating/update_reagent()
holder.fire_penetrating = TRUE
..()
6 changes: 3 additions & 3 deletions code/modules/reagents/chemistry_reagents/other.dm
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@
color = "#484848" // rgb: 72, 72, 72
overdose = REAGENTS_OVERDOSE
chemclass = CHEM_CLASS_BASIC
properties = list(PROPERTY_NEUROTOXIC = 4)
properties = list(PROPERTY_NEUROTOXIC = 4, PROPERTY_NEUROCRYOGENIC = 1, PROPERTY_DISRUPTING = 1)

/datum/reagent/sulfur
name = "Sulfur"
Expand Down Expand Up @@ -310,7 +310,7 @@
overdose = REAGENTS_OVERDOSE
overdose_critical = REAGENTS_OVERDOSE_CRITICAL
chemclass = CHEM_CLASS_BASIC
properties = list(PROPERTY_TOXIC = 1)
properties = list(PROPERTY_TOXIC = 1, PROPERTY_NEUTRALIZING = 1)

/datum/reagent/sodium
name = "Sodium"
Expand Down Expand Up @@ -380,7 +380,7 @@
reagent_state = SOLID
color = "#C7C7C7" // rgb: 199,199,199
chemclass = CHEM_CLASS_BASIC
properties = list(PROPERTY_CARCINOGENIC = 2)
properties = list(PROPERTY_CARCINOGENIC = 2, PROPERTY_HEMORRAGING = 1)

/datum/reagent/thermite
name = "Thermite"
Expand Down
Loading