mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-13 00:47:31 +01:00
4ecb0bc21c
Repaths obj/machinery to obj/structure/machinery. **Note for reviewers:** the only meaningful changed code exists within **code/game/objects/structures.dm** and **code/game/objects/structures/_machinery.dm**, largely concerning damage procs. With the exception of moving airlock defines to their own file, ALL OTHER CHANGES ARE STRICTLY PATH CHANGES. Objects, _categorically_, are largely divided between those you can hold in your hand/inventory and those you can't. Machinery objects are already subtypes of Structures behaviorally, this PR just makes their pathing reflect that, and allows for future work (tool actions, more health/destruction functionality) to be developed without unnecessary code duplication. I have tested this PR by loading up the Horizon and dismantling various machines and structures with tools, shooting guns of various types throughout the ship, and detonating a bunch of explosions throughout the ship.
63 lines
2.3 KiB
Plaintext
63 lines
2.3 KiB
Plaintext
/datum/event/brand_intelligence
|
|
announceWhen = 21
|
|
endWhen = 1000 //Ends when all vending machines are subverted anyway.
|
|
|
|
var/list/obj/structure/machinery/vending/vendingMachines = list()
|
|
var/list/obj/structure/machinery/vending/infectedVendingMachines = list()
|
|
var/obj/structure/machinery/vending/originMachine
|
|
|
|
|
|
/datum/event/brand_intelligence/announce()
|
|
command_announcement.Announce("Rampant brand intelligence has been detected aboard the [location_name()]. The origin is believed to be \a \"[initial(originMachine.name)]\" type. Infection of other machines is likely.", "[station_name()] Machine Monitoring" , new_sound = 'sound/AI/brandintelligence.ogg', zlevels = affecting_z)
|
|
|
|
|
|
/datum/event/brand_intelligence/start()
|
|
..()
|
|
|
|
for(var/obj/structure/machinery/vending/V in SSmachinery.processing)
|
|
if(!is_station_level(V.z)) continue
|
|
vendingMachines.Add(V)
|
|
|
|
if(!vendingMachines.len)
|
|
kill(TRUE)
|
|
return
|
|
|
|
originMachine = pick(vendingMachines)
|
|
vendingMachines.Remove(originMachine)
|
|
originMachine.shut_up = 0
|
|
originMachine.shoot_inventory = 1
|
|
|
|
|
|
/datum/event/brand_intelligence/tick()
|
|
if(!vendingMachines.len || !originMachine || originMachine.shut_up) //if every machine is infected, or if the original vending machine is missing or has it's voice switch flipped
|
|
end()
|
|
kill()
|
|
return
|
|
|
|
if(IsMultiple(activeFor, 5))
|
|
if(prob(15))
|
|
var/obj/structure/machinery/vending/infectedMachine = pick(vendingMachines)
|
|
vendingMachines.Remove(infectedMachine)
|
|
infectedVendingMachines.Add(infectedMachine)
|
|
infectedMachine.shut_up = 0
|
|
infectedMachine.shoot_inventory = 1
|
|
|
|
if(IsMultiple(activeFor, 12))
|
|
originMachine.speak(pick(
|
|
"Try our aggressive new marketing strategies!", \
|
|
"You should buy products to feed your lifestyle obsession!", \
|
|
"Consume!", \
|
|
"Your money can buy happiness!", \
|
|
"Engage direct marketing!", \
|
|
"Advertising is legalized lying! But don't let that put you off our great deals!", \
|
|
"You don't want to buy anything? Yeah, well I didn't want to buy your mom either."\
|
|
)
|
|
)
|
|
|
|
/datum/event/brand_intelligence/end(var/faked)
|
|
..()
|
|
|
|
for(var/obj/structure/machinery/vending/infectedMachine in infectedVendingMachines)
|
|
infectedMachine.shut_up = 1
|
|
infectedMachine.shoot_inventory = 0
|