mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
Alterations (#9835)
This commit is contained in:
@@ -58,15 +58,12 @@
|
|||||||
reload_time = 1.5 SECONDS
|
reload_time = 1.5 SECONDS
|
||||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/eclipse
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/eclipse
|
||||||
|
|
||||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
|
||||||
/obj/item/bone/skull = 100
|
|
||||||
)
|
|
||||||
|
|
||||||
special_attack_cooldown = 15 SECONDS
|
special_attack_cooldown = 15 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
|
||||||
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
|
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
|
||||||
|
var/artidrop = /obj/effect/artillery_attack
|
||||||
|
|
||||||
//Want a self heal for a spefic dude, and to increase diffculty of some POIs
|
//Want a self heal for a spefic dude, and to increase diffculty of some POIs
|
||||||
/mob/living/simple_mob/humanoid/eclipse/handle_special()
|
/mob/living/simple_mob/humanoid/eclipse/handle_special()
|
||||||
@@ -136,11 +133,9 @@
|
|||||||
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/bullet_act(obj/item/projectile/P)
|
/mob/living/simple_mob/humanoid/eclipse/solar/bullet_act(obj/item/projectile/P)
|
||||||
|
..()
|
||||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||||
visible_message(span_boldwarning("[P] seems ineffective!."))
|
visible_message(span_cult("[P] seems ineffective!."))
|
||||||
..()
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh
|
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh
|
||||||
name = "Solar Eclipse Sniper"
|
name = "Solar Eclipse Sniper"
|
||||||
@@ -449,14 +444,12 @@
|
|||||||
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
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/lunar/bullet_act(obj/item/projectile/P)
|
/mob/living/simple_mob/humanoid/eclipse/lunar/bullet_act(obj/item/projectile/P)
|
||||||
|
..()
|
||||||
if(istype(P, /obj/item/projectile/bullet))
|
if(istype(P, /obj/item/projectile/bullet))
|
||||||
visible_message(span_boldwarning("[P] seems ineffective!."))
|
visible_message(span_cult("[P] seems ineffective!."))
|
||||||
..()
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/lunar/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
/mob/living/simple_mob/humanoid/eclipse/lunar/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
to_chat(user, span_warning("This weapon is ineffective, it does no damage."))
|
to_chat(user, span_cult("This weapon is ineffective, it does no damage."))
|
||||||
.=..()
|
.=..()
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/lunar/bulletstorm //tesh got a gun
|
/mob/living/simple_mob/humanoid/eclipse/lunar/bulletstorm //tesh got a gun
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
|
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 100, bio = 100, rad = 100)
|
||||||
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
|
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
|
||||||
|
has_heal_droid = TRUE
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/head/security
|
/mob/living/simple_mob/humanoid/eclipse/head/security
|
||||||
name = "Eclipse Head Of Security"
|
name = "Eclipse Head Of Security"
|
||||||
@@ -389,7 +390,7 @@
|
|||||||
if(T.y+i <= world.maxy)
|
if(T.y+i <= world.maxy)
|
||||||
line_range += locate(T.x, T.y+i, T.z)
|
line_range += locate(T.x, T.y+i, T.z)
|
||||||
for(var/turf/dropspot in line_range)
|
for(var/turf/dropspot in line_range)
|
||||||
new /obj/effect/artillery_attack(dropspot)
|
new artidrop(dropspot)
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/proc/bomb_chaos(atom/A)
|
/mob/living/simple_mob/humanoid/eclipse/proc/bomb_chaos(atom/A)
|
||||||
@@ -443,7 +444,7 @@
|
|||||||
var/zed = rand(1,3)
|
var/zed = rand(1,3)
|
||||||
line_range += locate(T.x-zed, T.y+i, T.z)
|
line_range += locate(T.x-zed, T.y+i, T.z)
|
||||||
for(var/turf/dropspot in line_range)
|
for(var/turf/dropspot in line_range)
|
||||||
new /obj/effect/artillery_attack(dropspot)
|
new artidrop(dropspot)
|
||||||
|
|
||||||
|
|
||||||
/obj/effect/artillery_attack
|
/obj/effect/artillery_attack
|
||||||
@@ -453,6 +454,7 @@
|
|||||||
mouse_opacity = 0
|
mouse_opacity = 0
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "drop_marker"
|
icon_state = "drop_marker"
|
||||||
|
var/ammmotype = /obj/effect/falling_effect/callstrike_bomb
|
||||||
|
|
||||||
/obj/effect/artillery_attack/Initialize(mapload)
|
/obj/effect/artillery_attack/Initialize(mapload)
|
||||||
..()
|
..()
|
||||||
@@ -463,7 +465,7 @@
|
|||||||
addtimer(CALLBACK(src, PROC_REF(spawner)), delay, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(spawner)), delay, TIMER_DELETE_ME)
|
||||||
|
|
||||||
/obj/effect/artillery_attack/proc/spawner()
|
/obj/effect/artillery_attack/proc/spawner()
|
||||||
new /obj/effect/falling_effect/callstrike_bomb(src.loc)
|
new ammmotype(src.loc)
|
||||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.7 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.7 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
/obj/effect/falling_effect/callstrike_bomb
|
/obj/effect/falling_effect/callstrike_bomb
|
||||||
@@ -489,4 +491,169 @@
|
|||||||
if(!L.apply_damage(70, BURN, target_zone, blocked, soaked))
|
if(!L.apply_damage(70, BURN, target_zone, blocked, soaked))
|
||||||
break
|
break
|
||||||
playsound(src, 'sound/effects/clang2.ogg', 50, 1)
|
playsound(src, 'sound/effects/clang2.ogg', 50, 1)
|
||||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.25 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.25 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
//Spacing
|
||||||
|
/obj/effect/falling_effect/callstrike_slime
|
||||||
|
falling_type = /obj/effect/callstrike_slime
|
||||||
|
crushing = FALSE
|
||||||
|
|
||||||
|
/obj/effect/callstrike_slime
|
||||||
|
anchored = TRUE
|
||||||
|
density = FALSE
|
||||||
|
mouse_opacity = 0
|
||||||
|
icon ='modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||||
|
|
||||||
|
/obj/effect/callstrike_slime/Initialize(mapload)
|
||||||
|
.=..()
|
||||||
|
icon_state = "squish"
|
||||||
|
|
||||||
|
/obj/effect/callstrike_slime/end_fall(var/crushing = FALSE)
|
||||||
|
for(var/mob/living/L in loc)
|
||||||
|
var/target_zone = ran_zone()
|
||||||
|
var/blocked = L.run_armor_check(target_zone, "energy")
|
||||||
|
var/soaked = L.get_armor_soak(target_zone, "energy")
|
||||||
|
|
||||||
|
if(!L.apply_damage(50, BURN, target_zone, blocked, soaked))
|
||||||
|
break
|
||||||
|
playsound(src, 'sound/effects/squelch1.ogg', 50, 1)
|
||||||
|
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.25 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/effect/artillery_attack/goop
|
||||||
|
ammmotype = /obj/effect/falling_effect/callstrike_slime
|
||||||
|
|
||||||
|
/obj/effect/falling_effect/callstrike_slimezone
|
||||||
|
falling_type = /obj/effect/slimeattack
|
||||||
|
crushing = FALSE
|
||||||
|
|
||||||
|
/obj/effect/slimeattack
|
||||||
|
name = "slime goop"
|
||||||
|
desc = "A pool of acidic slime"
|
||||||
|
icon_state = "pool"
|
||||||
|
icon ='modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||||
|
var/health = 5
|
||||||
|
var/modifiertype = /datum/modifier/poisoned/weak
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/Crossed(atom/movable/AM as mob|obj)
|
||||||
|
if(AM.is_incorporeal())
|
||||||
|
return
|
||||||
|
Bumped(AM)
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/attackby(var/obj/item/W, var/mob/user)
|
||||||
|
user.setClickCooldown(user.get_attack_speed(W))
|
||||||
|
|
||||||
|
if(LAZYLEN(W.attack_verb))
|
||||||
|
visible_message(span_warning("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]"))
|
||||||
|
else
|
||||||
|
visible_message(span_warning("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]"))
|
||||||
|
|
||||||
|
var/damage = W.force / 4.0
|
||||||
|
|
||||||
|
health -= damage
|
||||||
|
healthcheck()
|
||||||
|
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/bullet_act(var/obj/item/projectile/Proj)
|
||||||
|
..()
|
||||||
|
health -= Proj.get_structure_damage()
|
||||||
|
healthcheck()
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/proc/die()
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/proc/healthcheck()
|
||||||
|
if(health <= 0)
|
||||||
|
die()
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/Bumped(mob/M as mob|obj)
|
||||||
|
if(istype(M, /obj/mecha))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(M, /mob/living/))
|
||||||
|
var/mob/living/mob = M
|
||||||
|
if(!mob.hovering || !mob.flying)
|
||||||
|
attack_mob(M)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/effect/slimeattack/proc/attack_mob(mob/living/L)
|
||||||
|
var/target_zone = pick(BP_ALL)
|
||||||
|
var/amount_blocked = L.run_armor_check(target_zone, "bio")
|
||||||
|
var/amount_soaked = L.get_armor_soak(target_zone, "bio")
|
||||||
|
|
||||||
|
var/damage = rand(5,5)
|
||||||
|
|
||||||
|
if(amount_blocked >= 40)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(amount_soaked >= damage)
|
||||||
|
return
|
||||||
|
|
||||||
|
L.apply_damage(damage, BURN, target_zone, amount_blocked, amount_soaked, used_weapon = "slime")
|
||||||
|
L.add_modifier(modifiertype, 5 SECONDS)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/minion
|
||||||
|
name = "Eclipse Expirment"
|
||||||
|
desc = "A being in an armored spacesuit"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/minion/squish_sphere
|
||||||
|
name = "Eclipse Bio-Sphere"
|
||||||
|
desc = "A floating orb of slime"
|
||||||
|
health = 7
|
||||||
|
maxHealth = 7
|
||||||
|
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
|
||||||
|
armor_soak = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||||
|
icon_state = "squishblob"
|
||||||
|
icon_living = "squishblob"
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||||
|
melee_damage_lower = 1
|
||||||
|
melee_damage_upper = 1
|
||||||
|
attack_armor_pen = 100 //90% sure we need damage for the application of mods to proc
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/minion/squish_sphere/apply_melee_effects(var/atom/A) //bring curea, a synth or gamble hard enough.
|
||||||
|
if(isliving(A))
|
||||||
|
var/mob/living/L = A
|
||||||
|
L.add_modifier(/datum/modifier/poisoned, 120 SECONDS)
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/head/stargazer //starhunter boss replacement
|
||||||
|
name = "Eclipse Stargazer"
|
||||||
|
desc = "A being in an armored spacesuit"
|
||||||
|
icon_state = "medi" //place holdery
|
||||||
|
icon_living = "medi" //place holdery
|
||||||
|
health = 600
|
||||||
|
maxHealth = 600
|
||||||
|
armor = list(melee = 35, bullet = 35, laser = 35, energy = 35, bomb = 100, bio = 100, rad = 100)
|
||||||
|
armor_soak = list(melee = 7, bullet = 7, laser = 7, energy = 7, bomb = 0, bio = 0, rad = 0)
|
||||||
|
projectiletype = /obj/item/projectile/energy/homing_bolt
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||||
|
loot_list = list(/obj/item/slime_extract/sepia = 25,
|
||||||
|
/obj/item/slime_extract/ruby = 25,
|
||||||
|
/obj/item/slime_extract/bluespace = 25,
|
||||||
|
/obj/item/slime_extract/light_pink = 25,
|
||||||
|
/obj/item/slime_extract/yellow = 25,
|
||||||
|
/obj/item/slime_extract/oil = 25,
|
||||||
|
)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/head/stargazer/bullet_act(obj/item/projectile/P)
|
||||||
|
..()
|
||||||
|
for(var/i =1 to 3)
|
||||||
|
new /mob/living/simple_mob/humanoid/eclipse/minion/squish_sphere
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/head/stargazer/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
|
..()
|
||||||
|
new /mob/living/simple_mob/humanoid/eclipse/minion/squish_sphere
|
||||||
|
|
||||||
|
/mob/living/simple_mob/humanoid/eclipse/head/stargazer/do_special_attack(atom/A)
|
||||||
|
if(prob(50))
|
||||||
|
artidrop = /obj/effect/artillery_attack/goop
|
||||||
|
if(prob(50))
|
||||||
|
bomb_lines(A)
|
||||||
|
else
|
||||||
|
chaos_lines(A)
|
||||||
|
else
|
||||||
|
artidrop = /obj/effect/falling_effect/callstrike_slime
|
||||||
|
if(prob(50))
|
||||||
|
bomb_lines(A)
|
||||||
|
else
|
||||||
|
chaos_lines(A)
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 5.4 KiB |
@@ -249,15 +249,15 @@ Less important
|
|||||||
block_size = 40
|
block_size = 40
|
||||||
|
|
||||||
/datum/map_template/dynamic_overmap/starhuntersarena_70x70
|
/datum/map_template/dynamic_overmap/starhuntersarena_70x70
|
||||||
name = "Starhunter Challenge"
|
name = "Alien Ruins"
|
||||||
mappath = "modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm"
|
mappath = "modular_chomp/maps/overmap/space_pois/starhuntersarena_70x70.dmm"
|
||||||
block_size = 70
|
block_size = 70
|
||||||
|
/*
|
||||||
/datum/map_template/dynamic_overmap/starhunterstraders_30x30
|
/datum/map_template/dynamic_overmap/starhunterstraders_30x30
|
||||||
name = "Starhunter Traders"
|
name = "Starhunter Traders"
|
||||||
mappath = "modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm"
|
mappath = "modular_chomp/maps/overmap/space_pois/starhunterstraders_30x30.dmm"
|
||||||
block_size = 30
|
block_size = 30
|
||||||
|
*/
|
||||||
/datum/map_template/dynamic_overmap/syndiecakesfactory_40x40
|
/datum/map_template/dynamic_overmap/syndiecakesfactory_40x40
|
||||||
name = "Land o' Cakes Factory"
|
name = "Land o' Cakes Factory"
|
||||||
mappath = "modular_chomp/maps/overmap/space_pois/syndiecakesfactory_40x40.dmm"
|
mappath = "modular_chomp/maps/overmap/space_pois/syndiecakesfactory_40x40.dmm"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user