Skip to content

Commit

Permalink
Trickwine refactor to use status effects (#3390)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
A general cleanup of code and moving alot of stuff over to status_effect
to allow for better choreographing trickwine effects
I started this in may and should probably finish this
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
cleans up alot of ugly and bad code. you can now tell if someone is
hopped up on a trickwine easier.
<!-- Please add a short description of why you think these changes would
benefit the game. If you can't justify it in words, it might not be
worth adding. -->

## Changelog

:cl:
add: Readds prism and force, heavily reworked.
add: You can tell when someone is under the affects of a trickwine
easier.
balance: Alot of tweaks to the hostile effects because they can work off
status effects now.
balance: Trickwines off the blackmarket are slighter rarer and more
expensive.
balance: The reflective trait now grants full reflection instead of a
50/50 chance.
refactor: Refactored alot of trickwine code, they work off of effects
now and are easier to read.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
  • Loading branch information
FalloutFalcon authored Jan 28, 2025
1 parent 315cd4f commit 584b3cb
Show file tree
Hide file tree
Showing 12 changed files with 433 additions and 81 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,8 @@
///sent when the access on an id is changed/updated, ensures wallets get updated once ids generate there access
#define COSMIG_ACCESS_UPDATED "acces_updated"

///sent by carbons to check if they can reflect a projectile
#define COMSIG_CHECK_REFLECT "check_reflect"
// Point of interest signals
/// Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_added : (atom/new_poi)
#define COMSIG_ADDED_POINT_OF_INTEREST "added_point_of_interest"
Expand Down
7 changes: 7 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,13 @@
#define ELZUOSE_CHARGE_FACTOR (0.05 * ELZUOSE_CHARGE_SCALING_MULTIPLIER) //factor at which ethereal's charge decreases
#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default.
#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism
///Greater numbers mean that less alcohol has greater intoxication potential
#define ALCOHOL_THRESHOLD_MODIFIER 1
///The rate at which alcohol affects you
#define ALCOHOL_RATE 0.005
///The exponent applied to boozepwr to make higher volume alcohol at least a little bit damaging to the liver
#define ALCOHOL_EXPONENT 1.6
#define ETHANOL_METABOLISM 0.5 * REAGENTS_METABOLISM

// Eye protection
#define FLASH_PROTECTION_SENSITIVE -1
Expand Down
5 changes: 2 additions & 3 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
//non-mob traits
/// Used for limb-based paralysis, where replacing the limb will fix it.
#define TRAIT_PARALYSIS "paralysis"

/// Granted by prismwine, reflects lasers
#define TRAIT_REFLECTIVE "reflective"
#define TRAIT_HEARING_SENSITIVE "hearing_sensitive"

/*
Expand Down Expand Up @@ -453,8 +454,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_FISH_SAFE_STORAGE "fish_case"
/// Stuff that can go inside fish cases
#define TRAIT_FISH_CASE_COMPATIBILE "fish_case_compatibile"
/// Granted by prismwine
#define TRAIT_REFLECTIVE "reflective"
/// Self-explainatory.
#define BEAUTY_ELEMENT_TRAIT "beauty_element"
#define MOOD_COMPONENT_TRAIT "mood_component"
Expand Down
16 changes: 16 additions & 0 deletions code/game/objects/effects/effect_system/effects_foam.dm
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,22 @@
for(var/obj/item/Item in O)
Item.extinguish()

/obj/structure/foamedmetal/forcewine
name = "resin"
desc = "It's rapidly decaying!"
opacity = FALSE
icon_state = "atmos_resin"
alpha = 120
max_integrity = 10
var/timeleft = 50

/obj/structure/foamedmetal/forcewine/Initialize(mapload, new_timeleft)
. = ..()
if(new_timeleft)
timeleft = new_timeleft
if(timeleft)
QDEL_IN(src, timeleft)

#undef ALUMINIUM_FOAM
#undef IRON_FOAM
#undef RESIN_FOAM
2 changes: 1 addition & 1 deletion code/game/objects/effects/forcefields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@
name = "resin"
icon_state = "atmos_resin"
CanAtmosPass = ATMOS_PASS_NO
timeleft = 1
timeleft = 50
1 change: 0 additions & 1 deletion code/game/objects/items/manuals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,6 @@

</body>
</html>"}

// Wiki books that are linked to the configured wiki link.

// A book that links to the wiki
Expand Down
16 changes: 10 additions & 6 deletions code/modules/cargo/blackmarket/blackmarket_items/consumables.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,21 @@
desc = "The SRM keeps the recipes for their trickwines a closely guarded secret. The Hunters carrying those bottles? Less so."
item = /datum/reagent/consumable/ethanol/trickwine/ash_wine

price_min = 200
price_min = 300
price_max = 600
stock_min = 3
stock_max = 7
availability_prob = 40
availability_prob = 30

/datum/blackmarket_item/consumable/trickwine/spawn_item(loc)
var/trickwine = pick(list(/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine,))
var/trickwine = pick(list(
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/ashwine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/icewine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/shockwine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/hearthwine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine,
/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine
))
return new trickwine(loc)

/datum/blackmarket_item/consumable/stimpack
Expand Down
10 changes: 10 additions & 0 deletions code/modules/food_and_drinks/drinks/drinks/breakawayflask.dm
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,13 @@
name = "Vintage Hearthflame"
list_reagents = list(/datum/reagent/consumable/ethanol/trickwine/hearth_wine = 45, /datum/reagent/consumable/ethanol/hcider = 5)
desc = "Hearthflame is one of the most important tonics devised by the SRM – both for its potent abilities in staunching wounds or setting enemies aflame, and for its closeness to the divine fire associated with the Ashen Huntsman."

/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/forcewine
name = "Vintage Saint-Roumain Forcewine"
list_reagents = list(/datum/reagent/consumable/ethanol/trickwine/force_wine = 45, /datum/reagent/consumable/ethanol/tequila = 5)
desc = "Forcewine was originally created as a means to create temporary shelters during long tracking expeditions. While the structures proved to be not as versatile in shape as its brewers had hoped, its utility in creating barricades or heming in hostiles was still greatly appreciated."

/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine
name = "Vintage Saint-Roumain Prismwine"
list_reagents = list(/datum/reagent/consumable/ethanol/trickwine/prism_wine = 45, /datum/reagent/consumable/ethanol/gin = 5)
desc = "Prismwine is one of the most recent additions to the Saint-Roumain Militia's reserve of trickwines. It was purpose-created for fighting hostiles that utilized more advanced energy projection attacks, such as the cryonic beams of watchers or the laser guns of interstellar pirates."
12 changes: 12 additions & 0 deletions code/modules/food_and_drinks/recipes/drinks_recipes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -637,6 +637,18 @@
required_container = /obj/structure/fermenting_barrel/distiller
mix_sound ='sound/items/welder.ogg'

/datum/chemical_reaction/force_wine
results = list(/datum/reagent/consumable/ethanol/trickwine/force_wine = 5)
required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 3, /datum/reagent/calcium = 1, /datum/reagent/consumable/comet_trail = 1)
required_container = /obj/structure/fermenting_barrel/distiller
mix_sound ='sound/magic/forcewall.ogg'

/datum/chemical_reaction/prism_wine
results = list(/datum/reagent/consumable/ethanol/trickwine/prism_wine = 5)
required_reagents = list(/datum/reagent/consumable/ethanol/gin = 3, /datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/tinlux = 1)
required_container = /obj/structure/fermenting_barrel/distiller
mix_sound ='sound/weapons/laser.ogg'

/datum/chemical_reaction/molten_bubbles
results = list(/datum/reagent/consumable/molten = 30)
required_reagents = list(/datum/reagent/clf3 = 10, /datum/reagent/consumable/space_cola = 20, /datum/reagent/medicine/leporazine = 1, /datum/reagent/medicine/lavaland_extract = 1)
Expand Down
5 changes: 3 additions & 2 deletions code/modules/mob/living/carbon/human/human_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,9 @@
for(var/obj/item/I in held_items)
if(I.IsReflect(def_zone))
return TRUE
///Granted by prismwine
if(HAS_TRAIT(src, TRAIT_REFLECTIVE) && prob(50))
if(SEND_SIGNAL(src, COMSIG_CHECK_REFLECT, def_zone))
return TRUE
if(HAS_TRAIT(src, TRAIT_REFLECTIVE))
return TRUE
return FALSE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,13 @@
// ALCOHOLS //
//////////////


///Greater numbers mean that less alcohol has greater intoxication potential
#define ALCOHOL_THRESHOLD_MODIFIER 1
///The rate at which alcohol affects you
#define ALCOHOL_RATE 0.005
///The exponent applied to boozepwr to make higher volume alcohol at least a little bit damaging to the liver
#define ALCOHOL_EXPONENT 1.6


/datum/reagent/consumable/ethanol
name = "Ethanol"
description = "A well-known alcohol with a variety of applications."
color = "#404030" // rgb: 64, 64, 48
nutriment_factor = 0
taste_description = "alcohol"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
metabolization_rate = ETHANOL_METABOLISM
var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning
accelerant_quality = 5

Expand Down
Loading

0 comments on commit 584b3cb

Please sign in to comment.