The edible component now uses DUPE_SOURCE mode (#89687)

## About The Pull Request
The edible component now uses DUPE_SOURCE mode, which is needed to avoid
conflicts between sources. This includes some other tidbits from my
refactor like renaming dcs/flags.dm to ds/declarations.dm (in virtue of
the fact it doesn't only contain flags anymore even before this PR),
meat materials giving protein and fat reagents to affected atoms instead
of generic nutriment and oil, and the pizza material no longer
containing meat, because margherita pizza, which the material is
extracted from, doesn't contain meat either. The pepperonis were
magically conjured space bs.

## Why It's Good For The Game
There are multiple sources of the edible component and we don't want
issues with that. Also atomizing stuff from my refactor.

## Changelog

🆑
balance: objects made out of meat are no longer classified as gross food
on top of being raw and meaty, and actually contain protein and fat
instead of standard nutriment and oil.
balance: the pizza material stacks, crafted with margherita pizza and
rollig pin mind you, no longer magically contain pepperoni.
/🆑
This commit is contained in:
Ghom
2025-03-12 16:55:07 -04:00
committed by Roxy
parent 25c1d20bc2
commit 87ce43bb8f
32 changed files with 174 additions and 119 deletions
+2 -2
View File
@@ -471,7 +471,6 @@
TEST_ASSERT(edible, "Fish is not edible")
edible.eat_time = 0
TEST_ASSERT(fish.GetComponent(/datum/component/infective), "Fish doesn't have the infective component")
var/bite_size = edible.bite_consumption
var/mob/living/carbon/human/consistent/gourmet = allocate(/mob/living/carbon/human/consistent)
@@ -496,9 +495,10 @@
TEST_ASSERT(!fish.bites_amount, "bites_amount wasn't reset after the fish revived")
fish.update_size_and_weight(fish.size, FISH_WEIGHT_BITE_DIVISOR)
var/bite_size = edible.bite_consumption
fish.AddElement(/datum/element/fried_item, FISH_SAFE_COOKING_DURATION)
TEST_ASSERT_EQUAL(fish.status, FISH_DEAD, "The fish didn't die after being cooked")
TEST_ASSERT(bite_size < edible.bite_consumption, "The bite_consumption value hasn't increased after being cooked (it removes blood but doubles protein). Value: [bite_size]")
TEST_ASSERT(bite_size < edible.bite_consumption, "The bite_consumption value hasn't increased after being cooked (it removes blood but doubles protein). Old: [bite_size]. New: [edible.bite_consumption]")
TEST_ASSERT(!(edible.foodtypes & (RAW|GORE)), "Fish still has the GORE and/or RAW foodtypes flags after being cooked")
TEST_ASSERT(!fish.GetComponent(/datum/component/infective), "Fish still has the infective component after being cooked for long enough")
+3 -1
View File
@@ -14,8 +14,10 @@
var/times_to_bite = round(light_snack.max_integrity / MOTH_EATING_CLOTHING_DAMAGE) + 1
for (var/i in 1 to times_to_bite)
TEST_ASSERT(!QDELETED(light_snack), "Moth finished eating clothes faster than expected.")
var/old_integrity = light_snack.get_integrity()
light_snack.attack(gourmet, gourmet)
TEST_ASSERT(QDELETED(light_snack), "Moth failed to finish eating clothing.")
TEST_ASSERT(light_snack.get_integrity() < old_integrity, "Clothing didn't take damage when bitten by moth.")
TEST_ASSERT(QDELETED(light_snack), "Moth failed to finish eating clothing. Integrity left: [light_snack.get_integrity()]")
/// Unit test to ensure that golems can eat rocks successfully
/datum/unit_test/golem_food