mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user