diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm deleted file mode 100644 index c75560534fa..00000000000 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm +++ /dev/null @@ -1,244 +0,0 @@ -// -// Abstract Class -// - -/mob/living/simple_mob/animal/space/mimic - name = "crate" - desc = "A rectangular steel crate." - - icon_state = "crate" - icon_living = "crate" - icon = 'icons/obj/storage.dmi' - - faction = "mimic" - - maxHealth = 250 - health = 250 - //speed = 4 no idea what this is, conflicts with new AI update. - movement_cooldown = 10 //slow crate. - - response_help = "touches" - response_disarm = "pushes" - response_harm = "hits" - - harm_intent_damage = 5 - melee_damage_lower = 4 - melee_damage_upper = 6 - attacktext = list("attacked") - attack_sound = 'sound/weapons/bite.ogg' - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - - say_list_type = /datum/say_list/mimic - ai_holder_type = /datum/ai_holder/mimic - - var/knockdown_chance = 15 //Stubbing your toe on furniture hurts. - - showvoreprefs = 0 //VOREStation Edit - Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. - -/datum/say_list/mimic - say_got_target = list("growls") - -/datum/ai_holder/mimic - wander = FALSE - hostile = TRUE - threaten = TRUE - threaten_timeout = 5 SECONDS - threaten_delay = 1 SECONDS //not a threat, more of a delay. - -/mob/living/simple_mob/animal/space/carp/apply_melee_effects(var/atom/A) - if(isliving(A)) - var/mob/living/L = A - if(prob(knockdown_chance)) - L.Weaken(3) - L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) - -/* should be covered by my "growls" say thing, but keeping it just in case. -/mob/living/simple_mob/animal/space/mimic/set_target() - . = ..() - if(.) - audible_emote("growls at [.]") -*/ -/mob/living/simple_mob/animal/space/mimic/death() - ..() - qdel(src) - -/mob/living/simple_mob/animal/space/mimic/will_show_tooltip() - return FALSE - -/mob/living/simple_mob/animal/space/mimic/death() - var/obj/structure/closet/crate/C = new(get_turf(src)) - // Put loot in crate - for(var/obj/O in src) - if(isbelly(O)) //VOREStation edit - continue - O.forceMove(C) - ..() - -/mob/living/simple_mob/animal/space/mimic/Initialize() - . = ..() - for(var/obj/item/I in loc) - I.forceMove(src) -/* I honestly have no idea what's happening down there so I'm just taking the essentials and yeeting. -// -// Crate Mimic -// - -// Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. -/mob/living/simple_mob/animal/space/mimic/crate - - attacktext = list("bitten") - -// stop_automated_movement = 1 we don't need these -// wander = 0 - var/attempt_open = 0 - -// Pickup loot -/mob/living/simple_mob/animal/space/mimic/crate/Initialize() - . = ..() - for(var/obj/item/I in loc) - I.forceMove(src) -/* I can't find an equivilant to this, don't know why we really have it even so... -/mob/living/simple_mob/animal/space/mimic/crate/DestroySurroundings() - ..() - if(prob(90)) - icon_state = "[initial(icon_state)]open" - else - icon_state = initial(icon_state) -*/ -/mob/living/simple_mob/animal/space/mimic/crate/ListTargets() - if(attempt_open) - return ..() - else - return ..(1) - -/mob/living/simple_mob/animal/space/mimic/crate/set_target() - . = ..() - if(.) - trigger() - -/mob/living/simple_mob/animal/space/mimic/crate/PunchTarget() - . = ..() - if(.) - icon_state = initial(icon_state) - -/mob/living/simple_mob/animal/space/mimic/crate/proc/trigger() - if(!attempt_open) - visible_message("[src] starts to move!") - attempt_open = 1 - -/mob/living/simple_mob/animal/space/mimic/crate/adjustBruteLoss(var/damage) - trigger() - ..(damage) - -/mob/living/simple_mob/animal/space/mimic/crate/LoseTarget() - ..() - icon_state = initial(icon_state) - -/mob/living/simple_mob/animal/space/mimic/crate/LostTarget() - ..() - icon_state = initial(icon_state) - -/mob/living/simple_mob/animal/space/mimic/crate/death() - var/obj/structure/closet/crate/C = new(get_turf(src)) - // Put loot in crate - for(var/obj/O in src) - if(isbelly(O)) //VOREStation edit - continue - O.forceMove(C) - ..() - -/mob/living/simple_mob/animal/space/mimic/crate/PunchTarget() - . =..() - var/mob/living/L = . - if(istype(L)) - if(prob(15)) - L.Weaken(2) - L.visible_message("\the [src] knocks down \the [L]!") - -// -// Copy Mimic -// - -var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate) - -/mob/living/simple_mob/animal/space/mimic/copy - - health = 100 - maxHealth = 100 - var/mob/living/creator = null // the creator - var/destroy_objects = 0 - var/knockdown_people = 0 - -/mob/living/simple_mob/animal/space/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator) - ..(loc) - CopyObject(copy, creator) - -/mob/living/simple_mob/animal/space/mimic/copy/death() - - for(var/atom/movable/M in src) - if(isbelly(M)) //VOREStation edit - continue - M.forceMove(get_turf(src)) - ..() - -/mob/living/simple_mob/animal/space/mimic/copy/ListTargets() - // Return a list of targets that isn't the creator - . = ..() - return . - creator - -/mob/living/simple_mob/animal/space/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator) - - if((istype(O, /obj/item) || istype(O, /obj/structure)) && !is_type_in_list(O, protected_objects)) - - O.forceMove(src) - name = O.name - desc = O.desc - icon = O.icon - icon_state = O.icon_state - icon_living = icon_state - - if(istype(O, /obj/structure)) - health = (anchored * 50) + 50 - destroy_objects = 1 - if(O.density && O.anchored) - knockdown_people = 1 - melee_damage_lower *= 2 - melee_damage_upper *= 2 - else if(istype(O, /obj/item)) - var/obj/item/I = O - health = 15 * I.w_class - melee_damage_lower = 2 + I.force - melee_damage_upper = 2 + I.force - move_to_delay = 2 * I.w_class - - maxHealth = health - if(creator) - src.creator = creator - faction = "\ref[creator]" // very unique - return 1 - return - -/mob/living/simple_mob/animal/space/mimic/copy/DestroySurroundings() - if(destroy_objects) - ..() - -/mob/living/simple_mob/animal/space/mimic/copy/PunchTarget() - . =..() - if(knockdown_people) - var/mob/living/L = . - if(istype(L)) - if(prob(15)) - L.Weaken(1) - L.visible_message("\the [src] knocks down \the [L]!") -*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm new file mode 100644 index 00000000000..9c69e7d6216 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm @@ -0,0 +1,85 @@ +/obj/structure/closet/crate/mimic + + + + + + + + + + + + + + + + +/mob/living/simple_mob/vore/aggressive/mimic + name = "crate" + desc = "A rectangular steel crate." + + icon_state = "crate" + icon_living = "crate" + icon = 'icons/obj/storage.dmi' + + faction = "mimic" + + maxHealth = 250 + health = 250 + movement_cooldown = 5 + + response_help = "touches" + response_disarm = "pushes" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 4 + melee_damage_upper = 6 + attacktext = list("attacked") + attack_sound = 'sound/weapons/bite.ogg' + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + say_list_type = /datum/say_list/mimic + ai_holder_type = /datum/ai_holder/mimic + + var/obj/structure/closet/crate/real_crate + + var/knockdown_chance = 15 //Stubbing your toe on furniture hurts. + + showvoreprefs = 0 //Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. + +/datum/say_list/mimic + say_got_target = list("Grrowl!") + +/datum/ai_holder/mimic + wander = FALSE + hostile = TRUE + threaten = TRUE + threaten_timeout = 5 SECONDS + threaten_delay = 1 SECONDS //not a threat, more of a delay. + +/mob/living/simple_mob/vore/aggressive/mimic/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(knockdown_chance)) + L.Weaken(3) + L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) + +/mob/living/simple_mob/vore/aggressive/mimic/will_show_tooltip() + return FALSE + +/mob/living/simple_mob/vore/aggressive/mimic/death() + ..() + real_crate.forceMove(loc) + real_crate = null + qdel(src) \ No newline at end of file diff --git a/maps/tether/submaps/underdark_pois/_templates.dm b/maps/tether/submaps/underdark_pois/_templates.dm index cc1f8bfa696..1b8c5432ed8 100644 --- a/maps/tether/submaps/underdark_pois/_templates.dm +++ b/maps/tether/submaps/underdark_pois/_templates.dm @@ -12,6 +12,13 @@ name = "Underdark Hard Mob Spawn" mappath = 'hard_mob.dmm' cost = 15 + +/datum/map_template/underdark/underhall + name = "Underdark Golden Hall" + mappath = 'goldhall.dmm' + cost = 15 + allow_duplicates = FALSE + /* /datum/map_template/underdark/boss_mob name = "Underdark Boss Mob Spawn" diff --git a/maps/tether/submaps/underdark_pois/goldhall.dmm b/maps/tether/submaps/underdark_pois/goldhall.dmm new file mode 100644 index 00000000000..80296395a2d --- /dev/null +++ b/maps/tether/submaps/underdark_pois/goldhall.dmm @@ -0,0 +1,20 @@ +"a" = (/turf/simulated/wall/gold,/area/mine/explored/underdark) +"b" = (/turf/template_noop,/area/mine/explored/underdark) +"c" = (/obj/structure/window/basic/full,/turf/simulated/floor/tiled/kafel_full/yellow/virgo3b,/area/mine/explored/underdark) +"d" = (/turf/simulated/floor/tiled/kafel_full/yellow/virgo3b,/area/mine/explored/underdark) +"e" = (/obj/item/weapon/reagent_containers/food/condiment/ketchup,/turf/simulated/floor/tiled/kafel_full/yellow/virgo3b,/area/mine/explored/underdark) +"f" = (/obj/item/clothing/suit/storage/toggle/hoodie/blue,/obj/item/clothing/shoes/slippers_worn,/turf/simulated/floor/tiled/kafel_full/yellow/virgo3b,/area/mine/explored/underdark) +"g" = (/obj/effect/decal/remains,/obj/item/weapon/ore/bluespace_crystal,/turf/simulated/floor/tiled/kafel_full/yellow/virgo3b,/area/mine/explored/underdark) + +(1,1,1) = {" +aabbaaaccaaabba +bbbbbbddddbbbbb +abbbdaddddadbbb +bbbbdddddddddbb +bbbddddddedddbb +bbbdddddfgdddbb +bbddddbbddddddb +bddddabbbdadddd +bbdddddbbdddddb +bbbbaaabbaaabbb +"} diff --git a/maps/tether/submaps/underdark_pois/underdark_things.dm b/maps/tether/submaps/underdark_pois/underdark_things.dm index e3ef6ec09c4..9d4e2cba061 100644 --- a/maps/tether/submaps/underdark_pois/underdark_things.dm +++ b/maps/tether/submaps/underdark_pois/underdark_things.dm @@ -9,8 +9,6 @@ poison_chance = 20 - - // Underdark mob spawners /obj/tether_away_spawner/underdark_normal name = "Underdark Normal Spawner" @@ -46,4 +44,17 @@ //guard = 70 mobs_to_pick_from = list( /mob/living/simple_mob/vore/aggressive/dragon = 1 - ) \ No newline at end of file + ) + + + +//POI STUFF + +//Goldhall +VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/kafel_full/yellow) + +/obj/item/weapon/reagent_containers/food/condiment/ketchup/Initialize() + . = ..() + reagents.add_reagent("ketchup", 50) + +// \ No newline at end of file diff --git a/maps/tether/submaps/underdark_pois/vault1.dmm b/maps/tether/submaps/underdark_pois/vault1.dmm index c8e88764435..cbd9840121f 100644 --- a/maps/tether/submaps/underdark_pois/vault1.dmm +++ b/maps/tether/submaps/underdark_pois/vault1.dmm @@ -1,15 +1,13 @@ -"a" = (/turf/template_noop,/area/template_noop) +"a" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/virgo3b,/area/mine/explored/underdark) "b" = (/turf/simulated/wall/iron,/area/mine/explored/underdark) "c" = (/turf/template_noop,/area/mine/explored/underdark) "d" = (/turf/simulated/mineral/floor/virgo3b,/area/mine/explored/underdark) (1,1,1) = {" -aaaaaaaa -abbbbcca -abdddcca -abddddca -abddddba -abddddba -abbbbbba -aaaaaaaa +bbbbcc +baddcc +badddc +baaddb +baaadb +bbbbbb "} diff --git a/vorestation.dme b/vorestation.dme index df0bbee3415..821407c711c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2361,7 +2361,6 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\space\gaslamp_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose_vr.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\mimic_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\snake_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\worm.dm" @@ -2426,6 +2425,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\vore\hippo.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\horse.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\jelly.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\mimic.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\panther.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\rat.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\redpanda.dm"