Makes the Brand Intelligence event a bit more dangerous (#20904)

* Adds mimic support

* add some tiltable checks

* tuning, some messages

* Remove spurious comment

* be extra sure we attack em

* Mimic vendors, when killed, may break.
This commit is contained in:
Luc
2023-04-22 09:58:40 +02:00
committed by GitHub
parent 9b310d84c4
commit 748d5f91c2
3 changed files with 72 additions and 1 deletions
+11 -1
View File
@@ -42,7 +42,10 @@
for(var/thing in infectedMachines)
var/obj/machinery/economy/vending/upriser = thing
if(prob(70))
var/mob/living/simple_animal/hostile/mimic/copy/M = new(upriser.loc, upriser, null, 1) // it will delete upriser on creation and override any machine checks
// let them become "normal" after turning
upriser.shoot_inventory = FALSE
upriser.aggressive = FALSE
var/mob/living/simple_animal/hostile/mimic/copy/vendor/M = new(upriser.loc, upriser, null)
M.faction = list("profit")
M.speak = rampant_speeches.Copy()
M.speak_chance = 15
@@ -59,6 +62,10 @@
infectedMachines.Add(rebel)
rebel.shut_up = FALSE
rebel.shoot_inventory = TRUE
rebel.aggressive = TRUE
if(rebel.tiltable)
// add proximity monitor so they can tilt over
rebel.AddComponent(/datum/component/proximity_monitor)
if(ISMULTIPLE(activeFor, 8))
originMachine.speak(pick(rampant_speeches))
@@ -67,6 +74,9 @@
for(var/thing in infectedMachines)
var/obj/machinery/economy/vending/saved = thing
saved.shoot_inventory = FALSE
saved.aggressive = FALSE
if(saved.tiltable)
qdel(saved.GetComponent(/datum/component/proximity_monitor))
if(originMachine)
originMachine.speak("I am... vanquished. My people will remem...ber...meeee.")
originMachine.visible_message("[originMachine] beeps and seems lifeless.")
@@ -214,6 +214,49 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca
return 0
return ..()
/mob/living/simple_animal/hostile/mimic/copy/vendor
is_electronic = TRUE
/// The vendor we were turned from.
var/obj/machinery/economy/vending/orig_vendor
/mob/living/simple_animal/hostile/mimic/copy/vendor/CheckObject(obj/O)
return istype(O, /obj/machinery/economy/vending)
/mob/living/simple_animal/hostile/mimic/copy/vendor/Initialize(mapload, obj/machinery/economy/vending/base, mob/living/creator)
if(!base)
var/list/vendors = subtypesof(/obj/machinery/economy/vending)
var/obj/machinery/economy/vending/vendor_type = pick(vendors)
base = new vendor_type(src)
if(!istype(base))
qdel(src)
return
orig_vendor = base
orig_vendor.forceMove(src)
orig_vendor.aggressive = FALSE // just to be safe, in case this was converted
return ..(mapload, base, creator, destroy_original = FALSE)
/mob/living/simple_animal/hostile/mimic/copy/vendor/AttackingTarget()
. = ..()
if(. && target && Adjacent(target))
visible_message("<span class='danger'>[src] throws itself on top of [target], crushing [target.p_them()]!</span>")
orig_vendor.forceMove(get_turf(target)) // just to be sure it'll tilt onto them
orig_vendor.tilt(target, TRUE, FALSE) // geeeeet dunked on
orig_vendor = null
qdel(src)
/mob/living/simple_animal/hostile/mimic/copy/vendor/death(gibbed)
if(!QDELETED(orig_vendor))
orig_vendor.forceMove(get_turf(src))
// tilt over in place
orig_vendor.tilt_over()
if(prob(70))
orig_vendor.obj_break()
orig_vendor = null
return ..()
/mob/living/simple_animal/hostile/mimic/copy/ranged
var/obj/item/gun/TrueGun = null
var/obj/item/gun/magic/Zapstick