Skip to content

Commit

Permalink
Merge pull request #1009 from ariaworld/spooktober-update
Browse files Browse the repository at this point in the history
[SEMI-MODULAR] Small Spooktober update (In November)
  • Loading branch information
MosleyTheMalO authored Dec 9, 2023
2 parents 700fd57 + 7f82de9 commit 6872017
Show file tree
Hide file tree
Showing 38 changed files with 271 additions and 67 deletions.
3 changes: 1 addition & 2 deletions code/_globalvars/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ GLOBAL_VAR(deity)
GLOBAL_VAR(bible_name)
GLOBAL_VAR(bible_icon_state)
GLOBAL_VAR(bible_item_state)
GLOBAL_VAR(holy_weapon_type)
GLOBAL_VAR(holy_armor_type)


GLOBAL_VAR_INIT(internal_tick_usage, 0.2 * world.tick_lag)
9 changes: 9 additions & 0 deletions code/datums/components/riding.dm
Original file line number Diff line number Diff line change
Expand Up @@ -392,3 +392,12 @@
if(rider in AM.buckled_mobs)
AM.unbuckle_mob(rider)
. = ..()

/obj/item/riding_offhand/on_thrown(mob/living/carbon/user, atom/target)
if(rider == user)
return //Piggyback user.
user.unbuckle_mob(rider)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, span_notice("You gently let go of [rider]."))
return
return rider
10 changes: 10 additions & 0 deletions code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1287,3 +1287,13 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/// Special stuff you want to do when an outfit equips this item.
/obj/item/proc/on_outfit_equip(mob/living/carbon/human/outfit_wearer, visuals_only, item_slot)
return

///Called by the carbon throw_item() proc. Returns null if the item negates the throw, or a reference to the thing to suffer the throw else.
/obj/item/proc/on_thrown(mob/living/carbon/user, atom/target)
if((item_flags & ABSTRACT) || HAS_TRAIT(src, TRAIT_NODROP))
return
user.dropItemToGround(src)
if(throwforce && HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, span_notice("You set [src] down gently on the ground."))
return
return src
15 changes: 3 additions & 12 deletions code/game/objects/items/holy_weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,9 @@
return holy_item_list

/obj/item/choice_beacon/holy/spawn_option(obj/choice,mob/living/M)
if(!GLOB.holy_armor_type)
..()
playsound(src, 'sound/effects/pray_chaplain.ogg', 40, 1)
SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]")
GLOB.holy_armor_type = choice
else
to_chat(M, "<span class='warning'>A selection has already been made. Self-Destructing...</span>")
return
..()
playsound(src, 'sound/effects/pray_chaplain.ogg', 40, 1)
SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]")

/obj/item/storage/box/holy
name = "Templar Kit"
Expand Down Expand Up @@ -248,8 +243,6 @@
* * M The mob choosing a nullrod reskin
*/
/obj/item/nullrod/proc/reskin_holy_weapon(mob/living/L)
if(GLOB.holy_weapon_type)
return
var/obj/item/holy_weapon
var/list/holy_weapons_list = subtypesof(/obj/item/nullrod) + list(HOLY_WEAPONS)
var/list/display_names = list()
Expand All @@ -269,8 +262,6 @@
var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new
holy_weapon = new A

GLOB.holy_weapon_type = holy_weapon.type

SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]")

if(holy_weapon)
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/miscellaneous.dm
Original file line number Diff line number Diff line change
Expand Up @@ -272,3 +272,4 @@
icon_state = "skub"
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("skubbed")

30 changes: 8 additions & 22 deletions code/game/objects/items/toys.dm
Original file line number Diff line number Diff line change
Expand Up @@ -788,29 +788,15 @@
. = ..()
populate_deck()

///Generates all the cards within the deck.
/obj/item/toy/cards/deck/proc/populate_deck()
icon_state = "deck_[deckstyle]_full"
for(var/i in 2 to 10)
cards += "[i] of Hearts"
cards += "[i] of Spades"
cards += "[i] of Clubs"
cards += "[i] of Diamonds"
cards += "King of Hearts"
cards += "King of Spades"
cards += "King of Clubs"
cards += "King of Diamonds"
cards += "Queen of Hearts"
cards += "Queen of Spades"
cards += "Queen of Clubs"
cards += "Queen of Diamonds"
cards += "Jack of Hearts"
cards += "Jack of Spades"
cards += "Jack of Clubs"
cards += "Jack of Diamonds"
cards += "Ace of Hearts"
cards += "Ace of Spades"
cards += "Ace of Clubs"
cards += "Ace of Diamonds"
for(var/suit in list("Hearts", "Spades", "Clubs", "Diamonds"))
cards += "Ace of [suit]"
for(var/i in 2 to 10)
cards += "[i] of [suit]"
for(var/person in list("Jack", "Queen", "King"))
cards += "[person] of [suit]"

//ATTACK HAND NOT CALLING PARENT
/obj/item/toy/cards/deck/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
Expand Down Expand Up @@ -1001,7 +987,7 @@

/obj/item/toy/cards/singlecard
name = "card"
desc = "a card"
desc = "A card."
icon = 'icons/obj/toy.dmi'
icon_state = "singlecard_down_nanotrasen"
w_class = WEIGHT_CLASS_TINY
Expand Down
8 changes: 4 additions & 4 deletions code/game/objects/structures/spirit_board.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
virgin = 0
notify_ghosts("Someone has begun playing with a [src.name] in [get_area(src)]!", source = src)

planchette = input("Choose the letter.", "Seance!") as null|anything in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
planchette = input("Choose the letter.", "Seance!") as null|anything in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z", "YES", "NO" ,"GOOD BYE")
if(!planchette || !Adjacent(M) || next_use > world.time)
return
M.log_message("picked a letter on [src], which was \"[planchette]\".")
Expand All @@ -56,8 +56,8 @@
light_amount = T.get_lumcount()


if(light_amount > 0.2)
to_chat(M, "<span class='warning'>It's too bright here to use [src.name]!</span>")
if(light_amount > 0.3) // Splurt edit, from 0.2 to 0.3
to_chat(M, "<span class='warning'>It's too bright here to use the [src.name]!</span>")
return 0

//mobs in range check
Expand All @@ -69,7 +69,7 @@
else
users_in_range++

if(users_in_range < 2)
if(users_in_range < 1) // SPLURT EDIT: 1 is the minimum number of people in range
to_chat(M, "<span class='warning'>There aren't enough people to use the [src.name]!</span>")
return 0

Expand Down
16 changes: 14 additions & 2 deletions code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)

dat += "<h2>Body</h2>"
dat += "<b>Gender:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=gender;task=input'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]</a><BR>"
if(gender != NEUTER && pref_species.sexes)
if(pref_species.sexes)
dat += "<b>Body Model:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=body_model'>[features["body_model"] == MALE ? "Masculine" : "Feminine"]</a><BR>"
dat += "<b>Limb Modification:</b><BR>"
dat += "<a href='?_src_=prefs;preference=modify_limbs;task=input'>Modify Limbs</a><BR>"
Expand Down Expand Up @@ -1286,6 +1286,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
loadout_color_non_poly = loadout_item[LOADOUT_COLOR][1]
extra_loadout_data += "<BR><a href='?_src_=prefs;preference=gear;loadout_color=1;loadout_gear_name=[html_encode(gear.name)];'>Color</a>"
extra_loadout_data += "<span style='border: 1px solid #161616; background-color: [loadout_color_non_poly];'><font color='[color_hex2num(loadout_color_non_poly) < 200 ? "FFFFFF" : "000000"]'>[loadout_color_non_poly]</font></span>"
extra_loadout_data += "<BR><a href='?_src_=prefs;preference=gear;loadout_color_HSV=1;loadout_gear_name=[html_encode(gear.name)];'>HSV Color</a>" // SPLURT EDIT
if(gear.loadout_flags & LOADOUT_CAN_NAME)
extra_loadout_data += "<BR><a href='?_src_=prefs;preference=gear;loadout_rename=1;loadout_gear_name=[html_encode(gear.name)];'>Name</a> [loadout_item[LOADOUT_CUSTOM_NAME] ? loadout_item[LOADOUT_CUSTOM_NAME] : "N/A"]"
if(gear.loadout_flags & LOADOUT_CAN_DESCRIPTION)
Expand Down Expand Up @@ -4100,7 +4101,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
sanitize_current_slot.Remove(list(entry))
break

if(href_list["loadout_color"] || href_list["loadout_color_polychromic"] || href_list["loadout_rename"] || href_list["loadout_redescribe"])
if(href_list["loadout_color"] || href_list["loadout_color_polychromic"] || href_list["loadout_color_HSV"] || href_list["loadout_rename"] || href_list["loadout_redescribe"])
//if the gear doesn't exist, or they don't have it, ignore the request
var/name = html_decode(href_list["loadout_gear_name"])
var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name]
Expand All @@ -4121,6 +4122,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/new_color = input(user, "Polychromic options", "Choose Color", current_color) as color|null
user_gear[LOADOUT_COLOR][1] = sanitize_hexcolor(new_color, 6, TRUE, current_color)

// HSV Coloring (SPLURT EDIT)
if(href_list["loadout_color_HSV"] && !(G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC))
var/hue = input(user, "Enter Hue (0-360)", "HSV options") as num|null
var/saturation = input(user, "Enter Saturation (-10 to 10)", "HSV options") as num|null
var/value = input(user, "Enter Value (-10 to 10)", "HSV options") as num|null
if(hue && saturation && value)
saturation = clamp(saturation, -10, 10)
value = clamp(value, -10, 10)
var/color_to_use = color_matrix_hsv(hue, saturation, value)
user_gear[LOADOUT_COLOR][1] = color_to_use

//poly coloring can only be done by poly items
if(href_list["loadout_color_polychromic"] && (G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC))
var/list/color_options = list()
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/under/miscellaneous.dm
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@
name = "pink stripper outfit"
icon_state = "stripper_p"
item_state = "stripper_p"
body_parts_covered = CHEST|GROIN
body_parts_covered = CHEST
can_adjust = FALSE
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON

Expand Down
9 changes: 5 additions & 4 deletions code/modules/jobs/job_types/chaplain.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@
B.item_state = GLOB.bible_item_state
to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.")
H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK)
var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod
var/obj/item/nullrod/N = new nrt(H)
H.put_in_hands(N)
return

var/new_religion = DEFAULT_RELIGION
Expand Down Expand Up @@ -125,6 +122,10 @@
belt = /obj/item/pda/chaplain
ears = /obj/item/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/civilian/chaplain
backpack_contents = list(/obj/item/camera/spooky = 1)
backpack_contents = list(
/obj/item/nullrod = 1,
/obj/item/choice_beacon/holy = 1,
/obj/item/camera/spooky = 1
)
backpack = /obj/item/storage/backpack/cultpack
satchel = /obj/item/storage/backpack/cultpack
9 changes: 9 additions & 0 deletions code/modules/mob/living/carbon/carbon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,15 @@
if(start_T && end_T)
log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")

else
thrown_thing = I.on_thrown(src, target)

if(isliving(thrown_thing))
var/turf/start_T = get_turf(loc)
var/turf/end_T = get_turf(target)
if(start_T && end_T)
log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")

else if(!(I.item_flags & ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP))
thrown_thing = I
dropItemToGround(I)
Expand Down
1 change: 1 addition & 0 deletions code/modules/reagents/chemistry/reagents/drink_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@
glass_desc = "White and nutritious goodness!"
pH = 6.5
value = REAGENT_VALUE_VERY_COMMON
var/decal_path = /obj/effect/decal/cleanable/milk

// Milk is good for humans, but bad for plants. The sugars cannot be used by plants, and the milk fat harms growth. Not shrooms though. I can't deal with this now...
/datum/reagent/consumable/milk/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/reagents/chemistry/reagents/food_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@
color = "#FFFFFF" // rgb: 255, 255, 255
taste_mult = 1.5 // stop sugar drowning out other flavours
nutriment_factor = 3 * REAGENTS_METABOLISM
metabolization_rate = 2 * REAGENTS_METABOLISM
metabolization_rate = 5 * REAGENTS_METABOLISM
overdose_threshold = 200 // Hyperglycaemic shock
taste_description = "sweetness"
value = REAGENT_VALUE_NONE
Expand All @@ -173,7 +173,7 @@

/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You go into hyperglycaemic shock! Lay off the twinkies!</span>")
M.AdjustSleeping(600, FALSE)
M.AdjustSleeping(20 SECONDS, FALSE)
. = 1

/datum/reagent/consumable/sugar/overdose_process(mob/living/M)
Expand Down
4 changes: 1 addition & 3 deletions modular_citadel/code/modules/client/loadout/uniform.dm
Original file line number Diff line number Diff line change
Expand Up @@ -658,13 +658,11 @@
name = "Green Feminine Christmas Suit"
category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/costume/christmas/croptop/green
*/
/datum/gear/uniform/pinkstripper
name = "Pink stripper outfit"
category = ITEM_SLOT_ICLOTHING
path = /obj/item/clothing/under/misc/stripper
cost = 3
*/

/datum/gear/uniform/greenstripper
name = "Green stripper outfit"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@
/obj/effect/decal/cleanable/semendrip/update_icon()
. = ..()
add_atom_colour(mix_color_from_reagents(reagents.reagent_list), FIXED_COLOUR_PRIORITY)

8 changes: 4 additions & 4 deletions modular_splurt/code/datums/interactions/lewd/_lewd.dm
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@
else
lines = list(
"'s tip gently smooches \the <b>[target]</b>'s, right before forcing its way right down [t_His] dickhole.",
"grinds [u_His] tip against \the <b>[target]</b>'s [t_genital_name], only to slide [u_His] whole [ui_ai_alerts] all the way down to [t_His] base.",
"grinds [u_His] tip against \the <b>[target]</b>'s [t_genital_name], only to slide [u_His] whole [u_genital_name] all the way down to [t_His] base.",
"makes \the <b>[target]</b>'s fat [t_genital_name] stretch and throb as the size of [u_His] [u_genital_name] makes its way right in."
)
set_is_fucking(target, CUM_TARGET_URETHRA, getorganslot(ORGAN_SLOT_PENIS))
Expand Down Expand Up @@ -758,9 +758,9 @@

if(target.is_fucking(src, CUM_TARGET_THIGHS))
lines = list(
"grinds and presses [u_His] thighs [pick("deeply ", "")] against \the <b>[target]</b>'s [genital_name], massaging it all over with [u_His] thighs.",
"squeezes \the <b>[target]</b>'s [genital_name] between [u_His] supple thighs, smothering it deep under [u_His] crotch.",
"rides \the <b>[target]</b>'s [genital_name] with [u_His] [pick("pudgy ", "soft ", "")]thighs, [t_He] can feel [u_His] flesh smothering it down."
"grinds and presses [u_His] thighs [pick("deeply ", "")] against \the <b>[target]</b>'s [genital_name], massaging it all over with [u_His] thighs",
"squeezes \the <b>[target]</b>'s [genital_name] between [u_His] supple thighs, smothering it deep under [u_His] crotch",
"rides \the <b>[target]</b>'s [genital_name] with [u_His] [pick("pudgy ", "soft ", "")]thighs, [t_He] can feel [u_His] flesh smothering it down"
)
else
lines = list(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
var/stat_before = target.stat
target.adjustOxyLoss(3)
if(target.stat == UNCONSCIOUS && stat_before != UNCONSCIOUS)
target.visible_message(message = "<font color=red><b>\The [target]</b> passes out on <b>\The [src]</b>'s cock.</span>", ignored_mobs = user.get_unconsenting())
target.visible_message(message = "<font color=red><b>\The [target]</b> passes out on <b>\The [user]</b>'s cock.</span>", ignored_mobs = user.get_unconsenting())
if(!isclownjob(user))
return

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/datum/reagent/consumable/milk/reaction_turf(turf/T, reac_volume)
if(!istype(T))
return
if(reac_volume < 3)
return

var/obj/effect/decal/cleanable/milk/S = locate() in T
if(!S)
S = new(T)

/obj/effect/decal/cleanable/milk
name = "milk"
desc = null
gender = PLURAL
density = 0
layer = ABOVE_NORMAL_TURF_LAYER
icon = 'icons/obj/genitals/effects.dmi'
icon_state = "milk1"
random_icon_states = list("milk1", "milk2", "milk3", "milk4")

/obj/effect/decal/cleanable/milk/New()
. = ..()
dir = pick(1,2,4,8)
add_blood_DNA(list("Non-human DNA" = "A+"))

/obj/effect/decal/cleanable/milk/replace_decal(obj/effect/decal/cleanable/milk/S)
if(S.blood_DNA)
blood_DNA |= S.blood_DNA
return ..()
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

/obj/item/chastity_hypno/magazine
name = "Hypnotic Chastity Magazine"
desc = "A fascinating magazine filled with mesmerizing patterns and articles on the art of hypnotic chastity..."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "pamphlet"
color = COLOR_STRONG_MAGENTA
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
if(icon_state == "pocketwatch")
icon_state = "pocketwatch_closed"
item_state = "pocketwatch_closed"
desc = "An elaborate pocketwatch, with a captivating silver etching. It's closed however and you can't see it's face"
desc = "An elaborate pocketwatch, with a captivating silver etching. It's closed, however, and you can't see it's face..."
closed = TRUE
return

Expand Down
14 changes: 14 additions & 0 deletions modular_splurt/code/game/objects/items/miscellaneous.dm
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,17 @@
replace.uses = uses - 1
M.put_in_hands(replace)
. = ..()

/obj/item/choice_beacon/ouija
name = "spirit board delivery beacon"
desc = "Ghost communication on demand! It is unclear how this thing is still operational."

/obj/item/choice_beacon/ouija/generate_display_names()
var/static/list/ouija_spaghetti_list
if(!ouija_spaghetti_list)
ouija_spaghetti_list = list()
var/list/templist = list(/obj/structure/spirit_board)
for(var/V in templist)
var/atom/A = V
ouija_spaghetti_list[initial(A.name)] = A
return ouija_spaghetti_list
2 changes: 1 addition & 1 deletion modular_splurt/code/modules/arousal/arousal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
var/datum/reagents/fluid_source = G.climaxable(src)
if(!fluid_source)
return
var/main_fluid = lowertext(fluid_source.get_master_reagent_name())
var/main_fluid = lowertext(G.get_fluid_name())
if(mb_time)
visible_message(span_love("You hear a strong suction sound coming from the [M.name] on [src]'s [G.name]."), \
span_userlove("The [M.name] pumps faster, trying to get you over the edge."), \
Expand Down
Loading

0 comments on commit 6872017

Please sign in to comment.