diff --git a/code/__DEFINES/loadout.dm b/code/__DEFINES/loadout.dm index f9b4c36c9c..792708b5bb 100644 --- a/code/__DEFINES/loadout.dm +++ b/code/__DEFINES/loadout.dm @@ -91,3 +91,8 @@ #define LOADOUT_TAB 4 #define CONTENT_PREFERENCES_TAB 5 #define KEYBINDINGS_TAB 6 + +//quirks +#define QUIRK_POSITIVE "Positive" +#define QUIRK_NEGATIVE "Negative" +#define QUIRK_NEUTRAL "Neutral" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3e9fefdd5a..b3fdaf6d99 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -250,6 +250,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) //Quirk list var/list/all_quirks = list() + //Quirk category currently selected + var/quirk_category = QUIRK_POSITIVE // defaults to positive, the first tab! + //Job preferences 2.0 - indexed by job title , no key or value implies never var/list/job_preferences = list() @@ -1674,9 +1677,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "
Current quirks: [all_quirks.len ? all_quirks.Join(", ") : "None"]
" dat += "
[GetPositiveQuirkCount()] / [MAX_QUIRKS] max positive quirks
\ - Quirk balance remaining: [GetQuirkBalance()]

" + Quirk balance remaining: [GetQuirkBalance()]
" + dat += " [QUIRK_POSITIVE] " + dat += " [QUIRK_NEUTRAL] " + dat += " [QUIRK_NEGATIVE] " + dat += "
" for(var/V in SSquirks.quirks) var/datum/quirk/T = SSquirks.quirks[V] + var/value = initial(T.value) + if((value > 0 && quirk_category != QUIRK_POSITIVE) || (value < 0 && quirk_category != QUIRK_NEGATIVE) || (value == 0 && quirk_category != QUIRK_NEUTRAL)) + continue + var/quirk_name = initial(T.name) var/has_quirk var/quirk_cost = initial(T.value) * -1 @@ -1698,7 +1709,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) quirk_cost = "+[quirk_cost]" var/font_color = "#AAAAFF" if(initial(T.value) != 0) - font_color = initial(T.value) > 0 ? "#AAFFAA" : "#FFAAAA" + font_color = value > 0 ? "#AAFFAA" : "#FFAAAA" if(quirk_conflict) dat += "[quirk_name] - [initial(T.desc)] \ LOCKED: [lock_reason]
" @@ -1844,7 +1855,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) else SetQuirks(user) return TRUE -//SKYRAT CHANGE - only language pref + + else if(href_list["quirk_category"]) + var/temp_quirk_category = href_list["quirk_category"] + if(temp_quirk_category == QUIRK_POSITIVE || temp_quirk_category == QUIRK_NEUTRAL || temp_quirk_category == QUIRK_NEGATIVE) + quirk_category = temp_quirk_category + SetQuirks(user) + else if(href_list["preference"] == "language") switch(href_list["task"]) if("close") @@ -1863,7 +1880,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) else SetLanguage(user) return TRUE -// + switch(href_list["task"]) if("random") switch(href_list["preference"]) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 9461847ecc..31380ea121 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -467,7 +467,7 @@ //any cost it has isn't a worry /mob/proc/change_number_of_hands(amt) if(amt < held_items.len) - for(var/i in held_items.len to amt step -1) + for(var/i in held_items.len to (amt + 1) step -1) dropItemToGround(held_items[i]) held_items.len = amt @@ -478,14 +478,14 @@ /mob/living/carbon/human/change_number_of_hands(amt) var/old_limbs = held_items.len if(amt < old_limbs) - for(var/i in hand_bodyparts.len to amt step -1) + for(var/i in hand_bodyparts.len to (amt + 1) step -1) var/obj/item/bodypart/BP = hand_bodyparts[i] BP.dismember() hand_bodyparts[i] = null hand_bodyparts.len = amt else if(amt > old_limbs) hand_bodyparts.len = amt - for(var/i in old_limbs+1 to amt) + for(var/i in (old_limbs + 1) to amt) var/path = /obj/item/bodypart/l_arm if(!(i % 2)) path = /obj/item/bodypart/r_arm diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index b065454f27..4be1065372 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -526,6 +526,8 @@ /datum/emote/living/circle/run_emote(mob/user, params) . = ..() + if(!.) + return var/obj/item/circlegame/N = new(user) if(user.put_in_hands(N)) to_chat(user, "You make a circle with your hand.") diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index d499c2abae..5563f47e61 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -8,7 +8,7 @@ var/unrestricted = TRUE /datum/emote/sound/silicon/run_emote(mob/user, params) - if(!unrestricted && !(issilicon(user) || isipcperson(user))) + if(!unrestricted && !(issilicon(user) || isrobotic(user))) return return ..() diff --git a/code/modules/mob/living/simple_animal/slime/emote.dm b/code/modules/mob/living/simple_animal/slime/emote.dm index 94f054345d..ac0ce1c1e5 100644 --- a/code/modules/mob/living/simple_animal/slime/emote.dm +++ b/code/modules/mob/living/simple_animal/slime/emote.dm @@ -27,6 +27,8 @@ /datum/emote/slime/mood/run_emote(mob/user, params) . = ..() + if(!.) + return var/mob/living/simple_animal/slime/S = user S.mood = mood S.regenerate_icons() diff --git a/html/changelogs/archive/2022-05.yml b/html/changelogs/archive/2022-05.yml index 531dedac25..ac73f9ad45 100644 --- a/html/changelogs/archive/2022-05.yml +++ b/html/changelogs/archive/2022-05.yml @@ -124,6 +124,8 @@ 2022-05-16: Anonymous: - rscadd: Adds "Volunteer" as an alt title for Assistants. + - spellcheck: Replaces placeholder text for specific fleshlight interaction with + proper one. JerryWester: - bugfix: using unlinked fleshlight with unlinked underwear while equipped. Formerly showed up as if underwear wasn't equipped @@ -137,5 +139,9 @@ Yawet330: - admin: Staff when aghosting get the same things, so you can easily see peoples OOC notes if disputes come up, and they're in something that prevents examines. +2022-05-17: timothyteakettle: - rscadd: poly alt cloak can now be renamed/dedescriptioned in loadout +2022-05-18: + timothyteakettle: + - rscadd: quirks are now organised into three tabs for positive, neutral and negative diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 0adb12e5a1..8a6643d239 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -77,7 +77,8 @@ restraint_check = TRUE /datum/emote/living/snap/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -93,7 +94,8 @@ restraint_check = TRUE /datum/emote/living/snap2/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -109,7 +111,8 @@ restraint_check = TRUE /datum/emote/living/snap3/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -125,7 +128,8 @@ restraint_check = FALSE /datum/emote/living/awoo/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -141,7 +145,8 @@ restraint_check = FALSE /datum/emote/living/hiss/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -157,7 +162,8 @@ restraint_check = FALSE /datum/emote/living/meow/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -173,7 +179,8 @@ restraint_check = FALSE /datum/emote/living/purr/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -189,7 +196,8 @@ restraint_check = FALSE /datum/emote/living/nya/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -205,7 +213,8 @@ restraint_check = FALSE /datum/emote/living/weh/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -221,7 +230,8 @@ restraint_check = FALSE /datum/emote/living/peep/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -244,7 +254,8 @@ restraint_check = FALSE /datum/emote/living/mothsqueak/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -260,7 +271,8 @@ restraint_check = FALSE /datum/emote/living/merp/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -276,7 +288,8 @@ restraint_check = FALSE /datum/emote/living/bark/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -293,7 +306,8 @@ restraint_check = FALSE /datum/emote/living/squish/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -310,7 +324,8 @@ restraint_check = FALSE /datum/emote/living/pain/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return if(user.nextsoundemote >= world.time) return @@ -331,6 +346,7 @@ restraint_check = TRUE /datum/emote/living/clap1/run_emote(mob/living/user, params) - if(!(. = ..())) + . = ..() + if(!.) return playsound(user, 'modular_citadel/sound/voice/clap.ogg', 50, 1, -1) diff --git a/modular_sand/code/game/objects/items/fleshlight.dm b/modular_sand/code/game/objects/items/fleshlight.dm index 3b63ddfd0c..e51be4ad10 100644 --- a/modular_sand/code/game/objects/items/fleshlight.dm +++ b/modular_sand/code/game/objects/items/fleshlight.dm @@ -160,8 +160,8 @@ user_lust_amt = NORMAL_LUST target_lust_amt = LOW_LUST if(CUM_TARGET_URETHRA) - user_message = (user == M) ? "fucking urethra" : "force someone to fuck urethra" - target_message = "urethra fucked by dick" + user_message = (user == M) ? "fucks \the [src]'s urethra" : "forces \the [M] to fuck \the [src]'s urethra" + target_message = "fuck your urethra with their [temp.length]-inch [lowertext(temp.shape)] penis" P = temp target = CUM_TARGET_PENIS user_lust_amt = NORMAL_LUST