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

Kaizoku, The Sanctuary Beyond the Storm {1/3} #1254

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
77870d7
Unfinished first touches.
Catalaria Jun 15, 2024
4966257
Req Changes
Catalaria Jun 17, 2024
7915b84
Merge pull request #1 from Catalaria/KaizokuExperimental
Catalaria Jun 17, 2024
dd90db5
Quick Insertion
Catalaria Aug 28, 2024
3b91c9b
update2
Catalaria Aug 29, 2024
17097f4
update for the sake of easeness
Catalaria Oct 8, 2024
1ab78b0
Merge branch 'main' of https://github.com/Catalaria/OpenKeep
Catalaria Oct 8, 2024
36bf185
tt
Catalaria Oct 17, 2024
695d1ac
Update. Again
Catalaria Oct 25, 2024
0b69421
ttttt
Catalaria Oct 27, 2024
a92bd26
Merge branch 'main' into Kaizoku-2.0
Catalaria Oct 31, 2024
ee80888
Merge pull request #3 from Catalaria/Kaizoku-2.0
Catalaria Nov 3, 2024
bbe3be4
Final part of Stage 1
Monochrome9090 Dec 18, 2024
7fdcec2
Merge branch 'main' of https://github.com/Catalaria/OpenKeep
Monochrome9090 Dec 18, 2024
ea03e7d
Merge remote-tracking branch 'upstream/main'
Catalaria Dec 18, 2024
b5570bc
Test
Catalaria Dec 18, 2024
e79c116
Update code/modules/jobs/job_types/roguetown/temple/acolyte.dm
ThePainkiller Dec 18, 2024
9c05d82
Update code/modules/surgery/organs/tongue.dm
ThePainkiller Dec 18, 2024
95456c4
Merge remote-tracking branch 'upstream/main'
Catalaria Dec 19, 2024
d3d25b9
Hopefully last fixings
Catalaria Dec 19, 2024
84cbe38
Delete sexcon.dm
Catalaria Dec 19, 2024
935d92e
Fixes requested by the beloved people.
Catalaria Dec 19, 2024
2bd0c3a
Hopefully it is now fixed.
Catalaria Dec 19, 2024
5dc10e6
Merge branch 'main' into main
NPC1314 Dec 19, 2024
b5ec939
Hopefully this will fix the issue
Catalaria Dec 20, 2024
d62c16f
Merge branch 'main' into main
ThePainkiller Dec 22, 2024
87196ff
Linter fixes
ThePainkiller Dec 22, 2024
ebd4ad8
Include Kaizoku files properly
ThePainkiller Dec 22, 2024
6d40bf5
Fixes compile issues from bad paths
ThePainkiller Dec 22, 2024
6ed39f5
Fixes nonexistant armor issue
ThePainkiller Dec 23, 2024
fb6aa45
Merge branch 'main' into main
ThePainkiller Dec 30, 2024
78dcc8f
New Fixes.
Catalaria Dec 31, 2024
a0d94cc
Merge branch 'main' of https://github.com/Catalaria/OpenKeep
Catalaria Dec 31, 2024
09bcf0a
Last Update for part 1
Catalaria Jan 4, 2025
b21ac2a
Now its FINISHED. PROPERLY. ACTUALLY. (I FORGOT SOME THINGS.)
Catalaria Jan 4, 2025
4fd6e97
THE MERGING UPDATE!!!
Catalaria Jan 5, 2025
ab813cb
Name fix.
Catalaria Jan 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions code/__DEFINES/inventory.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@
#define FACE (MOUTH | NOSE | EYES)
#define FULL_HEAD (HEAD | MOUTH | NOSE | EYES | EARS | HAIR)
#define HEAD_EXCEPT_MOUTH (HEAD | NOSE | EYES | EARS | HAIR)
#define HEAD_EXCEPT_EYES (HEAD | MOUTH | NOSE | EARS | HAIR)
#define HEAD_NECK (HEAD | MOUTH | NOSE | EYES | EARS | HAIR | NECK)
#define BELOW_HEAD (CHEST | GROIN | VITALS | ARMS | HANDS | LEGS | FEET)
#define BELOW_CHEST (GROIN | VITALS | LEGS | FEET) //for water
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@ GLOBAL_LIST_INIT(our_forest_sex, typecacheof(list(
#define ishalfelf(A) (is_species(A, /datum/species/human/halfelf))
#define istiefling(A) (is_species(A, /datum/species/tieberian))

//RT Kaizoku Species
#define isabyssariad(A) (is_species(A, /datum/species/abyssariad))
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
#define ischangeling(A) (is_species(A, /datum/species/abyssariad/changeling))
#define isoni(A) (is_species(A, /datum/species/abyssariad/ogrun))
#define iskenku(A) (is_species(A, /datum/species/abyssariad/kenku))

//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))

Expand Down
38 changes: 38 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -466,3 +466,41 @@

//SPECIAL SKIN TONES
#define SKIN_COLOR_ROT "878f79"

//DEFAULT ABYSSARIAD SKIN TONES
#define SKIN_COLOR_OATHBOUND_MUQIAN "ffe0d1"
#define SKIN_COLOR_OATHBOUND_KAIZOKU "fcccb3"
#define SKIN_COLOR_OATHBOUND_SHUHEN "edc6b3"
#define SKIN_COLOR_OATHBOUND_LINYOU "e2b9a3"
#define SKIN_COLOR_OATHBOUND_DUSTWALKER "d9a284"
#define SKIN_COLOR_WARPCASTER_MUQIAN "c9a893"
#define SKIN_COLOR_WARPCASTER_KAIZOKU "ba9882"
#define SKIN_COLOR_WARPCASTER_SHUHEN "99745d"
#define SKIN_COLOR_WARPCASTER_LINYOU "745441"
#define SKIN_COLOR_WARPCASTER_DUSTWALKER "302017"

//KENKU UNIQUE SKIN TONE
#define SKIN_COLOR_PEPPERSBLOW "771111"

//OGRE SKIN TONES
#define SKIN_COLOR_DEFIANCE "bb5155" //RED DEFAULT
#define SKIN_COLOR_DEFIANCE_SANGUINE "771111"
#define SKIN_COLOR_STABILITY "6a9479"
#define SKIN_COLOR_STABILITY_INTELLECT "286940"
#define SKIN_COLOR_SERENITY "65a9ad"
#define SKIN_COLOR_SERENITY_PEACE "5958a3"
#define SKIN_COLOR_AUDACY "aa8e3a"
#define SKIN_COLOR_AUDACY_MYSTERY "635834"
#define SKIN_COLOR_BLANK_PURIFICATED "d8e1e2"


//UNDINE SKIN TONES
#define SKIN_COLOR_SWAMPCLAN "728400" //GREEN DEFAULT
#define SKIN_COLOR_JUNGLECLAN "7a5e1b"
#define SKIN_COLOR_LEAFCLAN "5ea889"
#define SKIN_COLOR_BOGCLAN "1b7a5e"
#define SKIN_COLOR_FORESTCLAN "5FB098"
#define SKIN_COLOR_SHADOWCLAN "60609e"
#define SKIN_COLOR_FIREBLOOMCLAN "E26846"
#define SKIN_COLOR_ABYSSALCLAN "a198b8"

4 changes: 2 additions & 2 deletions code/__DEFINES/roguetown.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//used in various places
#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie")
#define ALL_RACES_LIST list("human", "dwarf", "elf", "tiefling", "aasimar", "orc", "zizombie", "abyssariad")

#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf","Tiefling", "Aasimar")
#define ALL_PLAYER_RACES_BY_NAME list("Humen", "Half-Elf", "Dark Elf", "Elf", "Dwarf", "Tiefling", "Aasimar", "Changeling", "Kenku", "Ogrun", "Undine")

#define ALL_TEMPLE_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/pestra, /datum/patron/divine/malum)
#define ALL_CLERIC_PATRONS list(/datum/patron/divine/astrata, /datum/patron/divine/noc, /datum/patron/divine/eora, /datum/patron/divine/necra, /datum/patron/divine/pestra, /datum/patron/divine/dendor, /datum/patron/divine/malum)
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
#define SPAN_DELF "delf"
#define SPAN_HELL "hellspeak"
#define SPAN_BEAST "beast"
#define SPAN_ABYSSAL "abyssal"

//bitflag #defines for return value of the radio() proc.
#define ITALICS 1
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/traits.dm
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#define TRAIT_SHOCKIMMUNE "Shock Immunity"
#define TRAIT_LONGSTRIDER "Longstrider"
#define TRAIT_MOB_FIRE_IMMUNE "Fire Immune" // Not actual full immunity but reduces effect of fire_act()
#define TRAIT_KAIZOKU "Foglander Cultured"

#define TRAIT_BASHDOORS "bashdoors"
#define TRAIT_NOMOOD "no_mood"
Expand All @@ -54,6 +55,7 @@
#define TRAIT_VAMPMANSION "vampiremansion"
#define TRAIT_INHUMENCAMP "inhumencamp"
#define TRAIT_LIMPDICK "limp_dick"
#define TRAIT_MINCED "minced" // Punishment that exists only because I am evil. Try NOT using the mouth of MONSTER PEOPLE THAT EATS FLESH ON A WHIM next time.
#define TRAIT_SEXPASS "sexpass"
#define TRAIT_INTRAINING "intraining" //allows certain roles to bypass the average skill limitation of training dummies
#define TRAIT_STEELHEARTED "steelhearted" //no bad mood from dismembering or seeing this
Expand All @@ -65,7 +67,7 @@

#define TRAIT_MALUMFIRE "Professional Smith"

GLOBAL_LIST_INIT(roguetraits, list(

Check failure on line 70 in code/__DEFINES/traits.dm

View workflow job for this annotation

GitHub Actions / OpenDream

OD0001: Expected ')'

Check failure on line 70 in code/__DEFINES/traits.dm

View workflow job for this annotation

GitHub Actions / OpenDream

OD0001: Expected end of braced block

Check failure on line 70 in code/__DEFINES/traits.dm

View workflow job for this annotation

GitHub Actions / OpenDream

OD0001: Expected end of braced block
TRAIT_WEBWALK = "I can move freely between webs.",
TRAIT_NOSTINK = span_dead("My nose is numb to the smell of decay."),
TRAIT_ZJUMP = "Time to reach a new high.",
Expand Down Expand Up @@ -110,8 +112,9 @@
TRAIT_SHOCKIMMUNE = "I am immune to electrical shocks.",
TRAIT_INTRAINING = "I'm going to be a knight someday! I can use training dummies more effectively than others.",
TRAIT_MALUMFIRE = "My hands are blessed by Malum to forge items of superb quality.",
TRAIT_KAIZOKU = "Whether by birth or by learning, I've inherited the Islander ways at cost of the Imperial culture."
TRAIT_MOB_FIRE_IMMUNE = span_info("I am not easily burned by flames."),
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
))

Check warning on line 117 in code/__DEFINES/traits.dm

View workflow job for this annotation

GitHub Actions / OpenDream

OD0000: Error recovery had to skip to code/__DEFINES/weather.dm:1:1

// trait accessor defines
#define ADD_TRAIT(target, trait, source) \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@
"Dwarf",
"Tiefling",
"Dark Elf",
"Aasimar"
"Aasimar",
"Changeling",
"Kenku",
"Ogrun",
"Undine"
)
maximum_possible_slots = 0

Expand Down
3 changes: 2 additions & 1 deletion code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,7 @@ SUBSYSTEM_DEF(ticker)
CHECK_TICK

/datum/controller/subsystem/ticker/proc/select_ruler()
/*
NPC1314 marked this conversation as resolved.
Show resolved Hide resolved
switch(rulertype)
if("King")
for(var/mob/living/carbon/human/K in world)
Expand All @@ -573,7 +574,7 @@ SUBSYSTEM_DEF(ticker)
if(H.job == "Hand")
rulermob = H
return

*/
/datum/controller/subsystem/ticker/proc/collect_minds()
for(var/i in GLOB.new_player_list)
var/mob/dead/new_player/P = i
Expand Down
8 changes: 8 additions & 0 deletions code/datums/components/crafting/crafting.dm
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,14 @@
if(M.density)
to_chat(user, "<span class='warning'>Something in the way.</span>")
return
if(R.req_kaizoku) //Requires Fog-island/Heartfell culture.
if(HAS_TRAIT(user, TRAIT_KAIZOKU))
to_chat(user, "<span class='warning'>I literally can't fanthom how imperials do this. Case hardening? Riveting? Fullering? Fluting? What is that?</span>")
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
return //If abyssariad of someone from Heartfell, you can't make imperial crafts. Hopefully this will be brought over to Smithing too.
if(R.req_antikaizoku) //Requires Imperial or 'else' culture.
if(!HAS_TRAIT(user, TRAIT_KAIZOKU))
to_chat(user, "<span class='warning'>I literally can't fathom how islanders do this. Differential hardening? Steel folding? Lost-wax casting? Tatami? What is that?</span>")
return //If not Abyssariad or someone from Heartfell, you can't make islander crafts. Hopefully this will be brought over to Smithing too.
if(R.req_table)
if(!(locate(/obj/structure/table) in T))
to_chat(user, "<span class='warning'>I need to make this on a table.</span>")
Expand Down
2 changes: 2 additions & 0 deletions code/datums/components/crafting/recipes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
var/wallcraft = FALSE
var/craftdiff = 1
var/sellprice = 0
var/req_kaizoku = FALSE
var/req_antikaizoku = FALSE
//crafting diff, every diff removes 25% chance to craft
/*
/datum/crafting_recipe/example
Expand Down
7 changes: 6 additions & 1 deletion code/datums/gods/patrons/divine_pantheon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,18 @@
t2 = /obj/effect/proc_holder/spell/targeted/beasttame
t3 = /obj/effect/proc_holder/spell/targeted/conjure_kneestingers

/datum/patron/divine/abyssor
/datum/patron/divine/abyssor //I really gotta make this different for Abyssariads and normal Abyssor.
Catalaria marked this conversation as resolved.
Show resolved Hide resolved
name = "Abyssor"
domain = "Force of Seas and Storms"
desc = "The World-Whale, the sovereign of the seas and storms."
flaws= "Reckless, Stubborn, Destructive"
worshippers = "Sailors of the Sea and Sky, Horrid Sea-Creachers, Fog Islanders"
sins = "Fear, Hubris, Trying to Tame the Seas"
t0 = /obj/effect/proc_holder/spell/invoked/lesser_heal/abyssal
t1 = /obj/effect/proc_holder/spell/invoked/projectile/purify //Unfinished
t2 = /obj/effect/proc_holder/spell/invoked/icebind //Unfinished
t3 = null
// t3 = /obj/effect/proc_holder/spell/invoked/elemental //Not finished.

/datum/patron/divine/necra
name = "Necra"
Expand Down
74 changes: 74 additions & 0 deletions code/datums/sexcon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,12 @@
if(HAS_TRAIT(owner, TRAIT_LIMPDICK))
to_chat(owner, "<span class='warning'>My soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(HAS_TRAIT(user, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>All I see is a open wound.</span>")
return
if(user.sexcon.inpussy)
if(user.sexcon.inpussy != owner)
testing("fuckfail5")
Expand Down Expand Up @@ -241,6 +247,9 @@
if(HAS_TRAIT(owner, TRAIT_LIMPDICK))
to_chat(owner, "<span class='warning'>My soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(user.loc != owner.loc)
return
if(fucking)
Expand Down Expand Up @@ -291,6 +300,9 @@
if(HAS_TRAIT(owner, TRAIT_LIMPDICK))
to_chat(owner, "<span class='warning'>My soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(!user.lying && !user.wallpressed && !owner.wallpressed && !owner.lying)
return
if(user.loc != owner.loc)
Expand Down Expand Up @@ -348,6 +360,9 @@
if(HAS_TRAIT(owner, TRAIT_LIMPDICK))
to_chat(owner, "<span class='warning'>My soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(gender != MALE)
return
if(fucking)
Expand All @@ -373,6 +388,20 @@
owner.visible_message("<span class='[!user.cmode ? "love" : "warning"]'>[owner] feeds [user].</span>")
START_PROCESSING(SSsex, user.sexcon)
START_PROCESSING(SSsex, src)
if(ishuman(user))
var/mob/living/carbon/human/H = user //owner feeds user. Owner has genital exposed, so user must be Changeling.
if(H.dna?.species?.name == "Changeling") //They have an eldritch mouth. Neither THEY control it properly imagine YOU.
if(prob(15))
to_chat(owner, "<span class='userdanger'>You witness your genitals snap, sinews pulled free with unnatural ease as if it were never bound at all.</span>")
to_chat(user, "<span class='userdanger'>The fleshy taste drives you into a trance, involuntary, carnivorous hunger. Your jaws became unbidden.</span>")
playsound(owner, 'sound/combat/dismemberment/dismem (1).ogg', 100, TRUE, ignore_walls = FALSE)
ADD_TRAIT(owner, TRAIT_MINCED, TRAIT_GENERIC)
owner.emote("scream")
owner.apply_damage(80, BRUTE, BODY_ZONE_PRECISE_GROIN)
owner.Stun(60)
return
else
to_chat(user, "<span class='info'>You suppress the primal instinct, though this strain feels unnatural to your biology.</span>")

/datum/sex_controller/proc/begin_mouthride(mob/living/user)
if(!user)
Expand All @@ -388,6 +417,9 @@
return
if(!user.lying || owner.lying)
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(inpussy)
testing("mridefail2")
return
Expand Down Expand Up @@ -423,6 +455,20 @@
user.sexcon.eatspeed = initial(user.sexcon.eatspeed)
user.sexcon.lasteat = world.time
user.sexcon.weeating = owner
if(ishuman(user))
var/mob/living/carbon/human/H = user //owner rides = owner genital is exposed. User must be abyssariad.
if(H.dna?.species?.name == "Changeling") //They have an eldritch mouth. Neither THEY control it properly imagine YOU.
if(prob(15))
to_chat(owner, "<span class='userdanger'>You witness your genitals snap, sinews pulled free with unnatural ease as if it were never bound at all.</span>")
to_chat(user, "<span class='userdanger'>The fleshy taste drives you into a trance, involuntary, carnivorous hunger. Your jaws became unbidden.</span>")
playsound(owner, 'sound/combat/dismemberment/dismem (1).ogg', 100, TRUE, ignore_walls = FALSE)
ADD_TRAIT(owner, TRAIT_MINCED, TRAIT_GENERIC)
owner.emote("scream")
owner.apply_damage(80, BRUTE, BODY_ZONE_PRECISE_GROIN)
owner.Stun(60)
return
else
to_chat(user, "<span class='info'>You suppress the primal instinct, though this strain feels unnatural to your biology.</span>")
riding = user
owner.visible_message("<span class='[!user.cmode ? "love" : "warning"]'>[owner] rides [riding]'s face.</span>")
START_PROCESSING(SSsex, user.sexcon)
Expand Down Expand Up @@ -450,6 +496,12 @@
if(HAS_TRAIT(user, TRAIT_LIMPDICK))
to_chat(owner, "<span class='warning'>The soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(HAS_TRAIT(user, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>All I see is a open wound.</span>")
return
if(inpussy && !riding)
if(inpussy != user)
return
Expand Down Expand Up @@ -497,6 +549,9 @@
if(!get_location_accessible(user, BODY_ZONE_PRECISE_GROIN))
testing("eatfail13")
return
if(HAS_TRAIT(user, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>I will not put my mouth on a open wound.</span>")
return
if(eatingus)
if(eatingus == user)
if(!(user.lying && owner.lying))
Expand Down Expand Up @@ -534,6 +589,20 @@
weeating = user
user.sexcon.lasteat = world.time
user.sexcon.eatingus = owner
if(ishuman(owner))
var/mob/living/carbon/human/H = owner //owner is the one sugging. Owner must be the Changeling.
if(H.dna?.species?.name == "Changeling") //They have an eldritch mouth. Neither THEY control it properly imagine YOU.
if(prob(15))
to_chat(user, "<span class='userdanger'>You witness your genitals snap, sinews pulled free with unnatural ease as if it were never bound at all.</span>") //Functions perfectly for male AND females.
to_chat(owner, "<span class='userdanger'>The fleshy taste drives you into a trance, involuntary, carnivorous hunger. Your jaws became unbidden.</span>")
playsound(owner, 'sound/combat/dismemberment/dismem (1).ogg', 100, TRUE, ignore_walls = FALSE)
ADD_TRAIT(user, TRAIT_MINCED, TRAIT_GENERIC)
user.emote("scream")
user.apply_damage(80, BRUTE, BODY_ZONE_PRECISE_GROIN)
user.Stun(60)
return
else
to_chat(owner, "<span class='info'>You suppress the primal instinct, though this strain feels unnatural to your biology.</span>")
if(weeating.gender == MALE)
owner.visible_message("<span class='[!weeating.cmode ? "love" : "warning"]'>[owner] sucks [weeating].</span>")
else
Expand All @@ -557,6 +626,9 @@
if(HAS_TRAIT(owner, TRAIT_LIMPDICK))
to_chat(user, "<span class='warning'>The soldier won't stand up for me.</span>")
return
if(HAS_TRAIT(owner, TRAIT_MINCED))
to_chat(owner, "<span class='warning'>My genitals got MINCED by that slackjaw freek!</span>")
return
if(fapping)
testing("fapfail6")
if(fapping == G)
Expand Down Expand Up @@ -812,6 +884,8 @@
var/usedsource = "fuckmouth"
if(adjust_horny(3, usedsource))
stop_fucking()
//if race here if(D.owner.)
//if abyssariad, perform the funny perk-giver.
if(riding)
if(riding.sexcon.weeating == owner)
var/datum/sex_controller/D = riding.sexcon
Expand Down
Loading
Loading