Another Tyr Update (#9924)

This commit is contained in:
FluffMedic
2025-01-23 17:44:28 -05:00
committed by GitHub
parent d7006cfe79
commit b8e029f202
9 changed files with 504 additions and 104 deletions

View File

@@ -116,8 +116,9 @@
//Eclipse mecha //Eclipse mecha
/obj/structure/loot_pile/mecha/odd_gygax /obj/structure/loot_pile/mecha/odd_gygax
name = "\improper Whisker wreckage" name = "\improper mecha wreckage"
icon_state = "gygax-broken" icon = 'modular_chomp/icons/mob/eclipse.dmi'
icon_state = "orb-broken"
density = TRUE density = TRUE
anchored = FALSE anchored = FALSE
@@ -147,8 +148,9 @@
) )
/obj/structure/loot_pile/mecha/odd_ripley /obj/structure/loot_pile/mecha/odd_ripley
name = "\improper ripley wreckage" name = "\improper mecha wreckage"
icon_state = "titan-broken" icon = 'modular_chomp/icons/mob/eclipse.dmi'
icon_state = "mine-broken"
density = TRUE density = TRUE
anchored = FALSE anchored = FALSE

View File

@@ -19,12 +19,12 @@
name = "protective vest" name = "protective vest"
icon = 'icons/obj/clothing/spacesuits_ch.dmi' icon = 'icons/obj/clothing/spacesuits_ch.dmi'
desc = "Light weight but oddly protective plating." desc = "Light weight but oddly protective plating."
var/shieldhealth = 200 var/shieldhealth = 75
var/cooldown = null // world.time of when this was last triggered. var/cooldown = null // world.time of when this was last triggered.
var/cooldown_duration = 2 MINUTES var/cooldown_duration = 2 MINUTES
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") /obj/item/clothing/suit/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(shieldhealth < 0) if(shieldhealth < 75)
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!")) user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
shieldhealth -= damage shieldhealth -= damage
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
@@ -33,7 +33,7 @@
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer) /obj/item/clothing/suit/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
shieldhealth = 200 shieldhealth = 75
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H) /obj/item/clothing/suit/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
..() ..()
@@ -59,12 +59,12 @@
icon = 'icons/obj/clothing/hats_ch.dmi' icon = 'icons/obj/clothing/hats_ch.dmi'
desc = "A protective dome for your head." desc = "A protective dome for your head."
var/shieldhealth = 200 var/shieldhealth = 75
var/cooldown = null // world.time of when this was last triggered. var/cooldown = null // world.time of when this was last triggered.
var/cooldown_duration = 2 MINUTES var/cooldown_duration = 2 MINUTES
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") /obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(shieldhealth < 0) if(shieldhealth < 75)
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!")) user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
shieldhealth -= damage shieldhealth -= damage
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
@@ -73,7 +73,7 @@
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer) /obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
shieldhealth = 200 shieldhealth = 75
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H) /obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
..() ..()
@@ -98,12 +98,12 @@
name = "gloves" name = "gloves"
icon = 'icons/obj/clothing/gloves_ch.dmi' icon = 'icons/obj/clothing/gloves_ch.dmi'
desc = "Gloves created with alien tech" desc = "Gloves created with alien tech"
var/shieldhealth = 200 var/shieldhealth = 75
var/cooldown = null // world.time of when this was last triggered. var/cooldown = null // world.time of when this was last triggered.
var/cooldown_duration = 2 MINUTES var/cooldown_duration = 2 MINUTES
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") /obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(shieldhealth < 0) if(shieldhealth < 75)
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!")) user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
shieldhealth -= damage shieldhealth -= damage
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
@@ -112,7 +112,7 @@
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer) /obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
shieldhealth = 200 shieldhealth = 75
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H) /obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
..() ..()
@@ -137,12 +137,12 @@
name = "boots" name = "boots"
icon = 'icons/obj/clothing/shoes_ch.dmi' icon = 'icons/obj/clothing/shoes_ch.dmi'
desc = "A pair of grabby boots" desc = "A pair of grabby boots"
var/shieldhealth = 200 var/shieldhealth = 75
var/cooldown = null // world.time of when this was last triggered. var/cooldown = null // world.time of when this was last triggered.
var/cooldown_duration = 2 MINUTES var/cooldown_duration = 2 MINUTES
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") /obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(shieldhealth < 0) if(shieldhealth < 75)
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!")) user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
shieldhealth -= damage shieldhealth -= damage
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
@@ -151,7 +151,7 @@
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer) /obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
shieldhealth = 200 shieldhealth = 75
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H) /obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
..() ..()

View File

@@ -189,6 +189,10 @@
pass_flags = PASSTABLE pass_flags = PASSTABLE
movement_cooldown = 1 movement_cooldown = 1
needs_reload = TRUE
reload_max = 1
reload_time = 2 SECONDS
ai_holder_type = /datum/ai_holder/hostile/ranged/robust ai_holder_type = /datum/ai_holder/hostile/ranged/robust
projectiletype = /obj/item/projectile/arc/spore projectiletype = /obj/item/projectile/arc/spore

View File

@@ -127,7 +127,7 @@
desc = "You shouldn't be seeing this. But don't use lasers or energy weapons" desc = "You shouldn't be seeing this. But don't use lasers or energy weapons"
health = 100 health = 100
maxHealth = 100 maxHealth = 100
projectiletype = /obj/item/projectile/energy/mob/midlaser projectiletype = /obj/item/projectile/energy/eclipse
armor = list(melee = -100, bullet = -100, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns. armor = list(melee = -100, bullet = -100, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns.
armor_soak = list(melee = 0, bullet = 0, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0) armor_soak = list(melee = 0, bullet = 0, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0)
@@ -147,7 +147,7 @@
icon_state = "eclipse_snipertesh" icon_state = "eclipse_snipertesh"
icon_living = "eclipse_snipertesh" icon_living = "eclipse_snipertesh"
projectiletype = /obj/item/projectile/scatter/laser projectiletype = /obj/item/projectile/bullet/tyrshotburst
projectile_accuracy = 100 projectile_accuracy = 100
@@ -294,6 +294,7 @@
special_attack_min_range = 1 special_attack_min_range = 1
special_attack_max_range = 7 special_attack_max_range = 7
projectiletype = /obj/item/projectile/energy/eclipse
specialattackprojectile = /obj/item/projectile/energy/flash specialattackprojectile = /obj/item/projectile/energy/flash
loot_list = list(/obj/item/slime_extract/sepia = 1, loot_list = list(/obj/item/slime_extract/sepia = 1,
@@ -343,7 +344,7 @@
name = "Solar Eclipse Technician" name = "Solar Eclipse Technician"
desc = "A strange being wearing a burn resistaint coat." desc = "A strange being wearing a burn resistaint coat."
icon_state = "eclipse_nuke" icon_state = "eclipse_nuke"
projectiletype = /obj/item/projectile/bullet/magnetic/flechette/small projectiletype = /obj/item/projectile/energy/lightingspark
special_attack_cooldown = 15 SECONDS special_attack_cooldown = 15 SECONDS
special_attack_min_range = 1 special_attack_min_range = 1
special_attack_max_range = 9 special_attack_max_range = 9
@@ -377,7 +378,7 @@
special_attack_cooldown = 5 SECONDS special_attack_cooldown = 5 SECONDS
special_attack_min_range = 1 special_attack_min_range = 1
special_attack_max_range = 7 special_attack_max_range = 7
projectiletype = /obj/item/projectile/energy/mob/drone projectiletype = /obj/item/projectile/energy/eclipse
icon_state = "guardian" icon_state = "guardian"
icon_living = "guardian" icon_living = "guardian"
reload_max = 4 reload_max = 4
@@ -440,6 +441,7 @@
desc = "You shouldn't be seeing this, but don't use melee weapons or bullets." desc = "You shouldn't be seeing this, but don't use melee weapons or bullets."
health = 100 health = 100
maxHealth = 100 maxHealth = 100
projectiletype = /obj/item/projectile/bullet/crystaline
armor = list(melee = 40, bullet = 40, laser = -100, energy = -100, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns. armor = list(melee = 40, bullet = 40, laser = -100, energy = -100, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns.
armor_soak = list(melee = 20, bullet = 20, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP armor_soak = list(melee = 20, bullet = 20, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP
@@ -462,7 +464,7 @@
movement_cooldown = -1 movement_cooldown = -1
projectiletype = /obj/item/projectile/scatter/shotgun projectiletype = /obj/item/projectile/bullet/crystalineburst
reload_max = 1 reload_max = 1
reload_time = 2.5 SECONDS reload_time = 2.5 SECONDS
ranged_attack_delay = 1.5 SECONDS ranged_attack_delay = 1.5 SECONDS
@@ -573,7 +575,6 @@
icon_state = "eclipse_silver" icon_state = "eclipse_silver"
icon_living = "eclipse_silver" icon_living = "eclipse_silver"
projectiletype = /obj/item/projectile/bullet/pistol/medium
special_attack_cooldown = 30 SECONDS special_attack_cooldown = 30 SECONDS
special_attack_min_range = 1 special_attack_min_range = 1
special_attack_max_range = 7 special_attack_max_range = 7
@@ -718,6 +719,8 @@
reload_max = 1 reload_max = 1
reload_time = 1.5 SECOND reload_time = 1.5 SECOND
specialattackprojectile = /obj/item/projectile/energy/mechahack
loot_list = list(/obj/item/slime_extract/sepia = 1, loot_list = list(/obj/item/slime_extract/sepia = 1,
/obj/item/bone/skull = 100, /obj/item/bone/skull = 100,
/obj/item/disposable_teleporter = 15 /obj/item/disposable_teleporter = 15
@@ -725,17 +728,14 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/abyssdiver/do_special_attack(atom/A) /mob/living/simple_mob/humanoid/eclipse/lunar/abyssdiver/do_special_attack(atom/A)
visible_message(span_danger("\The [src] begins to mess with a wrist mounted device.")) visible_message(span_danger("\The [src] begins to mess with a wrist mounted device."))
if(isrobot(A)) if(istype(A, /obj/mecha))
addtimer(CALLBACK(src, PROC_REF(remote_shutdown), A), 3 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 3 SECONDS, TIMER_DELETE_ME)
else if(istype(A, /obj/mecha))
addtimer(CALLBACK(src, PROC_REF(remote_eject), A), 3 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/humanoid/eclipse/lunar/servicesquish /mob/living/simple_mob/humanoid/eclipse/lunar/servicesquish
name = "Lunar Eclipse Service" name = "Lunar Eclipse Service"
desc = "A strange being wearing a blunt resistaint coat." desc = "A strange being wearing a blunt resistaint coat."
icon_state = "miner" icon_state = "miner"
icon_living = "miner" icon_living = "miner"
projectiletype = /obj/item/projectile/bullet/pistol/hp
loot_list = list(/obj/item/slime_extract/sepia = 1, loot_list = list(/obj/item/slime_extract/sepia = 1,
/obj/item/slime_extract/ruby = 100, /obj/item/slime_extract/ruby = 100,
@@ -751,7 +751,7 @@
for(var/mob/living/L in view(src, 4)) for(var/mob/living/L in view(src, 4))
if(L.stat == DEAD || !IIsAlly(L)) if(L.stat == DEAD || !IIsAlly(L))
continue continue
L.add_modifier(/datum/modifier/technomancer/repel_missiles, null, src) L.add_modifier(/datum/modifier/technomancer/repel_missiles, 4, src)
/mob/living/simple_mob/mechanical/ward/monitor/eclipse /mob/living/simple_mob/mechanical/ward/monitor/eclipse

View File

@@ -12,6 +12,7 @@
special_attack_cooldown = 10 //This things attack soley via speical attacks hence basically no cooldown special_attack_cooldown = 10 //This things attack soley via speical attacks hence basically no cooldown
grab_resist = 100 grab_resist = 100
shock_resist = -0.2 shock_resist = -0.2
movement_cooldown = 10
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
var/attackcycle = 1 var/attackcycle = 1
@@ -244,7 +245,8 @@
/datum/ai_holder/simple_mob/intentional/three_phases /datum/ai_holder/simple_mob/intentional/three_phases
use_astar = TRUE use_astar = TRUE
wander = FALSE wander = FALSE
var/closest_desired_distance = 4 respect_confusion = FALSE
var/closest_desired_distance = 6
/datum/ai_holder/simple_mob/intentional/three_phases/on_engagement(atom/A) /datum/ai_holder/simple_mob/intentional/three_phases/on_engagement(atom/A)
if(get_dist(holder, A) > closest_desired_distance) if(get_dist(holder, A) > closest_desired_distance)
@@ -265,14 +267,13 @@
//High defense at the start that falters the more the battle goes on //High defense at the start that falters the more the battle goes on
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit //Melts folks with lasers /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit //Melts folks with lasers
name = "Eclipse Expirmental Anti-Infantary Unit" name = "Eclipse Expirmental Anti-Infantary Unit"
specialattackprojectile = /obj/item/projectile/beam/midlaser specialattackprojectile = /obj/item/projectile/energy/eclipse/lorge
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100) armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 90, bio = 100, rad = 100)
damage_threshold = 0 //So the wierd armor mechanic works damage_threshold = 0 //So the wierd armor mechanic works
icon_state = "orb" icon_state = "orb"
wreckage = /obj/structure/loot_pile/mecha/odd_gygax wreckage = /obj/structure/loot_pile/mecha/odd_gygax
special_attack_cooldown = 320
/*
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/updatehealth() /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/updatehealth()
. = ..() . = ..()
@@ -282,71 +283,64 @@
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100) armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100)
else if (health < maxHealth*0.9) else if (health < maxHealth*0.9)
armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 60, bio = 100, rad = 100) armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 60, bio = 100, rad = 100)
*/
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/do_special_attack(atom/A) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well. . = TRUE // So we don't fire a bolt as well.
switch(a_intent) switch(a_intent)
if(I_DISARM) // Phase 3 if(I_DISARM) // Phase 3
phase_three(A) if(attackcycle == 1)
phasethree_cycleone(A)
else if(attackcycle == 2)
phasethree_cycletwo(A)
else if(attackcycle == 3)
phasethree_cyclethree(A)
if(I_HURT) // Phase 1 if(I_HURT) // Phase 1
phase_one(A) if(attackcycle == 1)
phaseone_cycleone(A)
else if(attackcycle == 2)
phaseone_cycletwo(A)
if(I_GRAB) // Phase 2 if(I_GRAB) // Phase 2
phase_two(A) if(attackcycle == 1)
phasetwo_cycleone(A)
else if(attackcycle == 2)
phasetwo_cycletwo(A)
else if(attackcycle == 3)
phasetwo_cyclethree(A)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_one(atom/target) //Basic pattern whilst the defense is high /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phaseone_cycleone(atom/target)
addtimer(CALLBACK(src, PROC_REF(atkonea), target), 1.5 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(dualsweep_one), target, 1), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonea(atom/target) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phaseone_cycletwo(atom/target)
if(!target) addtimer(CALLBACK(src, PROC_REF(dualsweep_one_r), target, 2), 1 SECOND, TIMER_DELETE_ME)
return attackcycle = 0
upfour_leftfour(target)
upfour_rightfour(target)
downfour_rightfour(target)
downfour_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(atkoneb), target), 1.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkoneb(atom/target) //phase 2
if(!target) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cycleone(atom/target)
return addtimer(CALLBACK(src, PROC_REF(dualsweep_one), target, 2), 1 SECOND, TIMER_DELETE_ME)
upfour(target) attackcycle = 0
downfour(target)
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(atkonec), target), 1.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonec(atom/target) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cycletwo(atom/target)
if(!target) addtimer(CALLBACK(src, PROC_REF(dualsweep_one_r), target, 3), 1 SECOND, TIMER_DELETE_ME)
return attackcycle = 0
upfour_leftfour(target)
upfour_rightfour(target)
downfour_rightfour(target)
downfour_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(atkoned), target), 1.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkoned(atom/target) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cyclethree(atom/target)
if(!target) addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 1), 0.5 SECONDS, TIMER_DELETE_ME)
return attackcycle = 0
upfour(target)
downfour(target)
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(atkonee), target), 1.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonee(atom/target) //phase 3
if(!target) /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cycleone(atom/target)
return addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 1 SECONDS, TIMER_DELETE_ME)
upfour_leftfour(target) attackcycle = 0
upfour_rightfour(target)
downfour_rightfour(target)
downfour_leftfour(target)
upfour(target)
downfour(target)
rightfour(target)
leftfour(target)
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_two(atom/target) //SPIIIIN TO WIN /mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cycletwo(atom/target)
visible_message(span_danger("The [src] is preparing a deadly attack!")) addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 3), 0.5 SECONDS, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 1), 2 SECONDS, TIMER_DELETE_ME) attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cyclethree(atom/target)
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 12, 1, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/spin_to_win(atom/target, var/next_cycle) /mob/living/simple_mob/mechanical/mecha/eclipse/proc/spin_to_win(atom/target, var/next_cycle)
if(!target) if(!target)
@@ -502,10 +496,6 @@
downfour_leftfour(target) downfour_leftfour(target)
attackcycle = next_cycle attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_three(atom/target) //The strangest pattern but a last stand at 0 defense.
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay) /mob/living/simple_mob/mechanical/mecha/eclipse/proc/random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay)
var/deathdir = rand(1,32) var/deathdir = rand(1,32)
if(!target) if(!target)
@@ -584,7 +574,7 @@
//Nigh unbreakable defenses except during certian attack phases. //Nigh unbreakable defenses except during certian attack phases.
/mob/living/simple_mob/mechanical/mecha/eclipse/mining_guard //Explosive death /mob/living/simple_mob/mechanical/mecha/eclipse/mining_guard //Explosive death
name = "Eclipse Expirmental Mining Mecha" name = "Eclipse Expirmental Mining Mecha"
specialattackprojectile = /obj/item/projectile/energy/excavate/weak specialattackprojectile = /obj/item/projectile/energy/eclipse/lorgealien
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100) armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0) armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
icon_state = "shielded_mining_mecha" icon_state = "shielded_mining_mecha"
@@ -622,7 +612,7 @@
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100) armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0) armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
icon_state = "shielded_mining_mecha" icon_state = "shielded_mining_mecha"
addtimer(CALLBACK(src, PROC_REF(summon_drones), target, 3, 2, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 2), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
@@ -847,7 +837,7 @@
name = "gravity well" name = "gravity well"
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi' icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "gravity_well" icon_state = "gravity_well"
damage = 70 damage = 60
armor_penetration = 30 armor_penetration = 30
speed = 15 //Note to self, may need to slow down even further. speed = 15 //Note to self, may need to slow down even further.
@@ -855,18 +845,14 @@
name = "burning plasma" name = "burning plasma"
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi' icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
icon_state = "plasma" icon_state = "plasma"
damage = 70 damage = 60
armor_penetration = 30 armor_penetration = 30
speed = 15 speed = 15
/obj/item/projectile/energy/infernosphere/Move() /obj/item/projectile/energy/infernosphere/Move()
. = ..() . = ..()
var/turf/T = get_turf(src) if(prob(20))
if(prob(10)) new /obj/fire(src.loc)
if(T)
new /obj/effect/decal/cleanable/liquid_fuel(T,0.2,1)
T.hotspot_expose(500, 50, 1)
T.create_fire(700)
/obj/item/projectile/bullet/eclipsejanus /obj/item/projectile/bullet/eclipsejanus
use_submunitions = 1 use_submunitions = 1
@@ -1047,7 +1033,6 @@
return TRUE return TRUE
//Jank code? //Jank code?
/obj/item/projectile/energy/spintowin /obj/item/projectile/energy/spintowin
name = "burning plasma" name = "burning plasma"
@@ -1055,12 +1040,13 @@
icon_state = "plasma" icon_state = "plasma"
damage = 50 damage = 50
speed = 15 speed = 15
ignore_source_check = TRUE
trajectory_ignore_forcemove = TRUE
var/spinvaule = 120 var/spinvaule = 120
/obj/item/projectile/energy/spintowin/Move() /obj/item/projectile/energy/spintowin/Move()
. = ..() . = ..()
yo ++ Angle += spinvaule
xo ++
/obj/item/gun/energy/curse_tyrshotgun/debuggun /obj/item/gun/energy/curse_tyrshotgun/debuggun
projectile_type = /obj/item/projectile/energy/spintowin projectile_type = /obj/item/projectile/energy/spintowin
@@ -1090,3 +1076,315 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A) /mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
//Revamped special attacks
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_one(atom/target, var/next_cycle)
if(!target)
return
upfour(target)
downfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_two), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_two(atom/target, var/next_cycle)
if(!target)
return
upfour_leftone(target)
downfour_rightone(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_three), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_three(atom/target, var/next_cycle)
if(!target)
return
upfour_lefttwo(target)
downfour_righttwo(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_four), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_four(atom/target, var/next_cycle)
if(!target)
return
upfour_leftthree(target)
downfour_rightthree(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_five), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_five(atom/target, var/next_cycle)
if(!target)
return
upfour_leftfour(target)
downfour_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_six), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_six(atom/target, var/next_cycle)
if(!target)
return
upthree_leftfour(target)
downthree_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_seven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_seven(atom/target, var/next_cycle)
if(!target)
return
uptwo_leftfour(target)
downtwo_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_eight), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eight(atom/target, var/next_cycle)
if(!target)
return
upone_leftfour(target)
downone_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_nine), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_nine(atom/target, var/next_cycle)
if(!target)
return
leftfour(target)
rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_ten), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_ten(atom/target, var/next_cycle)
if(!target)
return
downone_leftfour(target)
upone_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_eleven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eleven(atom/target, var/next_cycle)
if(!target)
return
downtwo_leftfour(target)
uptwo_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_twelve), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_twelve(atom/target, var/next_cycle)
if(!target)
return
downthree_leftfour(target)
upthree_rightfour(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_one_r(atom/target, var/next_cycle)
if(!target)
return
upfour(target)
downfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_two_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_two_r(atom/target, var/next_cycle)
if(!target)
return
upfour_rightone(target)
downfour_leftone(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_three_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_three_r(atom/target, var/next_cycle)
if(!target)
return
upfour_righttwo(target)
downfour_lefttwo(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_four_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_four_r(atom/target, var/next_cycle)
if(!target)
return
upfour_rightthree(target)
downfour_leftthree(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_five_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_five_r(atom/target, var/next_cycle)
if(!target)
return
upfour_rightfour(target)
downfour_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_six_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_six_r(atom/target, var/next_cycle)
if(!target)
return
upthree_rightfour(target)
downthree_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_seven_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_seven_r(atom/target, var/next_cycle)
if(!target)
return
uptwo_rightfour(target)
downtwo_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_eight_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eight_r(atom/target, var/next_cycle)
if(!target)
return
upone_rightfour(target)
downone_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_nine_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_nine_r(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_ten_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_ten_r(atom/target, var/next_cycle)
if(!target)
return
downone_rightfour(target)
upone_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_eleven_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eleven_r(atom/target, var/next_cycle)
if(!target)
return
downtwo_rightfour(target)
uptwo_leftfour(target)
addtimer(CALLBACK(src, PROC_REF(dualsweep_twelve_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_twelve_r(atom/target, var/next_cycle)
if(!target)
return
downthree_rightfour(target)
upthree_leftfour(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_one(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_two), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_two(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour(target)
downfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_three), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_three(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_four), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_four(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour_leftone(target)
upfour_rightone(target)
downfour_leftone(target)
downfour_rightone(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_five), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_five(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_six), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_six(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour_lefttwo(target)
upfour_righttwo(target)
downfour_lefttwo(target)
downfour_righttwo(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_seven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_seven(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_eight), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_eight(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour_leftthree(target)
upfour_rightthree(target)
downfour_leftthree(target)
downfour_rightthree(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_nine), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_nine(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_ten), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_ten(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour_leftthree(target)
upfour_rightthree(target)
downfour_leftthree(target)
downfour_rightthree(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_eleven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_eleven(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_twelve), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_twelve(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upfour_leftfour(target)
upfour_rightfour(target)
downfour_leftfour(target)
downfour_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_thirteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_thirteen(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_fourteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_fourteen(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
upthree_leftfour(target)
upthree_rightfour(target)
downthree_leftfour(target)
downthree_rightfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_fifteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_fifteen(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
addtimer(CALLBACK(src, PROC_REF(zone_control_sixteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_sixteen(atom/target, var/next_cycle)
if(!target)
return
rightfour(target)
leftfour(target)
uptwo_leftfour(target)
uptwo_rightfour(target)
downtwo_leftfour(target)
downtwo_rightfour(target)
attackcycle = next_cycle

View File

@@ -188,3 +188,82 @@
submunition_spread_min = 200 submunition_spread_min = 200
submunitions = list(/obj/item/projectile/energy/redlighting = 3) submunitions = list(/obj/item/projectile/energy/redlighting = 3)
hud_state = "laser_sniper" hud_state = "laser_sniper"
/obj/item/projectile/energy/mechahack
name = "remote hack"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "databreach"
nodamage = 1
irradiate = 3
speed = 1 //a bit faster due to the source having a 3 second wind up
/obj/item/projectile/energy/mechahack/on_hit(var/atom/target)
. = ..()
if(istype(target, /obj/mecha))
remote_eject(target)
/obj/item/projectile/energy/mechahack/proc/remote_eject(obj/mecha/M)
if(!M)
return
visible_message(span_critical("\The [M] is remotly hacked and ejects [M.occupant]!"))
M.go_out()
/obj/item/projectile/energy/lightingspark
name = "lighting spark"
icon_state = "spark"
nodamage = 1
damage_type = HALLOSS
speed = 2
var/power = 35 //How hard it will hit for with electrocute_act(), decreases with each bounce.
/obj/item/projectile/energy/lightingspark/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
//First we shock the guy we just hit.
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
else
target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
/obj/item/projectile/bullet/crystaline
name = "crystal bullet"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "crystal"
damage = 30
armor_penetration = 20
embed_chance = 0
speed = 2
/obj/item/projectile/energy/eclipse
name = "experimental laser"
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
icon_state = "laser"
check_armour = "laser"
damage = 30
armor_penetration = 20
speed = 2
//The normal laser is easier to guard, but can chain screw ups easier
/obj/item/projectile/energy/eclipse/lorge
damage = 50
armor_penetration = 20
eyeblur = 3
icon_state = "mega_laser"
speed = 15
/obj/item/projectile/energy/eclipse/lorgealien
damage = 50
armor_penetration = 40
icon_state = "mega_laser_p"
speed = 15
/obj/item/projectile/bullet/crystalineburst
use_submunitions = 1
range = 0
embed_chance = 0
spread_submunition_damage = FALSE
submunition_spread_max = 120
submunition_spread_min = 60
submunitions = list(/obj/item/projectile/bullet/crystaline = 5)

View File

@@ -30,7 +30,8 @@
icon_state = "shotgun_blast" icon_state = "shotgun_blast"
damage = 50 damage = 50
range = 5 range = 5
check_armour = "laser" check_armour = "bullet"
damage_type = BRUTE
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0) /obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target)) if(isliving(target))
@@ -51,7 +52,9 @@
/obj/item/projectile/beam/precursor_tyr /obj/item/projectile/beam/precursor_tyr
name = "laser" name = "laser"
icon_state = "laser" icon_state = "laser"
damage = 50 damage = 20
armor_penetration = 30
penetrating = 20
damage_type = BURN damage_type = BURN
check_armour = "laser" check_armour = "laser"
range = 5 range = 5
@@ -60,6 +63,15 @@
hud_state = "laser" hud_state = "laser"
hud_state_empty = "battery_empty" hud_state_empty = "battery_empty"
/obj/item/projectile/bullet/tyrshotburst
use_submunitions = 1
range = 0
embed_chance = 0
spread_submunition_damage = FALSE
submunition_spread_max = 120
submunition_spread_min = 60
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 5)
/obj/item/gun/energy/energyballchain /obj/item/gun/energy/energyballchain
name = "remade prototype weapon" name = "remade prototype weapon"
desc = "A weapon created from strange alien junk and blueprints" desc = "A weapon created from strange alien junk and blueprints"
@@ -103,6 +115,11 @@
recoil_mode = 0 recoil_mode = 0
charge_meter = 1 charge_meter = 1
firemodes = list(
list(mode_name="explosive", projectile_type=/obj/item/projectile/energy/wp_shotgun, charge_cost = 500),
list(mode_name="spray", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 750),
)
move_delay = 0 move_delay = 0
one_handed_penalty = 50 one_handed_penalty = 50

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB