Skip to content

Commit

Permalink
Merge pull request #10 from SPLURT-Station/quirks_from_Splurt
Browse files Browse the repository at this point in the history
Porting Quirks from S.P.L.U.R.T.
  • Loading branch information
MosleyTheMalO authored Nov 23, 2024
2 parents 0e69555 + 73360ed commit 048c117
Show file tree
Hide file tree
Showing 106 changed files with 7,125 additions and 7 deletions.
2 changes: 1 addition & 1 deletion code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
#define isflyperson(A) (is_species(A, /datum/species/fly))
#define isjellyperson(A) (is_species(A, /datum/species/jelly))
#define isslimeperson(A) (is_species(A, /datum/species/jelly/slime))
#define iszombie(A) (is_species(A, /datum/species/zombie))
#define iszombie(A) (is_species(A, /datum/species/zombie) || HAS_TRAIT(A, TRAIT_UNDEAD)) // SPLURT EDIT - Quirks
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
#define ismoth(A) (is_species(A, /datum/species/moth))
#define isfelinid(A) (is_species(A, /datum/species/human/felinid))
Expand Down
86 changes: 86 additions & 0 deletions code/__DEFINES/~~~splurt_defines/dcs/signals_reagents.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
// Signals involving reagents with a mob

//
// ADD SIGNALS
//

/**
* Triggered when adding Cum or Femcum
* * Used by quirk: Concubus
* * Used by quirk: Dumb For Cum
*/
#define COMSIG_REAGENT_ADD_CUM "reagent_add_cum"

/**
* Triggered when adding Breast Milk
* * Used by quirk: Concubus
*/
#define COMSIG_REAGENT_ADD_BREASTMILK "reagent_add_breastmilk"

/**
* Triggered when adding Blood
* * Used by quirk: Bloodfledge
*/
#define COMSIG_REAGENT_ADD_BLOOD "reagent_add_blood"

//
// METABOLIZE SIGNALS
//

/**
* Triggered when metabolizing Nuka Cola
* * Used by quirk: Rad Fiend
*/
#define COMSIG_REAGENT_METABOLIZE_NUKACOLA "reagent_metabolize_nukacola"

/**
* Triggered when metabolizing Holy Water
* * Used by quirk: Hallowed
*/
#define COMSIG_REAGENT_METABOLIZE_HOLYWATER "reagent_metabolize_holywater"

/**
* Triggered when done metabolizing Holy Water
* * Used by quirk: Cursed Blood
*/
#define COMSIG_REAGENT_METABOLIZE_END_HOLYWATER "reagent_metabolize_end_holywater"

//
// PROCESSING SIGNALS
//

/**
* Triggered when processing Holy Water
* * Used by quirk: Bloodfledge
* * Used by quirk: Cursed Blood
* * Used by quirk: Hallowed
*/
#define COMSIG_REAGENT_PROCESS_HOLYWATER "reagent_process_holywater"

/**
* Triggered when processing Hell Water
* * Used by quirk: Cursed Blood
*/
#define COMSIG_REAGENT_PROCESS_HELLWATER "reagent_process_hellwater"

/**
* Triggered when processing Salt
* * Used by quirk: Sodium Sensitivity
*/
#define COMSIG_REAGENT_PROCESS_SALT "reagent_process_salt"

//
// MOB EXPOSE SIGNALS
//

/**
* Triggered when a mob is exposed to Salt
* * Used by quirk: Sodium Sensitivity
*/
#define COMSIG_REAGENT_EXPOSE_SALT "reagent_expose_salt"

/**
* Triggered when a mob is exposed to Holy Water
* * Used by quirk: Sodium Sensitivity
*/
#define COMSIG_REAGENT_EXPOSE_HOLYWATER "reagent_expose_holywater"
8 changes: 8 additions & 0 deletions code/__DEFINES/~~~splurt_defines/spans.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Entries here originally from Sandstorm Station 13
#define span_lewd(str) ("<span class='lewd'>" + str + "</span>")
#define span_love(str) ("<span class='love'>" + str + "</span>")

// Entries here from SPLURT
#define span_reallybig_hypnophrase(str) ("<span class='reallybig hypnophrase'>" + str + "</span>")
#define span_big_warning(str) ("<span class='big warning'>" + str + "</span>")
#define span_umbra(str) ("<span class='umbra'>" + str + "</span>")
89 changes: 89 additions & 0 deletions code/__DEFINES/~~~splurt_defines/traits/declarations.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
///
/// Quirk traits
///
/// Trait for quirk: Sodium Sensitivity
#define TRAIT_SALT_SENSITIVE "salt_sensitive"
/// Trait for quirk: Rad Fiend
#define TRAIT_RAD_FIEND "rad_fiend"
/// Trait for quirk: Hypnotic Gaze
#define TRAIT_HYPNOTIC_GAZE "hypnotic_gaze"
/// Trait for quirk: Genital Sniffer
#define TRAIT_GFLUID_DETECT "genital_fluid_detect"
/// Trait for quirk: Ashen Resistance
#define TRAIT_ASHRESISTANCE "ash_resistance"
/// Trait for quirk: Choke Slut
#define TRAIT_CHOKE_SLUT "choke_slut"
/// Trait for quirk: Bloodsucker Fledgling
#define TRAIT_BLOODFLEDGE "bloodfledge"
/// UNUSED - Legacy trait for quirk: Incubus
#define TRAIT_INCUBUS "incubus"
/// UNUSED - Legacy trait for quirk: Succubus
#define TRAIT_SUCCUBUS "succubus"
/// Trait for quirk: Silkspinner
#define TRAIT_ARACHNID "arachnid"
/// Trait for quirk: Flutter
#define TRAIT_FLUTTER "flutter"
/// Trait for quirk: Nudist
#define TRAIT_NUDIST "nudist"
/// Trait for quirk: Clothes Eater
#define TRAIT_CLOTH_EATER "cloth_eater"
/// Trait for quirk: Werewolf
#define TRAIT_WEREWOLF "werewolf"
/// Trait for quirk: Buns of Steel
#define TRAIT_STEEL_ASS "steel_ass" // Use TRAIT_PERSONALSPACE instead
/// Trait for quirk: Buns of Thunder
#define TRAIT_JIGGLY_ASS "jiggly_ass"
/// Trait for quirk: Cursed Blood
#define TRAIT_CURSED_BLOOD "cursed_blood"
/// Trait for quirk: Headpat Slut
#define TRAIT_HEADPAT_SLUT "headpat_slut"
/// UNUSED - Legacy trait for quirk: Distant
#define TRAIT_DISTANT "headpat_hater" // Use TRAIT_BADTOUCH instead
/// Trait for quirk: Dorsualiphobic Augmentation
#define TRAIT_HIDE_BACKPACK "hide_backpack"
/// Trait for quirk: Dumb For Cum
#define TRAIT_DUMB_CUM "dumb_for_cum_base"
/// Trait used by Dumb For Cum quirk when 'craving'
#define TRAIT_DUMB_CUM_CRAVE "dumb_for_cum_need"
/// Trait for quirk: Undeath
#define TRAIT_UNDEAD "Undead"
/// Trait for quirk: Illuminated
#define TRAIT_COSGLOW "cosmetic_glow"
/// Trait for quirk: Body Morpher
#define TRAIT_BODY_MORPHER "body_morpher"
/// Trait for quirk: Hallowed
#define TRAIT_HALLOWED "hallowed"
/// Trait for quirk: Messy
#define TRAIT_MESSY "messy"
/// Trait for quirk: Restorative Metabolism
#define TRAIT_RESTORATIVE_METABOLISM "restorative_metabolism"
/// Trait for quirk: Kiss Slut
#define TRAIT_KISS_SLUT "kiss_slut"
/// Trait for quirk: Flimsy
#define TRAIT_FLIMSY "flimsy"
/// Trait for quirk: Gargoyle
#define TRAIT_GARGOYLE "gargoyle"
/// Trait for quirk: Bane Syndrome
#define TRAIT_MASKED_MOOK "masked_mook"
/// Trait for quirk: Tough
#define TRAIT_TOUGH "tough"
/// Trait for quirk: Thirsty
#define TRAIT_THIRSTY "thirsty"
/// Trait for quirk: Concubus
#define TRAIT_CONCUBUS "concubus"
/// Trait for quirk: Modular Limbs
#define TRAIT_MODULAR_LIMBS "modular_limbs"
/// Trait for quirk: Vacuum Resistance
#define TRAIT_VACUUM_RESIST "vacuum_resist"
/// Trait for quirk: Overweight
#define TRAIT_OVERWEIGHT "overweight"

///
// Element traits
///
/// Trait used by the Chapel Weakness element
#define TRAIT_CHAPEL_WEAKNESS "chapel_weakness"
/// Trait used by the Holy Water Weakness element
#define TRAIT_HOLYWATER_WEAKNESS "holywater_weakness"
/// Trait used by Flutter Move element
#define TRAIT_FLUTTER_MOVE "flutter_move"
57 changes: 57 additions & 0 deletions code/__DEFINES/~~~splurt_defines/traits/defines.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// Quirk mood types
#define QMOOD_NUDIST "mood_nudist"
#define QMOOD_MASKED_MOOK "mood_masked_mook"
#define QMOOD_HIDE_BAG "mood_storage_concealment"
#define QMOOD_WELL_TRAINED "mood_dom_trained"
#define QMOOD_DUMB_CUM "mood_dumb4cum"
#define QMOOD_HEADPAT_SLUT "mood_headpat_slut"
#define QMOOD_JIGGLY_ASS "mood_jiggly_ass"
#define QMOOD_BADTOUCH_ATTACKER "mood_badtouch_attacker"
#define QMOOD_BADTOUCH_VICTIM "mood_badtouch_victim"

// Bloodfledge mood types
#define QMOOD_BFLED_DRANK_MATCH "bloodfledge_drank_exotic_match"
#define QMOOD_BFLED_DRANK_SYNTH "bloodfledge_drank_synth"
#define QMOOD_BFLED_DRANK_SLIME "bloodfledge_drank_slime"
#define QMOOD_BFLED_DRANK_BUG "bloodfledge_drank_insect"
#define QMOOD_BFLED_DRANK_XENO "bloodfledge_drank_xeno"
#define QMOOD_BFLED_DRANK_DEAD "bloodfledge_drank_dead"
#define QMOOD_BFLED_DRANK_KILL "bloodfledge_drank_killed"
#define QMOOD_BFLED_DRANK_CURSE "bloodfledge_drank_cursed_blood"
#define QMOOD_BFLED_DRANK_VAMP "bloodfledge_drank_dead"
#define QMOOD_BFLED_DRANK_POD "bloodfledge_drank_podperson"
#define QMOOD_BFLED_DRANK_SNAIL "bloodfledge_drank_snail"
#define QMOOD_BFLED_DRANK_ETHER "bloodfledge_drank_ethreal"
#define QMOOD_BFLED_DRANK_SKREL "bloodfledge_drank_skrell"
#define QMOOD_BFLED_DRANK_BLOOD_SELF "bloodfledge_drank_own_blood"
#define QMOOD_BFLED_DRANK_BLOOD_FAKE "bloodfledge_drank_fake_blood"

// Trait types
#define DUMB_CUM_TRAIT "dumb4cum"

// Quirk variables
//#define RADFIEND_IMMUNITY_TIME (5 MINUTES) // How long does Rad Fiend protect against radiation? Currently unused.
// Amount of nutrition Concubus gets from compatible reagents
#define CONCUBUS_NUTRITION_AMT 10 // Slightly below Nutriment (15)

///
/// Quirk examine text status effects
///
/// Examine text status effect for Bad Touch
#define QUIRK_EXAMINE_BADTOUCH "quirk_examine_badtouch"
/// Examine text status effect for Illuminated
#define QUIRK_EXAMINE_COSGLOW "quirk_examine_cosglow"
/// Examine text status effect for Headpat Slut
#define QUIRK_EXAMINE_HEADPAT_SLUT "quirk_examine_headpat_slut"
/// Examine text status effect for Hypnotic Gaze
#define QUIRK_EXAMINE_HYPNOTIC_GAZE "quirk_examine_hypnotic_gaze"
/// Examine text status effect for Buns of Thunder
#define QUIRK_EXAMINE_JIGGLY_ASS "quirk_examine_jiggly_ass"
/// Examine text status effect for Bane Syndrome
#define QUIRK_EXAMINE_MASKED_MOOK "quirk_examine_masked_mook"
/// Examine text status effect for Nudist
#define QUIRK_EXAMINE_NUDIST "quirk_examine_nudist"
/// Examine text status effect for Personal Space
#define QUIRK_EXAMINE_PERSONALSPACE "quirk_examine_personalspace"
/// Examine text status effect for Hallowed
#define QUIRK_EXAMINE_HALLOWED "quirk_examine_hallowed"
1 change: 1 addition & 0 deletions code/__HELPERS/~splurt_helpers/is_helpers.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#define isbloodfledge(A) (HAS_TRAIT(A, TRAIT_BLOODFLEDGE))
57 changes: 54 additions & 3 deletions code/__HELPERS/~splurt_helpers/mob.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


/proc/random_unique_arachnid_name(attempts_to_find_unique_name=10)
for(var/i in 1 to attempts_to_find_unique_name)
. = capitalize(pick(GLOB.arachnid_first)) + " " + capitalize(pick(GLOB.arachnid_last))
Expand All @@ -10,7 +8,6 @@
/proc/arachnid_name()
return "[pick(GLOB.arachnid_first)] [pick(GLOB.arachnid_last)]"


/proc/resolve_intent_name(intent)
switch(intent)
if(INTENT_HELP)
Expand All @@ -21,3 +18,57 @@
return "grab"
if(INTENT_HARM)
return "harm"

/mob/living/proc/is_body_part_exposed(body_part, list/items)
if(!items)
items = get_equipped_items()
for(var/A in items)
var/obj/item/I = A
if(istype(I) && (I.body_parts_covered & body_part))
return FALSE
return TRUE

/mob/living/carbon/proc/get_blood_prefix()
// Check for hemophage
if(ishemophage(src))
return "Hemo"

// Check for Synthetic
else if(issynthetic(src))
return "Oil"

// Check for Teshari
else if(isteshari(src))
return "Ammonia"

// Check for Shadekin
else if(isshadekin(src))
return "Shade"

// Check for round-start Slime
else if(isroundstartslime(src))
return "Slime"

// Check for Snail
else if(issnail(src))
return "Lube"

// Check for Skrell
else if(is_species(src,/datum/species/skrell))
return "Copper"

// Check for Xenomorph Hybrid
else if(isxenohybrid(src))
return "Acid"

// Check for Ethreal
else if(isethereal(src))
return "Electro"

// Check for Podperson
else if(ispodperson(src))
return "Hydro"

// Check for Plasmaman
else if(isplasmaman(src))
return "Plasma"
50 changes: 49 additions & 1 deletion code/controllers/subsystem/processing/quirks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,56 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
//BUBBER EDIT ADDITION BEGIN
list(/datum/quirk/featherweight, /datum/quirk/oversized),
list(/datum/quirk/overweight, /datum/quirk/obese),
list(/datum/quirk/dominant_aura, /datum/quirk/well_trained)
list(/datum/quirk/dominant_aura, /datum/quirk/well_trained),
//BUBBER EDIT ADDITION END
//SPLURT EDIT ADDITION BEGIN

// Hallowed is a direct foil to both quirks.
// Causes a conflict with Holy Water effects.
// Bloodsuckers cannot interact with Hallowed users.
list(/datum/quirk/hallowed, /datum/quirk/cursed_blood),
list(/datum/quirk/hallowed, /datum/quirk/item_quirk/bloodfledge),

// Bloodfledges do not use standard thirst
list(/datum/quirk/item_quirk/bloodfledge, /datum/quirk/thirsty),

// Causes a direct mechanical conflict.
//list(/datum/quirk/jiggly_ass,/datum/quirk/buns_of_steel),
list(/datum/quirk/jiggly_ass,/datum/quirk/personalspace),

// Both quirks add a cosmetic glow effect.
list(/datum/quirk/rad_fiend, /datum/quirk/cosglow),

// You have an irremovable suit.
list(/datum/quirk/nudist,/datum/quirk/equipping/entombed),

// Conflicting health add-remove effect.
//list(/datum/quirk/flimsy,/datum/quirk/tough),

// You must have working eyes for hypnotic gaze.
// NOTE: Quirk was replaced by NIFsoft
list(/datum/quirk/hypnotic_gaze,/datum/quirk/item_quirk/blindness),
list(/datum/quirk/hypnotic_gaze,/datum/quirk/echolocation),

// You can't smell anything!
list(/datum/quirk/cum_sniff,/datum/quirk/item_quirk/anosmia),

// You can't choke if you don't breathe
list(/datum/quirk/choke_slut, /datum/quirk/breathless),

// Direct mechanical conflict
list(/datum/quirk/bad_touch, /datum/quirk/headpat_slut),
list(/datum/quirk/bad_touch, /datum/quirk/excitable),

// Addict quirks fail if the mob has TRAIT_LIVERLESS_METABOLISM
// Any quirk that gives this trait should be blacklisted
list(/datum/quirk/item_quirk/addict/alcoholic, /datum/quirk/item_quirk/bloodfledge),
list(/datum/quirk/item_quirk/addict/alcoholic, /datum/quirk/concubus),
list(/datum/quirk/item_quirk/addict/junkie, /datum/quirk/item_quirk/bloodfledge),
list(/datum/quirk/item_quirk/addict/junkie, /datum/quirk/concubus),
list(/datum/quirk/item_quirk/addict/smoker, /datum/quirk/item_quirk/bloodfledge),
list(/datum/quirk/item_quirk/addict/smoker, /datum/quirk/concubus),
//SPLURT EDIT ADDITION END
))

GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist())
Expand Down
6 changes: 5 additions & 1 deletion code/modules/clothing/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,12 @@
qdel(src)

/obj/item/clothing/attack(mob/living/target, mob/living/user, params)
if(user.combat_mode || !ismoth(target) || ispickedupmob(src))
// SPLURT EDIT - Cloth Eater quirk
if(user.combat_mode || ispickedupmob(src))
return ..()
if(!(ismoth(target) || HAS_TRAIT(target, TRAIT_CLOTH_EATER))) // Moth OR Cloth Eater
return ..()
// SPLURT EDIT END
if((clothing_flags & INEDIBLE_CLOTHING) || (resistance_flags & INDESTRUCTIBLE))
return ..()
if(isnull(moth_snack))
Expand Down
Loading

0 comments on commit 048c117

Please sign in to comment.