* Summoning affix fixes (#78983)
## About The Pull Request
The fantasy "summon x" affix blacklist doesn't work, and probably hasn't
worked for a significant amount of time.
This is because it generated a typecache with true/false values
representing whether we should be able to spawn a mob... and then
performed a `pick` on it. Pick doesn't care if the value is true or
false, so everything in the blacklist was explicitly whitelisted.
For some reason the list was also containing subtypes of a datum? Then
passing this to a component which expected typepaths of mobs it could
spawn? That doesn't work either.
We _also_ never added basic mobs to this list, so it would never spawn
those and they're an increasing number of our mobs total.
While I was there I also just did some general code tidying. I moved the
list of "specific subtypes to remove" to a global list because I suspect
something else either will need it in the future or already does.
## Changelog
🆑
fix: Megafauna, lavaland elites, and abstract mobs now correctly cannot
be spawned by a toolbox of ash drake summoning
/🆑
* Summoning affix fixes
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fixes Ticked File Enforcement and Missing Unit Test (and makes said Unit Test Compile) (and genericizes the C&D list to the base unit test datum)
* Updates ignores
---------
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Improves the RPG loot wizard event. (#77218)
## About The Pull Request
As the title says. Adds a bunch more stat changes to various different
items and a somewhat simple way of modifying them whilst minimizing
side-effects as much as possible.
Added a new negative curse of polymorph suffix that can randomly
polymorph you once you pick up the item.
Curse of hunger items won't start on items that are not on a turf.
Curse of polymorph will only activate when equipped.
Bodyparts, two-handed melees, bags, guns and grenades, to name a few,
have a bunch of type-specific stat changes depending on their quality.
Some items won't gain fantasy suffixes during the RPG loot event, like
stacks, chairs and paper, to make gamifying the stats a bit harder.
I'm sure there'll still be other ways to game the event, but it's not
that big of a deal since these are the easiest ways to game it.
High level items also have a cool unusual effect aura
## Why It's Good For The Game
Makes the RPG item event cooler. Right now, it's a bit lame since
everything only gains force value and wound bonus on attack. This makes
the statistic increases more type-based and make it interesting to use
It's okay for some items to be powerful since this is a wizard event and
a very impactful one too. By making the curse of hunger items not spawn
on people, it'll also make it a less painful event too.
## Changelog
🆑
add: Expanded the RPG loot wizard event by giving various different
items their own statistic boost.
/🆑
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Improves the RPG loot wizard event.
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Buff scythes, goats, and plantbgone vs PLANT biotypes (#72889)
This buffs scythes, goats, and plantbgone vs PLANT biotypes:
- Scythes now deal x1.5 damage to venus flytraps (3 hits to kill)
- Scythes now target the flower bud vines
- Goats now target flower bud vines and deal 15 damage to PLANT biotypes
- Goats have a eating sound whenever they bite PLANT biotypes
- Plantbgone now does 2 dmg per unit to PLANT biotypes (10 dmg per
spray)
- Plantbgone now has a 75% chance to remove weeds and deals large damage
to flower buds
- Weed control crates now come with a pair of leather gloves
- Golems are immune to thorn effects
- Any kind of thick glove material will prevent thorn effects when
attacking
- Flower buds will now take x4 damage from fire and sharp weapons
(unless they have fire trait)
- Regular scythes are now a sharp object
Also this fixes a few runtimes with spacevines and nulls. The bane
element now accepts `mob_biotypes` bitflags as an argument.
Before my changes:
- Plant-b-gone was doing 0.4 dmg per unit to PLANT biotypes (2 dmg per
spray)
- Scythes took 5 hits to kill venus flytraps
- Goats only affected podpeople
- Flower bud vines were being ignored by weed killing code
- Plantbgone only had a 50% chance to remove weeds (and this was very
inconsistent due to RNG)
- Botanical gloves and thick gloves didn't protect from thorns
- Golems were getting pierced by thorns despite having pierce immunity
- Flower buds were not taking the x4 damage like they should have been
- Regular scythes were not a sharp object, but other scythes
(chaplain's, megafauna loot) were sharp
This makes the weed killer crate more effective since people were
complaining about it being worthless vs vines and flower buds. These
changes give people more options to respond to threats vs plants.
🆑
add: Add a pair of leather gloves to weed control crate
balance: Mobs with the PLANT biotypes (venus flytraps, pod people,
killer tomatoes) are now much weaker vs scythes, goats, and plantbgone.
balance: Plantbgone is now more effective at destroying weeds.
balance: Regular scythes are now a sharp object
fix: Fixed scythes, goats, and plantbgone not affecting flower bud
vines.
fix: Thick and botanical gloves not protecting from thorns
fix: Golems not having pierce immunity from thorns
fix: Runtime where vines tried to spread into null turf
fix: Runtime where null vines that were destroyed were trying to spread
to nearby turfs
soundadd: Add eat food sound when goats eat plants
code: Improved goat targeting code
code: The bane element now accepts `mob_biotypes` bitflags as an
argument.
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes cursed duffelbag's permanent curse (again), unit tests it. (#71969)
## About The Pull Request
Curse of hunger did some funky stuff by checking for
`slot_equipment_priority` (which ONLY BUCKETS use) and registering
certain signals based on that
The signals they were using instead didn't pass the unequipper, so the
curse never got removed on unequip.
Replaced them with just equip and drop, as equipped and dropped work
just fine for it.
Unit tests this.
## Why It's Good For The Game
Infinite curse of clumsy and pacifism is kinda bad
## Changelog
🆑 Melbert
fix: Dufflebag Curse no longer lasts forever after the bag is destroyed.
fix: Dufflebag Cursing someone already afflicted properly doesn't try to
add the curse again
/🆑
* Fixes cursed duffelbag's permanent curse (again), unit tests it.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Heretics cannot be converted, and are immune to cult stun hands. Instead, the cult is rewarded for sacrificing them with the bloody bastard sword, an oversized SPIN2WIN funblade. + Soul Stealing Fantasy Affix (#69725)
About The Pull Request
Heretics can no longer be converted to a cult, as they follow their own Forgotten Gods.
Instead, Nar'Sie will reward the cult for managing to sacrifice one, with the bastard sword.
The bloody bastard sword has been cleaned up codewise and all that. Because it is a free reward instead of a (removed) progression mechanic of cult, it swings just a bit slower during the spin and doesn't have a jaunt. It's still a !fun! swinging sword of hilarity and death.
BLOODY BASTARD https://www.youtube.com/watch?v=ukznXQ3MgN0
Fantasy weapons can now roll "soul-stealing" weapons. They, on killing something, capture its soul inside the item.
Add fail conditions that instantly end a spin2win, ala how
Mimes can now hold a baguette like a sword by right clicking it #69592 works
Why It's Good For The Game
Bloody bastard sword was fun, it made no sense that heretics were valid converts when they're already worshipping a DIFFERENT evil god granting them powers. Should be in a good spot as a nice little antag to antag special interaction. I fucking love antag to antag special interactions, we should have more of 'em
Fantasy affixes are always a neat thing to throw a new component into
Changelog
cl
add: Heretics can no longer be converted to cult. But sacrificing them is very valuable to Nar'Sie, and she will grant special weapons if you manage to do so.
add: Fantasy affixes can also include soul-stealing items!
/cl
* Heretics cannot be converted, and are immune to cult stun hands. Instead, the cult is rewarded for sacrificing them with the bloody bastard sword, an oversized SPIN2WIN funblade. + Soul Stealing Fantasy Affix
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* bane component to element. nullrod now uses it for revenants. (#60640)
* bane component to element. nullrod uses it for revenants.
* TRUE to FALSE
* bane component to element. nullrod now uses it for revenants.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes a ci error caused by adding an element to something that'd being deleted (#59108)
So that's why mythril coins kept harddeleting.
Man I'm glad I added an error on adding elements to qdeleted objects.
* Fixes a ci error caused by adding an element to something that'd being deleted
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* validate THIS integration tests (#59024)
Hi, the #58882 PR missed that validate takes an item, no parent var lookup required.
Why It's Good For The Game
UNFUCKS MASTER
* [SPEEDMERGE CANDIDATE] Validate THIS integration tests
Co-authored-by: Funce <funce.973@gmail.com>
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more) (#58882)
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more)
* AAAAAAAA
* Update spellbook.dm
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Add admin tool for adding specific fantasy affixes (#58884)
A new option when using VV on atom movables is to add a custom
fantasy "affixes".
* admins can add specific fantasy affixes to items
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Beauty is now an element. Fixing an issue with enter/exit area comsigs. (#57147)
Co-authored-by: Ghommie <425422238+Ghommie@ users.noreply.github.com>
* Beauty is now an element. Fixing an issue with enter/exit area comsigs.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Ghommie <425422238+Ghommie@ users.noreply.github.com>
* Beauty component improvements. Two new fantasy component prefixes (#54622)
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned.
* Beauty component improvements. Two new fantasy component prefixes
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* RPG Loot's summoning affix can no longer summon mecha pilots and elites (#52781)
* jesus christ
* webbit
* RPG Loot's summoning affix can no longer summon mecha pilots and elites
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Dismemberment wound tweaks, zombies are easy to wound/dismember, tweaks to head vulnerability (#52534)
* adds wound armor to helmets + such, nerfs standard head resist
* dismember + wound species balance, retitle traits
* Dismemberment wound tweaks, zombies are easy to wound/dismember, tweaks to head vulnerability
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
About The Pull Request
It annoyed me that we have a perfectly good frag grenade item, and a perfectly good shrapnel component, but no crossover episode between the two. This remedies that, and does a lot, lot more.
dreamseeker_2020-03-30_05-01-13.png
dreamseeker_2020-03-30_05-01-26.png
Big points:
Adds new component: pellet_cloud, which can be used by ammo casings, guns, and landmines to spray shrapnel and display aggregate hit messages ("You're hit by 6 buckshot pellets!" vs "You're hit by the buckshot pellet in the X" x6). All gun ammo that shoot multiple pellets now use this component on firing.
Adds stingbangs, premium less-lethal grenades that shoot off lots of stinger pellets, to cargo. Frag grenades are also reworked to have smaller booms, but shoot off lots of shrapnel shards. You can jump on top of these grenades to absorb a portion of the shrapnel to save those around you! There's an achievement for dying this way, called "Look Out, Sir!"
Projectiles can now embed items/shrapnel. Adds .38 DumDum ammo to cargo that does less damage and has negative armor pen, but can embed in people. This is the only ammo that currently embeds.
Bullets can now ricochet off walls, structures, and machinery (harder surfaces are more likely to ricochet). Only standard .38 and Match Grade .38/.357/L6 ammo can ricochet, with Match Grade being much better at ricocheting. You can buy Match Grade .38 from cargo and Match Grade L6 ammo from the nuke uplink, while Match .357 is admin only.
Armor now protects you from harmful embeds, taking the better of the bullet/bomb armor on the affected limb. Armor penetration can modify this of course, and many blunt embeds like stingbangs and DumDum bullets are significantly worse if you have even 1 armor.
Other misc fixes/changes
Refactored the embed element a bunch and fixed it creating new elements for every instance rather than expected bespoke behavior. There are new /obj/item helpers for modifying and adding embedding.
Fixes#49989: Spears can no longer embed in turfs cause their sprite is annoying to me, it's generally harder for most things to embed in turfs
Fixes#49741: New carbon helpers for removing embedded objects
Fixes#46416: Handles embedded objects getting qdel'd or moved while embedded
Renamed the old shrapnel component for RPG loot to MIRV to avoid confusion
Repathed frag grenades from under minibombs to under base grenades, and added explosion vars to base grenades
Why It's Good For The Game
Fixes a bunch of janky design with embeds, adds lots of new avenues for projectile and grenade variety, ricochets and collateral damage are fun!
Changelog
🆑 Ryll/Shaps
add: Adds stingbangs to cargo (and one in the sec vendor premium), premium less-lethal grenades that shoot off a giant swarm of stingball pellets to help incapacitate swarms of people in tight quarters. You can jump on top of a live one to be a hero and absorb a bunch of shrapnel, same with frag grenades. There's even an achievement for dying to a grenade you jumped on!
add: Projectiles can now embed in people! Or at least grenade shrapnel and the new .38 DumDum ammo, now available in cargo, can. DumDum rounds excel against unarmored targets, but are pricey and do poorly against armored targets.
add: Bullets can now ricochet! Or at least, standard .38 and the new .38/L6 Match Grade ammo can. Match Grade ammo is finely tuned to ricochet easier and seek targets off bounces better, and can be purchased from cargo (for the .38) or nuke ops uplink (for the L6), but standard .38 ammo has a chance to ricochet as well.
tweak: Frag grenades now have smaller explosions but shoot off a bunch of devastating shrapnel, excellent for soft targets!
tweak: Shotguns and other multi-pellet guns now print aggregate messages, so you'll get one "You've been hit by 6 buckshot pellets!" rather than 6 "You've been hit by the buckshot pellet in the X!" messages. Bye bye lag!
balance: Armor can now protect against embedding weapons, taking the best of either the bullet or bomb armor for the limb in question away from the embed chance. Some weapons are better at piercing armor than others!
/🆑
AddComponent/AddElement now support named arguments. This requires passing around an argument list instead of using actual proc args which a bit gross but we can blame byond for forcing this.
InheritComponent uses mirrored init arguments instead of an argument list which means no more accessing it via index to get to the same arguments as in init.
As a small bonus I restructured dcs defines to be a bit more manageable. Mainly just splits them into separate files and gives them their own folder.
adamantine and mythril are now datum mats (mythril still admin only), adamantine has 1.5 strength buff to whatever is made out of it, mythril adds rpg loot elements to whatever is made out of it
you can now put plastic, adamantine and mythril in the autolathe and coin mint
you can now put titanium in coin mint
switches a bunch of stuff in cargo exports, including mythril and plastic being worth cash money
coin code has been changed to datum mats, the custom sprites have been lost except for antag token
* knockback component can now be reversed, has projectile and gun handling, and hostile simplemob handling
adds signals for hostile mobs attacking, altering projectiles before firing, and for when projectiles successfully hit their target
moves knockback handling to a general proc
adds ishelpers for guns and projectiles
* no more weird projectile handling it can just not apply the effect if the component somehow goes away
lifesteal actually works now instead of being a blank file, applies a flat healing effect when you hit something
* fixes up comsig stuff
adds new components to the fantasy prefix and suffix
knockback now handles throwing anchored objects
lifesteal now properly heals the target with projectiel weapons
adds summoning component to handle mob summoning with item attacking and such
adds fired_from variable to handle what a projectile was fired_from, firer would be the mob that fired and fired_from would be the gun, in the case of an autoturret, fired_from and firer would be the same
adds shrapnel component, fires projectiles around a fired projectile when it hits
adds igniter component to set attacked mobs on fire
* no more shrapnel on items that can't use it
summoning items now summon at least one mob maximum
adds specific weighted projectile types for shrapnel to prevent broken options being picked
removes the reverse var from knockback component and instead just handles negative thrown turf