mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 05:07:51 +01:00
sans work
This commit is contained in:
@@ -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("<b>[src]</b> 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("<span class='danger'>\the [src] knocks down \the [L]!</span>")
|
||||
|
||||
//
|
||||
// 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("<span class='danger'>\the [src] knocks down \the [L]!</span>")
|
||||
*/
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
"}
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
//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)
|
||||
|
||||
//
|
||||
@@ -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
|
||||
"}
|
||||
|
||||
+1
-1
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user