From 8652fc82a9e116b8acf37ca4bdeaca73cdb07828 Mon Sep 17 00:00:00 2001 From: BongaTheProto <93835010+BongaTheProto@users.noreply.github.com> Date: Mon, 9 May 2022 17:33:28 -0500 Subject: [PATCH] was less than I thought yeah this works ig --- .../NTNet/NTNRC/conversation.dm | 2 +- .../file_system/programs/ntnrc_client.dm | 15 ++-- config/entries/general.txt | 1 + .../code/datums/elements/crawl_under.dm | 7 +- .../code/game/object/structures/bathroom.dm | 12 +++- .../code/modules/cargo/packs/vending.dm | 2 + .../new_player/sprite_accesories/wings.dm | 36 ++++++++++ .../mob/living/carbon/human/examine.dm | 67 ++++++++++++++++++ .../carbon/human/species_types/vampire.dm | 5 ++ .../code/modules/shuttle/arrivals.dm | 2 + .../code/modules/shuttle/shuttle.dm | 2 + modular_splurt/icons/mob/wings.dmi | Bin 1860 -> 4108 bytes .../icons/obj/structures/bathroom.dmi | Bin 1590 -> 4110 bytes tgstation.dme | 5 ++ tgui/packages/tgui/interfaces/NtosNetChat.js | 13 ++-- 15 files changed, 155 insertions(+), 14 deletions(-) create mode 100644 modular_splurt/code/modules/cargo/packs/vending.dm create mode 100644 modular_splurt/code/modules/mob/living/carbon/human/examine.dm create mode 100644 modular_splurt/code/modules/mob/living/carbon/human/species_types/vampire.dm create mode 100644 modular_splurt/code/modules/shuttle/arrivals.dm create mode 100644 modular_splurt/code/modules/shuttle/shuttle.dm diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm index fada2229e5..1c79449a39 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -86,7 +86,7 @@ offline_clients.Add(offline) /datum/ntnet_conversation/proc/mute_user(datum/computer_file/program/chatclient/op, datum/computer_file/program/chatclient/muted) - if(operator != op) //sanity even if the person shouldn't be able to see the mute button + if(!op.netadmin_mode && operator != op) //sanity even if the person shouldn't be able to see the mute button return if(muted in muted_clients) muted_clients.Remove(muted) diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 29a4418d2c..b1cc503565 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -1,3 +1,6 @@ +#define USERNAME_SIZE 32 +#define CHANNELNAME_SIZE 12 +#define MESSAGE_SIZE 2048 /datum/computer_file/program/chatclient filename = "ntnrc_client" @@ -44,7 +47,7 @@ if("PRG_speak") if(!channel || isnull(active_channel)) return - var/message = reject_bad_text(params["message"]) + var/message = reject_bad_text(params["message"], MESSAGE_SIZE, TRUE) if(!message) return if(channel.password && (!(src in channel.active_clients) && !(src in channel.offline_clients))) @@ -76,7 +79,7 @@ active_channel = null return TRUE if("PRG_newchannel") - var/channel_title = reject_bad_text(params["new_channel_name"]) + var/channel_title = reject_bad_text(params["new_channel_name"], CHANNELNAME_SIZE, TRUE) if(!channel_title) return var/datum/ntnet_conversation/C = new /datum/ntnet_conversation() @@ -99,7 +102,7 @@ netadmin_mode = TRUE return TRUE if("PRG_changename") - var/newname = sanitize(params["new_name"]) + var/newname = reject_bad_text(params["new_name"], USERNAME_SIZE, TRUE) newname = replacetext(newname, " ", "_") if(!newname || newname == username) return @@ -135,7 +138,7 @@ if("PRG_renamechannel") if(!authed) return - var/newname = reject_bad_text(params["new_name"]) + var/newname = reject_bad_text(params["new_name"], CHANNELNAME_SIZE, TRUE) if(!newname || !channel) return channel.add_status_message("Channel renamed from [channel.title] to [newname] by operator.") @@ -267,3 +270,7 @@ data["messages"] = list() return data + +#undef USERNAME_SIZE +#undef CHANNELNAME_SIZE +#undef MESSAGE_SIZE diff --git a/config/entries/general.txt b/config/entries/general.txt index 248bd4695e..9b4452e41d 100644 --- a/config/entries/general.txt +++ b/config/entries/general.txt @@ -330,6 +330,7 @@ ROUNDSTART_RACES arachnid ROUNDSTART_RACES mammal_synthetic ROUNDSTART_RACES dullahan ROUNDSTART_RACES spectre_bot +ROUNDSTART_RACES vampire_roundstart ##------------------------------------------------------------------------------------------- diff --git a/modular_splurt/code/datums/elements/crawl_under.dm b/modular_splurt/code/datums/elements/crawl_under.dm index 10cbf4e4a9..8d6bb253b5 100644 --- a/modular_splurt/code/datums/elements/crawl_under.dm +++ b/modular_splurt/code/datums/elements/crawl_under.dm @@ -48,13 +48,18 @@ /datum/element/crawl_under/proc/do_crawl(obj/structure/source, mob/living/user) if(QDELETED(source) || QDELETED(user)) //sanity return - to_chat(user, span_notice("You start crawling under [source]..")) if(!do_after(user, 20, FALSE, source) || (user.mobility_flags & MOBILITY_STAND || user.incapacitated(TRUE, FALSE, TRUE))) to_chat(user, span_warning("You fail to crawl under [source]!")) return + user.pass_flags |= PASSCRAWL ADD_TRAIT(user, IGNORE_FAKE_Z_AXIS, ELEMENT_CRAWL_UNDER) + step(user, get_dir(user, source)) + if(!(source in user.loc)) + REMOVE_TRAIT(user, IGNORE_FAKE_Z_AXIS, ELEMENT_CRAWL_UNDER) + user.pass_flags &= ~PASSCRAWL + return ADD_TRAIT(user, TRAIT_FLOORED, ELEMENT_CRAWL_UNDER) user.layer = source.layer - 0.01 //just a lil under it user.pass_flags |= PASSCRAWL diff --git a/modular_splurt/code/game/object/structures/bathroom.dm b/modular_splurt/code/game/object/structures/bathroom.dm index f097999945..8ba710f406 100644 --- a/modular_splurt/code/game/object/structures/bathroom.dm +++ b/modular_splurt/code/game/object/structures/bathroom.dm @@ -39,13 +39,23 @@ /obj/structure/urinal/shit/screwdriver_act(mob/living/user, obj/item/I) return FALSE +/obj/structure/curtain + icon_state = "curtain_open" + /obj/structure/curtain/goliath name = "goliath curtain" desc = "Because tribals need privacy too." icon = 'modular_splurt/icons/obj/structures/bathroom.dmi' - icon_state = "goliath_curtain" + icon_state = "goliath_curtain_open" color = null //Default color, didn't bother hardcoding other colors, mappers can and should easily change it. alpha = 200 //Mappers can also just set this to 255 if they want curtains that can't be seen through <- No longer necessary unless you don't want to see through it no matter what. layer = SIGN_LAYER anchored = TRUE max_integrity = 125. + +/obj/structure/curtain/update_icon_state() + . = ..() + if(!open) + icon_state = replacetext(initial(icon_state), "open", "closed") + else + icon_state = initial(icon_state) diff --git a/modular_splurt/code/modules/cargo/packs/vending.dm b/modular_splurt/code/modules/cargo/packs/vending.dm new file mode 100644 index 0000000000..8426d5441d --- /dev/null +++ b/modular_splurt/code/modules/cargo/packs/vending.dm @@ -0,0 +1,2 @@ +/datum/supply_pack/vending/barkbox + contraband = FALSE //i'm not responsible for citcode diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/wings.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/wings.dm index 59e490a158..672582d515 100644 --- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/wings.dm +++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/wings.dm @@ -43,6 +43,25 @@ icon = 'modular_splurt/icons/mob/wings.dmi' upgrade_to = SPECIES_WINGS_ANGEL +//ripped from fulp +/datum/sprite_accessory/deco_wings/aspen + name = "Aspen" + icon_state = "aspen" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH + +/datum/sprite_accessory/deco_wings/dreamhead + name = "Dreamhead" + icon_state = "dreamhead" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH + +/datum/sprite_accessory/deco_wings/delirious + name = "Delirious" + icon_state = "delirious" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH + //insect wings /datum/sprite_accessory/insect_wings/beetle name = "Beetle (Hyper)" @@ -64,3 +83,20 @@ icon = 'modular_splurt/icons/mob/wings.dmi' upgrade_to = SPECIES_WINGS_INSECT +/datum/sprite_accessory/insect_wings/aspen + name = "Aspen" + icon_state = "aspen" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH + +/datum/sprite_accessory/insect_wings/dreamhead + name = "Dreamhead" + icon_state = "dreamhead" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH + +/datum/sprite_accessory/insect_wings/delirious + name = "Delirious" + icon_state = "delirious" + icon = 'modular_splurt/icons/mob/wings.dmi' + upgrade_to = SPECIES_WINGS_MOTH diff --git a/modular_splurt/code/modules/mob/living/carbon/human/examine.dm b/modular_splurt/code/modules/mob/living/carbon/human/examine.dm new file mode 100644 index 0000000000..c074ba059a --- /dev/null +++ b/modular_splurt/code/modules/mob/living/carbon/human/examine.dm @@ -0,0 +1,67 @@ +#define PAIRLESS_PANTIES list(\ + /obj/item/clothing/underwear/briefs/jockstrap,\ + /obj/item/clothing/underwear/briefs/panties/thong,\ + /obj/item/clothing/underwear/briefs/panties/thong/babydoll,\ + /obj/item/clothing/underwear/briefs/mankini\ +) + + +/mob/living/carbon/human/examine(mob/user) + . = ..() + if(!isliving(user)) + return + + var/mob/living/living = user + if((user != src) && !(living.mobility_flags & MOBILITY_STAND) && (mobility_flags & MOBILITY_STAND) && (src.loc == living.loc) && (istype(w_uniform, /obj/item/clothing))) + var/string = "Peeking under [src]'s [w_uniform], you can see " + var/obj/item/clothing/underwear/worn_underwear = src.w_underwear + if(worn_underwear) + string += "a " + if(!(worn_underwear.type in PAIRLESS_PANTIES)) //a pair of thong + string += "pair of " + if(worn_underwear.color) + string += "[worn_underwear.name]." + else + string += "[worn_underwear.name]." + + var/obj/item/organ/genital/penis/penis = getorganslot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/vagina/vagina = getorganslot(ORGAN_SLOT_VAGINA) + if(penis?.aroused_state) + string += span_love(" There's a visible bulge on it's front.") + else if(vagina?.aroused_state) + string += span_love(" They're wet with arousal.") + + else + string += "[p_theyre()] not wearing anything! - [p_their()] " + var/list/genitals = list() + for(var/obj/item/organ/genital/genital in internal_organs) + if(genital.genital_flags & (GENITAL_INTERNAL|GENITAL_HIDDEN)) + continue + + var/appended + if(genital.type == /obj/item/organ/genital/vagina) + if(genital.aroused_state) + appended += "wet " + if(lowertext(genital.shape) != "human") + appended += lowertext(genital.shape) + if(lowertext(genital.shape) != "cloaca") //their wet cloaca pussy + appended += " pussy" + + else if(genital.type == /obj/item/organ/genital/testicles) + appended += "nuts" + else if(genital.type == /obj/item/organ/genital/penis) + if(genital.aroused_state) + appended += "fully erect, " + if(lowertext(genital.shape) != "human") + appended += lowertext(genital.shape) + appended += " penis" + + if(appended) //I thought you'd know by now that nulls in lists aren't good + genitals += appended + + string += english_list(genitals, "featureless groin") + string += " on full display." + + . += span_purple(string) + +#undef PAIRLESS_PANTIES diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/vampire.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/vampire.dm new file mode 100644 index 0000000000..026adfc062 --- /dev/null +++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -0,0 +1,5 @@ +/datum/species/vampire/roundstart/check_roundstart_eligible() + . = ..() + if(id in (CONFIG_GET(keyed_list/roundstart_races))) + return TRUE + return FALSE diff --git a/modular_splurt/code/modules/shuttle/arrivals.dm b/modular_splurt/code/modules/shuttle/arrivals.dm new file mode 100644 index 0000000000..c8c393238d --- /dev/null +++ b/modular_splurt/code/modules/shuttle/arrivals.dm @@ -0,0 +1,2 @@ +/obj/docking_port/mobile/arrivals + movement_force = list("KNOCKDOWN" = 8, "THROW" = 2) diff --git a/modular_splurt/code/modules/shuttle/shuttle.dm b/modular_splurt/code/modules/shuttle/shuttle.dm new file mode 100644 index 0000000000..1cae0c2277 --- /dev/null +++ b/modular_splurt/code/modules/shuttle/shuttle.dm @@ -0,0 +1,2 @@ +/obj/docking_port/mobile + movement_force = list("KNOCKDOWN" = 8, "THROW" = 6) diff --git a/modular_splurt/icons/mob/wings.dmi b/modular_splurt/icons/mob/wings.dmi index 34a8044dd135107f82029661c14b3ee1feccf190..e81553e46237427b150fe9e8db36f2078bf5c5e3 100644 GIT binary patch literal 4108 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 Mn%bC@8Q~-U4L(!H>i_@% delta 1806 zcmY+Fc{JN;7sr1|L`Wy3ik2x!X$?~crAJkDP+KfTtznG4mX4(*Dz^Edi($03YHhW| zR)z{GE$T=uW3MH)sx)d34O&T!kYv(-X5ROo``mlZbI-Zo&;6d~Nyqj`oJqB}wLl@| zkpKXoEODj|000rDz=9Y|7~hxRe1!)t>x>Pk!|Hr3%pn8^TSvfXbv8g)bj3R138vR0 z{UU;I5`x3S0DxFjnbRndY=k!5Y;SmF6fPYaD)vmeIJL3!WD`{-LS^23k#Pi>sxUAy zBCQkNGHc(T=UQMmFwivwhQlZY4YS+W}tyvvZv?+ znK%J`&69t6SkMV=Na}omvz%8kD3?B<-XuRRSyi8%Cd(gDkNEaqe|vu~T=^LRsI!zFPXK z<9N+fC-^ZV_`9R#jvEp~uqIx|41z!_=W!ETtIZqu-HmSyS1VXf9_fIE>f#F`ZWFes z&iv%)w`i!}&GU2Mav-=RCpE`|VDKk0pi=pZiE-p*GT^~9h95xMt{RMm_qu?t--_7{b0c__9rwFz?N_oEYR;v>zl1S5Md z!K6F`IMwq(@_W@`9&2B28d1tnw3tEkY=H?0o>t^Klr#zQm31pVJ;99J-|^<)4s!5# z;Qylf=7huZpl;#c6g>D;SGh~&%(`om4Ols;=tH4fCb!qS!nJuh9yATjF5e^AF1icN zzJU27#~|5lizNUxsR8ZI4;AEsejZY7HzyBv@TOo?0}-y6rwMixq;w+_Q%)$&E`Q+H z#Lq$VZWx%72Re95s0!y^_oe7}=r<~RUlEFszrglSXOox2$Oqxk8<(&s?Sy7U<-FxB ze*YamzYVJJTJ+wGBv8jXmV1>y$`k+B!QVMK=Xx@x44-W961-RpMu+w=$94Lxhwp%0 zwsp8JEKp#jHrdj?M#f0ZW7I`+_z}T9ULUUVb6X-d?(enf={rKcYP<|~1{F;7oKnya zWd$1NoQFED@8%9t)4QTO=uWJlVl{4e!knZpIEk(_tuAB#Bi$7k_?r8T`~ zwkc`5=@Gu9)C3;EdrxU|{46gI?eEC<&;GcwXrE{!aPiVDW#S2`cGZRD7Y8_)jcV_- z>#B_+>t^NM`~95ote=`&kb5LTssS={h2aa=qC-3S9gL#Ea{$sic2I&e&1^6#2LC)R sq*~jOpjVI+0(K0Z0fk;(KKP93b+JFdyKWZ=zc9ek%+~bz74PJK0Lx8qwg3PC diff --git a/modular_splurt/icons/obj/structures/bathroom.dmi b/modular_splurt/icons/obj/structures/bathroom.dmi index 00979d942bdf23cfdfc76806a43a18d308aec1a3..1517473e63500cc8e17604e46f8ad17749d3365f 100644 GIT binary patch literal 4110 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 delta 1586 zcmV-22F>}7AhryU7k@wq0{{R3(&~ad0000&P)t-sz`(#XLRv{sMEd&r*Vosyw6u|t zk#25oFcmQW|Nnr1faK)lii(OrAOOE$0DwRMnKLty5&$g*03#zK4*~#wDk>*=ZA<_F z00DGTPE!Ct=GbNc005JER9JLGWpiV4X>fFDZ*Bkpc$`yKaDQ@j_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sW>CEB)+sLGcPemiHkEO zv#1!Pm5Vd2C^0t`#5P2zP0!ECOf1QWPcAJgNzBZP&o4;LLufK2PE&GDesO9FE^W#R zu6{0Hj{pEfHh(`*ssF%x000F8NklDm&wusl&&?*%La+05~35v>I#E3@s`$<)E3o0$8EF2Mhee0;jayS%Er^HU?vP zF&S84LM!M~05CIPhG?1JeJ{u(dF!HX450N;%KMir8pzAOe&-mJX?p17V}Eo3LwVKL z+uZ}@QMrVJpghvheOH4f^2SBSet1&=WT~K82Y+LE0{{!W@po|-w0I8A68yWdU@UI{ z9t}83fU`Sl@G!%@2N=mKfVUnh5g5HaT>uIo|CG0Vz))TRc8mI*xh+_EhWoA#uTeqe z0H%iTQ>k>9dk}?q8UGvmy>bEY;Bj#Iqw{fe;GKDU;VbOdXk70uGjH1`Q7i? z1;&gzpCRIX#v1-}aa}_Jekc6?9pQ!# zULStY7q(F|=(-+f^P6g`92i0VflnmZXZb9kA6-Q5$)EH92Q3lZgWicWkj@xLFfVKW z2>=4v;|l^#Y62H0B~YU4OocE{*RH>gYFDC zF&>wT;O&J7y~!;${40aWzcaKQ$L;m?AA5t1cn`5z@c;k-07*qoM6N<$f+!8b0ssI2 diff --git a/tgstation.dme b/tgstation.dme index 5070f93b3c..166f118407 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4390,6 +4390,7 @@ #include "modular_splurt\code\modules\cargo\packs\goodies.dm" #include "modular_splurt\code\modules\cargo\packs\misc.dm" #include "modular_splurt\code\modules\cargo\packs\science.dm" +#include "modular_splurt\code\modules\cargo\packs\vending.dm" #include "modular_splurt\code\modules\cargo\sweatshop\metal.dm" #include "modular_splurt\code\modules\cargo\sweatshop\sweatshop.dm" #include "modular_splurt\code\modules\cargo\sweatshop\wooden.dm" @@ -4495,6 +4496,7 @@ #include "modular_splurt\code\modules\mob\living\living_movement.dm" #include "modular_splurt\code\modules\mob\living\living_signals.dm" #include "modular_splurt\code\modules\mob\living\carbon\carbon.dm" +#include "modular_splurt\code\modules\mob\living\carbon\human\examine.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\human.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\human_defines.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\species.dm" @@ -4502,6 +4504,7 @@ #include "modular_splurt\code\modules\mob\living\carbon\human\simple_animal\hostile\deathclaw\funclaw.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\species_types\ashwalker.dm" #include "modular_splurt\code\modules\mob\living\carbon\human\species_types\spectrebot.dm" +#include "modular_splurt\code\modules\mob\living\carbon\human\species_types\vampire.dm" #include "modular_splurt\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" #include "modular_splurt\code\modules\mob\living\silicon\robot\robot.dm" #include "modular_splurt\code\modules\mob\living\silicon\robot\robot_modules.dm" @@ -4560,6 +4563,8 @@ #include "modular_splurt\code\modules\resize\smallsprite_action.dm" #include "modular_splurt\code\modules\ruins\objects_and_mobs\ash_walker_den.dm" #include "modular_splurt\code\modules\ruins\spaceruin_code\hilbertshotel.dm" +#include "modular_splurt\code\modules\shuttle\arrivals.dm" +#include "modular_splurt\code\modules\shuttle\shuttle.dm" #include "modular_splurt\code\modules\shuttle\slaver.dm" #include "modular_splurt\code\modules\smithing\anvil.dm" #include "modular_splurt\code\modules\smithing\finished_items.dm" diff --git a/tgui/packages/tgui/interfaces/NtosNetChat.js b/tgui/packages/tgui/interfaces/NtosNetChat.js index 56def6773f..9a573a44ad 100644 --- a/tgui/packages/tgui/interfaces/NtosNetChat.js +++ b/tgui/packages/tgui/interfaces/NtosNetChat.js @@ -1,7 +1,6 @@ import { useBackend } from '../backend'; -import { Box, Button, Dimmer, Icon, Input, Section, Stack, Table, Tooltip } from '../components'; +import { Box, Button, Dimmer, Icon, Input, Section, Stack } from '../components'; import { NtosWindow } from '../layouts'; -import { StackingConsole } from './StackingConsole'; // byond defines for the program state const CLIENT_ONLINE = 2; @@ -101,7 +100,7 @@ export const NtosNetChat = (props, context) => { const this_client = clients.find(client => client.ref === selfref); return ( @@ -152,7 +151,7 @@ export const NtosNetChat = (props, context) => { - +
@@ -205,7 +204,7 @@ export const NtosNetChat = (props, context) => { {!!in_channel && ( <> - +
@@ -222,10 +221,10 @@ export const NtosNetChat = (props, context) => { <>