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"