diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm index 955f24400c..db01eec296 100644 --- a/code/modules/ext_scripts/irc.dm +++ b/code/modules/ext_scripts/irc.dm @@ -1,20 +1,19 @@ /proc/send2irc(var/channel, var/msg) - if(config.use_irc_bot && config.irc_bot_host) - for(var/IP in config.irc_bot_host) - spawn(0) - log_debug("send2irc: Sending [msg] to [channel]") - paranoid_sanitize(msg) - ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [dbcon.Quote(msg)]") + if(config.use_irc_bot) + log_debug("send2irc: Sending [msg] to [channel]") + paranoid_sanitize(msg) + ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [dbcon.Quote(msg)]") return /proc/send2mainirc(var/msg) if(config.main_irc) + log_debug("send2mainirc: Sending [msg] to send2irc") send2irc(config.main_irc, msg) return /proc/send2adminirc(var/msg) var/queuedmsg = "ADMIN - [msg]" - + log_debug("send2adminirc: Sending [queuedmsg] to send2irc") send2irc(config.admin_irc, queuedmsg) return diff --git a/code/modules/ext_scripts/python.dm b/code/modules/ext_scripts/python.dm index bdb25d6900..69384a0cfe 100644 --- a/code/modules/ext_scripts/python.dm +++ b/code/modules/ext_scripts/python.dm @@ -18,10 +18,10 @@ /proc/ext_python(var/script, var/args, var/scriptsprefix = 1) if(scriptsprefix) script = "scripts/" + script - if(world.system_type == MS_WINDOWS) script = replacetext(script, "/", "\\") var/command = config.python_path + " " + script + " " + args + log_debug("ext_python: Sending [command] to shell") shell("[command]") return diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 994f0fd9d1..3e6592fd6e 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -650,7 +650,7 @@ var/list/choices = list() for(var/mob/living/carbon/human/M in oviewers(1)) choices += M - + if(!choices.len) to_chat(src,"There's nobody nearby to use this on.") @@ -698,7 +698,7 @@ if(can_shred(T) != T) to_chat(src,"Looks like you lost your chance...") return - + //Removing an internal organ if(T_int && T_int.damage >= 25) //Internal organ and it's been severely damaged T.apply_damage(15, BRUTE, T_ext) //Damage the external organ they're going through. @@ -713,7 +713,7 @@ //Removing an external organ else if(!T_int && (T_ext.damage >= 25 || T_ext.brute_dam >= 25)) T_ext.droplimb(1,DROPLIMB_EDGE) //Clean cut so it doesn't kill the prey completely. - + //Is it groin/chest? You can't remove those. if(T_ext.cannot_amputate) T.apply_damage(25, BRUTE, T_ext) @@ -726,12 +726,12 @@ visible_message("[src] tears off [T]'s [T_ext.name]!","You tear off [T]'s [T_ext.name]!") //Not targeting an internal organ w/ > 25 damage , and the limb doesn't have < 25 damage. - else + else if(T_int) T_int.damage = 25 //Internal organs can only take damage, not brute damage. T.apply_damage(25, BRUTE, T_ext) visible_message("[src] severely damages [T]'s [T_ext.name]!") - + add_attack_logs(src,T,"Shredded (hardvore)") /mob/living/proc/flying_toggle() @@ -839,20 +839,20 @@ if(choice == "Aphrodisiac") src.show_message("You sink your fangs into [T] and inject your aphrodisiac!") src.visible_message("[src] sinks their fangs into [T]!") - T.bloodstr.add_reagent("succubi_aphrodisiac",200) + T.bloodstr.add_reagent("succubi_aphrodisiac",100) return 0 else if(choice == "Numbing") src.show_message("You sink your fangs into [T] and inject your poison!") src.visible_message("[src] sinks their fangs into [T]!") - T.bloodstr.add_reagent("numbing_enzyme",50) //Poisons should work when more units are injected + T.bloodstr.add_reagent("numbing_enzyme",20) //Poisons should work when more units are injected else if(choice == "Paralyzing") src.show_message("You sink your fangs into [T] and inject your poison!") src.visible_message("[src] sinks their fangs into [T]!") - T.bloodstr.add_reagent("succubi_paralize",50) //Poisons should work when more units are injected + T.bloodstr.add_reagent("succubi_paralize",20) //Poisons should work when more units are injected else return //Should never happen -/* +/* //will maybe add something one day mob/living/carbon/proc/charmed() //TODO charmed = 1 @@ -867,6 +867,7 @@ mob/living/carbon/proc/charmed() //TODO name = "Aphrodisiac" id = "succubi_aphrodisiac" description = "A unknown liquid, it smells sweet" + metabolism = REM * 0.8 color = "#8A0829" scannable = 0 @@ -875,62 +876,42 @@ mob/living/carbon/proc/charmed() //TODO M.show_message("You feel funny, and fall in love with the person in front of you") M.emote(pick("blush", "moans", "giggles", "turns visibly red")) //M.charmed() //TODO - return + return /datum/reagent/succubi_numbing //Using numbing_enzyme instead. name = "Numbing Fluid" id = "succubi_numbing" description = "A unknown liquid, it doesn't smell" + metabolism = REM * 0.5 color = "#41029B" scannable = 0 /datum/reagent/succubi_numbing/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + + var/effective_dose = dose + var/threshold = 1 + + if(effective_dose < 1.5 * threshold) + M.eye_blurry = max(M.eye_blurry, 10) + else if(effective_dose < 5 * threshold) + M.Weaken(2) + M.drowsyness = max(M.drowsyness, 20) if(prob(7)) M.show_message("You start to feel weakened, your body seems heavy.") - M.eye_blurry = max(M.eye_blurry, 10) - return + return /datum/reagent/succubi_paralize name = "Paralyzing Fluid" id = "succubi_numbing" description = "A unknown liquid, it doesn't smell" + metabolism= REM * 0.5 color = "#41029B" scannable = 0 -/datum/reagent/succubi_paralize/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/datum/reagent/succubi_paralize/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //will first keep it like that. lets see what it changes. if nothing, than I will rework the effect again + if(prob(7)) - M.show_message("You lose sensation of your body.") M.Weaken(20) - return - -/mob/living/carbon/human/proc/face_sit() - set name = "Face Sit" - set desc = "Sit on your Prey's Face" - set category = "Abilities" - - if(last_special > world.time) - return - - if(!ishuman(src)) - return //If you're not a human you don't have permission to do this. - - var/mob/living/carbon/human/C = src - - var/obj/item/weapon/grab/G = src.get_active_hand() - - if(!istype(G)) - to_chat(C, "You must be grabbing a creature in your active hand to sit on them.") - return - - var/mob/living/carbon/human/T = G.affecting - - if(!istype(T) || T.isSynthetic()) - to_chat(src, "\The [T] is not able to be sit on.") - return - - if(G.state != GRAB_AGGRESSIVE) - to_chat(C, "You must have the creature pinned on the ground to sit on them ") - return - - src.visible_message("[src] moves their ass to [T]'s head, sitting down on them, making them unable to see anything else than [src]'s butt ") - return + M.eye_blurry = max(M.eye_blurry, 10) + M.show_message("You lose sensation of your body.") + return diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 4ed17886be..8a364ca139 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -114,15 +114,6 @@ H.verbs |= /mob/living/proc/glow_toggle H.verbs |= /mob/living/proc/glow_color -/datum/trait/face_sit - name = "Face_Sitting" - desc = "Makes you able to sit on your prey" - cost = 0 - -/datum/trait/face_sit/apply(var/datum/species/S,var/mob/living/carbon/human/H) - ..(S,H) - H.verbs |= /mob/living/carbon/human/proc/face_sit - /datum/trait/succubus_bite name = "Succubus Bite" desc = "Makes you able to bite prey in your grasp and subject them to a variety of chemicals.." diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 58c530d06c..af4014ec27 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -144,6 +144,7 @@ else affecting.Weaken(2) + if(state >= GRAB_NECK) affecting.Stun(3) if(isliving(affecting)) @@ -173,6 +174,15 @@ assailant.visible_message("[assailant] covers [affecting]'s eyes!") if(affecting.eye_blind < 3) affecting.Blind(3) + if(BP_HEAD) + if(force_down) + if(announce) + assailant.visible_message("[assailant] moves their ass to [target]'s head, sitting down on them, making them unable to see anything else than [assailant]'s butt!") + if(target.silent < 3) + target.silent = 3 + if(target.eye_blind < 3) + target.Blind(3) + /obj/item/weapon/grab/attack_self() return s_click(hud) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_chomp.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_chomp.dm new file mode 100644 index 0000000000..b9099a30d7 --- /dev/null +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_chomp.dm @@ -0,0 +1,50 @@ +/// Recipes + +/datum/chemical_reaction/aphrodisiac + name = "aphrodisiac" + id = "aphrodisiac" + result = "aphrodisiac" + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + result_amount = 6 + +/datum/reagent/aphrodisiac + name = "aphrodisiac" + id = "aphrodisiac" + description = "You so horny." + taste_description = "sweetness" + reagent_state = LIQUID + color = "#FF9999" + scannable = 1 + +/datum/reagent/aphrodisiac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(!M) return + + if(prob(3)) + M.emote(pick("blush", "moan", "moan", "giggle")) + + // Unsure if we want to allow cumming. I'm gonna disable it for now. +/* + if(prob(1)) + switch(M.gender) + if(MALE) + M.emote("mcum") + if(FEMALE) + M.emote("fcum") + if(PLURAL) + if(prob(50)) + M.emote("mcum") + else + M.emote("fcum") +*/ +// Disabled cause I'm unsure if we want to do this or not. +/* +/mob/living/proc/cum() + if(!check_has_mouth()) + return + src.visible_message("[src] throws up!","You throw up!") + + var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs + if(istype(T)) + T.add_vomit_floor(src, 1) +*/ + diff --git a/config/custom_items.txt b/config/custom_items.txt index bc52ab5d3c..fa341714f4 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -208,6 +208,12 @@ item_path: /obj/item/weapon/storage/box/fluff/drake # ######## E CKEYS +{ +ckey: erik_the_dog +character_name: Erik +item_path: /obj/item/clothing/accessory/medal/gold/heroism +} + # Permit Expired #{ #ckey: eekasqueak diff --git a/html/changelog.html b/html/changelog.html index 1b54f6e327..574b22699b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,25 +53,37 @@ -->
Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.