diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 18fc2178ee0..cd0a475d38f 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -276,8 +276,9 @@ for(var/x in GLOB.confessors) shit += "[x]" // REDMOON ADD START - // family_changes - вывод статистики в конце раунда о количестве семей - shit += "
Rockhill had [SSfamily.families.len] families." // делится на 2, т.к. по 1 зачислятеся за каждое новое отношение + // вывод статистики в конце раунда о количестве семей и осквернённых Баотой + shit += "
Families were in Rockhill: [SSfamily.families.len]" // family_changes + shit += "
Corrputed by Baotha: [SSticker.violated_by_baotha.len]" // baotha_steals_triumphs // start_reports_with_gender_lists - вывод статистики в конце раунда о половой принадлежности var/count_of_joined_characters = males + females + males_with_vagina + females_with_penis var/percent_of_males = PERCENT(males/count_of_joined_characters) diff --git a/code/datums/sexcon/sex_actions/force/force_blowjob.dm b/code/datums/sexcon/sex_actions/force/force_blowjob.dm index 3abf0bfa120..056020ae9e4 100644 --- a/code/datums/sexcon/sex_actions/force/force_blowjob.dm +++ b/code/datums/sexcon/sex_actions/force/force_blowjob.dm @@ -49,7 +49,7 @@ user.visible_message(span_lovebold("[user] кончает в горло [target]!")) else user.visible_message(span_lovebold("[user] cums into [target]'s throat!")) - user.sexcon.cum_into() + user.sexcon.cum_into(oral = TRUE) // REDMOON EDIT - добавлены корректные параметры user.sexcon.perform_sex_action(target, 0, 7, FALSE) if(!user.sexcon.considered_limp()) diff --git a/code/datums/sexcon/sex_actions/oral/blowjob.dm b/code/datums/sexcon/sex_actions/oral/blowjob.dm index 958f6f97a18..bf29f6987f3 100644 --- a/code/datums/sexcon/sex_actions/oral/blowjob.dm +++ b/code/datums/sexcon/sex_actions/oral/blowjob.dm @@ -67,7 +67,7 @@ target.visible_message(span_lovebold("[target] кончает в рот [user]!")) else target.visible_message(span_lovebold("[target] cums into [user]'s mouth!")) - target.sexcon.cum_into() + target.sexcon.cum_into(oral = TRUE, target_mob = user) // REDMOON EDIT - baotha_steals_triumphs - добавлены параметры, для правильного просчёта кого корраптят /datum/sex_action/blowjob/on_finish(mob/living/carbon/human/user, mob/living/carbon/human/target) ..() diff --git a/code/datums/sexcon/sex_actions/oral/cunnilingus.dm b/code/datums/sexcon/sex_actions/oral/cunnilingus.dm index ec261a51726..0d0ac673360 100644 --- a/code/datums/sexcon/sex_actions/oral/cunnilingus.dm +++ b/code/datums/sexcon/sex_actions/oral/cunnilingus.dm @@ -57,7 +57,7 @@ target.visible_message(span_lovebold("[target] пускает сквирт в рот [user]!")) else target.visible_message(span_lovebold("[target] ejaculates into [user]'s mouth!")) - target.sexcon.cum_into() + target.sexcon.cum_into(oral = TRUE, target_mob = user) // REDMOON EDIT - baotha_steals_triumphs - добавлены параметры, для правильного просчёта кого корраптят /datum/sex_action/cunnilingus/on_finish(mob/living/carbon/human/user, mob/living/carbon/human/target) ..() diff --git a/code/datums/sexcon/sex_actions/sex/anal_ride_sex.dm b/code/datums/sexcon/sex_actions/sex/anal_ride_sex.dm index 46cb4c066d6..e7f70db5693 100644 --- a/code/datums/sexcon/sex_actions/sex/anal_ride_sex.dm +++ b/code/datums/sexcon/sex_actions/sex/anal_ride_sex.dm @@ -65,7 +65,7 @@ target.visible_message(span_lovebold("[target] кончает в задницу [user]!")) else target.visible_message(span_lovebold("[target] cums into [user]'s butt!")) - target.sexcon.cum_into() + target.sexcon.cum_into(target_mob = user) // REDMOON EDIT - baotha_steals_triumphs - добавлены параметры, для правильного просчёта кого корраптят target.virginity = FALSE /datum/sex_action/anal_ride_sex/on_finish(mob/living/carbon/human/user, mob/living/carbon/human/target) diff --git a/code/datums/sexcon/sex_actions/sex/throat_sex.dm b/code/datums/sexcon/sex_actions/sex/throat_sex.dm index b8263759510..358e56c260b 100644 --- a/code/datums/sexcon/sex_actions/sex/throat_sex.dm +++ b/code/datums/sexcon/sex_actions/sex/throat_sex.dm @@ -45,7 +45,7 @@ user.visible_message(span_lovebold("[user] кончает в глотку [target]!")) else user.visible_message(span_lovebold("[user] cums into [target]'s throat!")) - user.sexcon.cum_into() + user.sexcon.cum_into(oral = TRUE) // REDMOON EDIT - корректная проверка user.virginity = FALSE if(user.sexcon.considered_limp()) diff --git a/code/datums/sexcon/sex_actions/sex/vaginal_ride_sex.dm b/code/datums/sexcon/sex_actions/sex/vaginal_ride_sex.dm index 9e3aaae5f35..be221307af7 100644 --- a/code/datums/sexcon/sex_actions/sex/vaginal_ride_sex.dm +++ b/code/datums/sexcon/sex_actions/sex/vaginal_ride_sex.dm @@ -70,7 +70,7 @@ target.visible_message(span_lovebold("[target] кончает в вагину [user]!")) else target.visible_message(span_lovebold("[target] cums into [user]'s cunt!")) - target.sexcon.cum_into() + target.sexcon.cum_into(target_mob = user) // REDMOON EDIT - baotha_steals_triumphs - добавлены параметры, для правильного просчёта кого корраптят target.try_impregnate(user) target.virginity = FALSE user.virginity = FALSE diff --git a/code/datums/sexcon/sexcon.dm b/code/datums/sexcon/sexcon.dm index 19f8e1a1584..e76a7e6009b 100644 --- a/code/datums/sexcon/sexcon.dm +++ b/code/datums/sexcon/sexcon.dm @@ -193,12 +193,18 @@ add_cum_floor(get_turf(target)) after_ejaculation() -/datum/sex_controller/proc/cum_into(oral = FALSE) +/datum/sex_controller/proc/cum_into(oral = FALSE, mob/living/target_mob = null) // REDMOON EDIT - baotha_steals_triumphs - добавлен target_mob для правильного просчёта, кого корраптят + if(target_mob) // REDMOON ADD - baotha_steals_triumphs - для правильного просчёта, кого корраптят + target = target_mob // REDMOON ADD log_combat(user, target, "Came inside the target") if(oral) playsound(target, pick(list('sound/misc/mat/mouthend (1).ogg','sound/misc/mat/mouthend (2).ogg')), 100, FALSE, ignore_walls = FALSE) else playsound(target, 'sound/misc/mat/endin.ogg', 50, TRUE, ignore_walls = FALSE) + if(user.patron.type == /datum/patron/inhumen/baotha) // REDMOON ADD START - baotha_steals_triumphs + baotha_process(user, target) // Баотит даёт + else + baotha_process(target, user) // REDMOON ADD END - баотит принимает after_ejaculation() if(!oral) after_intimate_climax() @@ -220,7 +226,12 @@ /datum/sex_controller/proc/after_ejaculation() user.add_stress(/datum/stressevent/cumok) set_arousal(40) - adjust_charge(-CHARGE_FOR_CLIMAX) + if(user.patron) // REDMOON ADD START - Эора и Баота позволяют своему юзверю быть очень выносливым + if(user.patron.type != /datum/patron/inhumen/baotha || user.patron.type != /datum/patron/divine/eora) + if(prob(10)) + to_chat(user, span_love((user.client.prefs.be_russian ? "Мой бог... Даёт мне сил продолжать! Славься!" : "My god... Grants me power to continue! Praise!"))) + else // REDMOON ADD END + adjust_charge(-CHARGE_FOR_CLIMAX) user.emote("sexmoanhvy", forced = TRUE) user.playsound_local(user, 'sound/misc/mat/end.ogg', 100) last_ejaculation_time = world.time @@ -244,13 +255,13 @@ if(HAS_TRAIT(target, TRAIT_GOODLOVER)) if(!user.mob_timers["cumtri"]) user.mob_timers["cumtri"] = world.time - user.adjust_triumphs(1) +// user.adjust_triumphs(1) to_chat(user, span_love("Our loving is a true TRIUMPH!")) user.add_stress(/datum/stressevent/cumgood) if(HAS_TRAIT(user, TRAIT_GOODLOVER)) if(!target.mob_timers["cumtri"]) target.mob_timers["cumtri"] = world.time - target.adjust_triumphs(1) +// target.adjust_triumphs(1) to_chat(target, span_love("Our loving is a true TRIUMPH!")) user.add_stress(/datum/stressevent/cumgood) @@ -598,6 +609,7 @@ desire_stop = FALSE user.doing = FALSE current_action = null + actions_made = 0 // REDMOON ADD - baotha_steals_triumphs /datum/sex_controller/proc/try_start_action(action_type) if(action_type == current_action) @@ -642,6 +654,9 @@ if(desire_stop) break action.on_perform(user, target) + actions_made++ // REDMOON ADD - baotha_steals_triumphs + if(target.sexcon) // REDMOON ADD - baotha_steals_triumphs + target.sexcon.actions_made++ // REDMOON ADD - baotha_steals_triumphs // It could want to finish afterwards the performed action if(action.is_finished(user, target)) break diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index b1e213e9ace..d206e62a672 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -363,7 +363,8 @@ h1.alert, h2.alert {color: #c9c1ba;font-family: Pterra, TrueType;} .greenannounce {color: #059223; font-weight: bold;} .rose {color: #e7bed8;} .love {color: #e7bed8; font-size: 75%;} -.info {color: #a9a5b6; font-size: 75%; line-height:1} +.lovebold {color: #e7bed8; font-weight: bold;} +.info {color: #a9a5b6; font-size: 75%; line-height:1} .biginfo {color: #a9a5b6;} .notice {color: #f1d669;} .boldnotice {color: #f1d669; font-weight: bold;} @@ -430,7 +431,9 @@ h1.alert, h2.alert {color: #c9c1ba;font-family: Pterra, TrueType;} .orc {font-family: "Thief by The Riddler", Pterra;} .beast {font-family: "Thief by The Riddler", Pterra;} .reptile {font-family: "Kingthings Petrock", Pterra; font-size: 120%;} +.faexin {font-family: "Sweet Dreams", Pterra;} .lupian {font-family: "Emperialisme", Pterra; font-size: 120%;} +.felid {font-family: "a Awal Ramadhan", Pterra; font-size: 120%;} .torture {color: #42ff20} diff --git a/modular_redmoon/code/datums/gods/patrons/inhumen_pantheon.dm b/modular_redmoon/code/datums/gods/patrons/inhumen_pantheon.dm index baa59f327dd..86dc1dfb334 100644 --- a/modular_redmoon/code/datums/gods/patrons/inhumen_pantheon.dm +++ b/modular_redmoon/code/datums/gods/patrons/inhumen_pantheon.dm @@ -30,4 +30,4 @@ "ЖИВИ, СМЕЙСЯ, ЛЮБИ!", "БАОТА - МОЯ РАДОСТЬ!", ) - mob_traits = list(TRAIT_GOODLOVER, TRAIT_CRACKHEAD) + mob_traits = list(TRAIT_CRACKHEAD) diff --git a/modular_redmoon/code/modules/tgs/roundspoke.dm b/modular_redmoon/code/modules/tgs/roundspoke.dm index 55307ee1ba7..14cdbe9a3a4 100644 --- a/modular_redmoon/code/modules/tgs/roundspoke.dm +++ b/modular_redmoon/code/modules/tgs/roundspoke.dm @@ -152,14 +152,15 @@ var/datum/tgs_chat_embed/field/triumphgained = new ("🏆Триумфов получено: ", "[SSticker.tri_gained]") var/datum/tgs_chat_embed/field/triumphslost = new (":woman_detective:Триумфов украдено: ","[SSticker.tri_lost*-1]") var/datum/tgs_chat_embed/field/pleasures = new ("💦Наслаждений: ", "[SSticker.cums]") + var/datum/tgs_chat_embed/field/violated_by_baotha = new (":smiling_imp:Осквернено Баотой: ", "[SSticker.violated_by_baotha.len]") // baotha_steals_triumphs var/datum/tgs_chat_embed/field/confessors = new (":orthodox_cross:Исповедники: ", "[GLOB.confessors.len]") - var/datum/tgs_chat_embed/field/families = new (":ring:Семьи: ", "[SSfamily.families.len]") + var/datum/tgs_chat_embed/field/families = new (":ring:Семьи: ", "[SSfamily.families.len]") // family_changes var/datum/tgs_chat_embed/field/boys = new (":man_beard:Мужчины: ", "[SSticker.males] ([percent_of_males]%)") var/datum/tgs_chat_embed/field/womens = new (":woman:Женщины: ", "[SSticker.females] ([percent_of_females]%)") var/datum/tgs_chat_embed/field/femboys = new (":man:Кантбои: ", "[SSticker.males_with_vagina] ([percent_of_males_with_vagina]%)") var/datum/tgs_chat_embed/field/futacocks = new (":woman_beard:Фута: ", "[SSticker.females_with_penis] ([percent_of_females_with_penis]%)") - embed.fields = list(deaths, bloodspilled, triumphgained, triumphslost, pleasures, confessors, families, players, boys, womens, femboys, futacocks) + embed.fields = list(deaths, bloodspilled, triumphgained, triumphslost, pleasures, violated_by_baotha, confessors, families, players, boys, womens, femboys, futacocks) send2chat(message, "status") diff --git a/modular_redmoon/modules/baotha_steals_triumphs/baotha_steals_triumphs.dm b/modular_redmoon/modules/baotha_steals_triumphs/baotha_steals_triumphs.dm new file mode 100644 index 00000000000..159b9520184 --- /dev/null +++ b/modular_redmoon/modules/baotha_steals_triumphs/baotha_steals_triumphs.dm @@ -0,0 +1,62 @@ +// Искать связанный код по тэгу "baotha_steals_triumphs" + +/datum/sex_controller + /// Количество совершенных действий. Нужно, чтобы баотиты за секунду не воровали чужие триумфы. + var/actions_made = 0 + +/datum/controller/subsystem/ticker + var/list/violated_by_baotha = list() + +/datum/sex_controller/proc/baotha_invitation(var/mob/living/baotha_cultist, var/mob/living/victim) + if(victim.real_name in SSticker.violated_by_baotha) + return FALSE + SSticker.violated_by_baotha += victim.real_name + baotha_cultist.adjust_triumphs(1) + victim.adjust_triumphs(-1) + to_chat(victim, victim.client.prefs.be_russian ? span_userdanger("Я чувствую, как мою душу оскверняют!") : span_userdanger("I feel how my soul is being corrupted by them!")) + var/question = alert(victim, "Give up and praise Baotha?...", "Give up to the pleasure!", "No!", "Yes!") + if(question != "Yes!") + to_chat(baotha_cultist, baotha_cultist.client.prefs.be_russian ? span_userdanger("Моя игрушка решила держаться за своего недо-бога до конца... Какая жалость, что от меня это не спасает!") : span_danger("My toy decided to hold on their god to the end... How pitty that is will not save them from me!")) + to_chat(victim, victim.client.prefs.be_russian ? span_userdanger("МОЯ ВЕРА - МОЙ ЩИТ! И ДУХ МОЙ СИЛЁН!") : span_userdanger("MY FAITH IS MY SHIELD! AND SPIRIT IS STRONG!")) + return FALSE + to_chat(victim, victim.client.prefs.be_russian ? span_userdanger("Я предаю своего Бога... Я ничтожество. В любом случае, прими меня, Баота!") : span_userdanger("I turned on my God... I am a weakling. Anyway, take me, Baotha!")) + victim.set_patron(/datum/patron/inhumen/baotha) + victim.whisper("Славься, Баота...!") + +/datum/sex_controller/proc/baotha_process(var/mob/living/baotha_cultist, var/mob/living/victim) + if(baotha_cultist == victim) + return FALSE + if(baotha_cultist.patron.type != /datum/patron/inhumen/baotha) + return FALSE + if(victim.patron.type == /datum/patron/inhumen/baotha) + return FALSE + if(actions_made < 12) + to_chat(baotha_cultist, baotha_cultist.client.prefs.be_russian ? span_warning("Мне нужно получить больше удовольствия, чтобы осквернить!") : span_warning("I need to get more pleasure from them to corrupt!")) + return FALSE + var/amount_to_change_nutrition = min(50, NUTRITION_LEVEL_FULL - baotha_cultist.nutrition) + var/amount_to_change_hydration = min(50, HYDRATION_LEVEL_FULL - baotha_cultist.nutrition) + if(victim.real_name in SSticker.violated_by_baotha) + target.adjust_nutrition(-amount_to_change_nutrition) + target.adjust_hydration(-amount_to_change_hydration) + baotha_cultist.adjust_nutrition(amount_to_change_nutrition) + baotha_cultist.adjust_hydration(amount_to_change_hydration) + else // В первый раз, это особенно больно + amount_to_change_nutrition = min(400, NUTRITION_LEVEL_FULL - baotha_cultist.nutrition) + amount_to_change_hydration = min(400, HYDRATION_LEVEL_FULL - baotha_cultist.nutrition) + target.adjust_nutrition(-amount_to_change_nutrition) + target.adjust_hydration(-amount_to_change_hydration) + baotha_cultist.adjust_nutrition(amount_to_change_nutrition) + baotha_cultist.adjust_hydration(amount_to_change_hydration) + spawn(0) + baotha_invitation(baotha_cultist, victim) + var/list/baotha_taunts = list( + "Weakling... Your body will be a pleasurable toy!", + "I guess it will corrupt them enought... Praise, Baotha!", + "[victim.gender == MALE ? "His" : "Her"] spirit shall fall... Just like their false-teachings!") + var/list/baotha_taunts_ru = list( + "Ничтожество... Твоё тело будет хорошей игрушкой!", + "Надеюсь, это достаточно осквернит [victim.gender == MALE ? "его" : "её"] душу... Славься, Баота!", + "Силы наполняют меня, пока моя жертва ослабевает... Славься, Баота!", + "[victim.gender == MALE ? "Его" : "Её"] дух падёт... Как и [victim.gender == MALE ? "его" : "её"] лжеучения!") + to_chat(baotha_cultist, baotha_cultist.client.prefs.be_russian ? span_lovebold(pick(baotha_taunts_ru)) : span_lovebold(pick((baotha_taunts)))) + to_chat(victim, victim.client.prefs.be_russian ? span_danger("ИЗ МЕНЯ ВЫСАСЫВАЮТ ЖИЗНЕННЫЕ СИЛЫ! НЕТ!!") : span_danger("MY LIFEFORCE IS BEING PULLED AWAY! PLEASE, NO!!")) diff --git a/roguetown.dme b/roguetown.dme index 58134b103fa..8dc2ce7a7b5 100644 --- a/roguetown.dme +++ b/roguetown.dme @@ -2164,6 +2164,7 @@ #include "modular_redmoon\code\modules\surgery\organs\feature_organs\tails.dm" #include "modular_redmoon\code\modules\tgs\roundspoke.dm" #include "modular_redmoon\modules\acolytes_can_coronate\acolytes_can_coronate.dm" +#include "modular_redmoon\modules\baotha_steals_triumphs\baotha_steals_triumphs.dm" #include "modular_redmoon\modules\client\preferences.dm" #include "modular_redmoon\modules\client\preferences_savefile.dm" #include "modular_redmoon\modules\cloak_hoods_fix\cloak_hoods_fix.dm"