FEAT: Two new attachable armor for Ripley (#25231)

* FEAT: Two new attachable armor for Ripley

* Delete mecha 32x48.dmi

* Update code/game/objects/items/stacks/sheets/leather.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/game/mecha/working/ripley.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Update code/game/mecha/working/ripley.dm

Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>

* Add defines into separate files, change descriptions a bit

* fix

* change (loc) to get_turf(src)

* mecha

* edit defines

* Update leather.dm

* Update code/game/mecha/working/ripley.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update leather.dm

* Update code/game/objects/items/stacks/sheets/leather.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update mechfabricator_designs.dm

* fix .dmi

* Update code/game/mecha/working/ripley.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update code/game/mecha/working/ripley.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update code/game/mecha/working/ripley.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update ripley.dm

* Update code/game/objects/items/stacks/sheets/leather.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

* Update code/game/objects/items/stacks/sheets/leather.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>

---------

Signed-off-by: Сиротка <114731039+ErdGinalD@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Сиротка
2024-05-17 12:45:32 +00:00
committed by GitHub
co-authored by Henri215 1080pCat DGamerL
parent 9afec80430
commit b216289b41
9 changed files with 158 additions and 33 deletions
+6
View File
@@ -0,0 +1,6 @@
#define HIDES_COVERED_FULL 3
#define PLATES_COVERED_FULL 3
#define DRAKE_HIDES_COVERED_SLIGHT 1
#define DRAKE_HIDES_COVERED_MODERATE 2
#define DRAKE_HIDES_COVERED_FULL 3
-2
View File
@@ -339,8 +339,6 @@
~~~~~~~~~~~~~~~~~~~~~*/
/obj/mecha/proc/diag_hud_set_mechhealth()
var/image/holder = hud_list[DIAG_MECH_HUD]
var/icon/I = icon(icon, icon_state, dir)
holder.pixel_y = I.Height() - world.icon_size
holder.icon_state = "huddiag[RoundDiagBar(obj_integrity/max_integrity)]"
/obj/mecha/proc/diag_hud_set_mechcell()
+62 -14
View File
@@ -16,8 +16,16 @@
wreckage = /obj/structure/mecha_wreckage/ripley
var/list/cargo = new
var/cargo_capacity = 15
/// How many goliath hides does the Ripley have? Does not stack with other armor
var/hides = 0
/// How many drake hides does the Ripley have? Does not stack with other armor
var/drake_hides = 0
/// How many plates does the Ripley have? Does not stack with other armor
var/plates = 0
/obj/mecha/working/ripley/Move()
. = ..()
if(.)
@@ -33,10 +41,14 @@
ore.forceMove(ore_box)
/obj/mecha/working/ripley/Destroy()
for(var/i=1, i <= hides, i++)
new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop
for(var/i in 1 to hides)
new /obj/item/stack/sheet/animalhide/goliath_hide(get_turf(src)) //If a armor-plated ripley gets killed, all the armor drop
for(var/i in 1 to plates)
new /obj/item/stack/sheet/animalhide/armor_plate(get_turf(src))
for(var/i in 1 to drake_hides)
new /obj/item/stack/sheet/animalhide/ashdrake(get_turf(src))
for(var/atom/movable/A in cargo)
A.forceMove(loc)
A.forceMove(get_turf(src))
step_rand(A)
cargo.Cut()
return ..()
@@ -55,22 +67,58 @@
/obj/mecha/working/ripley/update_desc()
. = ..()
if(!hides) // Just in case if hides are somehow removed
if(!hides && !plates && !drake_hides) // Just in case if armor is removed
desc = initial(desc)
return
if(hides == 3)
desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter."
else
desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates."
// Goliath hides
if(hides)
if(hides == HIDES_COVERED_FULL)
desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter."
else
desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates."
return
// Metal plates
if(plates)
if(plates == PLATES_COVERED_FULL)
desc = "Autonomous Power Loader Unit. Its armor is completely lined with metal plating."
else
desc = "Autonomous Power Loader Unit. Its armor is reinforced with some metal plating."
return
// Drake hides
if(drake_hides)
if(drake_hides == DRAKE_HIDES_COVERED_FULL)
desc = "Autonomous Power Loader Unit. Its every corner is covered in ancient hide, creating a powerful shield. The pilot of this exosuit must be prepared for battles on the level of legend."
if(drake_hides == DRAKE_HIDES_COVERED_MODERATE)
desc = "Autonomous Power Loader Unit. Its armor is adorned with dragon hide plates, instilling fear in its enemies and guarding its pilot."
if(drake_hides == DRAKE_HIDES_COVERED_SLIGHT)
desc = "Autonomous Power Loader Unit. The armor of this exosuit only touches the mythical: a few plates of dragon hide adorn its plating like rare warrior trophies."
return
/obj/mecha/working/ripley/update_overlays()
. = ..()
if(!hides)
return
if(hides == 3)
. += occupant ? "ripley-g-full" : "ripley-g-full-open"
else
. += occupant ? "ripley-g" : "ripley-g-open"
// hides
if(hides)
if(hides == HIDES_COVERED_FULL)
. += occupant ? "ripley-g-full" : "ripley-g-full-open"
else
. += occupant ? "ripley-g" : "ripley-g-open"
//plates
if(plates)
if(plates == PLATES_COVERED_FULL)
. += occupant ? "ripley-m-full" : "ripley-m-full-open"
else
. += occupant ? "ripley-m" : "ripley-m-open"
//drake hides
if(drake_hides)
if(drake_hides == DRAKE_HIDES_COVERED_FULL)
. += occupant ? "ripley-d-full" : "ripley-d-full-open"
else if(drake_hides == DRAKE_HIDES_COVERED_MODERATE)
. += occupant ? "ripley-d-2" : "ripley-d-2-open"
else if(drake_hides == DRAKE_HIDES_COVERED_SLIGHT)
. += occupant ? "ripley-d" : "ripley-d-open"
/obj/mecha/working/ripley/firefighter
desc = "A standard APLU chassis that was refitted with additional thermal protection and a cistern."
+1
View File
@@ -1,2 +1,3 @@
/obj/mecha/working
internal_damage_threshold = 60
@@ -178,7 +178,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list (
/obj/item/stack/sheet/animalhide/goliath_hide
name = "goliath hide plates"
desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna."
desc = "Pieces of a goliath's rocky hide, these might be able to make your miner equipment such as suits, plasmaman helmets, borgs and Ripley class exosuits a bit more durable to attack from the local fauna."
icon = 'icons/obj/stacks/organic.dmi'
icon_state = "goliath_hide"
item_state = "goliath_hide"
@@ -198,41 +198,80 @@ GLOBAL_LIST_INIT(sinew_recipes, list (
if(is_type_in_typecache(target, goliath_platable_armor_typecache))
var/obj/item/clothing/C = target
var/datum/armor/current_armor = C.armor
if(current_armor.getRating(MELEE) < 60)
C.armor = current_armor.setRating(melee_value = min(current_armor.getRating(MELEE) + 10, 60))
if(current_armor.getRating(MELEE) < 75)
if(!use(1))
to_chat(user, "<span class='notice'>You dont have enough [src] for this!</span>")
return
C.armor = current_armor.setRating(melee_value = min(current_armor.getRating(MELEE) + 15, 75))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
use(1)
else
to_chat(user, "<span class='warning'>You can't improve [C] any further!</span>")
else if(istype(target, /obj/mecha/working/ripley))
var/obj/mecha/working/ripley/D = target
if(D.hides < 3)
if(D.hides < HIDES_COVERED_FULL && !D.plates && !D.drake_hides)
if(!use(1))
to_chat(user, "<span class='notice'>You dont have enough [src] for this!</span>")
return
D.hides++
D.armor = D.armor.setRating(melee_value = min(D.armor.getRating(MELEE) + 10, 70))
D.armor = D.armor.setRating(bullet_value = min(D.armor.getRating(BULLET) + 5, 50))
D.armor = D.armor.setRating(laser_value = min(D.armor.getRating(LASER) + 5, 50))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
D.armor = D.armor.setRating(melee_value = min(D.armor.getRating(MELEE) + 25, 115))
D.armor = D.armor.setRating(bullet_value = min(D.armor.getRating(BULLET) + 7, 60))
D.armor = D.armor.setRating(laser_value = min(D.armor.getRating(LASER) + 7, 60))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against attacks.</span>")
D.update_appearance(UPDATE_DESC|UPDATE_OVERLAYS)
use(1)
else
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
else if(isrobot(target))
var/mob/living/silicon/robot/R = target
if(istype(R.module, /obj/item/robot_module/miner))
var/datum/armor/current_armor = R.armor
if(current_armor.getRating(MELEE) < 60)
R.armor = current_armor.setRating(melee_value = min(current_armor.getRating(MELEE) + 10, 60))
if(current_armor.getRating(MELEE) < 75)
if(!use(1))
to_chat(user, "<span class='notice'>You dont have enough [src] for this!</span>")
return
R.armor = current_armor.setRating(melee_value = min(current_armor.getRating(MELEE) + 15, 75))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>")
use(1)
else
to_chat(user, "<span class='warning'>You can't improve [R] any further!</span>")
else
to_chat(user, "<span class='warning'>[R]'s armor can not be improved!</span>")
/obj/item/stack/sheet/animalhide/armor_plate
name = "armor plate"
desc = "This piece of metal can be attached to the mech itself, enhancing its protective characteristics. Unfortunately, only working class exosuits have notches for such armor."
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "armor_plate"
item_state = "armor_plate"
singular_name = "armor plate"
flags = NOBLUDGEON
w_class = WEIGHT_CLASS_NORMAL
layer = MOB_LAYER
/obj/item/stack/sheet/animalhide/armor_plate/afterattack(atom/target, mob/user, proximity_flag)
if(!proximity_flag)
return
if(istype(target, /obj/mecha/working/ripley))
var/obj/mecha/working/ripley/D = target
if(D.plates < PLATES_COVERED_FULL && !D.hides && !D.drake_hides)
if(!use(1))
to_chat(user, "<span class='notice'>You dont have enough [src] for this!</span>")
return
use(1)
D.plates++
D.armor = D.armor.setRating(melee_value = min(D.armor.getRating(MELEE) + 10, 70))
D.armor = D.armor.setRating(bullet_value = min(D.armor.getRating(BULLET) + 4, 50))
D.armor = D.armor.setRating(laser_value = min(D.armor.getRating(LASER) + 4, 50))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against attacks.</span>")
D.update_appearance(UPDATE_DESC|UPDATE_OVERLAYS)
else
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
/obj/item/stack/sheet/animalhide/armor_plate/attackby(obj/item/W, mob/user, params)
return // no steel leather for ya
/obj/item/stack/sheet/animalhide/ashdrake
name = "ash drake hide"
desc = "The strong, scaled hide of an ash drake."
desc = "The strong, scaled hide of an ash drake. Can be attached to the mech itself, greatly enhancing its protective characteristics. Unfortunately, only working class exosuits have notches for such armor."
icon = 'icons/obj/stacks/organic.dmi'
icon_state = "dragon_hide"
item_state = "dragon_hide"
@@ -242,9 +281,30 @@ GLOBAL_LIST_INIT(sinew_recipes, list (
layer = MOB_LAYER
dynamic_icon_state = TRUE
/obj/item/stack/sheet/animalhide/ashdrake/afterattack(atom/target, mob/user, proximity_flag)
if(!proximity_flag)
return
if(istype(target, /obj/mecha/working/ripley))
var/obj/mecha/working/ripley/D = target
if(D.drake_hides < DRAKE_HIDES_COVERED_FULL && !D.hides && !D.plates)
if(!use(1))
to_chat(user, "<span class='notice'>You dont have enough [src] for this!</span>")
return
use(1)
D.drake_hides++
D.max_integrity += 50
D.obj_integrity += 50
D.armor = D.armor.setRating(melee_value = min(D.armor.getRating(MELEE) + 45, 175)) // 77.7% melee armor maximum
D.armor = D.armor.setRating(bullet_value = min(D.armor.getRating(BULLET) + 7, 60))
D.armor = D.armor.setRating(laser_value = min(D.armor.getRating(LASER) + 7, 60))
to_chat(user, "<span class='info'>You strengthen [target], improving its resistance against attacks.</span>")
D.update_appearance(UPDATE_DESC|UPDATE_OVERLAYS)
else
to_chat(user, "<span class='warning'>You can't improve [D] any further!</span>")
//Step one - dehairing.
/obj/item/stack/sheet/animalhide/attackby(obj/item/W as obj, mob/user as mob, params)
/obj/item/stack/sheet/animalhide/attackby(obj/item/W, mob/user, params)
if(W.sharp)
user.visible_message("[user] starts cutting hair off \the [src].", "<span class='notice'>You start cutting the hair off \the [src]...</span>", "<span class='italics'>You hear the sound of a knife rubbing against flesh.</span>")
if(do_after(user, 50 * W.toolspeed, target = src))
@@ -793,18 +793,18 @@
category = list("Exosuit Equipment")
/datum/design/mech_ccw_armor
name = "Exosuit Module (Reactive Armor Booster Module)"
name = "Exosuit Module (Melee Armor Booster Module)"
desc = "Exosuit-mounted armor booster."
id = "mech_ccw_armor"
build_type = MECHFAB
req_tech = list("materials" = 5, "combat" = 4)
req_tech = list("materials" = 5, "combat" = 5, "engineering"=3)
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
materials = list(MAT_METAL=20000,MAT_SILVER=5000)
construction_time = 10 SECONDS
category = list("Exosuit Equipment")
/datum/design/mech_proj_armor
name = "Exosuit Module (Reflective Armor Booster Module)"
name = "Exosuit Module (Ranged Armor Booster Module)"
desc = "Exosuit-mounted armor booster."
id = "mech_proj_armor"
build_type = MECHFAB
@@ -814,6 +814,17 @@
construction_time = 10 SECONDS
category = list("Exosuit Equipment")
/datum/design/mech_armor_plate
name = "Exosuit Mining Armor Plate"
desc = "This piece of metal can be attached to the mech itself, enhancing its protective characteristics. Unfortunately, only working class exosuits have notches for such armor."
id = "mech_plate_armor"
build_type = MECHFAB
req_tech = list("materials" = 5, "combat" = 5, "engineering" = 3)
build_path = /obj/item/stack/sheet/animalhide/armor_plate
materials = list(MAT_METAL = 20000, MAT_TITANIUM = 5000)
construction_time = 10 SECONDS
category = list("Exosuit Equipment")
/datum/design/mech_repair_droid
name = "Exosuit Module (Repair Droid Module)"
desc = "Automated Repair Droid. BEEP BOOP"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

+1
View File
@@ -84,6 +84,7 @@
#include "code\__DEFINES\martial_arts.dm"
#include "code\__DEFINES\MC.dm"
#include "code\__DEFINES\mecha_defines.dm"
#include "code\__DEFINES\mecha_hides.dm"
#include "code\__DEFINES\medal.dm"
#include "code\__DEFINES\misc_defines.dm"
#include "code\__DEFINES\mob_defines.dm"