mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-02-06 14:19:43 +00:00
337 lines
9.9 KiB
Plaintext
337 lines
9.9 KiB
Plaintext
/mob/living/simple_animal/construct
|
|
name = "Construct"
|
|
real_name = "Construct"
|
|
desc = ""
|
|
speak_emote = list("hisses")
|
|
emote_hear = list("wails","screeches")
|
|
response_help = "thinks better of touching"
|
|
response_disarm = "flailed at"
|
|
response_harm = "punched"
|
|
icon_dead = "shade_dead"
|
|
speed = -1
|
|
a_intent = I_HURT
|
|
stop_automated_movement = 1
|
|
status_flags = CANPUSH
|
|
universal_speak = 0
|
|
universal_understand = 1
|
|
attack_sound = 'sound/weapons/spiderlunge.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
|
|
show_stat_health = 1
|
|
faction = "cult"
|
|
supernatural = 1
|
|
see_invisible = SEE_INVISIBLE_NOLIGHTING
|
|
var/nullblock = 0
|
|
|
|
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
|
|
mob_push_flags = ALLMOBS
|
|
|
|
var/list/construct_spells = list()
|
|
|
|
/mob/living/simple_animal/construct/cultify()
|
|
return
|
|
|
|
/mob/living/simple_animal/construct/New()
|
|
..()
|
|
name = text("[initial(name)] ([rand(1, 1000)])")
|
|
real_name = name
|
|
add_language("Cult")
|
|
add_language("Occult")
|
|
for(var/spell in construct_spells)
|
|
src.add_spell(new spell, "const_spell_ready")
|
|
updateicon()
|
|
add_glow()
|
|
|
|
/mob/living/simple_animal/construct/death()
|
|
new /obj/item/weapon/ectoplasm (src.loc)
|
|
..(null,"collapses in a shattered heap.")
|
|
ghostize()
|
|
qdel(src)
|
|
|
|
/mob/living/simple_animal/construct/attack_generic(var/mob/user)
|
|
if(istype(user, /mob/living/simple_animal/construct/builder))
|
|
if(health < maxHealth)
|
|
adjustBruteLoss(-5)
|
|
user.visible_message("<span class='notice'>\The [user]</b> mends some of \the [src]'s wounds.</span>")
|
|
else
|
|
user << "<span class='notice'>\The [src] is undamaged.</span>"
|
|
return
|
|
return ..()
|
|
|
|
/mob/living/simple_animal/construct/examine(mob/user)
|
|
..(user)
|
|
var/msg = "<span cass='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
|
if (src.health < src.maxHealth)
|
|
msg += "<span class='warning'>"
|
|
if (src.health >= src.maxHealth/2)
|
|
msg += "It looks slightly dented.\n"
|
|
else
|
|
msg += "<B>It looks severely dented!</B>\n"
|
|
msg += "</span>"
|
|
msg += "*---------*</span>"
|
|
|
|
user << msg
|
|
|
|
|
|
/////////////////Juggernaut///////////////
|
|
|
|
|
|
|
|
/mob/living/simple_animal/construct/armoured
|
|
name = "Juggernaut"
|
|
real_name = "Juggernaut"
|
|
desc = "A possessed suit of armour driven by the will of the restless dead"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "behemoth"
|
|
icon_living = "behemoth"
|
|
maxHealth = 250
|
|
health = 250
|
|
response_harm = "harmlessly punches"
|
|
harm_intent_damage = 0
|
|
melee_damage_lower = 30
|
|
melee_damage_upper = 30
|
|
attacktext = "smashed their armoured gauntlet into"
|
|
mob_size = 20
|
|
speed = 3
|
|
environment_smash = 2
|
|
attack_sound = 'sound/weapons/heavysmash.ogg'
|
|
status_flags = 0
|
|
resistance = 10
|
|
construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser)
|
|
|
|
/mob/living/simple_animal/construct/armoured/Life()
|
|
weakened = 0
|
|
..()
|
|
|
|
/mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P)
|
|
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
|
var/reflectchance = 80 - round(P.damage/3)
|
|
if(prob(reflectchance))
|
|
adjustBruteLoss(P.damage * 0.5)
|
|
visible_message("<span class='danger'>The [P.name] gets reflected by [src]'s shell!</span>", \
|
|
"<span class='userdanger'>The [P.name] gets reflected by [src]'s shell!</span>")
|
|
|
|
// Find a turf near or on the original location to bounce to
|
|
if(P.starting)
|
|
var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
|
|
var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
|
|
var/turf/curloc = get_turf(src)
|
|
|
|
// redirect the projectile
|
|
P.redirect(new_x, new_y, curloc, src)
|
|
|
|
return -1 // complete projectile permutation
|
|
|
|
return (..(P))
|
|
|
|
|
|
|
|
////////////////////////Wraith/////////////////////////////////////////////
|
|
|
|
|
|
|
|
/mob/living/simple_animal/construct/wraith
|
|
name = "Wraith"
|
|
real_name = "Wraith"
|
|
desc = "A wicked bladed shell contraption piloted by a bound spirit"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "floating"
|
|
icon_living = "floating"
|
|
maxHealth = 75
|
|
health = 75
|
|
melee_damage_lower = 25
|
|
melee_damage_upper = 25
|
|
attacktext = "slashed"
|
|
speed = -1
|
|
environment_smash = 1
|
|
see_in_dark = 7
|
|
attack_sound = 'sound/weapons/rapidslice.ogg'
|
|
construct_spells = list(/spell/targeted/ethereal_jaunt/shift)
|
|
|
|
|
|
/////////////////////////////Artificer/////////////////////////
|
|
|
|
|
|
|
|
/mob/living/simple_animal/construct/builder
|
|
name = "Artificer"
|
|
real_name = "Artificer"
|
|
desc = "A bulbous construct dedicated to building and maintaining The Cult of Nar-Sie's armies"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "artificer"
|
|
icon_living = "artificer"
|
|
maxHealth = 50
|
|
health = 50
|
|
response_harm = "viciously beaten"
|
|
harm_intent_damage = 5
|
|
melee_damage_lower = 5
|
|
melee_damage_upper = 5
|
|
attacktext = "rammed"
|
|
speed = 0
|
|
environment_smash = 1
|
|
attack_sound = 'sound/weapons/rapidslice.ogg'
|
|
construct_spells = list(/spell/aoe_turf/conjure/construct/lesser,
|
|
/spell/aoe_turf/conjure/wall,
|
|
/spell/aoe_turf/conjure/floor,
|
|
/spell/aoe_turf/conjure/soulstone,
|
|
/spell/aoe_turf/conjure/pylon
|
|
)
|
|
|
|
|
|
/////////////////////////////Behemoth/////////////////////////
|
|
|
|
|
|
/mob/living/simple_animal/construct/behemoth
|
|
name = "Behemoth"
|
|
real_name = "Behemoth"
|
|
desc = "The pinnacle of occult technology, Behemoths are the ultimate weapon in the Cult of Nar-Sie's arsenal."
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "behemoth"
|
|
icon_living = "behemoth"
|
|
maxHealth = 750
|
|
health = 750
|
|
speak_emote = list("rumbles")
|
|
response_harm = "harmlessly punched"
|
|
harm_intent_damage = 0
|
|
melee_damage_lower = 50
|
|
melee_damage_upper = 50
|
|
attacktext = "brutally crushed"
|
|
speed = 5
|
|
environment_smash = 2
|
|
attack_sound = 'sound/weapons/heavysmash.ogg'
|
|
resistance = 10
|
|
var/energy = 0
|
|
var/max_energy = 1000
|
|
construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser)
|
|
|
|
////////////////////////Harvester////////////////////////////////
|
|
|
|
|
|
|
|
/mob/living/simple_animal/construct/harvester
|
|
name = "Harvester"
|
|
real_name = "Harvester"
|
|
desc = "The promised reward of the livings who follow narsie. Obtained by offering their bodies to the geometer of blood"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "harvester"
|
|
icon_living = "harvester"
|
|
maxHealth = 150
|
|
health = 150
|
|
melee_damage_lower = 25
|
|
melee_damage_upper = 25
|
|
attacktext = "violently stabbed"
|
|
speed = -1
|
|
environment_smash = 1
|
|
see_in_dark = 7
|
|
attack_sound = 'sound/weapons/pierce.ogg'
|
|
|
|
construct_spells = list(
|
|
/spell/targeted/harvest,
|
|
/spell/aoe_turf/knock/harvester,
|
|
/spell/rune_write
|
|
)
|
|
|
|
////////////////Glow//////////////////
|
|
/mob/living/simple_animal/construct/proc/add_glow()
|
|
overlays = 0
|
|
var/overlay_layer = LIGHTING_LAYER+0.1
|
|
if(layer != MOB_LAYER)
|
|
overlay_layer=TURF_LAYER+0.2
|
|
|
|
overlays += image(icon,"glow-[icon_state]",overlay_layer)
|
|
set_light(2, -2, l_color = "#FFFFFF")
|
|
|
|
////////////////HUD//////////////////////
|
|
|
|
/mob/living/simple_animal/construct/Life()
|
|
. = ..()
|
|
if(.)
|
|
if(fire)
|
|
if(fire_alert) fire.icon_state = "fire1"
|
|
else fire.icon_state = "fire0"
|
|
if(pullin)
|
|
if(pulling) pullin.icon_state = "pull1"
|
|
else pullin.icon_state = "pull0"
|
|
|
|
if(purged)
|
|
if(purge > 0) purged.icon_state = "purge1"
|
|
else purged.icon_state = "purge0"
|
|
|
|
silence_spells(purge)
|
|
|
|
/mob/living/simple_animal/construct/armoured/Life()
|
|
..()
|
|
if(healths)
|
|
switch(health)
|
|
if(250 to INFINITY) healths.icon_state = "juggernaut_health0"
|
|
if(208 to 249) healths.icon_state = "juggernaut_health1"
|
|
if(167 to 207) healths.icon_state = "juggernaut_health2"
|
|
if(125 to 166) healths.icon_state = "juggernaut_health3"
|
|
if(84 to 124) healths.icon_state = "juggernaut_health4"
|
|
if(42 to 83) healths.icon_state = "juggernaut_health5"
|
|
if(1 to 41) healths.icon_state = "juggernaut_health6"
|
|
else healths.icon_state = "juggernaut_health7"
|
|
|
|
|
|
/mob/living/simple_animal/construct/behemoth/Life()
|
|
..()
|
|
if(healths)
|
|
switch(health)
|
|
if(750 to INFINITY) healths.icon_state = "juggernaut_health0"
|
|
if(625 to 749) healths.icon_state = "juggernaut_health1"
|
|
if(500 to 624) healths.icon_state = "juggernaut_health2"
|
|
if(375 to 499) healths.icon_state = "juggernaut_health3"
|
|
if(250 to 374) healths.icon_state = "juggernaut_health4"
|
|
if(125 to 249) healths.icon_state = "juggernaut_health5"
|
|
if(1 to 124) healths.icon_state = "juggernaut_health6"
|
|
else healths.icon_state = "juggernaut_health7"
|
|
|
|
/mob/living/simple_animal/construct/builder/Life()
|
|
..()
|
|
if(healths)
|
|
switch(health)
|
|
if(50 to INFINITY) healths.icon_state = "artificer_health0"
|
|
if(42 to 49) healths.icon_state = "artificer_health1"
|
|
if(34 to 41) healths.icon_state = "artificer_health2"
|
|
if(26 to 33) healths.icon_state = "artificer_health3"
|
|
if(18 to 25) healths.icon_state = "artificer_health4"
|
|
if(10 to 17) healths.icon_state = "artificer_health5"
|
|
if(1 to 9) healths.icon_state = "artificer_health6"
|
|
else healths.icon_state = "artificer_health7"
|
|
|
|
|
|
|
|
/mob/living/simple_animal/construct/wraith/Life()
|
|
..()
|
|
if(healths)
|
|
switch(health)
|
|
if(75 to INFINITY) healths.icon_state = "wraith_health0"
|
|
if(62 to 74) healths.icon_state = "wraith_health1"
|
|
if(50 to 61) healths.icon_state = "wraith_health2"
|
|
if(37 to 49) healths.icon_state = "wraith_health3"
|
|
if(25 to 36) healths.icon_state = "wraith_health4"
|
|
if(12 to 24) healths.icon_state = "wraith_health5"
|
|
if(1 to 11) healths.icon_state = "wraith_health6"
|
|
else healths.icon_state = "wraith_health7"
|
|
|
|
|
|
/mob/living/simple_animal/construct/harvester/Life()
|
|
..()
|
|
if(healths)
|
|
switch(health)
|
|
if(150 to INFINITY) healths.icon_state = "harvester_health0"
|
|
if(125 to 149) healths.icon_state = "harvester_health1"
|
|
if(100 to 124) healths.icon_state = "harvester_health2"
|
|
if(75 to 99) healths.icon_state = "harvester_health3"
|
|
if(50 to 74) healths.icon_state = "harvester_health4"
|
|
if(25 to 49) healths.icon_state = "harvester_health5"
|
|
if(1 to 24) healths.icon_state = "harvester_health6"
|
|
else healths.icon_state = "harvester_health7"
|