Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,525 changes: 2,525 additions & 0 deletions _maps/RandomRuins/LavaRuins/ss1984/soviet.dmm

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion code/modules/mob/living/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,13 @@ NOVA EDIT REMOVAL END */
var/icon/mob_mask = icon(icon, icon_state)
if(get_cached_height() > ICON_SIZE_Y || get_cached_width() > ICON_SIZE_X)
var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite"
mob_mask = icon('icons/hud/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll
// Celadon REMOVAL mob_mask = icon('icons/hud/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll
// Celadon ADDITION START (robot_hare_boss)
if(health_doll_icon == "robothare")
mob_mask = icon('modular_celadon/modules/robot_hare_boss/icons/screen_gen.dmi', health_doll_icon_state)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было сделать модульно

/mob/living
var/health_doll_icon_file

По умолчанию = icons/hud/screen_gen.dmi
Для /mob/living/simple_animal/hostile/megafauna/robothare
= 'modular_celadon/modules/robot_hare_boss/icons/screen_gen.dmi'

else
mob_mask = icon('icons/hud/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll
// Celadon ADDITION END
livingdoll.add_filter("mob_shape_mask", 1, alpha_mask_filter(icon = mob_mask))
livingdoll.add_filter("inset_drop_shadow", 2, drop_shadow_filter(size = -1))
if(severity > 0)
Expand Down
20 changes: 20 additions & 0 deletions modular_celadon/modules/robot_hare_boss/code/awards.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#define BOSS_MEDAL_ROBOTHARE "Robot Hares Killed"
#define BOSS_MEDAL_ROBOTHARE_CRUSHER "Robot Hares Killed"
#define ROBOTHARE_SCORE "Robot Hares Killed"

/datum/award/achievement/boss/robothare_kill
name = "Robot Hare Killer"
desc = "Machine that likes eats carrot and you too."
database_id = "BOSS_MEDAL_ROBOTHARE"
icon_state = "robothare"

/datum/award/achievement/boss/robothare_crusher
name = "Robot Hare Crusher"
desc = "Metal machine. We are all in."
database_id = BOSS_MEDAL_ROBOTHARE_CRUSHER

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Т.е. оно будет по одному и тому же ключу суммировать это?
Не уверен, что это будет правильно работать

если смотреть по code\__DEFINES\achievements.dm
#define BOSS_MEDAL_MINER "Blood-drunk Miner Killer"
#define BOSS_MEDAL_MINER_CRUSHER "Blood-drunk Miner Crusher"
это разные define, разные id

Или это сделано намерено? Тогда почему они имеют один и тот же текст, если хватило бы 1 дефайна?
Я все же склоняюсь, что надо сделать разные дефайны для id

icon_state = "robothare"

/datum/award/score/robothare_score
name = "Robot Hares Killed"
desc = "You've killed HOW many?"
database_id = ROBOTHARE_SCORE
47 changes: 47 additions & 0 deletions modular_celadon/modules/robot_hare_boss/code/crate.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/obj/structure/closet/crate/large/soviet
name = "green large crate"
desc = "A deeply scratched wooden crate with erased markings. You'll need a crowbar to get it open."
icon = 'modular_celadon/modules/robot_hare_boss/icons/crates.dmi'
icon_state = "largecrate_soviet"
base_icon_state = "largecrate_soviet"

/**
* Robot Hare Loot Crate
* Contains useful robotics and electronics components
*/
/obj/structure/closet/crate/necropolis/robothare
name = "robotic containment crate"
desc = "A reinforced crate containing salvaged parts from the defeated Robot Hare."
icon_state = "robust"
base_icon_state = "robust"
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
can_install_electronics = FALSE
paint_jobs = null
can_weld_shut = FALSE
Comment on lines +12 to +20

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/obj/structure/closet/crate/necropolis
	name = "necropolis chest"
	desc = "It's watching you closely."
	icon_state = "necrocrate"
	base_icon_state = "necrocrate"
	resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
	can_install_electronics = FALSE
	paint_jobs = null
	can_weld_shut = FALSE

В твоем случае достаточно переопределить только это

	name = "robotic containment crate"
	desc = "A reinforced crate containing salvaged parts from the defeated Robot Hare."
	icon_state = "robust"
	base_icon_state = "robust"

Comment on lines +12 to +20

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/obj/structure/closet/crate/necropolis/robothare
name = "robotic containment crate"
desc = "A reinforced crate containing salvaged parts from the defeated Robot Hare."
icon_state = "robust"
base_icon_state = "robust"
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
can_install_electronics = FALSE
paint_jobs = null
can_weld_shut = FALSE
/obj/structure/closet/crate/necropolis/robothare
name = "robotic containment crate"
desc = "A reinforced crate containing salvaged parts from the defeated Robot Hare."
icon_state = "robust"
base_icon_state = "robust"


/obj/structure/closet/crate/necropolis/robothare/PopulateContents()
var/loot = rand(1, 5)
switch(loot)
if(1)
new /obj/item/dnainjector/shock(src)
if(2)
new /obj/item/clothing/under/costume/soviet(src)
new /obj/item/clothing/head/costume/ushanka(src)
if(3)
new /obj/item/gun/ballistic/automatic/pistol(src)
if(4)
new /obj/item/food/grown/carrot(src, 33) // carrotisole u got while fight, dont get it?
if(5)
new /obj/item/storage/toolbox/syndicate(src)

/**
* Crusher variant - bonus loot for defeating without taking damage (or minimal damage)
*/
/obj/structure/closet/crate/necropolis/robothare/crusher
name = "robotic containment crate (pristine)"
desc = "A reinforced crate containing pristine parts from the Robot Hare, barely damaged."

/obj/structure/closet/crate/necropolis/robothare/crusher/PopulateContents()
..()
// Bonus: trophy and rare component
new /obj/item/crusher_trophy/robot_hare_hand(src)
125 changes: 125 additions & 0 deletions modular_celadon/modules/robot_hare_boss/code/hare_actions.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/**
* Lightning Bolt Projectile Attack Action
*/
/datum/action/cooldown/mob_cooldown/projectile_attack/lightning_bolt
name = "Lightning Bolt"
button_icon = 'modular_celadon/modules/robot_hare_boss/icons/actions_items.dmi'
button_icon_state = "lightning_action"
desc = "Fires a lightning bolt at the target."
cooldown_time = 3 SECONDS
projectile_type = /obj/projectile/lightning_bolt
projectile_sound = 'sound/effects/magic/lightningbolt.ogg'

/datum/action/cooldown/mob_cooldown/projectile_attack/lightning_bolt/Activate(atom/target_atom)
. = ..()
if(owner)
playsound(owner, 'sound/effects/chemistry/shockwave_explosion.ogg', 100, TRUE)
owner.visible_message(span_danger("[owner] fires lightning bolt!"))
new /obj/effect/temp_visual/dir_setting/firing_effect(owner.loc, owner.dir)

/**
* Action to fold or unfold boss
*/
/datum/action/cooldown/fold_unfold
name = "Fold/Unfold"
button_icon = 'modular_celadon/modules/robot_hare_boss/icons/actions_items.dmi'
button_icon_state = "fold_unfold"
desc = "Fold or Unfold yourself"
cooldown_time = 60 SECONDS
click_to_activate = FALSE

/datum/action/cooldown/fold_unfold/Activate(atom/target_atom)
. = ..()
if(owner)
playsound(owner, 'sound/machines/blastdoor.ogg', 100, TRUE)
SEND_SIGNAL(owner, COMSIG_ROBOT_FOLD_UNFOLD_STARTED)


/**
* Telescopic arm Attack Action
*/
/datum/action/cooldown/mob_cooldown/projectile_attack/telescopic_arm
name = "Telescopic Arm"
button_icon = 'modular_celadon/modules/robot_hare_boss/icons/actions_items.dmi'
button_icon_state = "telescopic_arm"
desc = "Fires a extendo-arm at the target."
cooldown_time = 10 SECONDS
projectile_type = /obj/projectile/telescopic_arm
projectile_sound = 'sound/items/weapons/slam.ogg'


/**
* Telescopic arm attack
*/
/obj/projectile/telescopic_arm
name = "hand"
icon_state = "hand"
icon = 'modular_celadon/modules/robot_hare_boss/icons/telescopic_arm.dmi'
pass_flags = PASSTABLE
damage = 20
stamina = 20
armour_penetration = 60
damage_type = BRUTE
hitsound = 'sound/items/weapons/genhit2.ogg'
/// You got hit by extendo arm, the bigger one!
var/datum/beam/initial_arm
var/chain_icon = 'modular_celadon/modules/robot_hare_boss/icons/telescopic_arm.dmi'

/obj/projectile/telescopic_arm/fire(setAngle)
if(firer)
initial_arm = firer.Beam(src, icon_state = "chain", icon = chain_icon, emissive = FALSE)
return ..()

/obj/projectile/telescopic_arm/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(!ismovable(target))
return

if(!isliving(target))
return
var/mob/living/designated_target = target
designated_target.visible_message(span_danger("[designated_target] is hit by [firer]'s arm!"))
designated_target.apply_damage(30, BRUTE)

/obj/projectile/telescopic_arm/Destroy(force)
QDEL_NULL(initial_arm)
return ..()


/**
* Lightning Bolt Projectile
* Fires electrical bolts that deal brute and burn damage with a chance to stun
*/
/obj/projectile/lightning_bolt
name = "lightning bolt"
icon = 'modular_celadon/modules/robot_hare_boss/icons/projectiles.dmi'
icon_state = "electric_shock_bolt"
damage = 20
armour_penetration = 30
speed = 1
damage_type = BRUTE
var/stun_chance = 30
var/burn_damage = 15
var/emp_radius = 1 // do not forget about rage state

/obj/projectile/lightning_bolt/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(isliving(target) && !blocked)
var/mob/living/living_target = target
// Apply burn damage
living_target.adjust_fire_loss(burn_damage)
// Apply emp damage
empulse(target, emp_radius, emp_radius, emp_source = src)
// Chance to stun (electrocution)
if(prob(stun_chance))
living_target.Paralyze(20, FALSE)
living_target.Stun(10, FALSE)
Comment on lines +115 to +116

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было вынести это тоже в /var
по типу

var/paralyze_time = 20
var/stun_time = 10

to_chat(living_target, span_userdanger("You're electrocuted by the lightning!"))

// Visual and sound effects
playsound(get_turf(src), 'sound/effects/magic/lightningbolt.ogg', 100, TRUE)

// Create electrical effect at hit location
var/turf/hit_turf = get_turf(src)
if(hit_turf)
new /obj/effect/temp_visual/lightning_strike(hit_turf)
11 changes: 11 additions & 0 deletions modular_celadon/modules/robot_hare_boss/code/map.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/datum/map_template/ruin/lavaland/soviet_space_ship
name = "Crashed soviet space ship"
id = "soviet_space_ship"
description = "A soviet space ship named Progress. It falls on Lavaland a long time ago."
prefix = "_maps/RandomRuins/LavaRuins/ss1984/"
suffix = "soviet.dmm"
always_place = TRUE
allow_duplicates = FALSE

/area/ruin/soviet_space_ship
name = "Soviet space ship"
Loading
Loading