mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Exploration Robot Rework (#7350)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: BlackMajor <henrydyer6@hotmail.com>
This commit is contained in:
@@ -5,3 +5,102 @@
|
||||
. += "<span class='notice'>[src] is wet. Just like it should be.</span>"
|
||||
if(water.energy < 5)
|
||||
. += "<span class='notice'>[src] is dry.</span>"
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/mounted/cyborg/flare
|
||||
name = "flare gun"
|
||||
desc = "A flare-gun"
|
||||
projectile_type = /obj/item/projectile/energy/flash/flare
|
||||
fire_sound = 'sound/weapons/tablehit1.ogg'
|
||||
|
||||
/obj/item/shield_projector/line/exploborg
|
||||
name = "expirmental shield projector"
|
||||
description_info = "This creates a shield in a straight line perpendicular to the direction where the user was facing when it was activated. \
|
||||
The shield allows projectiles to leave from inside but blocks projectiles from outside. Everything else can pass through the shield freely, \
|
||||
including other people and thrown objects. The shield also cannot block certain effects which take place over an area, such as flashbangs or explosions."
|
||||
shield_health = 35
|
||||
max_shield_health = 35
|
||||
shield_regen_amount = 10
|
||||
line_length = 7 // How long the line is. Recommended to be an odd number.
|
||||
offset_from_center = 2 // How far from the projector will the line's center be.
|
||||
|
||||
/obj/item/weapon/melee/combat_borgblade/explotailspear
|
||||
name = "energy tail"
|
||||
desc = "A glowing tail spear with a moderate range. It appears to be extremely sharp."
|
||||
force = 25
|
||||
armor_penetration = 25 //30 to try and make it not useless against armored mobs but not fully nullify it.
|
||||
reach = 3
|
||||
projectile_parry_chance = 15.
|
||||
|
||||
/obj/item/weapon/melee/dogborg/jaws/big/explojaws
|
||||
name = "explo jaws"
|
||||
desc = "Highly lethal jaws for close range combat."
|
||||
force = 40
|
||||
armor_penetration = 25 //To try and make it not useless against armored mobs but not fully nullify it
|
||||
projectile_parry_chance = 15
|
||||
|
||||
/obj/item/weapon/gun/energy/medigun/mounted/smallmedigun
|
||||
name = "borg directed restoration system"
|
||||
desc = "An adapted version of the BL-3 'Phoenix, for expiremental useage in borgs."
|
||||
projectile_type = /obj/item/projectile/beam/medical_cell/borg
|
||||
accept_cell_type = /obj/item/weapon/cell/device
|
||||
cell_type = /obj/item/weapon/cell/device/weapon
|
||||
charge_cost = 600
|
||||
fire_delay = 6
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/borg
|
||||
range = 4
|
||||
|
||||
/obj/item/projectile/beam/medical_cell/borg/on_hit(var/mob/living/carbon/human/target)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
if(target.stat != DEAD)
|
||||
target.adjustBruteLoss(-3.75)
|
||||
target.adjustFireLoss(-3.75)
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/device/self_repair_system
|
||||
name = "plating repair system"
|
||||
desc = "A nanite control system to repair damaged armour plating and wiring while not moving. Destroyed armour can't be restored."
|
||||
icon = 'icons/obj/robot_component.dmi'
|
||||
icon_state = "armor"
|
||||
var/disabled_icon = "armor"
|
||||
var/active_icon = "armor_broken"
|
||||
var/target_component = "armour"
|
||||
|
||||
/obj/item/device/self_repair_system/New()
|
||||
..()
|
||||
flags |= NOBLUDGEON
|
||||
|
||||
/obj/item/device/self_repair_system/attack_self(mob/user)
|
||||
var/mob/living/silicon/robot/R = user
|
||||
var/datum/robot_component/C = R.components[target_component]
|
||||
if(C && !istype(C.wrapped, /obj/item/broken_device))
|
||||
if(C.brute_damage == 0 && C.electronics_damage == 0)
|
||||
to_chat(R, "<span class='warning'>No brute or burn damage detected in [target_component].</span>")
|
||||
return
|
||||
to_chat(R, "<span class='notice'>Repair system initializated. Repairing plating and wiring.</span>")
|
||||
icon_state = active_icon
|
||||
update_icon()
|
||||
src.self_repair(R, C, 25, 2.5)
|
||||
icon_state = disabled_icon
|
||||
update_icon()
|
||||
else
|
||||
to_chat(R, "<span class='warning'>Repair system initialization failed. Can't repair destroyed [target_component]'s plating or wiring.</span>")
|
||||
|
||||
/obj/item/device/self_repair_system/proc/self_repair(mob/living/silicon/robot/R, datum/robot_component/C, var/tick_delay, var/heal_per_tick)
|
||||
if(!C || !R.cell)
|
||||
return
|
||||
if(R.cell.charge < 500) //We don't want to drain ourselves too far down during exploration
|
||||
to_chat(R, "<span class='warning'>Not enough power to initialize the repair system.</span>")
|
||||
return
|
||||
if(C.brute_damage == 0 && C.electronics_damage == 0)
|
||||
to_chat(R, "<span class='notice'>Repair of [target_component] completed.</span>")
|
||||
return
|
||||
if(do_after(R, tick_delay))
|
||||
if(!C || !R.cell)
|
||||
return
|
||||
C.brute_damage -= min(C.brute_damage, heal_per_tick)
|
||||
C.electronics_damage -= min(C.electronics_damage, heal_per_tick)
|
||||
R.updatehealth()
|
||||
R.cell.use(50)
|
||||
src.self_repair(R, C, tick_delay, heal_per_tick)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/obj/item/device/dogborg/sleeper/exploration
|
||||
name = "Store-Belly"
|
||||
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
|
||||
icon_state = "sleeperlost"
|
||||
injection_chems = null
|
||||
compactor = TRUE
|
||||
max_item_count = 4
|
||||
medsensor = FALSE
|
||||
recycles = TRUE
|
||||
@@ -0,0 +1,42 @@
|
||||
/hook/startup/proc/Modular_Borg_init_Exploration()
|
||||
robot_modules["Exploration"] = /obj/item/weapon/robot_module/robot/exploration //add to array
|
||||
robot_module_types += "Exploration" //Add to global list
|
||||
return 1
|
||||
|
||||
//Explo doggos
|
||||
/obj/item/weapon/robot_module/robot/exploration
|
||||
name = "exploration robot module"
|
||||
channels = list("Explorer" = 1)
|
||||
languages = list(
|
||||
LANGUAGE_SOL_COMMON = 1,
|
||||
LANGUAGE_UNATHI = 1,
|
||||
LANGUAGE_SIIK = 1,
|
||||
LANGUAGE_AKHANI = 1,
|
||||
LANGUAGE_SKRELLIAN = 1,
|
||||
LANGUAGE_SKRELLIANFAR = 0,
|
||||
LANGUAGE_ROOTLOCAL = 0,
|
||||
LANGUAGE_TRADEBAND = 1,
|
||||
LANGUAGE_GUTTER = 0,
|
||||
LANGUAGE_SCHECHI = 1,
|
||||
LANGUAGE_EAL = 1,
|
||||
LANGUAGE_TERMINUS = 1,
|
||||
LANGUAGE_SIGN = 0
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/exploration
|
||||
can_be_pushed = 0
|
||||
|
||||
/obj/item/weapon/robot_module/robot/exploration/New(var/mob/living/silicon/robot/R)
|
||||
src.modules += new /obj/item/device/dogborg/sleeper/exploration(src)
|
||||
src.modules += new /obj/item/device/cataloguer(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg/flare(src)
|
||||
src.modules += new /obj/item/weapon/dogborg/pounce(src)
|
||||
src.modules += new /obj/item/weapon/melee/combat_borgblade/explotailspear(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/medigun/mounted/smallmedigun(src)
|
||||
src.modules += new /obj/item/shield_projector/line/exploborg(src)
|
||||
src.modules += new /obj/item/roller_holder(src)
|
||||
src.modules += new /obj/item/device/self_repair_system(src)
|
||||
|
||||
src.emag += new /obj/item/weapon/melee/dogborg/jaws/big/explojaws(src)
|
||||
|
||||
..()
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/robot_sprite/dogborg/explorer
|
||||
module_type = "Exploration"
|
||||
sprite_icon = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi'
|
||||
sprite_hud_icon_state = "platform"
|
||||
|
||||
/datum/robot_sprite/dogborg/explorer/vale2
|
||||
name = "Explorationhound V2"
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
/obj/item/weapon/gun/energy/taser/disabler/slow
|
||||
name = "plasma snare device"
|
||||
desc = "A modified disabler adjusted to impulse a target with a restrictive slowdown."
|
||||
icon_state = "disabler"
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun/slow
|
||||
charge_cost = 480
|
||||
self_recharge = 1
|
||||
recharge_time = 3
|
||||
|
||||
/obj/item/projectile/energy/plasmastun/slow
|
||||
name = "plasma pulse"
|
||||
icon_state = "plasma_stun"
|
||||
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
|
||||
armor_penetration = 10
|
||||
range = 9
|
||||
damage = 0
|
||||
agony = 0
|
||||
vacuum_traversal = 1
|
||||
hud_state = "plasma_rifle_blast"
|
||||
|
||||
/obj/item/projectile/energy/plasmastun/slow/on_hit(var/atom/target)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
/obj/item/weapon/gun/energy/medigun/mounted
|
||||
name = "mounted directed restoration system"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/disabler/slow
|
||||
name = "plasma snare device"
|
||||
desc = "A modified disabler adjusted to impulse a target with a restrictive slowdown."
|
||||
icon_state = "disabler"
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun/slow
|
||||
charge_cost = 480
|
||||
self_recharge = 1
|
||||
recharge_time = 3
|
||||
|
||||
/obj/item/projectile/energy/plasmastun/slow
|
||||
name = "plasma pulse"
|
||||
icon_state = "plasma_stun"
|
||||
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
|
||||
armor_penetration = 10
|
||||
range = 9
|
||||
damage = 0
|
||||
agony = 0
|
||||
vacuum_traversal = 1
|
||||
hud_state = "plasma_rifle_blast"
|
||||
|
||||
/obj/item/projectile/energy/plasmastun/slow/on_hit(var/atom/target)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
L.add_modifier(/datum/modifier/entangled, 10 SECONDS)
|
||||
Reference in New Issue
Block a user