mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-16 09:34:21 +01:00
b0463d3c83
* spanish? * aaaagain * keep maptext * Update robot_items.dm * Update span_defines.dm * compiles * Update silicon_mob.dm * compile
121 lines
4.7 KiB
Plaintext
121 lines
4.7 KiB
Plaintext
#define MARAUDER_SHIELD_MAX 4
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder
|
|
name = "clockwork marauder"
|
|
desc = "A brass machine of destruction."
|
|
icon = 'icons/mob/clockwork_mobs.dmi'
|
|
icon_state = "clockwork_marauder"
|
|
icon_living = "clockwork_marauder"
|
|
icon_dead = "clockwork_marauder_dead"
|
|
a_intent = INTENT_HARM
|
|
stop_automated_movement = TRUE
|
|
see_in_dark = 8
|
|
health = 140
|
|
maxHealth = 140
|
|
atmos_requirements = list("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
|
|
initial_traits = list(TRAIT_FLYING)
|
|
move_resist = MOVE_FORCE_OVERPOWERING
|
|
mob_size = MOB_SIZE_LARGE
|
|
pass_flags = PASSTABLE
|
|
damage_coeff = list("brute" = 1, "fire" = 1, "tox" = 0, "clone" = 0, "stamina" = 0, "oxy" = 0)
|
|
obj_damage = 80
|
|
melee_damage_lower = 24
|
|
melee_damage_upper = 24
|
|
attacktext = "slices"
|
|
attack_sound = 'sound/weapons/bladeslice.ogg'
|
|
chat_color = "#CAA25B"
|
|
retreat_distance = 2 // Dodge in and out of combat.
|
|
faction = list("hostile") // We hate Nar'sie here, but no clockcult yet.
|
|
pressure_resistance = 100
|
|
universal_speak = TRUE
|
|
AIStatus = AI_OFF
|
|
loot = list(/obj/item/food/ectoplasm, /obj/item/clockwork/component/geis_capacitor/fallen_armor)
|
|
del_on_death = TRUE
|
|
deathmessage = "collapses in a shattered heap."
|
|
var/playstyle_string = "<b>You are a Marauder, an instrument of destruction built to fight those that oppose the will of Ratvar. \
|
|
You are a highly effective melee combatent but are vulnerable to holy weapons. \
|
|
You can block up to 4 ranged attacks with your shield. It requires a welder to be repaired.</b>"
|
|
var/list/construct_spells = list(/datum/spell/night_vision)
|
|
var/shield_health = MARAUDER_SHIELD_MAX
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/Initialize(mapload)
|
|
. = ..()
|
|
name = "[name] ([rand(1, 1000)])"
|
|
set_light(2, 3, l_color = LIGHT_COLOR_FIRE)
|
|
for(var/spell in construct_spells)
|
|
AddSpell(new spell(null))
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/death(gibbed)
|
|
new /obj/effect/temp_visual/cult/sparks(get_turf(src))
|
|
playsound(src, 'sound/effects/pylon_shatter.ogg', 40, TRUE)
|
|
return ..()
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/attacked_by(obj/item/I, mob/living/user)
|
|
if(..())
|
|
return FINISH_ATTACK
|
|
|
|
if(istype(I, /obj/item/nullrod))
|
|
adjustFireLoss(15)
|
|
if(shield_health > 0)
|
|
damage_shield()
|
|
playsound(src,'sound/hallucinations/veryfar_noise.ogg', 40, 1)
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/bullet_act(obj/projectile/Proj)
|
|
if(shield_health > 0)
|
|
damage_shield()
|
|
to_chat(src, SPAN_DANGER("Your shield blocks the attack!"))
|
|
return FALSE
|
|
return ..()
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/proc/damage_shield()
|
|
shield_health--
|
|
playsound(src, 'sound/magic/clockwork/anima_fragment_attack.ogg', 60, TRUE)
|
|
if(shield_health == 0)
|
|
to_chat(src, SPAN_USERDANGER("Your shield breaks!"))
|
|
to_chat(src, SPAN_DANGER("You require a welding tool to repair your damaged shield!"))
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/welder_act(mob/living/user, obj/item/I)
|
|
if(health >= maxHealth && shield_health >= MARAUDER_SHIELD_MAX)
|
|
to_chat(user, SPAN_NOTICE("[src] has no damage to repair."))
|
|
return
|
|
|
|
playsound(loc, 'sound/items/welder.ogg', 150, TRUE)
|
|
adjustBruteLoss(-10)
|
|
user.visible_message(
|
|
SPAN_NOTICE("You repair some of [src]'s damage."),
|
|
SPAN_NOTICE("[user] repairs some of [src]'s damage.")
|
|
)
|
|
if(shield_health < MARAUDER_SHIELD_MAX)
|
|
shield_health ++
|
|
playsound(src, 'sound/magic/charge.ogg', 60, TRUE)
|
|
return TRUE
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/narsie_act()
|
|
visible_message(
|
|
SPAN_DANGER("[src] is instantly crushed by an unholy aura!"),
|
|
SPAN_USERDANGER("The uncaring gaze of a dark god looks down upon you for a single moment, and your shell is instantly pulverized into dust!")
|
|
)
|
|
gib()
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE)
|
|
return FALSE
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/Life(seconds, times_fired)
|
|
if(holy_check(src))
|
|
throw_alert("holy_fire", /atom/movable/screen/alert/holy_fire, override = TRUE)
|
|
visible_message(
|
|
SPAN_DANGER("[src] slowly crumbles to dust in this holy place!"), \
|
|
SPAN_DANGER("Your shell burns as you crumble to dust in this holy place!")
|
|
)
|
|
playsound(loc, 'sound/items/welder.ogg', 150, TRUE)
|
|
adjustBruteLoss(maxHealth/8)
|
|
else
|
|
clear_alert("holy_fire", clear_override = TRUE)
|
|
return ..()
|
|
|
|
/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/hostile
|
|
AIStatus = AI_ON
|
|
|
|
#undef MARAUDER_SHIELD_MAX
|