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:
FluffMedic
2023-12-12 14:28:07 -05:00
committed by GitHub
parent f1cfc01494
commit 446694e3b6
7 changed files with 184 additions and 24 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)
..()

View File

@@ -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"

View File

@@ -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)