Skip to content

Commit

Permalink
TGS Test Merge (#22802)
Browse files Browse the repository at this point in the history
  • Loading branch information
Yogbot-13 committed Dec 29, 2024
2 parents 229bcc8 + e08bc19 commit a354fd4
Show file tree
Hide file tree
Showing 15 changed files with 244 additions and 81 deletions.
18 changes: 5 additions & 13 deletions _maps/shuttles/infiltrator_cutter.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
dir = 2
},
/obj/machinery/door/airlock/external{
id_tag = "syndicatecutter_bolt_port"
id_tag = "bolt_port"
},
/obj/docking_port/mobile{
callTime = 150;
Expand Down Expand Up @@ -69,7 +69,7 @@
dir = 1
},
/obj/machinery/door/airlock/external{
id_tag = "syndicatecutter_bolt_port"
id_tag = "bolt_port"
},
/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
/turf/open/floor/plating,
Expand Down Expand Up @@ -204,13 +204,6 @@
/area/shuttle/yogs/stealthcruiser)
"aC" = (
/obj/structure/table,
/obj/item/circular_saw,
/obj/item/scalpel{
pixel_y = 12
},
/obj/item/cautery{
pixel_x = 4
},
/obj/machinery/light/small{
dir = 8
},
Expand Down Expand Up @@ -312,8 +305,7 @@
/area/shuttle/yogs/stealthcruiser)
"aN" = (
/obj/structure/table,
/obj/item/retractor,
/obj/item/hemostat,
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/shuttle/yogs/stealthcruiser)
Expand Down Expand Up @@ -757,7 +749,7 @@
},
/obj/effect/mapping_helpers/airlock/locked,
/obj/machinery/door/airlock/external{
id_tag = "syndicatecutter_bolt_starboard"
id_tag = "bolt_starboard"
},
/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
/turf/open/floor/plating,
Expand All @@ -780,7 +772,7 @@
},
/obj/effect/mapping_helpers/airlock/locked,
/obj/machinery/door/airlock/external{
id_tag = "syndicatecutter_bolt_starboard"
id_tag = "bolt_starboard"
},
/obj/effect/mapping_helpers/airlock/access/all/syndicate/general,
/turf/open/floor/plating,
Expand Down
103 changes: 101 additions & 2 deletions code/modules/clothing/chameleon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,89 @@
return TRUE


/datum/action/cooldown/chameleon_copy
name = "Copy person"
button_icon = 'yogstation/icons/mob/actions.dmi'
button_icon_state = "chameleon_copy"
var/target_range = 3
var/syndicate = FALSE
var/active = FALSE
var/copying = FALSE
var/in_use = FALSE

/datum/action/cooldown/chameleon_copy/InterceptClickOn(mob/living/caller, params, atom/target)
click_with_power(target)

/datum/action/cooldown/chameleon_copy/Grant(mob/M)
if(syndicate)
owner_has_control = is_syndicate(M)
. = ..()

/datum/action/cooldown/chameleon_copy/proc/toggle_button()
if(active)
active = FALSE
background_icon_state = "bg_default"
build_all_button_icons()
unset_click_ability(owner)
return FALSE
active = TRUE
background_icon_state = "bg_default_on"
build_all_button_icons()
set_click_ability(owner)

/datum/action/cooldown/chameleon_copy/Trigger(trigger_flags, atom/target)
if(active)
toggle_button()
else
to_chat(owner, span_announce("Whom shall your chameleon kit copy?")) //Bad wording, need to improve it
toggle_button()


/datum/action/cooldown/chameleon_copy/proc/CheckValidTarget(atom/target)
if(target == owner)
return FALSE
if(!ishuman(target))
return FALSE
return TRUE

/datum/action/cooldown/chameleon_copy/proc/click_with_power(atom/target_atom)
if(in_use || !CheckValidTarget(target_atom))
return FALSE
in_use = TRUE
FireTargetedPower(target_atom)
in_use = FALSE
return TRUE

/datum/action/cooldown/chameleon_copy/proc/FireTargetedPower(atom/target_atom)
var/mob/living/carbon/human/T = target_atom
var/datum/outfit/O = new()
to_chat(owner, span_notice("Attempting to copy [T]..."))
if(!do_after(owner, 10 SECONDS, target_atom))
return
O.uniform = T.w_uniform
O.suit = T.wear_suit
O.head = T.head
O.shoes = T.shoes
O.gloves = T.gloves
O.ears = T.ears
O.glasses = T.glasses
O.mask = T.wear_mask
O.back = T.back
var/list/types = O.get_chameleon_disguise_info()
for(var/Y in types)
for(var/V in owner.chameleon_item_actions)
var/datum/action/item_action/chameleon/change/A = V
var/obj/item/I = Y
if(A.chameleon_blacklist[Y] || (initial(I.item_flags) & ABSTRACT || !initial(I.icon_state)))
continue
if(istype(Y, A.chameleon_type)) //Need to make sure it's the right type, wouldn't want to wear an armour vest on your head.
A.update_look(owner, Y)
A.copying = TRUE
A.copy_target = T
to_chat(owner, span_notice("Successfully copied [T]!"))
toggle_button()


/datum/action/item_action/chameleon/change
name = "Chameleon Change"
var/list/chameleon_blacklist = list() //This is a typecache
Expand All @@ -152,6 +235,8 @@
var/emp_timer
var/current_disguise = null
var/syndicate = FALSE
var/copying = FALSE
var/mob/living/copy_target

/datum/action/item_action/chameleon/change/Grant(mob/M)
if(M && (owner != M))
Expand All @@ -160,6 +245,9 @@
var/datum/action/chameleon_outfit/O = new /datum/action/chameleon_outfit()
O.syndicate = syndicate
O.Grant(M)
var/datum/action/cooldown/chameleon_copy/C = new /datum/action/cooldown/chameleon_copy()
C.syndicate = syndicate
C.Grant(M)
else
M.chameleon_item_actions |= src
if(syndicate)
Expand All @@ -172,6 +260,8 @@
if(!LAZYLEN(M.chameleon_item_actions))
var/datum/action/chameleon_outfit/O = locate(/datum/action/chameleon_outfit) in M.actions
qdel(O)
var/datum/action/cooldown/chameleon_copy/C = locate(/datum/action/cooldown/chameleon_copy) in M.actions
qdel(C)
return ..()

/datum/action/item_action/chameleon/change/proc/initialize_disguises()
Expand All @@ -195,6 +285,7 @@
if(!picked_item)
return
update_look(user, picked_item)
copying = FALSE

/datum/action/item_action/chameleon/change/proc/random_look(mob/user)
var/picked_name = pick(chameleon_list)
Expand Down Expand Up @@ -275,10 +366,16 @@
if(istype(atom_target, /obj/item/clothing/suit/space/hardsuit/infiltration)) //YOGS START
var/obj/item/clothing/suit/space/hardsuit/infiltration/I = target
var/obj/item/clothing/suit/space/hardsuit/HS = picked_item
var/obj/item/clothing/head/helmet/helmet = initial(HS.helmettype)
var/obj/item/clothing/head/helmet/space/hardsuit/helmet = initial(HS.helmettype)
I.head_piece.initial_state = initial(helmet.icon_state)
update_item(helmet, I.head_piece)
I.head_piece.update_appearance(UPDATE_ICON)
I.head_piece.current_disguise = picked_item
I.head_piece.new_type = helmet.hardsuit_type
var/datum/action/A
for(var/X in I.actions)
A = X
A.build_all_button_icons()

qdel(helmet)
//YOGS END

Expand Down Expand Up @@ -616,6 +713,8 @@
chameleon_action.emp_randomise(INFINITY)

/obj/item/clothing/mask/chameleon/attack_self(mob/user)
if(!is_syndicate(user)) //Wouldn't want someone to randomly find a switch on a mask, would we?
return
vchange = !vchange
to_chat(user, span_notice("The voice changer is now [vchange ? "on" : "off"]!"))
if(vchange)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,17 @@
)
return ..()

//for inside one of the nukie lockers
//for inside one of the nukie lockers and the ones infiltrators spawn with
/obj/item/modular_computer/tablet/pda/preset/syndicate
desc = "Based off Nanotrasen's PDAs, this one has been reverse-engineered and loaded with illegal software provided by the Syndicate."
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#A80001#5C070F#000000"
starting_components = list( /obj/item/computer_hardware/processor_unit/small,
/obj/item/stock_parts/cell/computer,
/obj/item/computer_hardware/hard_drive/small/syndicate,
/obj/item/computer_hardware/network_card/advanced,
/obj/item/computer_hardware/card_slot,
/obj/item/computer_hardware/printer/mini)

/obj/item/modular_computer/tablet/pda/preset/syndicate/Initialize(mapload)
obj_flags |= EMAGGED //starts emagged
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
starting_components = list( /obj/item/computer_hardware/processor_unit/small,
/obj/item/stock_parts/cell/computer,
/obj/item/computer_hardware/hard_drive/small/nukeops,
/obj/item/computer_hardware/network_card)
/obj/item/computer_hardware/network_card/advanced)

starting_files = list(new /datum/computer_file/program/radar/fission360)
initial_program = /datum/computer_file/program/radar/fission360
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const Infiltrator: Antagonist = {
`,
INFILTRATOR_MECHANICAL_DESCRIPTION,
],
category: Category.Roundstart,
category: Category.Midround,
priority: -1,
};

Expand Down
1 change: 0 additions & 1 deletion yogstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -4086,7 +4086,6 @@
#include "yogstation\code\game\gamemodes\clean_this_shit_up\blood_cult.dm"
#include "yogstation\code\game\gamemodes\clean_this_shit_up\clock_cult.dm"
#include "yogstation\code\game\gamemodes\clean_this_shit_up\other.dm"
#include "yogstation\code\game\gamemodes\infiltration\infiltration.dm"
#include "yogstation\code\game\machinery\suit_storage_unit.dm"
#include "yogstation\code\game\machinery\computer\arcade.dm"
#include "yogstation\code\game\machinery\computer\atmos_sim.dm"
Expand Down
54 changes: 0 additions & 54 deletions yogstation/code/game/gamemodes/infiltration/infiltration.dm

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
. = ..()
ADD_TRAIT(src, TRAIT_EMPPROOF_SELF, "innate_empproof")
ADD_TRAIT(src, TRAIT_EMPPROOF_CONTENTS, "innate_empproof")
var/datum/component/uplink/uplink = AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, 20)
var/datum/component/uplink/uplink = AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, 10)
uplink.set_antagonist(ROLE_INFILTRATOR)
alert_radio = new(src)
alert_radio.make_syndie()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.
var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint.
var/dress_up = TRUE
preview_outfit = /datum/outfit/infiltrator
preview_outfit = /datum/outfit/infiltrator_preview

/datum/antagonist/infiltrator/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
Expand All @@ -24,7 +24,6 @@
to_chat(owner, span_notice("You also have an internal radio, for communicating with your team-mates at all times."))
to_chat(owner, span_notice("You have a dusting implant, to ensure that Nanotrasen does not get their hands on Syndicate gear. Only activate it, if you are compromised."))
to_chat(owner, span_boldnotice(span_italics("Do NOT kill or destroy needlessly, as this defeats the purpose of an 'infiltration'!")))
to_chat(owner, span_boldnotice("Once your objectives are complete, return to base, with all living infiltrators, to end the round."))
owner.announce_objectives()

/datum/antagonist/infiltrator/on_gain()
Expand Down
35 changes: 35 additions & 0 deletions yogstation/code/modules/antagonists/infiltrator/items/hardsuit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,48 @@
item_state = "eng_helm"
armor = list(MELEE = 35, BULLET = 15, LASER = 30,ENERGY = 10, BOMB = 10, BIO = 100, RAD = 50, FIRE = 75, ACID = 75)
syndicate = TRUE
var/current_disguise = /obj/item/clothing/suit/space/hardsuit/infiltration
var/new_type = "engineering"
var/static/list/bad_hardsuits = list(
/obj/item/clothing/suit/space/hardsuit/darktemplar,
/obj/item/clothing/suit/space/hardsuit/darktemplar/chap,
/obj/item/clothing/suit/space/hardsuit/cult,
/obj/item/clothing/suit/space/hardsuit/syndi,
/obj/item/clothing/suit/space/hardsuit/syndi/elite,
/obj/item/clothing/suit/space/hardsuit/syndi/owl,
/obj/item/clothing/suit/space/hardsuit/syndi/debug,
/obj/item/clothing/suit/space/hardsuit/carp,
/obj/item/clothing/suit/space/hardsuit/carp/dragon,
/obj/item/clothing/suit/space/hardsuit/swat,
/obj/item/clothing/suit/space/hardsuit/swat/captain,
/obj/item/clothing/suit/space/hardsuit/ert/paranormal,
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor,
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker,
/obj/item/clothing/suit/space/hardsuit/shielded/swat,
/obj/item/clothing/suit/space/hardsuit/shielded/swat/honk,
/obj/item/clothing/suit/space/hardsuit/deathsquad
)

/obj/item/clothing/head/helmet/space/hardsuit/infiltration/Initialize(mapload)
. = ..()
if(istype(loc, /obj/item/clothing/suit/space/hardsuit/infiltration))
var/obj/item/clothing/suit/space/hardsuit/infiltration/I = loc
I.head_piece = src

/obj/item/clothing/head/helmet/space/hardsuit/infiltration/attack_self(mob/user)
if(bad_hardsuits.Find(current_disguise))
to_chat(user, span_warning("You can't use the hardsuit's helmet light with this current disguise, change to another one!"))
else //Copied from original hardsuit attack_self and modified slightly
on = !on
icon_state = "[basestate][on]-[new_type]"
user.update_inv_head() //so our mob-overlays update

set_light_on(on)

for(var/X in actions)
var/datum/action/A = X
A.build_all_button_icons()

/obj/item/clothing/suit/space/hardsuit/infiltration
name = "engineering hardsuit"
icon_state = "hardsuit-engineering"
Expand Down
Loading

0 comments on commit a354fd4

Please sign in to comment.