diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm
index 6acb3f314f2..0b0756e5b11 100644
--- a/code/__DEFINES/cult.dm
+++ b/code/__DEFINES/cult.dm
@@ -16,7 +16,7 @@
#define CULT_RISEN 0.2
/// percent before ascend
#define CULT_ASCENDENT 0.4
-#define BLOOD_SPEAR_COST 150
+#define BLOOD_HALBERD_COST 150
#define BLOOD_BARRAGE_COST 300
#define BLOOD_BEAM_COST 500
#define IRON_TO_CONSTRUCT_SHELL_CONVERSION 50
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 227e41b619e..b47b352806a 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -603,7 +603,7 @@
candidate.color = "black"
if(do_after(user, 90, target = candidate))
candidate.emp_act(EMP_HEAVY)
- var/list/constructs = list(
+ var/static/list/constructs = list(
"Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"),
"Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"),
"Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer")
@@ -661,7 +661,7 @@
/obj/item/melee/blood_magic/construction/proc/check_menu(mob/user)
if(!istype(user))
- return FALSE
+ CRASH("The cult construct selection radial menu was accessed by something other than a valid user.")
if(user.incapacitated() || !user.Adjacent(src))
return FALSE
return TRUE
@@ -695,7 +695,7 @@
/obj/item/melee/blood_magic/manipulator/examine(mob/user)
. = ..()
- . += "Blood spear, blood bolt barrage, and blood beam cost [BLOOD_SPEAR_COST], [BLOOD_BARRAGE_COST], and [BLOOD_BEAM_COST] charges respectively."
+ . += "Bloody halberd, blood bolt barrage, and blood beam cost [BLOOD_HALBERD_COST], [BLOOD_BARRAGE_COST], and [BLOOD_BEAM_COST] charges respectively."
/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity)
if(proximity)
@@ -803,23 +803,27 @@
/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user)
if(iscultist(user))
- var/list/options = list("Blood Spear (150)", "Blood Bolt Barrage (300)", "Blood Beam (500)")
- var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options
- if(!choice)
+ var/static/list/spells = list(
+ "Bloody Halberd (150)" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "occultpoleaxe0"),
+ "Blood Bolt Barrage (300)" = image(icon = 'icons/obj/guns/projectile.dmi', icon_state = "arcane_barrage"),
+ "Blood Beam (500)" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "disintegrate")
+ )
+ var/choice = show_radial_menu(user, src, spells, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
+ if(!check_menu(user))
to_chat(user, "You decide against conducting a greater blood rite.")
return
switch(choice)
- if("Blood Spear (150)")
- if(uses < BLOOD_SPEAR_COST)
- to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.")
+ if("Bloody Halberd (150)")
+ if(uses < BLOOD_HALBERD_COST)
+ to_chat(user, "You need [BLOOD_HALBERD_COST] charges to perform this rite.")
else
- uses -= BLOOD_SPEAR_COST
- var/turf/T = get_turf(user)
+ uses -= BLOOD_HALBERD_COST
+ var/turf/current_position = get_turf(user)
qdel(src)
- var/datum/action/innate/cult/spear/S = new(user)
- var/obj/item/cult_spear/rite = new(T)
- S.Grant(user, rite)
- rite.spear_act = S
+ var/datum/action/innate/cult/halberd/halberd_act_granted = new(user)
+ var/obj/item/melee/cultblade/halberd/rite = new(current_position)
+ halberd_act_granted.Grant(user, rite)
+ rite.halberd_act = halberd_act_granted
if(user.put_in_hands(rite))
to_chat(user, "A [rite.name] appears in your hand!")
else
@@ -849,3 +853,10 @@
else
to_chat(user, "You need a free hand for this rite!")
qdel(rite)
+
+/obj/item/melee/blood_magic/manipulator/proc/check_menu(mob/living/user)
+ if(!istype(user))
+ CRASH("The Blood Rites manipulator radial menu was accessed by something other than a valid user.")
+ if(user.incapacitated() || !user.Adjacent(src))
+ return FALSE
+ return TRUE
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 81a294f686c..5011f21fa4a 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -12,6 +12,7 @@
icon = 'icons/obj/wizard.dmi'
icon_state = "render"
inhand_icon_state = "cultdagger"
+ worn_icon_state = "render"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
inhand_x_dimension = 32
@@ -36,8 +37,11 @@
desc = "A sword humming with unholy energy. It glows with a dim red light."
icon_state = "cultblade"
inhand_icon_state = "cultblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ worn_icon_state = "cultblade"
+ lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
flags_1 = CONDUCT_1
sharpness = SHARP_EDGED
w_class = WEIGHT_CLASS_BULKY
@@ -60,8 +64,8 @@
user.visible_message("A powerful force shoves [user] away from [target]!", \
"\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")
if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
+ var/mob/living/carbon/human/miscreant = user
+ miscreant.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
else
user.adjustBruteLoss(rand(force/2,force))
return
@@ -631,56 +635,62 @@
to_chat(user, "\The [src] can only transport items!")
-/obj/item/cult_spear
- name = "blood halberd"
- desc = "A sickening spear composed entirely of crystallized blood."
- icon_state = "bloodspear0"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- slot_flags = 0
+/obj/item/melee/cultblade/halberd
+ name = "bloody halberd"
+ desc = "A halberd with a volatile axehead made from crystallized blood. It seems linked to its creator. And, admittedly, more of a poleaxe than a halberd."
+ icon_state = "occultpoleaxe0"
+ inhand_icon_state = "occultpoleaxe0"
+ base_icon_state = "occultpoleaxe0"
+ w_class = WEIGHT_CLASS_HUGE
force = 17
throwforce = 40
throw_speed = 2
armour_penetration = 30
block_chance = 30
- attack_verb_continuous = list("attacks", "impales", "stabs", "tears", "lacerates", "gores")
- attack_verb_simple = list("attack", "impale", "stab", "tear", "lacerate", "gore")
+ slot_flags = null
+ attack_verb_continuous = list("attacks", "slices", "shreds", "sunders", "lacerates", "cleaves")
+ attack_verb_simple = list("attack", "slice", "shred", "sunder", "lacerate", "cleave")
sharpness = SHARP_EDGED
hitsound = 'sound/weapons/bladeslice.ogg'
- var/datum/action/innate/cult/spear/spear_act
+ var/datum/action/innate/cult/halberd/halberd_act
var/wielded = FALSE // track wielded status on item
-/obj/item/cult_spear/Initialize()
+/obj/item/melee/cultblade/halberd/Initialize()
. = ..()
RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
-/obj/item/cult_spear/ComponentInitialize()
+/obj/item/melee/cultblade/halberd/ComponentInitialize()
. = ..()
AddComponent(/datum/component/butchering, 100, 90)
- AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="bloodspear1")
+ AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24)
/// triggered on wield of two handed item
-/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user)
+/obj/item/melee/cultblade/halberd/proc/on_wield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = TRUE
/// triggered on unwield of two handed item
-/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user)
+/obj/item/melee/cultblade/halberd/proc/on_unwield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = FALSE
-/obj/item/cult_spear/update_icon_state()
- icon_state = "bloodspear0"
+/obj/item/melee/cultblade/halberd/update_icon_state()
+ if(wielded)
+ icon_state = "occultpoleaxe1"
+ inhand_icon_state = "occultpoleaxe1"
+ else
+ icon_state = "[base_icon_state]"
+ inhand_icon_state = "[base_icon_state]"
-/obj/item/cult_spear/Destroy()
- if(spear_act)
- qdel(spear_act)
- ..()
+/obj/item/melee/cultblade/halberd/Destroy()
+ if(halberd_act)
+ QDEL_NULL(halberd_act)
+ return ..()
-/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+/obj/item/melee/cultblade/halberd/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
var/turf/T = get_turf(hit_atom)
if(isliving(hit_atom))
var/mob/living/L = hit_atom
@@ -693,11 +703,11 @@
else if(!..())
if(!L.anti_magic_check())
L.Paralyze(50)
- break_spear(T)
+ break_halberd(T)
else
..()
-/obj/item/cult_spear/proc/break_spear(turf/T)
+/obj/item/melee/cultblade/halberd/proc/break_halberd(turf/T)
if(src)
if(!T)
T = get_turf(src)
@@ -708,7 +718,7 @@
playsound(T, 'sound/effects/glassbr3.ogg', 100)
qdel(src)
-/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/melee/cultblade/halberd/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(wielded)
final_block_chance *= 2
if(prob(final_block_chance))
@@ -722,34 +732,34 @@
return TRUE
return FALSE
-/datum/action/innate/cult/spear
+/datum/action/innate/cult/halberd
name = "Bloody Bond"
- desc = "Call the blood spear back to your hand!"
+ desc = "Call the bloody halberd back to your hand!"
background_icon_state = "bg_demon"
button_icon_state = "bloodspear"
- var/obj/item/cult_spear/spear
+ var/obj/item/melee/cultblade/halberd/halberd
var/cooldown = 0
-/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear)
+/datum/action/innate/cult/halberd/Grant(mob/user, obj/blood_halberd)
. = ..()
- spear = blood_spear
+ halberd = blood_halberd
button.screen_loc = "6:157,4:-2"
button.moved = "6:157,4:-2"
-/datum/action/innate/cult/spear/Activate()
- if(owner == spear.loc || cooldown > world.time)
+/datum/action/innate/cult/halberd/Activate()
+ if(owner == halberd.loc || cooldown > world.time)
return
- var/ST = get_turf(spear)
- var/OT = get_turf(owner)
- if(get_dist(OT, ST) > 10)
- to_chat(owner,"The spear is too far away!")
+ var/halberd_location = get_turf(halberd)
+ var/owner_location = get_turf(owner)
+ if(get_dist(owner_location, halberd_location) > 10)
+ to_chat(owner,"The halberd is too far away!")
else
cooldown = world.time + 20
- if(isliving(spear.loc))
- var/mob/living/L = spear.loc
- L.dropItemToGround(spear)
- L.visible_message("An unseen force pulls the blood spear from [L]'s hands!")
- spear.throw_at(owner, 10, 2, owner)
+ if(isliving(halberd.loc))
+ var/mob/living/current_owner = halberd.loc
+ current_owner.dropItemToGround(halberd)
+ current_owner.visible_message("An unseen force pulls the bloody halberd from [current_owner]'s hands!")
+ halberd.throw_at(owner, 10, 2, owner)
/obj/item/gun/ballistic/rifle/enchanted/arcane_barrage/blood
diff --git a/icons/mob/actions/actions_cult.dmi b/icons/mob/actions/actions_cult.dmi
index e0b6d873b19..f8ad2407cd7 100644
Binary files a/icons/mob/actions/actions_cult.dmi and b/icons/mob/actions/actions_cult.dmi differ
diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi
index 8a18be5580e..8d8c7a1ccae 100644
Binary files a/icons/mob/inhands/64x64_lefthand.dmi and b/icons/mob/inhands/64x64_lefthand.dmi differ
diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi
index 4ad421a29e6..6e83daf4983 100644
Binary files a/icons/mob/inhands/64x64_righthand.dmi and b/icons/mob/inhands/64x64_righthand.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index c8bd87329ba..44fbde67218 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/modular_skyrat/modules/customization/modules/clothing/suits/coats.dm b/modular_skyrat/modules/customization/modules/clothing/suits/coats.dm
index 563bf3c0302..fd2e7595c02 100644
--- a/modular_skyrat/modules/customization/modules/clothing/suits/coats.dm
+++ b/modular_skyrat/modules/customization/modules/clothing/suits/coats.dm
@@ -92,7 +92,7 @@
icon_state = "coatnarsie"
inhand_icon_state = "coatnarsie"
armor = list("melee" = 30, "bullet" = 20, "laser" = 30,"energy" = 10, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 30, "acid" = 30, "wound" = 10)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/restraints/legcuffs/bola/cult,/obj/item/melee/cultblade,/obj/item/melee/cultblade/dagger,/obj/item/reagent_containers/glass/beaker/unholywater,/obj/item/cult_shift,/obj/item/flashlight/flare/culttorch,/obj/item/cult_spear)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/restraints/legcuffs/bola/cult,/obj/item/melee/cultblade,/obj/item/melee/cultblade/dagger,/obj/item/reagent_containers/glass/beaker/unholywater,/obj/item/cult_shift,/obj/item/flashlight/flare/culttorch,/obj/item/melee/cultblade/halberd)
hoodtype = /obj/item/clothing/head/hooded/winterhood/narsie
var/real = TRUE