mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-01 05:02:33 +00:00
331 lines
15 KiB
Plaintext
331 lines
15 KiB
Plaintext
/datum/game_test/room_test/attack_chain_structures
|
|
testing_area_name = "test_attack_chain_structures.dmm"
|
|
var/list/structure_instances_by_type = list()
|
|
|
|
/datum/game_test/room_test/attack_chain_structures/proc/teleport_to_first(datum/test_puppeteer/player, obj_type, dir=EAST)
|
|
if(length(structure_instances_by_type[obj_type]))
|
|
for(var/obj/object in structure_instances_by_type[obj_type])
|
|
if(!QDELETED(object))
|
|
player.puppet.forceMove(get_step(object, dir))
|
|
return object
|
|
TEST_FAIL("could not find [obj_type] to teleport puppet to")
|
|
|
|
/datum/game_test/room_test/attack_chain_structures/New()
|
|
. = ..()
|
|
for(var/turf/T in available_turfs)
|
|
for(var/obj/structure/structure in T)
|
|
LAZYOR(structure_instances_by_type[structure.type], structure)
|
|
|
|
/datum/game_test/room_test/attack_chain_structures/Run()
|
|
var/datum/test_puppeteer/player = new(src)
|
|
player.puppet.name = "Player"
|
|
|
|
player.puppet.mind.add_antag_datum(/datum/antagonist/cultist)
|
|
player.spawn_obj_in_hand(/obj/item/melee/cultblade/dagger)
|
|
|
|
var/forge = teleport_to_first(player, /obj/structure/cult/functional/forge)
|
|
player.click_on(forge)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You unsecure [forge] from the floor")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/ai_core/core = teleport_to_first(player, /obj/structure/ai_core)
|
|
player.spawn_obj_in_hand(/obj/item/circuitboard/aicore)
|
|
player.click_on(core)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You place the circuit board inside the frame")
|
|
|
|
var/shell = teleport_to_first(player, /obj/structure/constructshell)
|
|
var/obj/item/soulstone/soulstone = player.spawn_obj_in_hand(/obj/item/soulstone)
|
|
soulstone.purified = TRUE
|
|
player.click_on(shell)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "An overwhelming feeling of dread comes over you")
|
|
player.drop_held_item()
|
|
player.rejuvenate()
|
|
|
|
var/obj/structure/computerframe/frame = teleport_to_first(player, /obj/structure/computerframe)
|
|
var/obj/circuitboard = player.spawn_obj_in_hand(/obj/item/circuitboard/computer/sat_control)
|
|
player.click_on(frame)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You place [circuitboard] inside the computer frame")
|
|
|
|
var/barricade = teleport_to_first(player, /obj/structure/barricade/wooden)
|
|
player.spawn_obj_in_hand(/obj/item/stack/sheet/wood)
|
|
player.click_on(barricade)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You need at least five wooden planks to make a wall")
|
|
player.drop_held_item()
|
|
|
|
var/firelock_frame = teleport_to_first(player, /obj/structure/firelock_frame)
|
|
var/obj/item/firelock_electronics/electronics = player.spawn_fast_tool(/obj/item/firelock_electronics)
|
|
player.click_on(firelock_frame)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You insert and secure [electronics]")
|
|
|
|
var/machine_frame = teleport_to_first(player, /obj/structure/machine_frame)
|
|
player.spawn_fast_tool(/obj/item/stack/cable_coil{amount = 5})
|
|
player.click_on(machine_frame)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You add cables to the frame.")
|
|
|
|
var/obj/structure/largecrate/large_crate = teleport_to_first(player, /obj/structure/largecrate)
|
|
large_crate.manifest = new /obj/item/paper/manifest(null)
|
|
player.spawn_obj_in_hand(/obj/item/paper)
|
|
player.click_on(large_crate)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You tear the manifest off of the crate")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/displaycase/displaycase = teleport_to_first(player, /obj/structure/displaycase)
|
|
var/obj/id_card = player.spawn_obj_in_hand(/obj/item/card/id/assistant)
|
|
player.click_on(displaycase)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You use [id_card] to open [displaycase]")
|
|
player.put_away(id_card)
|
|
var/obj/item/toy/crayon/crayon = player.spawn_obj_in_hand(/obj/item/toy/crayon)
|
|
player.click_on(displaycase)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You put [crayon] on display")
|
|
player.retrieve(id_card)
|
|
player.click_on(displaycase)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You use [id_card] to close [displaycase]")
|
|
player.put_away(id_card)
|
|
var/obj/baton = player.spawn_obj_in_hand(/obj/item/melee/baton/loaded)
|
|
player.set_intent(INTENT_HARM)
|
|
player.click_on(displaycase)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You hit [displaycase] with [baton]")
|
|
qdel(baton)
|
|
|
|
var/obj/assembly = teleport_to_first(player, /obj/structure/door_assembly)
|
|
player.spawn_fast_tool(/obj/item/wrench)
|
|
player.click_on(assembly)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You secure [assembly].")
|
|
player.drop_held_item()
|
|
player.spawn_fast_tool(/obj/item/stack/cable_coil)
|
|
player.click_on(assembly)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You wire the airlock assembly.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/girder = teleport_to_first(player, /obj/structure/girder/cult)
|
|
player.puppet.mind.add_antag_datum(/datum/antagonist/cultist)
|
|
player.spawn_obj_in_hand(/obj/item/melee/cultblade/dagger)
|
|
player.click_on(girder)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You demolish [girder].")
|
|
player.drop_held_item()
|
|
|
|
girder = teleport_to_first(player, /obj/structure/girder)
|
|
player.spawn_fast_tool(/obj/item/stack/sheet/metal{amount = 2})
|
|
player.click_on(girder)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You add the plating.")
|
|
|
|
girder = teleport_to_first(player, /obj/structure/girder)
|
|
player.spawn_fast_tool(/obj/item/gun/energy/plasmacutter)
|
|
player.click_on(girder)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You slice apart the girder.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/guillotine/guillotine = teleport_to_first(player, /obj/structure/guillotine)
|
|
guillotine.blade_sharpness -= 1
|
|
player.spawn_fast_tool(/obj/item/whetstone)
|
|
player.click_on(guillotine)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You sharpen the large blade of [guillotine]")
|
|
player.drop_held_item()
|
|
|
|
var/obj/weldingtool = player.spawn_fast_tool(/obj/item/weldingtool)
|
|
player.use_item_in_hand()
|
|
player.set_intent(INTENT_HARM)
|
|
player.click_on(guillotine)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You slice clean through the guillotine!")
|
|
player.put_away(weldingtool)
|
|
player.set_intent(INTENT_HELP)
|
|
|
|
var/obj/structure/table_frame/table_frame = teleport_to_first(player, /obj/structure/table_frame)
|
|
table_frame.construction_time = 0
|
|
player.spawn_obj_in_hand(/obj/item/stack/sheet/metal)
|
|
player.click_on(table_frame)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You start adding the metal to [table_frame]")
|
|
player.spawn_fast_tool(/obj/item/wrench)
|
|
var/table = player.find_nearby(/obj/structure/table)
|
|
player.click_on(table)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You dismantle [table]")
|
|
player.drop_held_item()
|
|
|
|
var/obj/inflatable = teleport_to_first(player, /obj/structure/inflatable)
|
|
player.spawn_obj_in_hand(/obj/item/kitchen/knife)
|
|
player.click_on(inflatable)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "[inflatable] rapidly deflates!")
|
|
player.drop_held_item()
|
|
|
|
var/obj/kitchenspike_frame = teleport_to_first(player, /obj/structure/kitchenspike_frame)
|
|
player.spawn_obj_in_hand(/obj/item/stack/rods/ten)
|
|
player.click_on(kitchenspike_frame)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You add spikes to the frame.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/kitchenspike/spike = teleport_to_first(player, /obj/structure/kitchenspike)
|
|
spike.impale_time = 0
|
|
var/mob/living/pig = player.spawn_mob_nearby(/mob/living/basic/pig)
|
|
pig.grabbedby(player.puppet)
|
|
player.click_on(spike)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "[player.puppet] slams [pig] onto the meat spike!")
|
|
|
|
var/obj/structure/lattice/lattice = teleport_to_first(player, /obj/structure/lattice)
|
|
var/turf/space_turf = get_turf(lattice)
|
|
player.spawn_fast_tool(/obj/item/wirecutters)
|
|
player.click_on(lattice)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "Slicing [lattice.name] joints...")
|
|
player.drop_held_item()
|
|
player.spawn_fast_tool(/obj/item/stack/rods/fifty)
|
|
player.click_on(space_turf)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "Constructing support lattice...")
|
|
TEST_ASSERT_NOTNULL(locate(/obj/structure/lattice) in space_turf, "Could not find constructed lattice")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/loom/loom = teleport_to_first(player, /obj/structure/loom)
|
|
loom.disassemble_speed = 0
|
|
var/obj/item/stack/sheet/cotton/cotton = player.spawn_obj_in_hand(/obj/item/stack/sheet/cotton)
|
|
cotton.amount = 4
|
|
cotton.pull_effort = 0
|
|
player.click_on(loom)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You weave [cotton] into a workable fabric.")
|
|
player.spawn_fast_tool(/obj/item/crowbar)
|
|
player.click_on(loom)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You dismantle [loom]")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/mineral_door/iron/door = teleport_to_first(player, /obj/structure/mineral_door/iron)
|
|
player.spawn_fast_tool(/obj/item/pickaxe)
|
|
player.click_on(door)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You finished digging.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/mirror = teleport_to_first(player, /obj/structure/mirror/magic)
|
|
var/starting_integrity = mirror.obj_integrity
|
|
player.spawn_fast_tool(/obj/item/weldingtool)
|
|
player.set_intent(INTENT_HARM)
|
|
player.click_on(mirror)
|
|
TEST_ASSERT_EQUAL(mirror.obj_integrity, starting_integrity, "magic mirror took damage")
|
|
player.drop_held_item()
|
|
player.set_intent(INTENT_HELP)
|
|
|
|
var/obj/noticeboard = teleport_to_first(player, /obj/structure/noticeboard)
|
|
player.spawn_obj_in_hand(/obj/item/paper)
|
|
player.click_on(noticeboard)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You pin the paper to the noticeboard.")
|
|
|
|
var/obj/structure/reflector/reflector = teleport_to_first(player, /obj/structure/reflector)
|
|
var/turf/T = get_turf(reflector)
|
|
player.spawn_fast_tool(/obj/item/stack/sheet/glass/fifty)
|
|
player.click_on(reflector)
|
|
// no chat messages for this construction apparently
|
|
TEST_ASSERT_NOTNULL(locate(/obj/structure/reflector/single) in T, "could not find constructed reflector")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/safe/safe = teleport_to_first(player, /obj/structure/safe)
|
|
safe.open = TRUE
|
|
var/obj/disk = player.spawn_obj_in_hand(/obj/item/disk/design_disk)
|
|
player.click_on(safe)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You put [disk] in [safe].")
|
|
safe.open = FALSE
|
|
var/obj/gun = player.spawn_obj_in_hand(/obj/item/gun/energy/laser)
|
|
player.click_on(safe)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You can't put [gun] into the safe while it is closed!")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/shelf/shelf = teleport_to_first(player, /obj/structure/shelf)
|
|
var/obj/box = player.spawn_obj_in_hand(/obj/item/storage/box/beakers)
|
|
player.click_on(shelf, "icon-x=8;icon-y=10")
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You place [box] on [shelf].")
|
|
var/obj/wrench = player.spawn_fast_tool(/obj/item/wrench)
|
|
player.click_on(shelf, "icon-x=24;icon-y=10")
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You place [wrench] on [shelf].")
|
|
player.spawn_fast_tool(/obj/item/wrench)
|
|
player.set_intent(INTENT_HARM)
|
|
player.click_on(shelf)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You disassemble [shelf].")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/statue/hop_statue = teleport_to_first(player, /obj/structure/statue/gold/hop)
|
|
player.spawn_fast_tool(/obj/item/gun/energy/plasmacutter)
|
|
player.click_on(hop_statue)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You slice apart [hop_statue].")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/snowman/built/snowman = teleport_to_first(player, /obj/structure/snowman/built)
|
|
var/old_integrity = snowman.obj_integrity
|
|
player.spawn_fast_tool(/obj/item/weldingtool)
|
|
player.set_intent(INTENT_HARM)
|
|
player.click_on(snowman)
|
|
TEST_ASSERT_NOTEQUAL(snowman.obj_integrity, old_integrity, "snowman didn't take damage")
|
|
player.drop_held_item()
|
|
player.spawn_obj_in_hand(/obj/item/snowball)
|
|
player.set_intent(INTENT_HELP)
|
|
player.click_on(snowman)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You patch some of the damage on [snowman]")
|
|
|
|
var/obj/structure/bed/roller/roller_bed = teleport_to_first(player, /obj/structure/bed/roller)
|
|
player.spawn_obj_in_hand(/obj/item/roller_holder)
|
|
player.click_on(roller_bed)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You collapse \the [roller_bed].")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/big_delivery/delivery = teleport_to_first(player, /obj/structure/big_delivery)
|
|
var/obj/item/dest_tagger/tagger = player.spawn_obj_in_hand(/obj/item/dest_tagger)
|
|
tagger.currTag = 2
|
|
player.click_on(delivery)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "*CARGO BAY*")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/windoor_assembly/windoor_assembly = teleport_to_first(player, /obj/structure/windoor_assembly)
|
|
player.spawn_fast_tool(/obj/item/wrench)
|
|
player.click_on(windoor_assembly)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You secure the windoor assembly.")
|
|
player.drop_held_item()
|
|
player.spawn_fast_tool(/obj/item/stack/cable_coil)
|
|
player.click_on(windoor_assembly)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You wire the windoor.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/crate = teleport_to_first(player, /obj/structure/closet/crate/secure/loot)
|
|
player.spawn_fast_tool(/obj/item/multitool)
|
|
player.click_on(crate)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "Anti-Tamper Bomb will activate after 10 failed access attempts")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/flora/ash/ashflora = teleport_to_first(player, /obj/structure/flora/ash)
|
|
ashflora.harvest_time = 0
|
|
ashflora.harvest_amount_high = 1 // so we always get the same chat message
|
|
player.spawn_fast_tool(/obj/item/kitchen/knife)
|
|
player.click_on(ashflora)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You pick a mushroom, but fail to collect many shavings from its cap.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/orebox = teleport_to_first(player, /obj/structure/ore_box)
|
|
var/obj/item/storage/ore_bag = player.spawn_fast_tool(/obj/item/storage/bag/ore)
|
|
var/obj/item/stack/ore/iron/iron_ore = new(player.puppet.loc)
|
|
iron_ore.amount = 10
|
|
ore_bag.handle_item_insertion(iron_ore)
|
|
player.click_on(orebox)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You empty the satchel into the box.")
|
|
player.drop_held_item()
|
|
|
|
var/obj/filing_cabinet = teleport_to_first(player, /obj/structure/filingcabinet)
|
|
var/obj/paper = player.spawn_fast_tool(/obj/item/paper)
|
|
player.click_on(filing_cabinet)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You put [paper.name] in [filing_cabinet].")
|
|
|
|
var/obj/cable = teleport_to_first(player, /obj/structure/cable, dir = EAST)
|
|
player.spawn_fast_tool(/obj/item/stack/cable_coil/ten)
|
|
T = get_turf(cable)
|
|
TEST_ASSERT_EQUAL(length(T.contents), 1, "couldn't find one cable on tile")
|
|
player.click_on(get_turf(cable))
|
|
TEST_ASSERT_EQUAL(length(T.contents), 2, "didn't add cable to tile")
|
|
player.drop_held_item()
|
|
|
|
var/obj/structure/fermenting_barrel/barrel = teleport_to_first(player, /obj/structure/fermenting_barrel)
|
|
var/obj/item/reagent_containers/glass/bucket/bucket = player.spawn_obj_in_hand(/obj/item/reagent_containers/glass/bucket)
|
|
barrel.reagents.add_reagent("beer", 300)
|
|
player.click_on(barrel)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You fill [bucket] with 20 units of the contents of [barrel]")
|
|
|
|
var/obj/water_cooler = teleport_to_first(player, /obj/structure/reagent_dispensers/water_cooler)
|
|
player.click_on(water_cooler)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "You fill [bucket] with 20 units of the contents of [water_cooler]")
|
|
player.drop_held_item()
|
|
|
|
crate = teleport_to_first(player, /obj/structure/closet/crate/sci)
|
|
player.spawn_fast_tool(/obj/item/stack/package_wrap)
|
|
player.click_on(crate)
|
|
TEST_ASSERT_LAST_CHATLOG(player, "[player.puppet] wraps [crate]")
|