mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Wizard Battlemage Armor (#12388)
This commit is contained in:
committed by
variableundefined
parent
1db3ab3d4b
commit
652920ae3c
@@ -579,6 +579,9 @@ BLIND // can't see anything
|
||||
else
|
||||
..() //This is required in order to ensure that the UI buttons for items that have alternate functions tied to UI buttons still work.
|
||||
|
||||
/obj/item/clothing/suit/proc/special_overlays() // Does it have special overlays when worn?
|
||||
return FALSE
|
||||
|
||||
//Spacesuit
|
||||
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
|
||||
// Meaning the the suit is defined directly after the corrisponding helmet. Just like below!
|
||||
|
||||
@@ -405,33 +405,6 @@
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom/update_icon()
|
||||
return
|
||||
|
||||
//Wizard hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/wizard
|
||||
name = "gem-encrusted hardsuit helmet"
|
||||
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
|
||||
icon_state = "hardsuit0-wiz"
|
||||
item_state = "wiz_helm"
|
||||
item_color = "wiz"
|
||||
unacidable = TRUE //No longer shall our kind be foiled by lone chemists with spray bottles!
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
|
||||
heat_protection = HEAD //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
magical = TRUE
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard
|
||||
icon_state = "hardsuit-wiz"
|
||||
name = "gem-encrusted hardsuit"
|
||||
desc = "A bizarre gem-encrusted suit that radiates magical energies."
|
||||
item_state = "wiz_hardsuit"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
unacidable = TRUE
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/teleportation_scroll,/obj/item/tank)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard
|
||||
magical = TRUE
|
||||
|
||||
//Medical hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/medical
|
||||
name = "medical hardsuit helmet"
|
||||
@@ -525,23 +498,24 @@
|
||||
var/recharge_rate = 1 //How quickly the shield recharges once it starts charging
|
||||
var/shield_state = "shield-old"
|
||||
var/shield_on = "shield-old"
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
recharge_cooldown = world.time + recharge_delay
|
||||
if(current_charges > 0)
|
||||
do_sparks(2, 1, src)
|
||||
owner.visible_message("<span class='danger'>[owner]'s shields deflect [attack_text] in a shower of sparks!</span>")
|
||||
current_charges--
|
||||
recharge_cooldown = world.time + recharge_delay
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(recharge_rate)
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(current_charges <= 0)
|
||||
owner.visible_message("[owner]'s shield overloads!")
|
||||
owner.visible_message("<span class='warning'>[owner]'s shield overloads!</span>")
|
||||
shield_state = "broken"
|
||||
owner.update_inv_wear_suit()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
@@ -549,15 +523,18 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/process()
|
||||
if(world.time > recharge_cooldown && current_charges < max_charges)
|
||||
current_charges = Clamp((current_charges + recharge_rate), 0, max_charges)
|
||||
playsound(loc, 'sound/magic/charge.ogg', 50, 1)
|
||||
playsound(loc, 'sound/magic/charge.ogg', 50, TRUE)
|
||||
if(current_charges == max_charges)
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, TRUE)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
shield_state = "[shield_on]"
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
C.update_inv_wear_suit()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/special_overlays()
|
||||
return mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01)
|
||||
|
||||
//////Syndicate Version
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/syndi
|
||||
@@ -571,14 +548,25 @@
|
||||
slowdown = 0
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/suit.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi',
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/suit.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/syndi/attackby(obj/item/I, mob/user, params)
|
||||
if(ismultitool(I))
|
||||
if(shield_state == "broken")
|
||||
to_chat(user, "<span class='warning'>You can't interface with the hardsuit's software if the shield's broken!</span>")
|
||||
return
|
||||
|
||||
if(shield_state == "shield-red")
|
||||
shield_state = "shield-old"
|
||||
shield_on = "shield-old"
|
||||
to_chat(user, "<span class='warning'>You roll back the hardsuit's software, changing the shield's color!</span>")
|
||||
|
||||
else
|
||||
shield_state = "shield-red"
|
||||
shield_on = "shield-red"
|
||||
to_chat(user, "<span class='warning'>You update the hardsuit's hardware, changing back the shield's color to red.</span>")
|
||||
user.update_inv_wear_suit()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
name = "blood-red hardsuit helmet"
|
||||
|
||||
@@ -154,4 +154,57 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
unacidable = 0
|
||||
burn_state = FLAMMABLE
|
||||
magical = FALSE
|
||||
magical = FALSE
|
||||
|
||||
//Shielded Armour
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/wizard
|
||||
name = "battlemage armour"
|
||||
desc = "Not all wizards are afraid of getting up close and personal."
|
||||
icon_state = "hardsuit-wiz"
|
||||
item_state = "wiz_hardsuit"
|
||||
recharge_rate = 0
|
||||
current_charges = 15
|
||||
recharge_cooldown = INFINITY
|
||||
shield_state = "shield-red"
|
||||
shield_on = "shield-red"
|
||||
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard
|
||||
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
|
||||
slowdown = 0
|
||||
unacidable = TRUE
|
||||
burn_state = FIRE_PROOF
|
||||
magical = TRUE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard
|
||||
name = "battlemage helmet"
|
||||
desc = "A suitably impressive helmet."
|
||||
icon_state = "hardsuit0-wiz"
|
||||
item_state = "wiz_helm"
|
||||
item_color = "wiz"
|
||||
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
|
||||
actions_types = null //No inbuilt light
|
||||
unacidable = TRUE
|
||||
burn_state = FIRE_PROOF
|
||||
magical = TRUE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard/attack_self(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/wizard_armour_charge
|
||||
name = "battlemage shield charges"
|
||||
desc = "A powerful rune that will increase the number of hits a suit of battlemage armour can take before failing.."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "electricity2"
|
||||
|
||||
/obj/item/wizard_armour_charge/afterattack(obj/item/clothing/suit/space/hardsuit/shielded/wizard/W, mob/user)
|
||||
. = ..()
|
||||
if(!istype(W))
|
||||
to_chat(user, "<span class='warning'>The rune can only be used on battlemage armour!</span>")
|
||||
return
|
||||
W.current_charges += 8
|
||||
to_chat(user, "<span class='notice'>You charge [W]. It can now absorb [W.current_charges] hits.</span>")
|
||||
qdel(src)
|
||||
@@ -1573,7 +1573,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
|
||||
threatcount += 2
|
||||
|
||||
//Check for dresscode violations
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard))
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard))
|
||||
threatcount += 2
|
||||
|
||||
|
||||
|
||||
@@ -893,6 +893,11 @@ var/global/list/damage_icon_parts = list()
|
||||
bloodsies.color = wear_suit.blood_color
|
||||
standing.overlays += bloodsies
|
||||
|
||||
|
||||
var/special_overlays = wear_suit.special_overlays()
|
||||
if(special_overlays)
|
||||
standing.overlays += special_overlays
|
||||
|
||||
standing.alpha = wear_suit.alpha
|
||||
standing.color = wear_suit.color
|
||||
overlays_standing[SUIT_LAYER] = standing
|
||||
|
||||
Reference in New Issue
Block a user