Skip to content

Commit

Permalink
Final part of Stage 1
Browse files Browse the repository at this point in the history
as it says on the tin
  • Loading branch information
Monochrome9090 committed Dec 18, 2024
1 parent a004f4a commit bbe3be4
Show file tree
Hide file tree
Showing 459 changed files with 9,688 additions and 660 deletions.
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 @@ -97,6 +97,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))
#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 @@ -469,3 +469,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/necra, /datum/patron/divine/pestra)
#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)
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,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
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#define TRAIT_ANTIMAGIC "Anti-Magic"
#define TRAIT_ANTISCRYING "Anti-Scrying"
#define TRAIT_SHOCKIMMUNE "Shock Immunity"
#define TRAIT_KAIZOKU "Foglander Cultured"

#define TRAIT_BASHDOORS "bashdoors"
#define TRAIT_NOMOOD "no_mood"
Expand All @@ -51,6 +52,7 @@
#define TRAIT_KNOWBANDITS "knowbandits"
#define TRAIT_VAMPMANSION "vampiremansion"
#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 Down Expand Up @@ -107,6 +109,7 @@ GLOBAL_LIST_INIT(roguetraits, list(
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 accessor defines
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
8 changes: 5 additions & 3 deletions code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ SUBSYSTEM_DEF(ticker)
to_chat(player, "<span class='warning'>You cannot be [V] and thus are not considered.</span>")
continue
readied_jobs.Add(V)
if(("King" in readied_jobs) || ("Queen" in readied_jobs))
/*if(("King" in readied_jobs) || ("Queen" in readied_jobs))
if("King" in readied_jobs)
rulertype = "King"
else
Expand All @@ -290,6 +290,7 @@ SUBSYSTEM_DEF(ticker)
var/list/stuffy = list("Set a Ruler to 'high' in your class preferences to start the game!", "PLAY Ruler NOW!", "A Ruler is required to start.", "Pray for a Ruler.", "One day, there will be a Ruler.", "Just try playing Ruler.", "If you don't play Ruler, the game will never start.", "We need at least one Ruler to start the game.", "We're waiting for you to pick Ruler to start.", "Still no Ruler is readied..", "I'm going to lose my mind if we don't get a Ruler readied up.","No. The game will not start because there is no Ruler.","What's the point of ROGUETOWN without a Ruler?")
to_chat(world, "<span class='purple'>[pick(stuffy)]</span>")
return FALSE
*/

#ifdef DEPLOY_TEST
var/amt_ready = 999
Expand All @@ -306,7 +307,7 @@ SUBSYSTEM_DEF(ticker)
continue
if(player.ready == PLAYER_READY_TO_PLAY)
amt_ready++
if(amt_ready < 2)
if(amt_ready < 0)
to_chat(world, "<span class='purple'>[amt_ready]/2 players ready.</span>")
/* failedstarts++
if(failedstarts > 7)
Expand Down Expand Up @@ -560,6 +561,7 @@ SUBSYSTEM_DEF(ticker)
CHECK_TICK

/datum/controller/subsystem/ticker/proc/select_ruler()
/*
switch(rulertype)
if("King")
for(var/mob/living/carbon/human/K in world)
Expand All @@ -575,7 +577,7 @@ SUBSYSTEM_DEF(ticker)
if(Q.job == "Queen")
rulermob = Q
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
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>")
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.
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 @@ -169,6 +169,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 @@ -245,6 +251,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 @@ -295,6 +304,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 @@ -352,6 +364,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 @@ -377,6 +392,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 @@ -392,6 +421,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 @@ -427,6 +459,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 @@ -454,6 +500,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 @@ -501,6 +553,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 @@ -538,6 +593,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 @@ -561,6 +630,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 @@ -846,6 +918,8 @@
stop_fucking()
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

0 comments on commit bbe3be4

Please sign in to comment.