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