mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Tyr Update attempt 2 (#11191)
This commit is contained in:
@@ -303,3 +303,43 @@
|
||||
slot_l_hand_str = 'modular_chomp/icons/obj/guns/precursor/lefthand.dmi',
|
||||
slot_r_hand_str = 'modular_chomp/icons/obj/guns/precursor/righthand.dmi',
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/armor/tyr_alien
|
||||
name = "expirmental biosuit"
|
||||
desc = "It's a strange piece of what appears to be a suit of some sort."
|
||||
description_info = "Organic users of the suit will be slowly healed, and given nutrition."
|
||||
icon_state = "lingchameleon"
|
||||
body_parts_covered = CHEST
|
||||
armor = list(melee = 60, bullet = 50, laser = 40, energy = 40, bomb = 0, bio = 80, rad = 80)
|
||||
siemens_coefficient = 0.4
|
||||
|
||||
/obj/item/clothing/suit/armor/tyr_alien/Initialize(mapload)
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/suit/armor/tyr_alien/Destroy()
|
||||
wearer = null
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/armor/tyr_alien/process()
|
||||
var/mob/living/carbon/human/H = wearer?.resolve()
|
||||
if(!ishuman(H) || H.isSynthetic() || H.stat == DEAD || H.nutrition <= 10)
|
||||
return // Robots and dead people don't have a metabolism.
|
||||
|
||||
if(H.getBruteLoss())
|
||||
H.adjustBruteLoss(-0.2)
|
||||
H.nutrition = max(H.nutrition + 5, 0)
|
||||
if(H.getFireLoss())
|
||||
H.adjustFireLoss(-0.2)
|
||||
H.nutrition = max(H.nutrition + 5, 0)
|
||||
if(H.getToxLoss())
|
||||
H.adjustToxLoss(-0.2)
|
||||
H.nutrition = max(H.nutrition + 5, 0)
|
||||
if(H.getOxyLoss())
|
||||
H.adjustOxyLoss(-0.2)
|
||||
H.nutrition = max(H.nutrition + 5, 0)
|
||||
if(H.getCloneLoss())
|
||||
H.adjustCloneLoss(-0.2)
|
||||
H.nutrition = max(H.nutrition + 5, 0)
|
||||
|
||||
|
||||
@@ -953,3 +953,103 @@
|
||||
return -1 // complete projectile permutation
|
||||
|
||||
return (..(P))
|
||||
|
||||
//mining zone
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/miner
|
||||
name = "Solar Eclipse Miner"
|
||||
desc = "A miner wearing orange armor, shielding itself from lasers and energy."
|
||||
icon_state = "solar_miner"
|
||||
icon_state = "solar_miner"
|
||||
|
||||
projectiletype = null
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
attack_armor_pen = 30
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/plastique = 10,
|
||||
/obj/item/pickaxe/anamolous = 30
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/miner/do_special_attack(atom/A)
|
||||
summon_drones(A, 2, 1)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/xenoarch
|
||||
name = "Solar Eclipse Antiquarian"
|
||||
desc = "An indivual wearing orange armor, shielding itself from lasers and energy. Lighting is crackling around them"
|
||||
icon_state = "solar_anomalous"
|
||||
icon_living = "solar_anomalous"
|
||||
|
||||
projectiletype = /obj/item/projectile/energy/lightingspark
|
||||
specialattackprojectile = /obj/item/projectile/beam/lightning/slime
|
||||
|
||||
reload_max = 2
|
||||
reload_time = 3 SECONDS
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/research_sample/rare = 10,
|
||||
/obj/item/stack/nanopaste/advanced = 30
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/xenoarch/do_special_attack(atom/A)
|
||||
Beam(A, icon_state = "holo_beam", time = 5 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 5.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/xenoarch/bullet_act(obj/item/projectile/P, atom/A)
|
||||
..()
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
special_projectile(A)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/miner
|
||||
name = "Lunar Eclipse Drill Tech"
|
||||
desc = "An indivual wearing red and purple armor, shielding itself from bullets and physical trauma."
|
||||
icon_state = "lunar_miner"
|
||||
icon_state = "lunar_miner"
|
||||
|
||||
projectiletype = null
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
attack_armor_pen = 30
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/mining
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/stack/material/void_opal = 10,
|
||||
/obj/item/stack/material/mhydrogen = 70
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/miner/do_special_attack(atom/A)
|
||||
Beam(A, icon_state = "holo_beam", time = 1 SECOND, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/xenoarch
|
||||
name = "Lunar Eclipse Xenoarcholgist"
|
||||
desc = "An indivual wearing red and purple armor, shielding itself from bullets and physical trauma."
|
||||
icon_state = "lunar_anomalous"
|
||||
icon_living = "lunar_anomalous"
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/research_sample/rare = 10,
|
||||
/obj/item/extraction_pack = 30
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/xenoarch/do_special_attack(atom/A)
|
||||
Beam(A, icon_state = "drain_life_grey", time = 1 SECOND, maxdistance = 4)
|
||||
addtimer(CALLBACK(src, PROC_REF(blood_siphon), A), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/proc/blood_siphon(atom/A, var/mob/living/carbon/human/M)
|
||||
if(!A)
|
||||
return
|
||||
if(A in view(src, 4))
|
||||
if(ishuman(M))
|
||||
var/target = pick(M.organs_by_name)
|
||||
M.apply_damage(rand(5, 10), SEARING, target)
|
||||
to_chat(M, span_critical("The skin on your [parse_zone(target)] feels like it's ripping apart, and a stream of blood flies out."))
|
||||
var/blood_to_remove = (rand(10,30))
|
||||
M.remove_blood(blood_to_remove)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,10 +12,18 @@
|
||||
special_attack_cooldown = 10 //This things attack soley via speical attacks hence basically no cooldown
|
||||
grab_resist = 100
|
||||
shock_resist = -0.2
|
||||
deflect_chance = 0
|
||||
movement_cooldown = 10
|
||||
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
|
||||
var/attackcycle = 1
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/handle_special()
|
||||
if(stat != DEAD)
|
||||
src.SetStunned(0)
|
||||
src.SetWeakened(0)
|
||||
src.SetParalysis(0)
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
|
||||
bullet_heck(A, 3, 3)
|
||||
|
||||
@@ -424,7 +432,6 @@
|
||||
icon_state = "mecha_top"
|
||||
icon_living = "mecha_top"
|
||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 80, bio = 100, rad = 100) //Smol armor to compensate for the gimmick
|
||||
deflect_chance = 100 //yes, this looks absurd
|
||||
wreckage = /obj/item/melee/energy/sword/top_shield
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/chillingwind
|
||||
desc = "It appears to be spinning at rapid speeds; enough to deflect projectiles. The air around it feels frigid.."
|
||||
@@ -440,16 +447,15 @@
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/bullet_act(obj/item/projectile/P)
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/handle_special()
|
||||
if(stat != DEAD)
|
||||
frozen_aura()
|
||||
..()
|
||||
if(deflect_chance > 30)
|
||||
visible_message(span_cult("The mecha is deflecting most projectiles!."))
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/attackby(var/obj/item/O as obj, var/mob/user as mob) //but melees lowers the deflect chance
|
||||
.=..()
|
||||
if(deflect_chance > 10)
|
||||
to_chat(user, span_cult("The strike slows down the mecha!."))
|
||||
deflect_chance -= 10
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/proc/frozen_aura()
|
||||
for(var/mob/living/L in view(src, 14))
|
||||
if(!IIsAlly(L))
|
||||
L.add_modifier(/datum/modifier/chilled, 3, src)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/excavate_head
|
||||
name = "Xenoarch Lead"
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
loot_list = list(/obj/structure/foamedmetal = 100
|
||||
)
|
||||
pass_flags = PASSTABLE
|
||||
hovering = TRUE
|
||||
movement_cooldown = -3
|
||||
icon_state = "janitor"
|
||||
icon_living = "janitor"
|
||||
@@ -39,7 +40,7 @@
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/item/prop/tyrlore/reddisc
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/nomove
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 80, energy = 80, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
|
||||
/datum/planet/tyr/New()
|
||||
..()
|
||||
planet_thor = src
|
||||
planet_tyr = src
|
||||
weather_holder = new /datum/weather_holder/tyr(src)
|
||||
|
||||
/datum/planet/tyr/update_sun()
|
||||
@@ -393,6 +393,23 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
name = "vast desert"
|
||||
alpha = 0
|
||||
|
||||
/turf/simulated/tyracid
|
||||
name = "fuel"
|
||||
icon = 'icons/goonstation/turf/timeholefull.dmi'
|
||||
icon_state = "timehole"
|
||||
color = "#FF3100"
|
||||
var/acidlevel = 1
|
||||
|
||||
/turf/simulated/tyracid/Entered(atom/movable/AM, atom/oldloc)
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(L.hovering || L.flying || L.throwing || L.is_incorporeal())
|
||||
return 0
|
||||
acidlevel *= 1 - L.get_water_protection()
|
||||
if(acidlevel > 0)
|
||||
L.adjustFireLoss(acidlevel)
|
||||
|
||||
|
||||
/*
|
||||
WEATHER_BLIZZARD = new (),
|
||||
WEATHER_STORM = new(),
|
||||
|
||||
Reference in New Issue
Block a user