Skip to content

Commit

Permalink
ports syndicate horses, and fixes space movement bug, adds syndicate …
Browse files Browse the repository at this point in the history
…body armor, clarification (#3646)

* speed changes

* syndicatepony and space movement

* few damn lines

* I forgor to change branch

* changed to work with borbop temp rework

* monkestation edit

* armor

* clarified

* better now?

* To ride another day..

* stealthy_tools

* dme
  • Loading branch information
Shoddd authored Oct 24, 2024
1 parent 87dc0bb commit 1ae1266
Show file tree
Hide file tree
Showing 19 changed files with 200 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@
icon_file = 'icons/mob/simple/garden_gnome.dmi'
json_config = 'code/datums/greyscale/json_configs/garden_gnome.json'

/datum/greyscale_config/pony
name = "Pony"
icon_file = 'icons/mob/simple/animal.dmi'
json_config = 'code/datums/greyscale/json_configs/pony.json'

/datum/greyscale_config/gutlunch
name = "Gutlunch"
icon_file = 'icons/mob/simple/lavaland/lavaland_monsters.dmi'
Expand Down
30 changes: 30 additions & 0 deletions code/datums/greyscale/json_configs/pony.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"pony": [
{
"type": "icon_state",
"icon_state": "pony",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "pony_hair",
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
],
"pony_dead": [
{
"type": "icon_state",
"icon_state": "pony_dead",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "pony_hair_dead",
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
]
}
4 changes: 4 additions & 0 deletions code/game/machinery/syndicatebeacon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,7 @@
/obj/item/sbeacondrop/clownbomb
desc = "A label on it reads: <i>Warning: Activating this device will send a silly explosive to your location</i>."
droptype = /obj/machinery/syndicatebomb/badmin/clown

/obj/item/sbeacondrop/horse
desc = "A label on it reads: <i>Warning: Activating this device will send a live horse to your location.</i>"
droptype = /mob/living/basic/pony/syndicate
15 changes: 15 additions & 0 deletions code/game/objects/items/storage/holsters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,3 +229,18 @@
/obj/item/ammo_casing, // For shotgun shells, rockets, launcher grenades, and a few other things.
/obj/item/grenade, // All regular grenades, the big grenade launcher fires these.
))


/obj/item/storage/belt/holster/nukie/cowboy
desc = "A deep shoulder holster capable of holding almost any form of small firearm and its ammo. This one's specialized for handguns."

/obj/item/storage/belt/holster/nukie/cowboy/Initialize(mapload)
. = ..()
atom_storage.max_slots = 3
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL

/obj/item/storage/belt/holster/nukie/cowboy/full/PopulateContents()
generate_items_inside(list(
/obj/item/gun/ballistic/revolver/syndicate/cowboy = 1,
/obj/item/ammo_box/a357 = 2,
), src)
15 changes: 15 additions & 0 deletions code/game/objects/items/storage/uplink_kits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -762,6 +762,21 @@
for(var/i in 1 to poster_count)
new /obj/item/poster/traitor(src)

/obj/item/storage/box/syndie_kit/cowboy
name = "western outlaw pack"
desc = "Contains everything you'll need to be the rootin' tootin' cowboy you always wanted. Either play the Lone Ranger or go in with your posse of outlaws."

/obj/item/storage/box/syndie_kit/cowboy/PopulateContents()
generate_items_inside(list(
/obj/item/clothing/shoes/cowboy/black/syndicate= 1,
/obj/item/clothing/head/cowboy/black/syndicate = 1,
/obj/item/storage/belt/holster/nukie/cowboy/full = 1,
/obj/item/clothing/under/costume/dutch/syndicate = 1,
/obj/item/lighter/skull = 1,
/obj/item/sbeacondrop/horse = 1,
/obj/item/food/grown/apple = 1,
), src)

#undef KIT_RECON
#undef KIT_BLOODY_SPAI
#undef KIT_STEALTHY
Expand Down
4 changes: 4 additions & 0 deletions code/modules/clothing/head/hat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,10 @@
worn_icon_state = "cowboy_hat_black"
inhand_icon_state = "cowboy_hat_black"

/// More likely to intercept bullets, since you're likely to not be wearing your modsuit with this on
/obj/item/clothing/head/cowboy/black/syndicate
deflect_chance = 25

/obj/item/clothing/head/cowboy/white
name = "ten-gallon hat"
desc = "There are two kinds of people in the world: those with guns and those that dig. You dig?"
Expand Down
6 changes: 6 additions & 0 deletions code/modules/clothing/shoes/cowboy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,9 @@
name = "\improper Hugs-The-Feet lizard skin boots"
desc = "A pair of masterfully crafted lizard skin boots. Finally a good application for the station's most bothersome inhabitants."
icon_state = "lizardboots_blue"

/// Shoes for the nuke-ops cowboy fit
/obj/item/clothing/shoes/cowboy/black/syndicate
name = "black spurred cowboy boots"
desc = "And they sing, oh, ain't you glad you're single? And that song ain't so very far from wrong."
armor_type = /datum/armor/shoes_combat
5 changes: 5 additions & 0 deletions code/modules/clothing/under/costume.dm
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,11 @@
inhand_icon_state = null
can_adjust = FALSE

// For the nuke-ops cowboy fit.
/obj/item/clothing/under/costume/dutch/syndicate
desc = "You can feel a <b>god damn plan</b> coming on, and the armor lining in this suit'll do wonders in makin' it work."
armor_type = /datum/armor/clothing_under/syndicate

/obj/item/clothing/under/costume/osi
name = "O.S.I. jumpsuit"
icon_state = "osi_jumpsuit"
Expand Down
68 changes: 67 additions & 1 deletion code/modules/mob/living/basic/farm_animals/pony.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,63 @@
gold_core_spawnable = FRIENDLY_SPAWN
blood_volume = BLOOD_VOLUME_NORMAL
ai_controller = /datum/ai_controller/basic_controller/pony
/// Do we register a unique rider?
var/unique_tamer = FALSE
/// The person we've been tamed by
var/datum/weakref/my_owner

greyscale_config = /datum/greyscale_config/pony
/// Greyscale color config; 1st color is body, 2nd is mane
var/list/ponycolors = list("#cc8c5d", "#cc8c5d")

/mob/living/basic/pony/Initialize(mapload)
. = ..()

apply_colour()
AddElement(/datum/element/pet_bonus, "whickers.")
AddElement(/datum/element/ai_retaliate)
AddElement(/datum/element/ai_flee_while_injured)
AddElement(/datum/element/waddling)
AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 25, bonus_tame_chance = 15, after_tame = CALLBACK(src, PROC_REF(tamed)))
AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 25, bonus_tame_chance = 15, after_tame = CALLBACK(src, PROC_REF(tamed)), unique = unique_tamer)

/mob/living/basic/pony/proc/tamed(mob/living/tamer)
can_buckle = TRUE
buckle_lying = 0
playsound(src, 'sound/creatures/pony/snort.ogg', 50)
AddElement(/datum/element/ridable, /datum/component/riding/creature/pony)
visible_message(span_notice("[src] snorts happily."))
new /obj/effect/temp_visual/heart(loc)

ai_controller.replace_planning_subtrees(list(
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee,
/datum/ai_planning_subtree/flee_target,
/datum/ai_planning_subtree/random_speech/pony/tamed
))

if(unique_tamer)
my_owner = WEAKREF(tamer)
RegisterSignal(src, COMSIG_MOVABLE_PREBUCKLE, PROC_REF(on_prebuckle))

/mob/living/basic/pony/Destroy()
UnregisterSignal(src, COMSIG_MOVABLE_PREBUCKLE)
my_owner = null
return ..()

/// Only let us get ridden if the buckler is our owner, if we have a unique owner.
/mob/living/basic/pony/proc/on_prebuckle(mob/source, mob/living/buckler, force, buckle_mob_flags)
SIGNAL_HANDLER
var/mob/living/tamer = my_owner?.resolve()
if(!unique_tamer || (isnull(tamer) && unique_tamer))
return
if(buckler != tamer)
whinny_angrily()
return COMPONENT_BLOCK_BUCKLE

/mob/living/basic/pony/proc/apply_colour()
if(!greyscale_config)
return
set_greyscale(colors = ponycolors)

/mob/living/basic/pony/proc/whinny_angrily()
manual_emote("whinnies ANGRILY!")

Expand Down Expand Up @@ -86,3 +120,35 @@
/datum/ai_planning_subtree/basic_melee_attack_subtree,
/datum/ai_planning_subtree/random_speech/pony
)

// A stronger horse is required for our strongest cowboys.
/mob/living/basic/pony/syndicate
health = 300
maxHealth = 300
desc = "A special breed of horse engineered by the syndicate to be capable of surviving in the deep reaches of space. A modern outlaw's best friend."
faction = list(ROLE_SYNDICATE)
ponycolors = list("#5d566f", COLOR_RED)
pressure_resistance = 200
habitable_atmos = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
bodytemp_cold_damage_limit = -1
bodytemp_heat_damage_limit = 1500
unique_tamer = TRUE

/mob/living/basic/pony/syndicate/Initialize(mapload)
. = ..()
// Help discern your horse from your allies
var/mane_colors = list(
COLOR_RED=6,
COLOR_BLUE=6,
COLOR_PINK=3,
COLOR_GREEN=3,
COLOR_BLACK=3,
COLOR_YELLOW=2,
COLOR_ORANGE=1,
COLOR_WHITE=1,
COLOR_DARK_BROWN=1,
)
ponycolors = list("#5d566f", pick_weight(mane_colors))
name = pick("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
// Only one person can tame these fellas, and they only need one apple
AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 100, bonus_tame_chance = 15, after_tame = CALLBACK(src, PROC_REF(tamed)), unique = unique_tamer)
5 changes: 5 additions & 0 deletions code/modules/projectiles/guns/ballistic/revolver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,11 @@
desc = "A modernized 7 round revolver manufactured by Waffle Co. Uses .357 ammo."
icon_state = "revolversyndie"

/obj/item/gun/ballistic/revolver/syndicate/cowboy
desc = "A classic revolver, refurbished for modern use. Uses .357 ammo."
//There's already a cowboy sprite in there!
icon_state = "lucky"

/obj/item/gun/ballistic/revolver/mateba
name = "\improper Unica 6 auto-revolver"
desc = "A retro high-powered autorevolver typically used by officers of the New Russia military. Uses .357 ammo."
Expand Down
10 changes: 10 additions & 0 deletions code/modules/uplink/uplink_items/nukeops.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@
cost = 10
purchasable_from = UPLINK_NUKE_OPS

/datum/uplink_item/bundles_tc/cowboy
name = "Syndicate Outlaw Kit"
desc = "There've been high tales of an outlaw 'round these parts. A fella so ruthless and efficient no ranger could ever capture 'em. \
Now you can be just like 'em! \
This kit contains armor-lined cowboy equipment, a custom revolver and holster, and a horse with a complimentary apple to tame. \
A lighter is also included, though you must supply your own smokes."
item = /obj/item/storage/box/syndie_kit/cowboy
cost = 18
purchasable_from = UPLINK_NUKE_OPS

/datum/uplink_item/dangerous/rawketlawnchair
name = "84mm Rocket Propelled Grenade Launcher"
desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \
Expand Down
4 changes: 4 additions & 0 deletions code/modules/uplink/uplink_items/stealthy_tools.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,17 @@
purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS)
cost = 1

//MONKESTATION REMOVAL START moved to monkestation/code/modules/uplink/uplink_items/stealthy_tools.dm
/*
/datum/uplink_item/stealthy_tools/chameleon
name = "Chameleon Kit"
desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \
Due to budget cuts, the shoes don't provide protection against slipping and skillchips are sold separately."
item = /obj/item/storage/box/syndie_kit/chameleon
cost = 2
purchasable_from = ~UPLINK_NUKE_OPS //clown ops are allowed to buy this kit, since it's basically a costume
*/
//MONKESTATION REMOVAL END

/datum/uplink_item/stealthy_tools/syndigaloshes
name = "No-Slip Chameleon Shoes"
Expand Down
Binary file modified icons/mob/simple/animal.dmi
Binary file not shown.
14 changes: 14 additions & 0 deletions monkestation/code/modules/clothing/suits/costume.dm
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,20 @@
. = ..()
AddComponent(/datum/component/armor_plate)

/obj/item/clothing/suit/chameleon/syndie_armor
name = "syndicate body armor"
desc = "A set of red and black body armor. Lightweight but great protection."
icon = 'monkestation/icons/obj/clothing/suits.dmi'
worn_icon = 'monkestation/icons/mob/clothing/suit.dmi'
icon_state = "armor_syndie"
armor_type = /datum/armor/mod_theme_infiltrator
body_parts_covered = CHEST|GROIN

/obj/item/clothing/suit/chameleon/syndie_armor/Initialize(mapload)
. = ..()

create_storage(storage_type = /datum/storage/pockets)

/obj/item/clothing/suit/infinity_jacket
name = "infinity jersey"
desc = "A jersey labelled '88', somehow leaving a threatening aura around it."
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/datum/uplink_item/stealthy_tools/chameleon
name = "Chameleon Kit"
desc = "A set of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! \
Due to budget cuts, the shoes don't provide protection against slipping and skillchips are sold separately. \
The chameleon technology can be locked and unlocked using a multitool, hiding it from others."
item = /obj/item/storage/box/syndie_kit/chameleon
cost = 2
purchasable_from = ~UPLINK_NUKE_OPS //clown ops are allowed to buy this kit, since it's basically a costume
8 changes: 7 additions & 1 deletion monkestation/code/modules/uplink/uplink_items/suits.dm
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
// Never again.
/datum/uplink_item/suits/syndie_armor
name = "Syndicate Body armor"
desc = "A highly compact set of body armor with two inner slots for small items.\
It comes with chameleon features."
item = /obj/item/clothing/suit/chameleon/syndie_armor
cost = 4
purchasable_from = ALL
Binary file modified monkestation/icons/mob/clothing/suit.dmi
Binary file not shown.
Binary file modified monkestation/icons/obj/clothing/suits.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -8041,6 +8041,7 @@
#include "monkestation\code\modules\uplink\uplink_items\misc.dm"
#include "monkestation\code\modules\uplink\uplink_items\nukeops.dm"
#include "monkestation\code\modules\uplink\uplink_items\species.dm"
#include "monkestation\code\modules\uplink\uplink_items\stealthy_tools.dm"
#include "monkestation\code\modules\uplink\uplink_items\suits.dm"
#include "monkestation\code\modules\uplink\uplink_items\weapons.dm"
#include "monkestation\code\modules\vehicles\monkey_ball.dm"
Expand Down

0 comments on commit 1ae1266

Please sign in to comment.