Skip to content

Commit

Permalink
Merge branch 'master' into minemoment
Browse files Browse the repository at this point in the history
  • Loading branch information
Hardly3D committed Aug 22, 2024
2 parents 63594e6 + bfc3f29 commit 637668b
Show file tree
Hide file tree
Showing 20 changed files with 103 additions and 54 deletions.
92 changes: 52 additions & 40 deletions code/datums/martial/wrestling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,85 +18,97 @@ If you make a derivative work from this code, you must include this notification
/datum/martial_art/wrestling
name = "Wrestling"
id = MARTIALART_WRESTLING
var/datum/action/slam/slam = new/datum/action/slam()
var/datum/action/throw_wrassle/throw_wrassle = new/datum/action/throw_wrassle()
var/datum/action/kick/kick = new/datum/action/kick()
var/datum/action/strike/strike = new/datum/action/strike()
var/datum/action/drop/drop = new/datum/action/drop()
// Monkestation Edit: Changes datum names to be less confusing
var/datum/action/wrestle_slam/wrestle_slam = new/datum/action/wrestle_slam()
var/datum/action/wrestle_throw/wrestle_throw = new/datum/action/wrestle_throw()
var/datum/action/wrestle_kick/wrestle_kick = new/datum/action/wrestle_kick()
var/datum/action/wrestle_strike/wrestle_strike = new/datum/action/wrestle_strike()
var/datum/action/wrestle_drop/wrestle_drop = new/datum/action/wrestle_drop()
// Monkestation Edit end

/datum/martial_art/wrestling/proc/check_streak(mob/living/attacker, mob/living/defender)
switch(streak)
if("drop")
streak = ""
drop(attacker, defender)
wrestle_drop(attacker, defender)
return TRUE
if("strike")
streak = ""
strike(attacker, defender)
wrestle_strike(attacker, defender)
return TRUE
if("kick")
streak = ""
kick(attacker, defender)
wrestle_kick(attacker, defender)
return TRUE
if("throw")
streak = ""
throw_wrassle(attacker, defender)
wrestle_throw(attacker, defender)
return TRUE
if("slam")
streak = ""
slam(attacker, defender)
wrestle_slam(attacker, defender)
return TRUE
return FALSE

/datum/action/slam
name = "Slam (Cinch) - Slam a grappled opponent into the floor."
/datum/action/wrestle_slam
name = "Slam (Cinch)"
desc = "Slam a grappled opponent into the floor." //Monkestation Edit: Moves description from name to desc
button_icon = 'monkestation/icons/hud/martial_arts_actions.dmi'
button_icon_state = "wrassle_slam"

/datum/action/slam/Trigger(trigger_flags)
/datum/action/wrestle_slam/Trigger(trigger_flags)
if(owner.incapacitated())
to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT."))
return
owner.visible_message(span_danger("[owner] prepares to BODY SLAM!"), "<b><i>Your next attack will be a BODY SLAM.</i></b>")
owner.mind.martial_art.streak = "slam"

/datum/action/throw_wrassle
name = "Throw (Cinch) - Spin a cinched opponent around and throw them."
/datum/action/wrestle_throw
name = "Throw (Cinch)"
desc = "Spin a cinched opponent around and throw them." //Monkestation Edit: adds desc
button_icon = 'monkestation/icons/hud/martial_arts_actions.dmi'
button_icon_state = "wrassle_throw"

/datum/action/throw_wrassle/Trigger(trigger_flags)
/datum/action/wrestle_throw/Trigger(trigger_flags)
if(owner.incapacitated())
to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT."))
return
owner.visible_message(span_danger("[owner] prepares to THROW!"), "<b><i>Your next attack will be a THROW.</i></b>")
owner.mind.martial_art.streak = "throw"

/datum/action/kick
name = "Kick - A powerful kick, sends people flying away from you. Also useful for escaping from bad situations."
/datum/action/wrestle_kick
name = "Kick"
desc = "A powerful kick, sends people flying away from you. Also useful for escaping from bad situations." //Monkestation Edit: adds desc
button_icon = 'monkestation/icons/hud/martial_arts_actions.dmi'
button_icon_state = "wrassle_kick"

/datum/action/kick/Trigger(trigger_flags)
/datum/action/wrestle_kick/Trigger(trigger_flags)
if(owner.incapacitated())
to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT."))
return
owner.visible_message(span_danger("[owner] prepares to KICK!"), "<b><i>Your next attack will be a KICK.</i></b>")
owner.mind.martial_art.streak = "kick"

/datum/action/strike
name = "Strike - Hit a neaby opponent with a quick attack."
/datum/action/wrestle_strike
name = "Strike"
desc = "Hit a neaby opponent with a quick attack." //Monkestation Edit: adds desc
button_icon = 'monkestation/icons/hud/martial_arts_actions.dmi'
button_icon_state = "wrassle_strike"

/datum/action/strike/Trigger(trigger_flags)
/datum/action/wrestle_strike/Trigger(trigger_flags)
if(owner.incapacitated())
to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT."))
return
owner.visible_message(span_danger("[owner] prepares to STRIKE!"), "<b><i>Your next attack will be a STRIKE.</i></b>")
owner.mind.martial_art.streak = "strike"

/datum/action/drop
name = "Drop - Smash down onto an opponent."
/datum/action/wrestle_drop
name = "Drop"
desc = "Smash down onto an opponent." //Monkestation Edit: adds desc
button_icon = 'monkestation/icons/hud/martial_arts_actions.dmi'
button_icon_state = "wrassle_drop"

/datum/action/drop/Trigger(trigger_flags)
/datum/action/wrestle_drop/Trigger(trigger_flags)
if(owner.incapacitated())
to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT."))
return
Expand All @@ -107,27 +119,27 @@ If you make a derivative work from this code, you must include this notification
if(..())
to_chat(owner, span_userdanger("SNAP INTO A THIN TIM!"))
to_chat(owner, span_danger("Place your cursor over a move at the top of the screen to see what it does."))
drop.Grant(owner)
kick.Grant(owner)
slam.Grant(owner)
throw_wrassle.Grant(owner)
strike.Grant(owner)
wrestle_drop.Grant(owner)
wrestle_kick.Grant(owner)
wrestle_slam.Grant(owner)
wrestle_throw.Grant(owner)
wrestle_strike.Grant(owner)

/datum/martial_art/wrestling/on_remove(mob/living/owner)
to_chat(owner, span_userdanger("You no longer feel that the tower of power is too sweet to be sour..."))
drop.Remove(owner)
kick.Remove(owner)
slam.Remove(owner)
throw_wrassle.Remove(owner)
strike.Remove(owner)
wrestle_drop.Remove(owner)
wrestle_kick.Remove(owner)
wrestle_slam.Remove(owner)
wrestle_throw.Remove(owner)
wrestle_strike.Remove(owner)

/datum/martial_art/wrestling/harm_act(mob/living/attacker, mob/living/defender)
if(check_streak(attacker, defender))
return 1
log_combat(attacker, defender, "punched with wrestling")
..()

/datum/martial_art/wrestling/proc/throw_wrassle(mob/living/attacker, mob/living/defender)
/datum/martial_art/wrestling/proc/wrestle_throw(mob/living/attacker, mob/living/defender)
if(!defender)
return
if(!attacker.pulling || attacker.pulling != defender)
Expand Down Expand Up @@ -211,7 +223,7 @@ If you make a derivative work from this code, you must include this notification
if (defender)
animate(defender, transform = null, time = 1, loop = 0)

/datum/martial_art/wrestling/proc/slam(mob/living/attacker, mob/living/defender)
/datum/martial_art/wrestling/proc/wrestle_slam(mob/living/attacker, mob/living/defender)
if(!defender)
return
if(!attacker.pulling || attacker.pulling != defender)
Expand Down Expand Up @@ -327,7 +339,7 @@ If you make a derivative work from this code, you must include this notification
if (attacker && (T && isturf(T) && get_dist(attacker, T) <= 1))
attacker.forceMove(T)

/datum/martial_art/wrestling/proc/strike(mob/living/attacker, mob/living/defender)
/datum/martial_art/wrestling/proc/wrestle_strike(mob/living/attacker, mob/living/defender)
if(!defender)
return
var/turf/T = get_turf(attacker)
Expand All @@ -346,7 +358,7 @@ If you make a derivative work from this code, you must include this notification
defender.Unconscious(2 SECONDS)
log_combat(attacker, defender, "headbutted")

/datum/martial_art/wrestling/proc/kick(mob/living/attacker, mob/living/defender)
/datum/martial_art/wrestling/proc/wrestle_kick(mob/living/attacker, mob/living/defender)
if(!defender)
return
attacker.emote("scream")
Expand All @@ -365,7 +377,7 @@ If you make a derivative work from this code, you must include this notification
defender.throw_at(T, 3, 2)
log_combat(attacker, defender, "roundhouse-kicked")

/datum/martial_art/wrestling/proc/drop(mob/living/attacker, mob/living/defender)
/datum/martial_art/wrestling/proc/wrestle_drop(mob/living/attacker, mob/living/defender)
if(!defender)
return
var/obj/surface = null
Expand Down
21 changes: 12 additions & 9 deletions code/game/machinery/doors/airlock.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1331,17 +1331,20 @@
SSexplosions.med_mov_atom += killthis
SEND_SIGNAL(src, COMSIG_AIRLOCK_CLOSE, forced)

// monkestation edit: liquids
var/turf/open/open_turf = get_turf(src)
if(open_turf.liquids)
if(!QDELETED(open_turf.liquids))
var/datum/liquid_group/turfs_group = open_turf.liquids.liquid_group
turfs_group.remove_from_group(open_turf)
qdel(open_turf.liquids)
turfs_group.try_split(open_turf)
for(var/dir in GLOB.cardinals)
var/turf/open/direction_turf = get_step(open_turf, dir)
if(!isopenturf(direction_turf) || !direction_turf.liquids)
continue
turfs_group.check_edges(direction_turf)
if(!QDELETED(turfs_group))
turfs_group.remove_from_group(open_turf)
turfs_group.try_split(open_turf)
for(var/dir in GLOB.cardinals)
var/turf/open/direction_turf = get_step(open_turf, dir)
if(!isopenturf(direction_turf) || QDELING(direction_turf) || QDELETED(direction_turf.liquids))
continue
turfs_group.check_edges(direction_turf)
QDEL_NULL(open_turf.liquids)
// monkestation end

operating = TRUE
update_icon(ALL, AIRLOCK_CLOSING, 1)
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/basic/farm_animals/deer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
maxHealth = 75
blood_volume = BLOOD_VOLUME_NORMAL
ai_controller = /datum/ai_controller/basic_controller/deer
habitable_atmos = list("max_co2" = 10) //MONKESTATION ADDITION: deers won't die in colony atmos
/// Things that will scare us into being stationary. Vehicles are scary to deers because they might have headlights.
var/static/list/stationary_scary_things = list(/obj/vehicle)

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/silicon/robot/robot_model.dm
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@
"Kent" = list(SKIN_ICON_STATE = "kent", SKIN_LIGHT_KEY = "medical", SKIN_HAT_OFFSET = 3),
"Tophat" = list(SKIN_ICON_STATE = "tophat", SKIN_LIGHT_KEY = NONE, SKIN_HAT_OFFSET = INFINITY),
"Waitress" = list(SKIN_ICON_STATE = "service_f"),
"Kerfus" = list(SKIN_ICON_STATE = "kerfus_service", SKIN_LIGHT_KEY = NONE, SKIN_ICON = CYBORG_ICON_CARGO),
"Kerfus" = list(SKIN_ICON_STATE = "kerfus_service", SKIN_LIGHT_KEY = NONE, SKIN_ICON = CYBORG_ICON_CARGO, SKIN_TRAITS = list(TRAIT_CAT)),
)

/obj/item/robot_model/service/respawn_consumable(mob/living/silicon/robot/cyborg, coeff = 1)
Expand Down
4 changes: 4 additions & 0 deletions code/modules/pai/shell.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@
if(!choice)
return FALSE
set_holochassis(choice)
if (choice == "cat" || choice == "kitten")
ADD_TRAIT(src, TRAIT_CAT, PAI_FOLDED)
else
REMOVE_TRAIT(src, TRAIT_CAT, PAI_FOLDED)
balloon_alert(src, "[choice] composite engaged")
update_resting()
return TRUE
Expand Down
11 changes: 11 additions & 0 deletions html/changelogs/archive/2024-07.yml
Original file line number Diff line number Diff line change
Expand Up @@ -355,3 +355,14 @@
- rscadd: Added a "Reset Imprint" option to the PDA painter.
- refactor: Refactored PDA imprinting code just a bit.
- bugfix: PDAs should now properly respond to rigged messages.
2024-07-28:
Absolucy:
- bugfix: Fixed a runtime error relating to airlocks closing and liquids.
2024-07-29:
KnigTheThrasher:
- bugfix: Fixes deers dying from atmos in colonies
Oricana-16:
- rscadd: Florida man learned how to wrestle.
flleeppyy:
- rscadd: Kerfus cyborgs, cat/kitten pAI's and IPC's now have unique cat sounds.
- bugfix: oozeling revival bug involving going to CC and returning to corpse
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@
DB.Grant(floridan)
CB.Grant(floridan)
RG.Grant(floridan)

var/datum/martial_art/wrestling/wrestling = new
wrestling.teach(floridan)
. = ..()


Expand Down
2 changes: 1 addition & 1 deletion monkestation/code/modules/cargoborg/code/cargo_module.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@
borg_skins = list(
"Technician" = list(SKIN_ICON_STATE = "cargoborg", SKIN_ICON = CYBORG_ICON_CARGO),
"Zoomba" = list(SKIN_ICON_STATE = "zoomba_cargo", SKIN_ICON = CYBORG_ICON_CARGO),
"Kerfus" = list(SKIN_ICON_STATE = "kerfus_cargo", SKIN_LIGHT_KEY = NONE, SKIN_ICON = CYBORG_ICON_CARGO),
"Kerfus" = list(SKIN_ICON_STATE = "kerfus_cargo", SKIN_LIGHT_KEY = NONE, SKIN_ICON = CYBORG_ICON_CARGO, SKIN_TRAITS = list(TRAIT_CAT)),
)
19 changes: 17 additions & 2 deletions monkestation/code/modules/emotes/code/emote.dm
Original file line number Diff line number Diff line change
Expand Up @@ -141,20 +141,29 @@
return ..()

/datum/emote/living/scream/get_sound(mob/living/user)
if ((is_cat_enough(user, TRUE) && issilicon(user)) || (is_cat_enough(user, TRUE) && isipc(user)))
return pick(
'monkestation/sound/voice/screams/silicon/catscream1.ogg',
'monkestation/sound/voice/screams/silicon/catscream2.ogg',
'monkestation/sound/voice/screams/silicon/catscream3.ogg',
'monkestation/sound/voice/screams/silicon/catscream4.ogg',
'monkestation/sound/voice/screams/silicon/catscream5.ogg',
)
if(issilicon(user))
return pick(
'monkestation/sound/voice/screams/silicon/robotAUGH1.ogg',
'monkestation/sound/voice/screams/silicon/robotAUGH2.ogg',
'monkestation/sound/voice/screams/silicon/robotAUGH3.ogg',
'monkestation/sound/voice/screams/silicon/robotAUGH4.ogg',
'monkestation/sound/voice/screams/silicon/robotAUGH5.ogg')
if(is_cat_enough(user))
return pick('monkestation/sound/voice/feline/scream1.ogg', 'monkestation/sound/voice/feline/scream2.ogg', 'monkestation/sound/voice/feline/scream3.ogg')
// It's not fair to NOT scream like a cat when we're cat, so alt screams get lowest priority
if(ishuman(user))
var/mob/living/carbon/human/human_user = user
if(length(human_user.alternative_screams))
return pick(human_user.alternative_screams)
. = human_user.dna.species.get_scream_sound(user)
if(is_cat_enough(user))
return pick('monkestation/sound/voice/feline/scream1.ogg', 'monkestation/sound/voice/feline/scream2.ogg', 'monkestation/sound/voice/feline/scream3.ogg')

/datum/emote/living/scream/should_vary(mob/living/user)
if(ishuman(user) && !is_cat_enough(user))
Expand Down Expand Up @@ -186,6 +195,12 @@
return ..() && is_cat_enough(user, include_all_anime = TRUE)

/datum/emote/living/meow/get_sound(mob/living/user)
if(issilicon(user) || isipc(user))
return pick(
'monkestation/sound/voice/feline/silicon/meow1.ogg',
'monkestation/sound/voice/feline/silicon/meow2.ogg',
'monkestation/sound/voice/feline/silicon/meow3.ogg',
)
return pick('monkestation/sound/voice/feline/meow1.ogg', 'monkestation/sound/voice/feline/meow2.ogg', 'monkestation/sound/voice/feline/meow3.ogg', 'monkestation/sound/voice/feline/meow4.ogg')

/datum/emote/living/bark/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,6 @@
/obj/item/organ/internal/brain/slime/proc/rebuild_body(mob/user, nugget = TRUE)
if(rebuilt)
return
rebuilt = TRUE
set_organ_damage(-maxHealth) // heals the brain fully

if(gps_active) // making sure the gps signal is removed if it's active on revival
Expand All @@ -249,6 +248,7 @@
return TRUE
var/mob/living/carbon/human/new_body = new /mob/living/carbon/human(drop_location())

rebuilt = TRUE
brainmob.client?.prefs?.safe_transfer_prefs_to(new_body)
new_body.underwear = "Nude"
new_body.undershirt = "Nude"
Expand Down
Binary file added monkestation/icons/hud/martial_arts_actions.dmi
Binary file not shown.
Binary file added monkestation/sound/voice/feline/silicon/meow1.ogg
Binary file not shown.
Binary file added monkestation/sound/voice/feline/silicon/meow2.ogg
Binary file not shown.
Binary file added monkestation/sound/voice/feline/silicon/meow3.ogg
Binary file not shown.
Binary file added monkestation/sound/voice/feline/silicon/meow4.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 637668b

Please sign in to comment.