Fixing, nerfing and buffing the Eclipse (#7283)

This commit is contained in:
FluffMedic
2023-12-01 16:20:43 -05:00
committed by GitHub
parent 338ea5620e
commit 06f859fbb2
2 changed files with 221 additions and 128 deletions

View File

@@ -23,8 +23,8 @@
response_disarm = "shoves" response_disarm = "shoves"
response_harm = "hits" response_harm = "hits"
health = 50 health = 40
maxHealth = 50 maxHealth = 40
harm_intent_damage = 5 harm_intent_damage = 5
melee_damage_lower = 15 //Tac Knife damage melee_damage_lower = 15 //Tac Knife damage
melee_damage_upper = 15 melee_damage_upper = 15
@@ -34,7 +34,7 @@
projectile_dispersion = 8 projectile_dispersion = 8
projectile_accuracy = -20 projectile_accuracy = -20
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) // Simple mob immunuties plus base Eclipse foe stuff armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) // Simple mob immunuties plus base Eclipse foe stuff
ranged_cooldown = 4 ranged_cooldown = 5
can_be_drop_prey = FALSE //CHOMP Add can_be_drop_prey = FALSE //CHOMP Add
pass_flags = PASSTABLE //mostly for the melee mobs. pass_flags = PASSTABLE //mostly for the melee mobs.
@@ -58,10 +58,7 @@
reload_max = 7 // Not the best default, but it fits the pistol reload_max = 7 // Not the best default, but it fits the pistol
ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged
// Grenade special attack vars special_attack_cooldown = 15 SECONDS
var/grenade_type = /obj/item/weapon/grenade/shooter/rubber
var/grenade_timer = 50 //CHOMPEdit
special_attack_cooldown = 45 SECONDS
special_attack_min_range = 2 special_attack_min_range = 2
special_attack_max_range = 7 special_attack_max_range = 7
var/has_heal_droid = FALSE var/has_heal_droid = FALSE
@@ -81,41 +78,6 @@
if(has_heal_droid) if(has_heal_droid)
add_overlay(image(icon = 'modular_chomp/icons/mob/eclipse.dmi', icon_state = "heal_droid")) add_overlay(image(icon = 'modular_chomp/icons/mob/eclipse.dmi', icon_state = "heal_droid"))
////////////////////////////////
// Grenade Attack
////////////////////////////////
// Any merc can use this, just set special_attack_charges to a positive value
// Check if we should bother with the grenade
/mob/living/simple_mob/humanoid/eclipse/should_special_attack(atom/A)
var/mob_count = 0 // Are there enough mobs to consider grenading?
var/turf/T = get_turf(A)
for(var/mob/M in range(T, 2))
if(M.faction == faction) // Don't grenade our friends
return FALSE
if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade
if(!M.stat) // Dead things don't warrant a grenade
mob_count ++
if(mob_count < 2)
return FALSE
else
return TRUE
// Yes? Throw the grenade
/mob/living/simple_mob/humanoid/eclipse/do_special_attack(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(A, G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
special_attack_charges = max(special_attack_charges-1, 0)
set_AI_busy(FALSE)
//////////////////////////////// ////////////////////////////////
// Stealing Merc AI Types // Stealing Merc AI Types
//////////////////////////////// ////////////////////////////////
@@ -155,28 +117,54 @@
/mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle /mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle
name = "Solar Eclipse Tesla Serpent" name = "Solar Eclipse Tesla Serpent"
desc = "A naga cladded in strange orange armor, seemingly guarded from lasers and energy based weaponry." desc = "A naga cladded in strange orange armor, seemingly guarded from lasers and energy based weaponry."
health = 100 health = 40
maxHealth = 100 maxHealth = 40
icon_state = "eclipse_tesla" icon_state = "eclipse_tesla"
icon_living = "eclipse_tesla" icon_living = "eclipse_tesla"
reload_max = 5 reload_max = 5
movement_cooldown = 1 movement_cooldown = 1
special_attack_cooldown = 5 SECONDS special_attack_cooldown = 20 SECONDS
special_attack_min_range = 1 special_attack_min_range = 1
special_attack_max_range = 7 special_attack_max_range = 7
var/grenade_type = /obj/item/weapon/grenade/chem_grenade/incendiary
var/grenade_timer = 20 //CHOMPEdit
projectiletype = /obj/item/projectile/energy/electrode/eclipse projectiletype = /obj/item/projectile/energy/electrode/eclipse
/mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle/should_special_attack(atom/A)
var/mob_count = 0 // Are there enough mobs to consider grenading?
var/turf/T = get_turf(A)
for(var/mob/M in range(T, 2))
if(M.faction == faction) // Don't grenade our friends
return FALSE
if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade
if(!M.stat) // Dead things don't warrant a grenade
mob_count ++
if(mob_count < 2)
return FALSE
else
return TRUE
// Yes? Throw the grenade
/mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle/do_special_attack(atom/A) /mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle/do_special_attack(atom/A)
var/obj/item/projectile/P = new /obj/item/projectile/energy/electrode/eclipse(get_turf(src)) set waitfor = FALSE
P.launch_projectile(A, BP_TORSO, src) set_AI_busy(TRUE)
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(A, G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
special_attack_charges = max(special_attack_charges-1, 0)
set_AI_busy(FALSE)
/mob/living/simple_mob/humanoid/eclipse/solar/firemoff /mob/living/simple_mob/humanoid/eclipse/solar/firemoff
name = "Solar Eclipse Inferno Moth" name = "Solar Eclipse Inferno Moth"
desc = "A moth like creature cladded in armor, wisps of flames swirling around it. Protected from lasers and energy." desc = "A moth like creature cladded in armor, wisps of flames swirling around it. Protected from lasers and energy."
health = 35 health = 40
maxHealth = 35 maxHealth = 40
icon_state = "eclipse_moth" icon_state = "eclipse_moth"
icon_living = "eclipse_moth" icon_living = "eclipse_moth"
reload_max = 10 reload_max = 10
@@ -195,14 +183,14 @@
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh /mob/living/simple_mob/humanoid/eclipse/solar/snipertesh
name = "Solar Eclipse Sniper" name = "Solar Eclipse Sniper"
desc = "An armored teshari with a sniper, protected from laser and energy based attacks" desc = "An armored teshari with a sniper, protected from laser and energy based attacks"
health = 25 health = 20
maxHealth = 25 maxHealth = 20
movement_cooldown = -1 movement_cooldown = -1
icon_state = "eclipse_snipertesh" icon_state = "eclipse_snipertesh"
icon_living = "eclipse_snipertesh" icon_living = "eclipse_snipertesh"
projectiletype = /obj/item/projectile/beam/sniper/eclipse projectiletype = /obj/item/projectile/energy/mob/heavysniper
projectile_accuracy = 100 projectile_accuracy = 100
@@ -253,8 +241,8 @@
/mob/living/simple_mob/humanoid/eclipse/solar/radiation /mob/living/simple_mob/humanoid/eclipse/solar/radiation
name = "Solar Eclipse Irradiator" name = "Solar Eclipse Irradiator"
desc = "A lizard emitting radiation, whilst protected from it, alongside energy and laser based weapons" desc = "A lizard emitting radiation, whilst protected from it, alongside energy and laser based weapons"
health = 75 health = 40
maxHealth = 75 maxHealth = 40
glow_toggle = TRUE glow_toggle = TRUE
reload_max = 3 reload_max = 3
@@ -299,8 +287,8 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle //Bouncing bullet extreme /mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle //Bouncing bullet extreme
name = "Lunar Eclipse Silver Serpent" name = "Lunar Eclipse Silver Serpent"
desc = "A hungry looking naga, their strange armor protecting them from ballistics and physical weaponry." desc = "A hungry looking naga, their strange armor protecting them from ballistics and physical weaponry."
health = 50 health = 40
maxHealth = 50 maxHealth = 40
reload_max = 6 reload_max = 6
movement_cooldown = 1 movement_cooldown = 1
@@ -309,54 +297,98 @@
projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/eclipse projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/eclipse
/mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle/attackby(var/obj/item/O as obj, var/mob/user as mob) var/grenade_type = /obj/item/weapon/grenade/chem_grenade/teargas
if(O.force) var/grenade_timer = 20
if(prob(15))
visible_message("<span class='danger'>\The [O] is absorbed by the armor!</span>")
if(user)
ai_holder.react_to_attack(user)
return
else
..()
else
to_chat(user, "<span class='warning'>This weapon is ineffective, it does no damage.</span>")
visible_message("<span class='warning'>\The [user] gently taps [src] with \the [O].</span>")
/mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle/bullet_act(var/obj/item/projectile/Proj) /mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle/should_special_attack(atom/A)
if(!Proj) return var/mob_count = 0 // Are there enough mobs to consider grenading?
if(prob(15)) var/turf/T = get_turf(A)
visible_message("<font color='red'><B>The [Proj] is absorbed by the armor!</B></font>") for(var/mob/M in range(T, 2))
if(Proj.firer) if(M.faction == faction) // Don't grenade our friends
ai_holder.react_to_attack(Proj.firer) return FALSE
return if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade
if(!M.stat) // Dead things don't warrant a grenade
mob_count ++
if(mob_count < 2)
return FALSE
else else
..() return TRUE
// Yes? Throw the grenade
/mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle/do_special_attack(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(A, G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
special_attack_charges = max(special_attack_charges-1, 0)
set_AI_busy(FALSE)
/mob/living/simple_mob/humanoid/eclipse/lunar/shotgunner //wuff with shotgun /mob/living/simple_mob/humanoid/eclipse/lunar/shotgunner //wuff with shotgun
name = "Lunar Eclipse Shotgunner" name = "Lunar Eclipse Shotgunner"
desc = "A Vulpkanin or the like in a red-purple flashing rigsuit, it defending them from physical damage of close and long ranges." desc = "A Vulpkanin or the like in a red-purple flashing rigsuit, it defending them from physical damage of close and long ranges."
health = 35 health = 40
maxHealth = 35 maxHealth = 40
reload_max = 2 reload_max = 1
icon_state = "eclipse_shotwuff" icon_state = "eclipse_shotwuff"
icon_living = "eclipse_shotwuff" icon_living = "eclipse_shotwuff"
projectiletype = /obj/item/projectile/bullet/shotgun/slow projectiletype = /obj/item/projectile/bullet/shotgun
ranged_attack_delay = 0.5 SECONDS ranged_attack_delay = 0.5 SECONDS
/mob/living/simple_mob/humanoid/eclipse/lunar/shotgunner/ranged_pre_animation(atom/A)
Beam(get_turf(A), icon_state = "sniper_beam", time = 0.5 SECONDS, maxdistance = 5)
. = ..()
/mob/living/simple_mob/humanoid/eclipse/lunar/shotgunner/shoot_target(atom/A)
set waitfor = FALSE
if(!istype(A) || QDELETED(A))
return
setClickCooldown(get_attack_speed())
face_atom(A)
var/atom/orig_targ = A
if(ranged_attack_delay)
A = get_turf(orig_targ)
ranged_pre_animation(A)
handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false.
if(needs_reload)
if(reload_count >= reload_max)
try_reload()
return FALSE
visible_message("<span class='danger'><b>\The [src]</b> fires at \the [orig_targ]!</span>")
shoot(A)
if(casingtype)
new casingtype(loc)
if(ranged_attack_delay)
ranged_post_animation(A)
return TRUE
/mob/living/simple_mob/humanoid/eclipse/lunar/bulletstorm //tesh got a gun /mob/living/simple_mob/humanoid/eclipse/lunar/bulletstorm //tesh got a gun
name = "Lunar Eclipse Judge" name = "Lunar Eclipse Judge"
desc = "A teshari wildly wielding a pistol, wearing bullet and sword protective gear." desc = "A teshari wildly wielding a pistol, wearing bullet and sword protective gear."
health = 25 health = 20
maxHealth = 25 maxHealth = 20
icon_state = "eclipse_shottesh" icon_state = "eclipse_shottesh"
icon_living = "eclipse_shottesh" icon_living = "eclipse_shottesh"
movement_cooldown = -1 movement_cooldown = -1
projectiletype = /obj/item/projectile/bullet/shotgun/slow projectiletype = /obj/item/projectile/bullet/shotgun
reload_max = 6 reload_max = 6
projectile_dispersion = 100 projectile_dispersion = 100
@@ -366,12 +398,12 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/ravanger //Tanky boi. Very deadly melee /mob/living/simple_mob/humanoid/eclipse/lunar/ravanger //Tanky boi. Very deadly melee
name = "Lunar Eclipse Ravanger" name = "Lunar Eclipse Ravanger"
desc = "An individual wearing strange armor that seems to be living, and breathing while providing protection from bullets and swords." desc = "An individual wearing strange armor that seems to be living, and breathing while providing protection from bullets and swords."
health = 60 health = 40
maxHealth = 60 maxHealth = 40
icon_state = "eclipse_ravanger" icon_state = "eclipse_ravanger"
icon_living = "eclipse_ravanger" icon_living = "eclipse_ravanger"
attack_armor_pen = 25 attack_armor_pen = 15
melee_damage_lower = 20 melee_damage_lower = 20
melee_damage_upper = 20 melee_damage_upper = 20
@@ -393,14 +425,13 @@
/mob/living/simple_mob/humanoid/eclipse/solar/hellhound /mob/living/simple_mob/humanoid/eclipse/solar/hellhound
name = "Solar Eclipse Hound" name = "Solar Eclipse Hound"
desc = "A heavily armored creature, flames dancing around it's burn and energy proof armor." desc = "A heavily armored creature, flames dancing around it's burn and energy proof armor."
health = 75 health = 70
maxHealth = 75 maxHealth = 70
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
projectiletype = null //Flashing was to much for this mob. projectiletype = null //Flashing was to much for this mob.
movement_cooldown = -1 movement_cooldown = -1
melee_damage_lower = 20 melee_damage_lower = 20
melee_damage_upper = 20 melee_damage_upper = 20
attack_armor_pen = 20
icon_state = "eclipse_hound" icon_state = "eclipse_hound"
icon_living = "eclipse_hound" icon_living = "eclipse_hound"
size_multiplier = 1.25 size_multiplier = 1.25
@@ -408,14 +439,20 @@
var/poison_per_bite = 4 var/poison_per_bite = 4
var/poison_type = "stoxin" var/poison_type = "stoxin"
melee_attack_delay = 4 melee_attack_delay = 3
/mob/living/simple_mob/humanoid/eclipse/solar/hellhound/do_special_attack(atom/A)
var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/smoke_spread
s1.set_up(5, 1, A)
var/obj/item/projectile/P = new /obj/item/projectile/energy/fireball(get_turf(src))
P.launch_projectile(A, BP_TORSO, src)
/mob/living/simple_mob/humanoid/eclipse/lunar/wheel /mob/living/simple_mob/humanoid/eclipse/lunar/wheel
name = "Lunar Eclipse Armadillo" name = "Lunar Eclipse Armadillo"
desc = "A silver armadillo coiled up, and spinning at you, all bullets and close quarters attacks bouncing off." desc = "A silver armadillo coiled up, and spinning at you, all bullets and close quarters attacks bouncing off."
health = 75 health = 70
maxHealth = 75 maxHealth = 70
melee_damage_lower = 10 melee_damage_lower = 10
melee_damage_upper = 10 melee_damage_upper = 10
attack_armor_pen = 50 attack_armor_pen = 50
@@ -511,7 +548,7 @@
/mob/living/simple_mob/humanoid/eclipse/solar/guardian /mob/living/simple_mob/humanoid/eclipse/solar/guardian
name = "Solar Eclipse Guardian" name = "Solar Eclipse Guardian"
desc = "A squishy bouncy individual, it seeming to harmlessly absorb lasers and energy in general." desc = "A squishy bouncy individual, it seeming to harmlessly absorb lasers and energy in general."
projectiletype = /obj/item/projectile/ion projectiletype = /obj/item/projectile/energy/mob/ionbeam
icon_state = "eclipse_guardian" icon_state = "eclipse_guardian"
icon_living = "eclipse_guardian" icon_living = "eclipse_guardian"
reload_max = 10 reload_max = 10
@@ -553,9 +590,6 @@
if(prob(shock_chance)) if(prob(shock_chance))
A.emp_act(4) //The weakest strength of EMP A.emp_act(4) //The weakest strength of EMP
playsound(src, 'sound/weapons/Egloves.ogg', 75, 1) playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
L.Weaken(4)
L.Stun(4)
L.stuttering = max(L.stuttering, 4)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, L) s.set_up(5, 1, L)
s.start() s.start()
@@ -566,12 +600,12 @@
//Freezing winds update //Freezing winds update
/mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster //Air sniper /mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster //Air sniper
name = "Lunar Eclipse Aeroblaster" name = "Lunar Eclipse Demodrone"
desc = "A strange somewhat see through floating jellyfish." desc = "A strange somewhat see through floating jellyfish."
health = 25 health = 30
maxHealth = 25 maxHealth = 30
ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged/sniper ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged
projectiletype = /obj/item/projectile/bullet/rifle/a145/aero projectiletype = /obj/item/projectile/bullet/srmrocket
icon_state = "aeroblaster" icon_state = "aeroblaster"
icon_living = "aeroblaster" icon_living = "aeroblaster"
@@ -582,8 +616,39 @@
ranged_attack_delay = 1.5 SECONDS ranged_attack_delay = 1.5 SECONDS
hovering = TRUE hovering = TRUE
var/exploded = FALSE
var/explosion_dev_range = 0
var/explosion_heavy_range = 1
var/explosion_light_range = 2
var/explosion_flash_range = 3 // This doesn't do anything iirc.
var/explosion_delay_lower = 5 SECOND // Lower bound for explosion delay.
var/explosion_delay_upper = 10 SECONDS // Upper bound.
/mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster/death()
visible_message(span("critical", "\The [src]'s body begins to rupture!"))
var/delay = rand(explosion_delay_lower, explosion_delay_upper)
spawn(0)
// Flash black and red as a warning.
for(var/i = 1 to delay)
if(i % 2 == 0)
color = "#000000"
else
color = "#FF0000"
sleep(1)
spawn(delay)
// The actual boom.
if(src && !exploded)
visible_message(span("danger", "\The [src]'s body detonates!"))
exploded = TRUE
explosion(src.loc, explosion_dev_range, explosion_heavy_range, explosion_light_range, explosion_flash_range)
return ..()
/mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster/ranged_pre_animation(atom/A) /mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster/ranged_pre_animation(atom/A)
Beam(get_turf(A), icon_state = "sniper_beam", time = 1 SECONDS, maxdistance = 15) Beam(get_turf(A), icon_state = "sniper_beam", time = 1.5 SECONDS, maxdistance = 5)
. = ..() . = ..()
/mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster/shoot_target(atom/A) /mob/living/simple_mob/humanoid/eclipse/lunar/aeroblaster/shoot_target(atom/A)
@@ -618,19 +683,12 @@
return TRUE return TRUE
/obj/item/projectile/bullet/rifle/a145/aero
damage = 10
stun = 0
weaken = 0
penetrating = 10
armor_penetration = 90
hud_state = "sniper_flak"
/mob/living/simple_mob/humanoid/eclipse/lunar/miner //Confusion? /mob/living/simple_mob/humanoid/eclipse/lunar/miner //Confusion?
name = "Lunar Eclipse Miner" name = "Lunar Eclipse Miner"
desc = "A slime creature in red and blue armor." desc = "A slime creature in red and blue armor."
health = 50 health = 30
maxHealth = 50 maxHealth = 30
projectiletype = /obj/item/projectile/energy/excavate/weak projectiletype = /obj/item/projectile/energy/excavate/weak
special_attack_cooldown = 50 SECONDS special_attack_cooldown = 50 SECONDS
special_attack_min_range = 4 special_attack_min_range = 4
@@ -649,8 +707,8 @@
/mob/living/simple_mob/humanoid/eclipse/solar/froststalker //teleporting stalker /mob/living/simple_mob/humanoid/eclipse/solar/froststalker //teleporting stalker
name = "Solar Eclipse Froststalker" name = "Solar Eclipse Froststalker"
health = 50 health = 30
maxHealth = 50 maxHealth = 30
desc = "A somewhat see through being wearing a burn resistaint coat." desc = "A somewhat see through being wearing a burn resistaint coat."
alpha = 180 alpha = 180
melee_damage_lower = 20 melee_damage_lower = 20
@@ -719,10 +777,11 @@
reload_max = 5 reload_max = 5
icon_state = "cryo" icon_state = "cryo"
icon_living = "cryo" icon_living = "cryo"
grenade_type = /obj/item/weapon/grenade/chem_grenade/frost
cold_resist = 1.0 cold_resist = 1.0
has_heal_droid = TRUE has_heal_droid = TRUE
ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged/cyro ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged/cyro
var/grenade_type = /obj/item/weapon/grenade/chem_grenade/frost
var/grenade_timer = 20 //CHOMPEdit
ranged_attack_delay = 1.5 SECONDS ranged_attack_delay = 1.5 SECONDS
@@ -731,6 +790,33 @@
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)
/mob/living/simple_mob/humanoid/eclipse/solar/cryomancer/should_special_attack(atom/A)
var/mob_count = 0 // Are there enough mobs to consider grenading?
var/turf/T = get_turf(A)
for(var/mob/M in range(T, 2))
if(M.faction == faction) // Don't grenade our friends
return FALSE
if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade
if(!M.stat) // Dead things don't warrant a grenade
mob_count ++
if(mob_count < 2)
return FALSE
else
return TRUE
// Yes? Throw the grenade
/mob/living/simple_mob/humanoid/eclipse/solar/cryomancer/do_special_attack(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src))
if(istype(G))
G.throw_at(A, G.throw_range, G.throw_speed, src)
G.det_time = grenade_timer //CHOMPEdit
G.activate(src) //CHOMPEdit
special_attack_charges = max(special_attack_charges-1, 0)
set_AI_busy(FALSE)
/obj/item/weapon/grenade/chem_grenade/frost /obj/item/weapon/grenade/chem_grenade/frost
name = "frost grenade" name = "frost grenade"

View File

@@ -81,27 +81,26 @@
//Eclipse mob stuff //Eclipse mob stuff
/obj/item/projectile/energy/blob/moth /obj/item/projectile/energy/blob/moth
damage = 20 damage = 15
armor_penetration = 25 armor_penetration = 15
my_chems = list("fuel", "mold") my_chems = list("fuel", "mold")
flammability = 0.25 flammability = 0.25
modifier_type_to_apply = /datum/modifier/fire modifier_type_to_apply = /datum/modifier/fire
modifier_duration = 6 SECONDS modifier_duration = 6 SECONDS
color = "#38b9ff" color = "#38b9ff"
speed = 2.6 speed = 3.2
/obj/item/projectile/bullet/pistol/medium/ap/eclipse /obj/item/projectile/bullet/pistol/medium/ap/eclipse
armor_penetration = 20
ricochets = 1 ricochets = 1
ricochets_max = 8 ricochets_max = 8
ricochet_chance = 100 ricochet_chance = 100
speed = 2.6 speed = 3.2
/obj/item/projectile/energy/electrode/eclipse /obj/item/projectile/energy/electrode/eclipse
damage = 20 damage = 20
damage_type = BURN damage_type = BURN
color = "#38b9ff" color = "#38b9ff"
speed = 2.6 speed = 3.2
/obj/item/projectile/arc/fragmentation/moth /obj/item/projectile/arc/fragmentation/moth
name = "solar mortar" name = "solar mortar"
@@ -113,16 +112,24 @@
fragment_amount = 3 // Same as a grenade. fragment_amount = 3 // Same as a grenade.
spread_range = 7 spread_range = 7
/obj/item/projectile/beam/sniper/eclipse /obj/item/projectile/energy/mob/heavysniper
armor_penetration = 50 armor_penetration = 40
damage = 50 damage = 40
speed = 1.2
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
name = "sniper beam"
icon_state = "impact_xray"
/obj/item/projectile/energy/declone/burn /obj/item/projectile/energy/declone/burn
damage = 15 damage = 15
armor_penetration = 10
nodamage = 0 nodamage = 0
speed = 2.6 speed = 3.2
irradiate = 60 irradiate = 30
/obj/item/projectile/bullet/shotgun/slow /obj/item/projectile/energy/mob/ionbeam
speed = 2.0 name = "Ion Burst"
damage = 10
damage_type = ELECTROMAG
light_color = "#00CCFF"
icon_state = "impact_blue"
fire_sound = 'sound/weapons/Laser.ogg'