Skip to content

Commit

Permalink
MAP: New ruin - Crashed Heron (CeladonSS13#1217)
Browse files Browse the repository at this point in the history
* Делаем новую руину. Тяжелую руину. О падении с небес Херона

* Добавляем атласы с новыми мобами

* Берем и редачим голиафа под магму

* Добавляем новых мобов. Лут.

* Все, готово. Мобы раставлены

* Удаляем дупликат

* Меняем стоимость руине

* Оставляем запись о руине

* Добавлены записи

* Update lavaland_crashed_heron.dmm

Вырезаем РНД платы

Signed-off-by: MrCat15352 <[email protected]>

* Update lavaland_crashed_heron.dmm

Обновляем Марадера

Signed-off-by: MrCat15352 <[email protected]>

* Добавляем прикольный спавнер магма черепов

* Ремапим карту. Заменен поломаный вендиго на другого босса

---------

Signed-off-by: MrCat15352 <[email protected]>
  • Loading branch information
MrCat15352 authored Dec 15, 2024
1 parent af39da2 commit 779c037
Show file tree
Hide file tree
Showing 11 changed files with 25,062 additions and 7 deletions.
24,734 changes: 24,734 additions & 0 deletions _maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_crashed_heron.dmm

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions _maps/_mod_celadon/map_catalogue.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt"
Size = (x = 33)(y = 56)(z = 1)
Tags = "Minor Combat Challenge", "Medium Loot", "Lava"

File Name = "_maps\_mod_celadon\RandomRuins\LavaRuins\lavaland_crashed_heron.dmm"
Size = (x = 121)(y = 75)(z = 1)
Tags = "Boss Combat Challenge", "Major Loot", "Ship", "Lava", "Hardcore", "Challenge"

ReebeRuins:
File Name = "_maps\RandomRuins\Ruins\reebe_swarmers.dmm"
Size = (x = 20)(y = 20)(z = 1)
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
8 changes: 8 additions & 0 deletions mod_celadon/maps/code/ruins/ruin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,14 @@
description = "A Nanotrasen genetic research facility, abandoned and ripe for looting. Whats that goo over there?"
suffix = "lavaland_surface_codelab.dmm"

/datum/map_template/ruin/lavaland/falling_heron
name = "Crashed Heron"
id = "crashed_heron"
description = "A crashed nanotrasen ship Heron-class. It would seem that it's crew died a while ago."
suffix = "lavaland_crashed_heron.dmm"
cost = 5
allow_duplicates = FALSE

// ///
// Rockplanet ruin ///
// ///
Expand Down
2 changes: 2 additions & 0 deletions mod_celadon/mobs/_mobs.dme
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include "code/bots.dm"
#include "code/burrows.dm"
#include "code/iriska.dm"
#include "code/magma_goliath.dm"
#include "code/magma_legion.dm"

#include "code/pets/ada.dm"
#include "code/pets/alta.dm"
Expand Down
177 changes: 177 additions & 0 deletions mod_celadon/mobs/code/magma_goliath.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
/mob/living/simple_animal/hostile/asteroid/goliath/magma
name = "magma goliath"
desc = "Огромный, закованный в броню, магмовый зверь с длинными отростками, выходящие из его спины."
icon = 'mod_celadon/_storge_icons/icons/mobs/goliaph_magma.dmi'
icon_state = "goliath"
icon_living = "goliath"
icon_aggro = "goliath"
icon_dead = "goliath_dead"
throw_message = "does nothing to the tough hide of the"
pre_attack_icon = "goliath_preattack"
faction = list("magma")
// mob_trophy = /obj/item/mob_trophy/goliath_tentacle
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/ore/silver = 10)
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2)
loot = list(/obj/item/stack/ore/hellstone)
stat_attack = UNCONSCIOUS
robust_searching = 1
move_to_delay = 20
speed = 3
ranged_cooldown_time = 240
tentacle_type = /obj/effect/temp_visual/goliath_tentacle/magma
armor = list("melee" = 20, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
maxHealth = 100
health = 100
mob_biotypes = MOB_MINERAL | MOB_BEAST
var/saddled = FALSE
var/charging = FALSE
var/revving_charge = FALSE
var/charge_range = 7
var/tent_range = 3

/mob/living/simple_animal/hostile/asteroid/goliath/magma/proc/charge(atom/chargeat = target, delay = 10, chargepast = 2)
if(!chargeat)
return
var/chargeturf = get_turf(chargeat)
if(!chargeturf)
return
var/dir = get_dir(src, chargeturf)
var/turf/T = get_ranged_target_turf(chargeturf, dir, chargepast)
if(!T)
return
charging = TRUE
revving_charge = TRUE
walk(src, 0)
setDir(dir)
var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src)
animate(D, alpha = 0, color = "#ffa600", transform = matrix()*2, time = 3)
SLEEP_CHECK_DEATH(delay)
revving_charge = FALSE
var/movespeed = 0.8
walk_towards(src, T, movespeed)
SLEEP_CHECK_DEATH(get_dist(src, T) * movespeed)
walk(src, 0) // cancel the movement
charging = FALSE

/mob/living/simple_animal/hostile/asteroid/goliath/magma/Bump(atom/A)
. = ..()
if(charging && isclosedturf(A)) // We slammed into a wall while charging
wall_slam(A)

/mob/living/simple_animal/hostile/asteroid/goliath/magma/proc/wall_slam(atom/A)
charging = FALSE
Stun(100, TRUE, TRUE)
walk(src, 0) // Cancel the movement
if(ismineralturf(A))
var/turf/closed/mineral/M = A
if(M.mineralAmt < 7)
M.mineralAmt++

/mob/living/simple_animal/hostile/asteroid/goliath/magma/OpenFire()
var/tturf = get_turf(target)
var/dist = get_dist(src, target)
if(!isturf(tturf) || !isliving(target))
return
if(dist <= tent_range)
visible_message("<span class='warning'>[src] digs it's tentacles under [target]!</span>")
new tentacle_type(tturf, src ,TRUE)
ranged_cooldown = world.time + ranged_cooldown_time
icon_state = icon_aggro
pre_attack = 0
else if(dist <= charge_range && can_charge) //Screen range check, so you can't get charged offscreen
charge()

/mob/living/simple_animal/hostile/asteroid/goliath/magma/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/saddle) && !saddled)
if(tame && do_after(user, 55, target=src))
user.visible_message("<span class='notice'>You manage to put [O] on [src], you can now ride [p_them()].</span>")
qdel(O)
saddled = TRUE
can_buckle = TRUE
buckle_lying = FALSE
add_overlay("goliath_saddled")
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 8), TEXT_SOUTH = list(0, 8), TEXT_EAST = list(-2, 8), TEXT_WEST = list(2, 8)))
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
D.set_vehicle_dir_layer(WEST, OBJ_LAYER)
D.drive_verb = "ride"
else
user.visible_message("<span class='warning'>[src] is rocking around! You can't put the saddle on!</span>")
return
..()

//tentacles
GLOBAL_LIST_INIT(onecardinal, NORTH) // Патерн атаки для одного щупальца

/obj/effect/temp_visual/goliath_tentacle/magma
name = "goliath tentacle"
icon = 'mod_celadon/_storge_icons/icons/mobs/legion_magma.dmi'
icon_state = "Goliath_tentacle_wiggle"
layer = BELOW_MOB_LAYER
wiggle = "Goliath_tentacle_spawn"
retract = "Goliath_tentacle_retract"
difficulty = 3

/obj/effect/temp_visual/goliath_tentacle/magma/Initialize(mapload, mob/living/new_spawner,recursive = FALSE)
. = ..()
flick(wiggle,src)
for(var/obj/effect/temp_visual/goliath_tentacle/magma/T in loc)
if(T != src)
return INITIALIZE_HINT_QDEL
if(!QDELETED(new_spawner))
spawner = new_spawner
if(ismineralturf(loc))
var/turf/closed/mineral/M = loc
M.gets_drilled()
deltimer(timerid)
timerid = addtimer(CALLBACK(src, PROC_REF(tripanim)), 7, TIMER_STOPPABLE)
if(!recursive)
return
var/list/directions = get_directions()
for(var/i in 1 to difficulty)
var/spawndir = pick_n_take(directions)
var/turf/T = get_step(src, spawndir)
if(T)
new type(T, spawner)

/obj/effect/temp_visual/goliath_tentacle/magma/get_directions()
switch(rand(1,4))
if(1)
return GLOB.diagonals.Copy()
if(2)
return GLOB.cardinals.Copy()
if(3)
return GLOB.cardinals_multiz.Copy()
if(4)
return GLOB.onecardinal.Copy()


/obj/effect/temp_visual/goliath_tentacle/magma/tripanim()
deltimer(timerid)
timerid = addtimer(CALLBACK(src, PROC_REF(trip)), 3, TIMER_STOPPABLE)

/obj/effect/temp_visual/goliath_tentacle/magma/trip()
var/latched = FALSE
for(var/mob/living/L in loc)
if((!QDELETED(spawner) && spawner.faction_check_mob(L)) || L.stat == DEAD)
continue
visible_message("<span class='danger'>[src] wraps a mass of magma tentacles around [L]!</span>")
on_hit(L)
latched = TRUE
if(!latched)
retract()
else
deltimer(timerid)
timerid = addtimer(CALLBACK(src, PROC_REF(retract)), 10, TIMER_STOPPABLE)

/obj/effect/temp_visual/goliath_tentacle/magma/on_hit(mob/living/target)
target.apply_damage(rand(5,20), BURN, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))

/obj/effect/temp_visual/goliath_tentacle/magma/retract()
icon_state = "marker"
flick(retract,src)
deltimer(timerid)
timerid = QDEL_IN(src, 7)
new /turf/open/lava/smooth(loc)
118 changes: 118 additions & 0 deletions mod_celadon/mobs/code/magma_legion.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
//Legion
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/magma
name = "magma legion"
desc = "You can still see what was once a human under the shifting mass of corruption."
icon = 'mod_celadon/_storge_icons/icons/mobs/legion_magma.dmi'
icon_state = "legion"
icon_living = "legion"
icon_aggro = "legion"
icon_dead = "legion"
icon_gib = "syndicate_gib"
mob_biotypes = MOB_MINERAL | MOB_BEAST
mouse_opacity = MOUSE_OPACITY_ICON
obj_damage = 80
melee_damage_lower = 25
melee_damage_upper = 25
maxHealth = 85
health = 85
attack_verb_continuous = "lashes out at"
attack_verb_simple = "lash out at"
speak_emote = list("echoes")
attack_sound = 'sound/weapons/pierce.ogg'
throw_message = "bounces harmlessly off of"
armor = list("melee" = 60, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
loot = list(/obj/item/stack/ore/hellstone)
brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma
del_on_death = 1
stat_attack = HARD_CRIT
robust_searching = 1
faction = list("magma")
speed = 3
move_to_delay = 10
ranged_cooldown = 10
ranged_cooldown_time = 20

/mob/living/simple_animal/hostile/asteroid/hivelord/legion/magma/death(gibbed)
move_force = MOVE_FORCE_DEFAULT
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
if(prob(5))
new /obj/item/crusher_trophy/magma_skull/magma(loc)
visible_message("<span class='warning'>One of the [src]'s skulls looks intact.</span>")
qdel(src)

/mob/living/simple_animal/hostile/asteroid/hivelord/legion/magma/death(gibbed)
explosion(src, 0, 0, 2, 3, TRUE, flame_range = 3)
..(gibbed)

//Legion skull
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma
name = "legion"
desc = "One of many."
icon = 'mod_celadon/_storge_icons/icons/mobs/legion_magma.dmi'
icon_state = "legion_head"
icon_living = "legion_head"
icon_aggro = "legion_head"
icon_dead = "legion_head"
icon_gib = "syndicate_gib"
friendly_verb_continuous = "buzzes near"
friendly_verb_simple = "buzz near"
vision_range = 10
maxHealth = 5
health = 5
harm_intent_damage = 5
melee_damage_lower = 5
melee_damage_upper = 5
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
speak_emote = list("echoes")
attack_sound = 'mod_celadon/_storge_sounds/sound/effects/boom_small.ogg'
throw_message = "is shrugged off by"
del_on_death = TRUE
stat_attack = SOFT_CRIT
robust_searching = 1
can_infest_dead = FALSE
speed = 3
move_to_delay = 10
melee_damage_type = BURN
faction = list("magma")

/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma/death(gibbed)
explosion(src, 0, 0, 1, 1, TRUE, flame_range = 1)
return ..()

/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma/Life()
return

/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma/infest(mob/living/carbon/human/H)
return

/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma/on_hit(mob/living/target)
target.apply_damage(rand(melee_damage_lower, melee_damage_upper), BURN)

//Trophey legion
/obj/item/crusher_trophy/magma_skull/magma
name = "magma skull"
desc = "A dead and lifeless magma skull. Could be used in crafting."
icon = 'mod_celadon/_storge_icons/icons/mobs/legion_magma.dmi'
icon_state = "legion_skull"
denied_type = /obj/item/crusher_trophy/magma_skull/magma
bonus_value = 10

/obj/item/crusher_trophy/magma_skull/magma/examine(mob/user)
. = ..()
. += "<span class='notice'>Suitable as a trophy for a proto-kinetic crusher.</span>"

/obj/item/crusher_trophy/magma_skull/magma/effect_desc()
return "a kinetic crusher to armor penetration +<b>[bonus_value + 5]</b> up"

/obj/item/crusher_trophy/magma_skull/magma/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.armour_penetration += bonus_value

/obj/item/crusher_trophy/magma_skull/magma/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.armour_penetration -= bonus_value

15 changes: 8 additions & 7 deletions mod_celadon/structures/_structures.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@

#include "_structures.dm"

#include "code/obj/decals_indestructible.dm"
#include "code/structures.dm"
#include "code/logo.dm"
#include "code/tech.dm"
#include "code/stairs.dm"
#include "code/freezer.dm"
#include "code/marble.dm"
#include "code/glass.dm"
#include "code/logo.dm"
#include "code/marble.dm"
#include "code/stairs.dm"
#include "code/structures.dm"
#include "code/tech.dm"
#include "code/walls.dm"
#include "code/windows.dm"

#include "code/obj/barricades.dm"
#include "code/obj/decals_indestructible.dm"
#include "code/obj/doors.dm"
#include "code/obj/table.dm"
#include "code/obj/floor.dm"
#include "code/obj/gun.dm"
#include "code/obj/spawners.dm"
#include "code/obj/table.dm"

#endif
11 changes: 11 additions & 0 deletions mod_celadon/structures/code/obj/spawners.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
LIVE_MINE_HELPER(proximity/spawner/magma_skull)

/obj/item/mine/proximity/spawner/magma_skull
name = "\improper magma skull"
desc = "This is magma skull"
spawn_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/magma
spawn_number = 1

/obj/effect/spawner/minefield/magma_skull
name = "magma skull field spawner"
minetype = /obj/item/mine/proximity/spawner/magma_skull/live

0 comments on commit 779c037

Please sign in to comment.