mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 19:11:51 +00:00
* Finishes the job on null rod sprites hopefully once and for all (#54235) * One more pass on null rod sprites + null rod storage sanity pass Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
785 lines
29 KiB
Plaintext
785 lines
29 KiB
Plaintext
// CHAPLAIN CUSTOM ARMORS //
|
|
|
|
/obj/item/clothing/head/helmet/chaplain
|
|
name = "crusader helmet"
|
|
desc = "Deus Vult."
|
|
icon_state = "knight_templar"
|
|
inhand_icon_state = "knight_templar"
|
|
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80)
|
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
|
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
|
strip_delay = 80
|
|
dog_fashion = null
|
|
|
|
/obj/item/clothing/suit/armor/riot/chaplain
|
|
name = "crusader armour"
|
|
desc = "God wills it!"
|
|
icon_state = "knight_templar"
|
|
inhand_icon_state = "knight_templar"
|
|
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
|
slowdown = 0
|
|
clothing_flags = NONE
|
|
|
|
/obj/item/choice_beacon/holy
|
|
name = "armaments beacon"
|
|
desc = "Contains a set of armaments for the chaplain."
|
|
|
|
/obj/item/choice_beacon/holy/canUseBeacon(mob/living/user)
|
|
if(user.mind && user.mind.holy_role)
|
|
return ..()
|
|
else
|
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE)
|
|
return FALSE
|
|
|
|
/obj/item/choice_beacon/holy/generate_display_names()
|
|
var/static/list/holy_item_list
|
|
if(!holy_item_list)
|
|
holy_item_list = list()
|
|
var/list/templist = typesof(/obj/item/storage/box/holy)
|
|
for(var/V in templist)
|
|
var/atom/A = V
|
|
holy_item_list[initial(A.name)] = A
|
|
return holy_item_list
|
|
|
|
/obj/item/choice_beacon/holy/spawn_option(obj/choice,mob/living/M)
|
|
if(!GLOB.holy_armor_type)
|
|
..()
|
|
playsound(src, 'sound/effects/pray_chaplain.ogg', 40, TRUE)
|
|
SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]")
|
|
GLOB.holy_armor_type = choice
|
|
else
|
|
to_chat(M, "<span class='warning'>A selection has already been made. Self-Destructing...</span>")
|
|
return
|
|
|
|
|
|
/obj/item/storage/box/holy
|
|
name = "Templar Kit"
|
|
|
|
/obj/item/storage/box/holy/PopulateContents()
|
|
new /obj/item/clothing/head/helmet/chaplain(src)
|
|
new /obj/item/clothing/suit/armor/riot/chaplain(src)
|
|
|
|
/obj/item/storage/box/holy/student
|
|
name = "Profane Scholar Kit"
|
|
|
|
/obj/item/storage/box/holy/student/PopulateContents()
|
|
new /obj/item/clothing/suit/armor/riot/chaplain/studentuni(src)
|
|
new /obj/item/clothing/head/helmet/chaplain/cage(src)
|
|
|
|
/obj/item/clothing/suit/armor/riot/chaplain/studentuni
|
|
name = "student robe"
|
|
desc = "The uniform of a bygone institute of learning."
|
|
icon_state = "studentuni"
|
|
inhand_icon_state = "studentuni"
|
|
body_parts_covered = ARMS|CHEST
|
|
|
|
/obj/item/clothing/head/helmet/chaplain/cage
|
|
name = "cage"
|
|
desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is."
|
|
flags_inv = HIDEHAIR //bald
|
|
worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
|
|
icon_state = "cage"
|
|
inhand_icon_state = "cage"
|
|
worn_x_dimension = 64
|
|
worn_y_dimension = 64
|
|
clothing_flags = LARGE_WORN_ICON
|
|
dynamic_hair_suffix = ""
|
|
|
|
/obj/item/storage/box/holy/sentinel
|
|
name = "Stone Sentinel Kit"
|
|
|
|
/obj/item/storage/box/holy/sentinel/PopulateContents()
|
|
new /obj/item/clothing/suit/armor/riot/chaplain/ancient(src)
|
|
new /obj/item/clothing/head/helmet/chaplain/ancient(src)
|
|
|
|
/obj/item/clothing/head/helmet/chaplain/ancient
|
|
name = "ancient helmet"
|
|
desc = "None may pass!"
|
|
icon_state = "knight_ancient"
|
|
inhand_icon_state = "knight_ancient"
|
|
|
|
/obj/item/clothing/suit/armor/riot/chaplain/ancient
|
|
name = "ancient armour"
|
|
desc = "Defend the treasure..."
|
|
icon_state = "knight_ancient"
|
|
inhand_icon_state = "knight_ancient"
|
|
|
|
/obj/item/storage/box/holy/witchhunter
|
|
name = "Witchhunter Kit"
|
|
|
|
/obj/item/storage/box/holy/witchhunter/PopulateContents()
|
|
new /obj/item/clothing/suit/armor/riot/chaplain/witchhunter(src)
|
|
new /obj/item/clothing/head/helmet/chaplain/witchunter_hat(src)
|
|
|
|
/obj/item/clothing/suit/armor/riot/chaplain/witchhunter
|
|
name = "witchunter garb"
|
|
desc = "This worn outfit saw much use back in the day."
|
|
icon_state = "witchhunter"
|
|
inhand_icon_state = "witchhunter"
|
|
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
|
|
|
/obj/item/clothing/head/helmet/chaplain/witchunter_hat
|
|
name = "witchunter hat"
|
|
desc = "This hat saw much use back in the day."
|
|
icon_state = "witchhunterhat"
|
|
inhand_icon_state = "witchhunterhat"
|
|
flags_cover = HEADCOVERSEYES
|
|
flags_inv = HIDEEYES|HIDEHAIR
|
|
|
|
/obj/item/storage/box/holy/adept
|
|
name = "Divine Adept Kit"
|
|
|
|
/obj/item/storage/box/holy/adept/PopulateContents()
|
|
new /obj/item/clothing/suit/armor/riot/chaplain/adept(src)
|
|
new /obj/item/clothing/head/helmet/chaplain/adept(src)
|
|
|
|
/obj/item/clothing/head/helmet/chaplain/adept
|
|
name = "adept hood"
|
|
desc = "Its only heretical when others do it."
|
|
icon_state = "crusader"
|
|
inhand_icon_state = "crusader"
|
|
flags_cover = HEADCOVERSEYES
|
|
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
|
|
|
/obj/item/clothing/suit/armor/riot/chaplain/adept
|
|
name = "adept robes"
|
|
desc = "The ideal outfit for burning the unfaithful."
|
|
icon_state = "crusader"
|
|
inhand_icon_state = "crusader"
|
|
|
|
/obj/item/storage/box/holy/follower
|
|
name = "Followers of the Chaplain Kit"
|
|
|
|
/obj/item/storage/box/holy/follower/PopulateContents()
|
|
new /obj/item/clothing/suit/hooded/chaplain_hoodie/leader(src)
|
|
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
|
|
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
|
|
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
|
|
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
|
|
|
|
/obj/item/clothing/suit/hooded/chaplain_hoodie
|
|
name = "follower hoodie"
|
|
desc = "Hoodie made for acolytes of the chaplain."
|
|
icon_state = "chaplain_hoodie"
|
|
inhand_icon_state = "chaplain_hoodie"
|
|
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
|
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
|
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
|
|
|
|
/obj/item/clothing/head/hooded/chaplain_hood
|
|
name = "follower hood"
|
|
desc = "Hood made for acolytes of the chaplain."
|
|
icon_state = "chaplain_hood"
|
|
body_parts_covered = HEAD
|
|
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
|
|
|
/obj/item/clothing/suit/hooded/chaplain_hoodie/leader
|
|
name = "leader hoodie"
|
|
desc = "Now you're ready for some 50 dollar bling water."
|
|
icon_state = "chaplain_hoodie_leader"
|
|
inhand_icon_state = "chaplain_hoodie_leader"
|
|
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader
|
|
|
|
/obj/item/clothing/head/hooded/chaplain_hood/leader
|
|
name = "leader hood"
|
|
desc = "I mean, you don't /have/ to seek bling water. I just think you should."
|
|
icon_state = "chaplain_hood_leader"
|
|
|
|
|
|
// CHAPLAIN NULLROD AND CUSTOM WEAPONS //
|
|
|
|
/obj/item/nullrod
|
|
name = "null rod"
|
|
desc = "A rod of pure obsidian; its very presence disrupts and dampens 'magical forces'. That's what the guidebook says, anyway."
|
|
icon_state = "nullrod"
|
|
inhand_icon_state = "nullrod"
|
|
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
|
force = 18
|
|
throw_speed = 3
|
|
throw_range = 4
|
|
throwforce = 10
|
|
slot_flags = ITEM_SLOT_BELT
|
|
w_class = WEIGHT_CLASS_TINY
|
|
obj_flags = UNIQUE_RENAME
|
|
wound_bonus = -10
|
|
var/reskinned = FALSE
|
|
var/chaplain_spawnable = TRUE
|
|
|
|
/obj/item/nullrod/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
|
|
|
|
/obj/item/nullrod/suicide_act(mob/user)
|
|
user.visible_message("<span class='suicide'>[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!</span>")
|
|
return (BRUTELOSS|FIRELOSS)
|
|
|
|
/obj/item/nullrod/attack_self(mob/user)
|
|
if(user.mind && (user.mind.holy_role) && !reskinned)
|
|
reskin_holy_weapon(user)
|
|
|
|
/**
|
|
* reskin_holy_weapon: Shows a user a list of all available nullrod reskins and based on his choice replaces the nullrod with the reskinned version
|
|
*
|
|
* Arguments:
|
|
* * M The mob choosing a nullrod reskin
|
|
*/
|
|
/obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
|
|
if(GLOB.holy_weapon_type)
|
|
return
|
|
var/list/display_names = list()
|
|
var/list/nullrod_icons = list()
|
|
for(var/rod in typesof(/obj/item/nullrod))
|
|
var/obj/item/nullrod/rodtype = rod
|
|
if(initial(rodtype.chaplain_spawnable))
|
|
display_names[initial(rodtype.name)] = rodtype
|
|
nullrod_icons += list(initial(rodtype.name) = image(icon = initial(rodtype.icon), icon_state = initial(rodtype.icon_state)))
|
|
|
|
nullrod_icons = sortList(nullrod_icons)
|
|
var/choice = show_radial_menu(M, src , nullrod_icons, custom_check = CALLBACK(src, .proc/check_menu, M), radius = 42, require_near = TRUE)
|
|
if(!choice || !check_menu(M))
|
|
return
|
|
|
|
var/picked_rod_type = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new
|
|
var/obj/item/nullrod/holy_weapon = new picked_rod_type(M.drop_location())
|
|
GLOB.holy_weapon_type = holy_weapon.type
|
|
|
|
SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]")
|
|
|
|
if(holy_weapon)
|
|
holy_weapon.reskinned = TRUE
|
|
qdel(src)
|
|
M.put_in_hands(holy_weapon)
|
|
|
|
/**
|
|
* check_menu: Checks if we are allowed to interact with a radial menu
|
|
*
|
|
* Arguments:
|
|
* * user The mob interacting with a menu
|
|
*/
|
|
/obj/item/nullrod/proc/check_menu(mob/user)
|
|
if(!istype(user))
|
|
return FALSE
|
|
if(QDELETED(src) || reskinned)
|
|
return FALSE
|
|
if(user.incapacitated() || !user.is_holding(src))
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/obj/item/nullrod/godhand
|
|
icon_state = "disintegrate"
|
|
inhand_icon_state = "disintegrate"
|
|
lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
|
|
name = "god hand"
|
|
desc = "This hand of yours glows with an awesome power!"
|
|
item_flags = ABSTRACT | DROPDEL
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
hitsound = 'sound/weapons/sear.ogg'
|
|
damtype = BURN
|
|
attack_verb_continuous = list("punches", "cross counters", "pummels")
|
|
attack_verb_simple = list("punch", "cross counter", "pummel")
|
|
|
|
/obj/item/nullrod/godhand/Initialize()
|
|
. = ..()
|
|
ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
|
|
|
|
/obj/item/nullrod/staff
|
|
icon_state = "godstaff-red"
|
|
inhand_icon_state = "godstaff-red"
|
|
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
|
name = "red holy staff"
|
|
desc = "It has a mysterious, protective aura."
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
force = 5
|
|
slot_flags = ITEM_SLOT_BACK
|
|
block_chance = 50
|
|
var/shield_icon = "shield-red"
|
|
|
|
/obj/item/nullrod/staff/worn_overlays(isinhands)
|
|
. = list()
|
|
if(isinhands)
|
|
. += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01)
|
|
|
|
/obj/item/nullrod/staff/blue
|
|
name = "blue holy staff"
|
|
icon_state = "godstaff-blue"
|
|
inhand_icon_state = "godstaff-blue"
|
|
shield_icon = "shield-old"
|
|
|
|
/obj/item/nullrod/claymore
|
|
icon_state = "claymore_gold"
|
|
inhand_icon_state = "claymore_gold"
|
|
worn_icon_state = "claymore_gold"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
name = "holy claymore"
|
|
desc = "A weapon fit for a crusade!"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
|
|
block_chance = 30
|
|
sharpness = SHARP_EDGED
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
|
|
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
|
|
|
/obj/item/nullrod/claymore/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(attack_type == PROJECTILE_ATTACK)
|
|
final_block_chance = 0 //Don't bring a sword to a gunfight
|
|
return ..()
|
|
|
|
/obj/item/nullrod/claymore/darkblade
|
|
name = "dark blade"
|
|
desc = "Spread the glory of the dark gods!"
|
|
icon_state = "cultblade"
|
|
inhand_icon_state = "cultblade"
|
|
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
|
|
hitsound = 'sound/hallucinations/growl1.ogg'
|
|
|
|
/obj/item/nullrod/claymore/chainsaw_sword
|
|
icon_state = "chainswordon"
|
|
inhand_icon_state = "chainswordon"
|
|
worn_icon_state = "chainswordon"
|
|
name = "sacred chainsaw sword"
|
|
desc = "Suffer not a heretic to live."
|
|
slot_flags = ITEM_SLOT_BELT
|
|
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
|
|
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
|
|
hitsound = 'sound/weapons/chainsawhit.ogg'
|
|
tool_behaviour = TOOL_SAW
|
|
toolspeed = 1.5 //slower than a real saw
|
|
|
|
/obj/item/nullrod/claymore/glowing
|
|
icon_state = "swordon"
|
|
inhand_icon_state = "swordon"
|
|
worn_icon_state = "swordon"
|
|
name = "force weapon"
|
|
desc = "The blade glows with the power of faith. Or possibly a battery."
|
|
|
|
/obj/item/nullrod/claymore/katana
|
|
name = "\improper Hanzo steel"
|
|
desc = "Capable of cutting clean through a holy claymore."
|
|
icon_state = "katana"
|
|
inhand_icon_state = "katana"
|
|
worn_icon_state = "katana"
|
|
|
|
/obj/item/nullrod/claymore/multiverse
|
|
name = "extradimensional blade"
|
|
desc = "Once the harbinger of an interdimensional war, its sharpness fluctuates wildly."
|
|
icon_state = "multiverse"
|
|
inhand_icon_state = "multiverse"
|
|
worn_icon_state = "multiverse"
|
|
slot_flags = ITEM_SLOT_BACK
|
|
|
|
/obj/item/nullrod/claymore/multiverse/attack(mob/living/carbon/M, mob/living/carbon/user)
|
|
force = rand(1, 30)
|
|
..()
|
|
|
|
/obj/item/nullrod/claymore/saber
|
|
name = "light energy sword"
|
|
hitsound = 'sound/weapons/blade1.ogg'
|
|
icon = 'icons/obj/transforming_energy.dmi'
|
|
icon_state = "swordblue"
|
|
inhand_icon_state = "swordblue"
|
|
worn_icon_state = "swordblue"
|
|
slot_flags = ITEM_SLOT_BELT
|
|
desc = "If you strike me down, I shall become more robust than you can possibly imagine."
|
|
|
|
/obj/item/nullrod/claymore/saber/red
|
|
name = "dark energy sword"
|
|
icon_state = "swordred"
|
|
inhand_icon_state = "swordred"
|
|
worn_icon_state = "swordred"
|
|
desc = "Woefully ineffective when used on steep terrain."
|
|
|
|
/obj/item/nullrod/claymore/saber/pirate
|
|
name = "nautical energy sword"
|
|
icon_state = "cutlass1"
|
|
inhand_icon_state = "cutlass1"
|
|
worn_icon_state = "swordred"
|
|
desc = "Convincing HR that your religion involved piracy was no mean feat."
|
|
|
|
/obj/item/nullrod/sord
|
|
name = "\improper UNREAL SORD"
|
|
desc = "This thing is so unspeakably HOLY you are having a hard time even holding it."
|
|
icon_state = "sord"
|
|
inhand_icon_state = "sord"
|
|
worn_icon_state = "sord"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
force = 4.13
|
|
throwforce = 1
|
|
slot_flags = ITEM_SLOT_BELT
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
|
|
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
|
|
|
/obj/item/nullrod/scythe
|
|
icon_state = "scythe1"
|
|
inhand_icon_state = "scythe1"
|
|
lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
|
|
name = "reaper scythe"
|
|
desc = "Ask not for whom the bell tolls..."
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
armour_penetration = 35
|
|
slot_flags = ITEM_SLOT_BACK
|
|
sharpness = SHARP_EDGED
|
|
attack_verb_continuous = list("chops", "slices", "cuts", "reaps")
|
|
attack_verb_simple = list("chop", "slice", "cut", "reap")
|
|
|
|
/obj/item/nullrod/scythe/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/butchering, 70, 110) //the harvest gives a high bonus chance
|
|
|
|
/obj/item/nullrod/scythe/vibro
|
|
icon_state = "hfrequency0"
|
|
inhand_icon_state = "hfrequency1"
|
|
worn_icon_state = "hfrequency0"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
name = "high frequency blade"
|
|
desc = "Bad references are the DNA of the soul."
|
|
attack_verb_continuous = list("chops", "slices", "cuts", "zandatsu's")
|
|
attack_verb_simple = list("chop", "slice", "cut", "zandatsu")
|
|
hitsound = 'sound/weapons/rapierhit.ogg'
|
|
|
|
/obj/item/nullrod/scythe/spellblade
|
|
icon_state = "spellblade"
|
|
inhand_icon_state = "spellblade"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
worn_icon_state = "spellblade"
|
|
icon = 'icons/obj/guns/magic.dmi'
|
|
name = "dormant spellblade"
|
|
desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is."
|
|
hitsound = 'sound/weapons/rapierhit.ogg'
|
|
|
|
/obj/item/nullrod/scythe/talking
|
|
icon_state = "talking_sword"
|
|
inhand_icon_state = "talking_sword"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
worn_icon_state = "talking_sword"
|
|
name = "possessed blade"
|
|
desc = "When the station falls into chaos, it's nice to have a friend by your side."
|
|
attack_verb_continuous = list("chops", "slices", "cuts")
|
|
attack_verb_simple= list("chop", "slice", "cut")
|
|
hitsound = 'sound/weapons/rapierhit.ogg'
|
|
var/possessed = FALSE
|
|
|
|
/obj/item/nullrod/scythe/talking/relaymove(mob/living/user, direction)
|
|
return //stops buckled message spam for the ghost.
|
|
|
|
/obj/item/nullrod/scythe/talking/attack_self(mob/living/user)
|
|
if(possessed)
|
|
return
|
|
if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE))
|
|
to_chat(user, "<span class='notice'>Anomalous otherworldly energies block you from awakening the blade!</span>")
|
|
return
|
|
|
|
to_chat(user, "<span class='notice'>You attempt to wake the spirit of the blade...</span>")
|
|
|
|
possessed = TRUE
|
|
|
|
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE)
|
|
|
|
if(LAZYLEN(candidates))
|
|
var/mob/dead/observer/C = pick(candidates)
|
|
var/mob/living/simple_animal/shade/S = new(src)
|
|
S.ckey = C.ckey
|
|
S.fully_replace_character_name(null, "The spirit of [name]")
|
|
S.status_flags |= GODMODE
|
|
S.copy_languages(user, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the user.
|
|
S.update_atom_languages()
|
|
grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue
|
|
var/input = sanitize_name(stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN))
|
|
|
|
if(src && input)
|
|
name = input
|
|
S.fully_replace_character_name(null, "The spirit of [input]")
|
|
else
|
|
to_chat(user, "<span class='warning'>The blade is dormant. Maybe you can try again later.</span>")
|
|
possessed = FALSE
|
|
|
|
/obj/item/nullrod/scythe/talking/Destroy()
|
|
for(var/mob/living/simple_animal/shade/S in contents)
|
|
to_chat(S, "<span class='userdanger'>You were destroyed!</span>")
|
|
qdel(S)
|
|
return ..()
|
|
|
|
/obj/item/nullrod/scythe/talking/chainsword
|
|
icon_state = "chainswordon"
|
|
inhand_icon_state = "chainswordon"
|
|
worn_icon_state = "chainswordon"
|
|
name = "possessed chainsaw sword"
|
|
desc = "Suffer not a heretic to live."
|
|
chaplain_spawnable = FALSE
|
|
force = 30
|
|
slot_flags = ITEM_SLOT_BELT
|
|
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
|
|
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
|
|
hitsound = 'sound/weapons/chainsawhit.ogg'
|
|
tool_behaviour = TOOL_SAW
|
|
toolspeed = 0.5 //faster than normal saw
|
|
|
|
/obj/item/nullrod/hammmer
|
|
name = "relic war hammer"
|
|
desc = "This war hammer cost the chaplain forty thousand space dollars."
|
|
icon_state = "hammeron"
|
|
inhand_icon_state = "hammeron"
|
|
worn_icon_state = "hammeron"
|
|
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
attack_verb_continuous = list("smashes", "bashes", "hammers", "crunches")
|
|
attack_verb_simple = list("smash", "bash", "hammer", "crunch")
|
|
|
|
/obj/item/nullrod/chainsaw
|
|
name = "chainsaw hand"
|
|
desc = "Good? Bad? You're the guy with the chainsaw hand."
|
|
icon_state = "chainsaw_on"
|
|
inhand_icon_state = "mounted_chainsaw"
|
|
lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
item_flags = ABSTRACT
|
|
sharpness = SHARP_EDGED
|
|
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
|
|
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
|
|
hitsound = 'sound/weapons/chainsawhit.ogg'
|
|
tool_behaviour = TOOL_SAW
|
|
toolspeed = 2 //slower than a real saw
|
|
|
|
/obj/item/nullrod/chainsaw/Initialize()
|
|
. = ..()
|
|
ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
|
|
AddComponent(/datum/component/butchering, 30, 100, 0, hitsound)
|
|
|
|
/obj/item/nullrod/clown
|
|
name = "clown dagger"
|
|
desc = "Used for absolutely hilarious sacrifices."
|
|
icon = 'icons/obj/wizard.dmi'
|
|
icon_state = "clownrender"
|
|
inhand_icon_state = "render"
|
|
worn_icon_state = "render"
|
|
hitsound = 'sound/items/bikehorn.ogg'
|
|
sharpness = SHARP_EDGED
|
|
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
|
|
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
|
|
|
/obj/item/nullrod/pride_hammer
|
|
name = "Pride-struck Hammer"
|
|
desc = "It resonates an aura of Pride."
|
|
icon_state = "pride"
|
|
inhand_icon_state = "pride"
|
|
worn_icon_state = "pride"
|
|
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
|
|
force = 16
|
|
throwforce = 15
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = ITEM_SLOT_BACK
|
|
attack_verb_continuous = list("attacks", "smashes", "crushes", "splatters", "cracks")
|
|
attack_verb_simple = list("attack", "smash", "crush", "splatter", "crack")
|
|
hitsound = 'sound/weapons/blade1.ogg'
|
|
|
|
/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
|
. = ..()
|
|
if(!proximity)
|
|
return
|
|
if(prob(30) && ishuman(A))
|
|
var/mob/living/carbon/human/H = A
|
|
user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user)
|
|
to_chat(user, "<span class='notice'>Your pride reflects on [H].</span>")
|
|
to_chat(H, "<span class='userdanger'>You feel insecure, taking on [user]'s burden.</span>")
|
|
|
|
/obj/item/nullrod/whip
|
|
name = "holy whip"
|
|
desc = "What a terrible night to be on Space Station 13."
|
|
icon_state = "chain"
|
|
inhand_icon_state = "chain"
|
|
worn_icon_state = "whip"
|
|
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
|
slot_flags = ITEM_SLOT_BELT
|
|
attack_verb_continuous = list("whips", "lashes")
|
|
attack_verb_simple = list("whip", "lash")
|
|
hitsound = 'sound/weapons/chainhit.ogg'
|
|
|
|
/obj/item/nullrod/fedora
|
|
name = "atheist's fedora"
|
|
desc = "The brim of the hat is as sharp as your wit. The edge would hurt almost as much as disproving the existence of God."
|
|
icon_state = "fedora"
|
|
inhand_icon_state = "fedora"
|
|
slot_flags = ITEM_SLOT_HEAD
|
|
icon = 'icons/obj/clothing/hats.dmi'
|
|
force = 0
|
|
throw_speed = 4
|
|
throw_range = 7
|
|
throwforce = 30
|
|
sharpness = SHARP_EDGED
|
|
attack_verb_continuous = list("enlightens", "redpills")
|
|
attack_verb_simple = list("enlighten", "redpill")
|
|
|
|
/obj/item/nullrod/armblade
|
|
name = "dark blessing"
|
|
desc = "Particularly twisted deities grant gifts of dubious value."
|
|
icon = 'icons/obj/changeling_items.dmi'
|
|
icon_state = "arm_blade"
|
|
inhand_icon_state = "arm_blade"
|
|
lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
|
|
item_flags = ABSTRACT
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
sharpness = SHARP_EDGED
|
|
wound_bonus = -20
|
|
bare_wound_bonus = 25
|
|
|
|
/obj/item/nullrod/armblade/Initialize()
|
|
. = ..()
|
|
ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
|
|
AddComponent(/datum/component/butchering, 80, 70)
|
|
|
|
/obj/item/nullrod/armblade/tentacle
|
|
name = "unholy blessing"
|
|
icon_state = "tentacle"
|
|
inhand_icon_state = "tentacle"
|
|
|
|
/obj/item/nullrod/carp
|
|
name = "carp-sie plushie"
|
|
desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie."
|
|
icon = 'icons/obj/plushes.dmi'
|
|
icon_state = "carpplush"
|
|
inhand_icon_state = "carp_plushie"
|
|
worn_icon_state = "nullrod"
|
|
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
|
force = 15
|
|
attack_verb_continuous = list("bites", "eats", "fin slaps")
|
|
attack_verb_simple = list("bite", "eat", "fin slap")
|
|
hitsound = 'sound/weapons/bite.ogg'
|
|
var/used_blessing = FALSE
|
|
|
|
/obj/item/nullrod/carp/attack_self(mob/living/user)
|
|
if(used_blessing)
|
|
else if(user.mind && (user.mind.holy_role))
|
|
to_chat(user, "<span class='boldnotice'>You are blessed by Carp-Sie. Wild space carp will no longer attack you.</span>")
|
|
user.faction |= "carp"
|
|
used_blessing = TRUE
|
|
|
|
/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
|
|
name = "monk's staff"
|
|
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown."
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
force = 15
|
|
block_chance = 40
|
|
slot_flags = ITEM_SLOT_BACK
|
|
sharpness = SHARP_NONE
|
|
hitsound = "swing_hit"
|
|
attack_verb_continuous = list("smashes", "slams", "whacks", "thwacks")
|
|
attack_verb_simple = list("smash", "slam", "whack", "thwack")
|
|
icon = 'icons/obj/items_and_weapons.dmi'
|
|
icon_state = "bostaff0"
|
|
inhand_icon_state = "bostaff0"
|
|
worn_icon_state = "bostaff0"
|
|
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
|
|
|
/obj/item/nullrod/tribal_knife
|
|
icon_state = "crysknife"
|
|
desc = "They say fear is the true mind killer, but stabbing them in the head works too. Honour compels you to not sheathe it once drawn."
|
|
inhand_icon_state = "crysknife"
|
|
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
|
name = "arrhythmic knife"
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
sharpness = SHARP_EDGED
|
|
slot_flags = null
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
|
|
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
|
item_flags = SLOWS_WHILE_IN_HAND
|
|
|
|
/obj/item/nullrod/tribal_knife/Initialize(mapload)
|
|
. = ..()
|
|
START_PROCESSING(SSobj, src)
|
|
AddComponent(/datum/component/butchering, 50, 100)
|
|
|
|
/obj/item/nullrod/tribal_knife/Destroy()
|
|
STOP_PROCESSING(SSobj, src)
|
|
. = ..()
|
|
|
|
/obj/item/nullrod/tribal_knife/process()
|
|
slowdown = rand(-10, 10)/10
|
|
if(iscarbon(loc))
|
|
var/mob/living/carbon/wielder = loc
|
|
if(wielder.is_holding(src))
|
|
wielder.update_equipment_speed_mods()
|
|
|
|
/obj/item/nullrod/pitchfork
|
|
name = "unholy pitchfork"
|
|
desc = "Holding this makes you look absolutely devilish."
|
|
icon_state = "pitchfork0"
|
|
worn_icon_state = "pitchfork0"
|
|
lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
|
|
worn_icon_state = "pitchfork0"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
slot_flags = ITEM_SLOT_BACK
|
|
attack_verb_continuous = list("pokes", "impales", "pierces", "jabs")
|
|
attack_verb_simple = list("poke", "impale", "pierce", "jab")
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
sharpness = SHARP_EDGED
|
|
|
|
/obj/item/nullrod/egyptian
|
|
name = "egyptian staff"
|
|
desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth."
|
|
icon = 'icons/obj/guns/magic.dmi'
|
|
icon_state = "pharoah_sceptre"
|
|
inhand_icon_state = "pharoah_sceptre"
|
|
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
|
worn_icon_state = "pharoah_sceptre"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
slot_flags = ITEM_SLOT_BACK
|
|
attack_verb_continuous = list("bashes", "smacks", "whacks")
|
|
attack_verb_simple = list("bash", "smack", "whack")
|
|
|
|
/obj/item/nullrod/hypertool
|
|
name = "hypertool"
|
|
desc = "A tool so powerful even you cannot perfectly use it."
|
|
icon = 'icons/obj/device.dmi'
|
|
icon_state = "hypertool"
|
|
inhand_icon_state = "hypertool"
|
|
worn_icon_state = "hypertool"
|
|
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
|
slot_flags = ITEM_SLOT_BELT
|
|
damtype = BRAIN
|
|
armour_penetration = 35
|
|
attack_verb_continuous = list("pulses", "mends", "cuts")
|
|
attack_verb_simple = list("pulse", "mend", "cut")
|
|
hitsound = 'sound/effects/sparks4.ogg'
|
|
|
|
/obj/item/nullrod/spear
|
|
name = "ancient spear"
|
|
desc = "An ancient spear made of brass, I mean gold, I mean bronze. It looks highly mechanical."
|
|
icon = 'icons/obj/clockwork_objects.dmi'
|
|
icon_state = "ratvarian_spear"
|
|
inhand_icon_state = "ratvarian_spear"
|
|
lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi'
|
|
slot_flags = ITEM_SLOT_BELT
|
|
armour_penetration = 10
|
|
sharpness = SHARP_POINTY
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
attack_verb_continuous = list("stabs", "pokes", "slashes", "clocks")
|
|
attack_verb_simple = list("stab", "poke", "slash", "clock")
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|