Skip to content

Commit

Permalink
Merge pull request #134 from DTraitor/change
Browse files Browse the repository at this point in the history
Sync with upstream
  • Loading branch information
DTraitor authored Sep 8, 2023
2 parents 44d3a01 + 75d440f commit 051da62
Show file tree
Hide file tree
Showing 22 changed files with 494 additions and 188 deletions.
395 changes: 223 additions & 172 deletions _maps/map_files/MetaStation/MetaStation.dmm

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions code/controllers/subsystem/minor_mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ SUBSYSTEM_DEF(minor_mapping)
var/list/spawn_list = list(
/mob/living/simple_animal/mouse = 5,
/mob/living/basic/cockroach = 2,
/mob/living/simple_animal/slug = 2,
)

var/list/landmarks = list()
Expand Down
16 changes: 16 additions & 0 deletions code/datums/components/crafting/crafting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,14 @@
for(var/atom/movable/AM in range(radius_range, a))
if((AM.flags_1 & HOLOGRAM_1) || (blacklist && (AM.type in blacklist)))
continue
if(istype(AM, /obj/item/bodypart))
var/obj/item/bodypart/BP = AM
if(BP.owner)
continue
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
if(O.owner)
continue
. += AM


Expand Down Expand Up @@ -160,6 +168,14 @@
var/list/present_qualities = list()

for(var/obj/item/contained_item in source.contents)
if(istype(contained_item, /obj/item/bodypart))
var/obj/item/bodypart/BP = contained_item
if(BP.owner)
continue
if(istype(contained_item, /obj/item/organ))
var/obj/item/organ/O = contained_item
if(O.owner)
continue
if(contained_item.atom_storage)
for(var/obj/item/subcontained_item in contained_item.contents)
available_tools[subcontained_item.type] = TRUE
Expand Down
19 changes: 19 additions & 0 deletions code/datums/components/riding/riding_mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -387,3 +387,22 @@
set_vehicle_dir_offsets(NORTH, movable_parent.pixel_x, 0)
set_vehicle_dir_offsets(EAST, movable_parent.pixel_x, 0)
set_vehicle_dir_offsets(WEST, movable_parent.pixel_x, 0)

/datum/component/riding/creature/hog
//FUTURE IDEA: carrot on a stick as a key

/datum/component/riding/creature/hog/handle_specials()
. = ..()
set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 13), TEXT_SOUTH = list(0, 15), TEXT_EAST = list(-2, 12), TEXT_WEST = list(2, 12)))
set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
set_vehicle_dir_layer(NORTH, OBJ_LAYER)
set_vehicle_dir_layer(EAST, OBJ_LAYER)
set_vehicle_dir_layer(WEST, OBJ_LAYER)

/datum/component/riding/creature/hog/ride_check(mob/living/user, consequences = TRUE)
var/mob/living/simple_animal/hostile/retaliate/hog/hog_ridden = parent
if(hog_ridden.client)
. = ..()
if(prob(15))
hog_ridden.flingRider(user)
. = ..()
22 changes: 22 additions & 0 deletions code/datums/components/udder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,25 @@
made_something = TRUE
if(made_something && on_generate_callback)
on_generate_callback.Invoke(reagents.total_volume, reagents.maximum_volume)

/**
* Slug "udders". I'm so sorry it has to be this way
*/
/obj/item/udder/slug
name = "slime gland"

/obj/item/udder/slug/initial_conditions()
. = ..()
RegisterSignal(udder_mob, COMSIG_MOVABLE_MOVED, .proc/on_slug_move)

/obj/item/udder/slug/proc/on_slug_move()
SIGNAL_HANDLER

if (reagents.total_volume <= 0)
return //no slime :(
var/turf/slug_turf = get_turf(udder_mob)
if(!slug_turf)
return
slug_turf.wash(CLEAN_SCRUB)
reagents.expose(slug_turf, TOUCH, 5)
reagents.remove_any(5)
6 changes: 3 additions & 3 deletions code/game/objects/structures/headpike.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
density = FALSE
anchored = TRUE
var/obj/item/spear/spear
var/obj/item/spear/speartype
var/obj/item/spear/speartype = /obj/item/spear
var/obj/item/bodypart/head/victim

/obj/structure/headpike/bone //for bone spears
Expand Down Expand Up @@ -63,11 +63,11 @@
return ..()

/obj/structure/headpike/deconstruct(disassembled)
if(!disassembled)
return ..()
if(victim)
victim.forceMove(drop_location())
victim = null
if(!disassembled)
return ..()
if(spear)
spear.forceMove(drop_location())
spear = null
Expand Down
10 changes: 10 additions & 0 deletions code/game/turfs/open/floor/fancy_floor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -784,3 +784,13 @@
. = ..()
appearance = global.space_appearances[(((x + y) ^ ~(x * y) + z) % 25) + 1]
layer = initial(layer)

/turf/open/floor/mud
name = "mud"
desc = "A wet, muddy pool of dirt."
icon = 'icons/turf/floors.dmi'
icon_state = "dirt"
footstep = FOOTSTEP_MEAT //this is... probably the closest sounding to mud.
barefootstep = FOOTSTEP_MEAT
clawfootstep = FOOTSTEP_MEAT
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
1 change: 1 addition & 0 deletions code/modules/events/animal_infestation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
/mob/living/simple_animal/slime = "gelatinous",
/mob/living/simple_animal/hostile/hivebot = "robotic",
/mob/living/simple_animal/hostile/bear = "ursine",
/mob/living/simple_animal/hostile/retaliate/hog = "greasy",
)

/datum/round_event/animal_infestation/dangerous/announce(fake)
Expand Down
35 changes: 35 additions & 0 deletions code/modules/mob/living/simple_animal/friendly/slug.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/mob/living/simple_animal/slug
name = "maintenance slug"
desc = "Gigantomilax Robusticus, also known as the 'Maintenance Slug' for their habit of occupying the dark tunnels of space stations. Their slime is known to be a good disinfectant and cleaning fluid."
icon_state = "slug"
icon_living = "slug"
icon_dead = "slug_dead"
turns_per_move = 5
response_help_continuous = "gently pats"
response_help_simple = "gently pat"
response_disarm_continuous = "nudges"
response_disarm_simple = "nudge"
response_harm_continuous = "splats"
response_harm_simple = "splat"
maxHealth = 5
health = 5
speed = 10
density = FALSE
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
mob_biotypes = MOB_ORGANIC
gold_core_spawnable = FRIENDLY_SPAWN
var/udder = /obj/item/udder/slug

/mob/living/simple_animal/slug/Initialize(mapload)
. = ..()
AddComponent(/datum/component/udder, udder, null, null, /datum/reagent/slug_slime)

//cargo's badass loose-cannon pet slug who doesn't play by the rules
/mob/living/simple_animal/slug/glubby
name = "Glubby"
desc = "He's just misunderstood."
icon_state = "glubby"
icon_living = "glubby"
icon_dead = "glubby_dead"
gold_core_spawnable = NO_SPAWN
106 changes: 106 additions & 0 deletions code/modules/mob/living/simple_animal/hostile/retaliate/hog.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/mob/living/simple_animal/hostile/retaliate/hog
name = "feral hog"
desc = "A huge, mangy looking hog. Aggravating it might not be a good idea."
icon_state = "hog"
icon_living = "hog"
icon_dead = "hog_dead"
icon_gib = "brownbear_gib"
speed = 0
maxHealth = 80
health = 80
harm_intent_damage = 5
turns_per_move = 5
melee_damage_lower = 20
melee_damage_upper = 25
response_help_continuous = "squeezes"
response_help_simple = "squeeze"
attack_verb_continuous = "rams"
attack_verb_simple = "ram"
butcher_results = list(/obj/item/food/meat/slab = 5) //i would add pork but i don't want to touch crafting menu cooking
attack_sound = 'sound/creatures/hog/hogattack.ogg'
deathsound = 'sound/creatures/hog/hogdeath.ogg'
obj_damage = 80 //do not underestimate the destructive ability of an angry hog
environment_smash = ENVIRONMENT_SMASH_STRUCTURES
attack_vis_effect = ATTACK_EFFECT_SMASH
ranged_cooldown_time = 10 SECONDS
speak_emote = list("oinks")
can_buckle = TRUE
var/territorial = TRUE
var/rename = TRUE

/mob/living/simple_animal/hostile/retaliate/hog/Initialize(mapload)
. = ..()
AddElement(/datum/element/ridable, /datum/component/riding/creature/hog)
if(territorial)
AddComponent(/datum/component/connect_range, src, list(COMSIG_ATOM_ENTERED = PROC_REF(checkEntered)), 1, FALSE)
if(rename)
switch (gender)
if(MALE)
name = "feral boar"
if(FEMALE)
name = "feral sow"

/mob/living/simple_animal/hostile/retaliate/hog/Life(delta_time = SSMOBS_DT, times_fired)
. = ..()
if(stat == CONSCIOUS)
if(prob(5))
playsound(src, 'sound/creatures/hog/hoggrunt.ogg', 50, TRUE)
var/obj/item/food/fooditem = locate(/obj/item/food) in view(1, src)
if(fooditem && Adjacent(fooditem))
consume(fooditem)

/mob/living/simple_animal/hostile/retaliate/hog/AttackingTarget()
if(istype(target, /obj/item/food))
consume(target)
return
if(istype(target, /atom/movable))
var/mob/living/moving_target = target
if(moving_target.buckled == src)
return
return ..()

/mob/living/simple_animal/hostile/retaliate/hog/proc/consume(atom/movable/fooditem)
playsound(src, 'sound/items/eatfood.ogg', 50, TRUE)
visible_message("[name] eats the [fooditem].")
qdel(fooditem)
if(health == maxHealth)
return
health += 5
if(health > maxHealth)
health = maxHealth

/mob/living/simple_animal/hostile/retaliate/hog/proc/checkEntered(datum/source, atom/movable/arrived)
if(stat != CONSCIOUS) //not 100% sure if this is needed
return
if(arrived == src)
return
if(!ismob(arrived))
return
if(target)
return
hogAlert()
Retaliate()

/mob/living/simple_animal/hostile/retaliate/hog/proc/hogAlert() //YOU HAVE ALERTED THE HOG
var/obj/effect/overlay/vis/overlay = new()
overlay.icon = 'icons/mob/animal.dmi'
overlay.icon_state = "hog_alert_overlay"
overlay.layer += 1
vis_contents += overlay
QDEL_IN(overlay, 1.5 SECONDS)
playsound(src, 'sound/creatures/hog/hogscream.ogg', 50, TRUE)

/mob/living/simple_animal/hostile/retaliate/hog/proc/flingRider(atom/rider) //shouldn't trigger if the hog has a client.
playsound(src, 'sound/creatures/hog/hogscream.ogg', 50, TRUE)
emote("spin")

/mob/living/simple_animal/hostile/retaliate/hog/security
name = "Lieutenant Hoggison"
desc = "A large, greasy hog that was rescued by security during an illegal pork trafficking operation. This pig is now the beloved pet of security, despite all the jokes made by the crew."
icon_state = "hog_officer"
icon_living = "hog_officer"
melee_damage_lower = 15 //life as a domestic pet has reduced this hog's combat ability.
melee_damage_upper = 15
obj_damage = 40
territorial = FALSE
rename = FALSE
14 changes: 14 additions & 0 deletions code/modules/reagents/chemistry/reagents/other_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1170,3 +1170,17 @@
if(prob(20))
C.losebreath += 2
C.adjust_timed_status_effect(2 SECONDS, /datum/status_effect/confusion, max_duration = 5 SECONDS)

/datum/reagent/slug_slime
name = "Antibiotic Slime"
description = "Cleansing slime extracted from a slug. Great for cleaning surfaces, or sterilization before surgery."
reagent_state = LIQUID
color = "#c4dfa1"
taste_description = "sticky mouthwash"

/datum/reagent/slug_slime/expose_turf(turf/open/exposed_turf, reac_volume)
. = ..()
if(!istype(exposed_turf))
return
if(reac_volume >= 1)
exposed_turf.MakeSlippery(TURF_WET_WATER, 15 SECONDS, min(reac_volume * 1 SECONDS, 40 SECONDS))
5 changes: 4 additions & 1 deletion code/modules/vehicles/mecha/_mecha.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1156,11 +1156,14 @@


/obj/vehicle/sealed/mecha/add_occupant(mob/M, control_flags)
. = ..()
if(!.)
return

RegisterSignal(M, COMSIG_LIVING_DEATH, PROC_REF(mob_exit))
RegisterSignal(M, COMSIG_MOB_CLICKON, PROC_REF(on_mouseclick))
RegisterSignal(M, COMSIG_MOB_MIDDLECLICKON, PROC_REF(on_middlemouseclick)) //For AIs
RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(display_speech_bubble))
. = ..()
update_appearance()

/obj/vehicle/sealed/mecha/remove_occupant(mob/M)
Expand Down
2 changes: 2 additions & 0 deletions daedalus.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3594,6 +3594,7 @@
#include "code\modules\mob\living\simple_animal\friendly\rabbit.dm"
#include "code\modules\mob\living\simple_animal\friendly\robot_customer.dm"
#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
#include "code\modules\mob\living\simple_animal\friendly\slug.dm"
#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
#include "code\modules\mob\living\simple_animal\friendly\trader.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"
Expand Down Expand Up @@ -3695,6 +3696,7 @@
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\hog.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm"
#include "code\modules\mob\living\simple_animal\slime\death.dm"
Expand Down
21 changes: 21 additions & 0 deletions html/changelogs/archive/2023-09.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- bugfix: Fixed hunter swing ability (can't be spammed)
- bugfix: Necromorphs don't deal x3 damage anymore
Kapu1178:
- bugfix: You can't make a headpike out of your own head anymore.
- rscadd: Being in a low or high pressure environment now damages your eyes and
ears.
- qol: Click-Drag can now be used to move items around inventories, including swapping
Expand All @@ -34,3 +35,23 @@
yyzsong:
- rscadd: Chemistry gets a grinder and plasma by default
- qol: updates beaker transfer amounts for the multiple-of-sixtyening.
<<<<<<< HEAD
=======
2023-09-04:
Kapu1178:
- qol: Updated the changelog to include Daedalus contributors.
2023-09-05:
francinum:
- bugfix: Atmospherics has a SMES unit to prop up it's exceptional power load.
2023-09-06:
Cenrus:
- tweak: Pixelshift default hotkey is now J instead of B
2023-09-07:
Spyroshark:
- rscadd: Maint Slugs! They leave behind a slippery trail and can be "milked" if
so desired. Cargo starts with a unique one.
- rscadd: Feral Hogs! Technically a neutral animal, they become aggressive if you
get too close. Security has a private hog.
- rscdel: Sgt. Araneus and Paperwork have been sent off to kindly old spaceman's
farm, where they will happily live out the rest of their natural lives.
>>>>>>> master
Binary file modified icons/mob/animal.dmi
Binary file not shown.
6 changes: 3 additions & 3 deletions interface/interface.dm
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,13 @@

local_template = replacetext(local_template, "## Reproduction:\n", "## Reproduction:\n[user_description]")

var/client_info = "\
var/client_info = "```\
Client Information:\n\
BYOND:[byond_version].[byond_build]\n\
Key:[ckey]\n\
\
```\
"
var/issue_body = "```\nReporting client info:\n[client_info]\n\n[local_template]```"
var/issue_body = "\nReporting client info:\n[client_info]\n\n[local_template]"
var/list/body_structure = list(
"title" = issue_title,
"body" = issue_body
Expand Down
2 changes: 1 addition & 1 deletion modular_pariah/modules/pixel_shift/code/pixel_shift.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var/shifting //If we are in the shifting setting.

/datum/keybinding/mob/pixel_shift
hotkey_keys = list("B")
hotkey_keys = list("J")
name = "pixel_shift"
full_name = "Pixel Shift"
description = "Shift your characters offset."
Expand Down
Binary file added sound/creatures/hog/hogattack.ogg
Binary file not shown.
Binary file added sound/creatures/hog/hogdeath.ogg
Binary file not shown.
Binary file added sound/creatures/hog/hoggrunt.ogg
Binary file not shown.
Binary file added sound/creatures/hog/hogscream.ogg
Binary file not shown.
Loading

0 comments on commit 051da62

Please sign in to comment.