mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-19 11:59:03 +01:00
Merge pull request #9993 from Ghommie/Ghommie-cit412
Ports tgstation loom changes, and durathred golems.
This commit is contained in:
@@ -58,6 +58,8 @@
|
||||
#define MAX_MANIA_SEVERITY 100 //how high the mania severity can go
|
||||
#define MANIA_DAMAGE_TO_CONVERT 90 //how much damage is required before it'll convert affected targets
|
||||
|
||||
#define STATUS_EFFECT_CHOKINGSTRAND /datum/status_effect/strandling //Choking Strand
|
||||
|
||||
#define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath.
|
||||
|
||||
#define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
#define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism"
|
||||
#define TRAIT_STRONG_GRABBER "strong_grabber"
|
||||
#define TRAIT_CALCIUM_HEALER "calcium_healer"
|
||||
#define TRAIT_MAGIC_CHOKE "magic_choke"
|
||||
#define TRAIT_ALCOHOL_LIGHTWEIGHT "alcohol_lightweight" //Skyrat port
|
||||
#define TRAIT_CURSED_BLOOD "cursed_blood" //Yo dawg I heard you like bloodborne references so I put a
|
||||
#define TRAIT_HEAT_DETECT "heat_detect"
|
||||
|
||||
@@ -609,6 +609,38 @@
|
||||
icon_state = "ichorial_stain"
|
||||
alerttooltipstyle = "clockcult"
|
||||
|
||||
|
||||
//GOLEM GANG
|
||||
|
||||
/datum/status_effect/strandling //get it, strand as in durathread strand + strangling = strandling hahahahahahahahahahhahahaha i want to die
|
||||
id = "strandling"
|
||||
status_type = STATUS_EFFECT_UNIQUE
|
||||
alert_type = /obj/screen/alert/status_effect/strandling
|
||||
|
||||
/datum/status_effect/strandling/on_apply()
|
||||
ADD_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron")
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/strandling/on_remove()
|
||||
REMOVE_TRAIT(owner, TRAIT_MAGIC_CHOKE, "dumbmoron")
|
||||
return ..()
|
||||
|
||||
/obj/screen/alert/status_effect/strandling
|
||||
name = "Choking strand"
|
||||
desc = "A magical strand of Durathread is wrapped around your neck, preventing you from breathing! Click this icon to remove the strand."
|
||||
icon_state = "his_grace"
|
||||
alerttooltipstyle = "hisgrace"
|
||||
|
||||
/obj/screen/alert/status_effect/strandling/Click(location, control, params)
|
||||
. = ..()
|
||||
to_chat(mob_viewer, "<span class='notice'>You attempt to remove the durathread strand from around your neck.</span>")
|
||||
if(do_after(mob_viewer, 35, null, mob_viewer))
|
||||
if(isliving(mob_viewer))
|
||||
var/mob/living/L = mob_viewer
|
||||
to_chat(mob_viewer, "<span class='notice'>You succesfuly remove the durathread strand.</span>")
|
||||
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
|
||||
|
||||
|
||||
datum/status_effect/pacify
|
||||
id = "pacify"
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
|
||||
@@ -1,135 +1,144 @@
|
||||
/obj/item/wirecutters
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "cutters_map"
|
||||
item_state = "cutters"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 6
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
materials = list(MAT_METAL=80)
|
||||
attack_verb = list("pinched", "nipped")
|
||||
hitsound = 'sound/items/wirecutter.ogg'
|
||||
usesound = 'sound/items/wirecutter.ogg'
|
||||
|
||||
tool_behaviour = TOOL_WIRECUTTER
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
var/random_color = TRUE
|
||||
var/static/list/wirecutter_colors = list(
|
||||
"blue" = "#1861d5",
|
||||
"red" = "#951710",
|
||||
"pink" = "#d5188d",
|
||||
"brown" = "#a05212",
|
||||
"green" = "#0e7f1b",
|
||||
"cyan" = "#18a2d5",
|
||||
"yellow" = "#d58c18"
|
||||
)
|
||||
|
||||
|
||||
/obj/item/wirecutters/Initialize()
|
||||
. = ..()
|
||||
if(random_color) //random colors!
|
||||
icon_state = "cutters"
|
||||
var/our_color = pick(wirecutter_colors)
|
||||
add_atom_colour(wirecutter_colors[our_color], FIXED_COLOUR_PRIORITY)
|
||||
update_icon()
|
||||
|
||||
/obj/item/wirecutters/update_icon()
|
||||
if(!random_color) //icon override
|
||||
return
|
||||
cut_overlays()
|
||||
var/mutable_appearance/base_overlay = mutable_appearance(icon, "cutters_cutty_thingy")
|
||||
base_overlay.appearance_flags = RESET_COLOR
|
||||
add_overlay(base_overlay)
|
||||
|
||||
/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user)
|
||||
if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable))
|
||||
user.visible_message("<span class='notice'>[user] cuts [C]'s restraints with [src]!</span>")
|
||||
qdel(C.handcuffed)
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/wirecutters/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
playsound(loc, usesound, 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/wirecutters/brass
|
||||
name = "brass wirecutters"
|
||||
desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch."
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
icon_state = "cutters_brass"
|
||||
random_color = FALSE
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/wirecutters/bronze
|
||||
name = "bronze plated wirecutters"
|
||||
desc = "A pair of wirecutters plated with bronze."
|
||||
icon_state = "cutters_brass"
|
||||
random_color = FALSE
|
||||
toolspeed = 0.95 //Wire cutters have 0 time bars though
|
||||
|
||||
/obj/item/wirecutters/abductor
|
||||
name = "alien wirecutters"
|
||||
desc = "Extremely sharp wirecutters, made out of a silvery-green metal."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "cutters"
|
||||
toolspeed = 0.1
|
||||
random_color = FALSE
|
||||
|
||||
/obj/item/wirecutters/cyborg
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/wirecutters/power
|
||||
name = "jaws of life"
|
||||
desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
|
||||
icon_state = "jaws_cutter"
|
||||
item_state = "jawsoflife"
|
||||
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
|
||||
usesound = 'sound/items/jaws_cut.ogg'
|
||||
toolspeed = 0.25
|
||||
random_color = FALSE
|
||||
|
||||
/obj/item/wirecutters/power/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!</span>")
|
||||
playsound(loc, 'sound/items/jaws_cut.ogg', 50, 1, -1)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/wirecutters/power/attack_self(mob/user)
|
||||
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
||||
var/obj/item/crowbar/power/pryjaws = new /obj/item/crowbar/power(drop_location())
|
||||
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
|
||||
qdel(src)
|
||||
user.put_in_active_hand(pryjaws)
|
||||
|
||||
/obj/item/wirecutters/power/attack(mob/living/carbon/C, mob/user)
|
||||
if(istype(C) && C.handcuffed)
|
||||
user.visible_message("<span class='notice'>[user] cuts [C]'s restraints with [src]!</span>")
|
||||
qdel(C.handcuffed)
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/wirecutters/advanced
|
||||
name = "advanced wirecutters"
|
||||
desc = "A set of reproduction alien wirecutters, they have a silver handle with an exceedingly sharp blade."
|
||||
icon = 'icons/obj/advancedtools.dmi'
|
||||
icon_state = "cutters"
|
||||
toolspeed = 0.2
|
||||
/obj/item/wirecutters
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "cutters_map"
|
||||
item_state = "cutters"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 6
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
materials = list(MAT_METAL=80)
|
||||
attack_verb = list("pinched", "nipped")
|
||||
hitsound = 'sound/items/wirecutter.ogg'
|
||||
usesound = 'sound/items/wirecutter.ogg'
|
||||
|
||||
tool_behaviour = TOOL_WIRECUTTER
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
var/random_color = TRUE
|
||||
var/static/list/wirecutter_colors = list(
|
||||
"blue" = "#1861d5",
|
||||
"red" = "#951710",
|
||||
"pink" = "#d5188d",
|
||||
"brown" = "#a05212",
|
||||
"green" = "#0e7f1b",
|
||||
"cyan" = "#18a2d5",
|
||||
"yellow" = "#d58c18"
|
||||
)
|
||||
|
||||
|
||||
/obj/item/wirecutters/Initialize()
|
||||
. = ..()
|
||||
if(random_color) //random colors!
|
||||
icon_state = "cutters"
|
||||
var/our_color = pick(wirecutter_colors)
|
||||
add_atom_colour(wirecutter_colors[our_color], FIXED_COLOUR_PRIORITY)
|
||||
update_icon()
|
||||
|
||||
/obj/item/wirecutters/update_icon()
|
||||
if(!random_color) //icon override
|
||||
return
|
||||
cut_overlays()
|
||||
var/mutable_appearance/base_overlay = mutable_appearance(icon, "cutters_cutty_thingy")
|
||||
base_overlay.appearance_flags = RESET_COLOR
|
||||
add_overlay(base_overlay)
|
||||
|
||||
/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user)
|
||||
if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable))
|
||||
user.visible_message("<span class='notice'>[user] cuts [C]'s restraints with [src]!</span>")
|
||||
qdel(C.handcuffed)
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/wirecutters/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
playsound(loc, usesound, 50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/wirecutters/brass
|
||||
name = "brass wirecutters"
|
||||
desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch."
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
icon_state = "cutters_brass"
|
||||
random_color = FALSE
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/wirecutters/bronze
|
||||
name = "bronze plated wirecutters"
|
||||
desc = "A pair of wirecutters plated with bronze."
|
||||
icon_state = "cutters_brass"
|
||||
random_color = FALSE
|
||||
toolspeed = 0.95 //Wire cutters have 0 time bars though
|
||||
|
||||
/obj/item/wirecutters/abductor
|
||||
name = "alien wirecutters"
|
||||
desc = "Extremely sharp wirecutters, made out of a silvery-green metal."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "cutters"
|
||||
toolspeed = 0.1
|
||||
random_color = FALSE
|
||||
|
||||
/obj/item/wirecutters/cyborg
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/wirecutters/power
|
||||
name = "jaws of life"
|
||||
desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
|
||||
icon_state = "jaws_cutter"
|
||||
item_state = "jawsoflife"
|
||||
|
||||
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
|
||||
usesound = 'sound/items/jaws_cut.ogg'
|
||||
toolspeed = 0.25
|
||||
random_color = FALSE
|
||||
|
||||
/obj/item/wirecutters/power/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!</span>")
|
||||
playsound(loc, 'sound/items/jaws_cut.ogg', 50, 1, -1)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(BP)
|
||||
BP.drop_limb()
|
||||
playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/wirecutters/power/attack_self(mob/user)
|
||||
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
||||
var/obj/item/crowbar/power/pryjaws = new /obj/item/crowbar/power(drop_location())
|
||||
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
|
||||
qdel(src)
|
||||
user.put_in_active_hand(pryjaws)
|
||||
|
||||
/obj/item/wirecutters/power/attack(mob/living/carbon/C, mob/user)
|
||||
if(istype(C))
|
||||
if(C.handcuffed)
|
||||
user.visible_message("<span class='notice'>[user] cuts [C]'s restraints with [src]!</span>")
|
||||
qdel(C.handcuffed)
|
||||
return
|
||||
else if(C.has_status_effect(STATUS_EFFECT_CHOKINGSTRAND))
|
||||
var/man = C == user ? "your" : "[C]'\s"
|
||||
user.visible_message("<span class='notice'>[user] attempts to remove the durathread strand from around [man] neck.</span>", \
|
||||
"<span class='notice'>You attempt to remove the durathread strand from around [man] neck.</span>")
|
||||
if(do_after(user, 15, null, C))
|
||||
user.visible_message("<span class='notice'>[user] succesfuly removes the durathread strand.</span>",
|
||||
"<span class='notice'>You succesfuly remove the durathread strand.</span>")
|
||||
C.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/wirecutters/advanced
|
||||
name = "advanced wirecutters"
|
||||
desc = "A set of reproduction alien wirecutters, they have a silver handle with an exceedingly sharp blade."
|
||||
icon = 'icons/obj/advancedtools.dmi'
|
||||
icon_state = "cutters"
|
||||
toolspeed = 0.2
|
||||
random_color = FALSE
|
||||
@@ -154,6 +154,9 @@
|
||||
log_admin("[key_name(new_spawn)] possessed a golem shell enslaved to [key_name(owner)].")
|
||||
if(ishuman(new_spawn))
|
||||
var/mob/living/carbon/human/H = new_spawn
|
||||
if(has_owner)
|
||||
var/datum/species/golem/G = H.dna.species
|
||||
G.owner = owner
|
||||
H.set_cloned_appearance()
|
||||
if(!name)
|
||||
if(has_owner)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
//Loom, turns raw cotton and durathread into their respective fabrics.
|
||||
#define FABRIC_PER_SHEET 4
|
||||
|
||||
|
||||
///This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
|
||||
/obj/structure/loom
|
||||
name = "loom"
|
||||
desc = "A simple device used to weave cloth and other thread-based fabrics together into usable material."
|
||||
@@ -9,73 +11,34 @@
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/loom/attackby(obj/item/I, mob/user)
|
||||
if (user.a_intent != INTENT_HELP)
|
||||
return ..()
|
||||
if (istype(I, /obj/item/stack/sheet))
|
||||
if (!anchored)
|
||||
return to_chat(user, "<span class='notice'>You have to anchor [src] first!</span>")
|
||||
|
||||
var/obj/item/stack/sheet/W = I
|
||||
if(W.is_fabric && W.amount > 1)
|
||||
user.visible_message("<span class='notice'[user] starts weaving [W.name] through the loom.</span>",
|
||||
"<span class='notice'>You start weaving the [W.name] through the loom.</span>")
|
||||
|
||||
if(W.use_tool(src, user, W.pull_effort))
|
||||
new W.loom_result(drop_location())
|
||||
to_chat(user, "<span class='notice'>You weave the [W.name] into a workable fabric.</span>")
|
||||
W.amount = (W.amount - 2)
|
||||
if(W.amount < 1)
|
||||
qdel(W)
|
||||
else if(W.is_fabric)
|
||||
to_chat("<span class='notice'>You need at least 2 [W.name] to loom into fabric!</span>")
|
||||
if(weave(I, user))
|
||||
return
|
||||
else
|
||||
switch (I.tool_behaviour)
|
||||
if (TOOL_SCREWDRIVER)
|
||||
user.visible_message("<span class='info'>[user] starts disassembling [src]...</span>",
|
||||
"<span class='info'>You start disassembling [src]...</span>")
|
||||
I.play_tool_sound(src)
|
||||
if(I.use_tool(src, user, 60))
|
||||
playsound(src.loc, 'sound/items/deconstruct.ogg', 50, TRUE)
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
if (TOOL_WRENCH)
|
||||
if (anchored)
|
||||
to_chat(user, "<span class='notice'>You unsecure the [src].</span>")
|
||||
I.play_tool_sound(src)
|
||||
anchored = FALSE
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You secure the [src].</span>")
|
||||
I.play_tool_sound(src)
|
||||
anchored = TRUE
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/loom/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/wood (get_turf(src), 10)
|
||||
qdel(src)
|
||||
/obj/structure/loom/wrench_act(mob/living/user, obj/item/I)
|
||||
..()
|
||||
default_unfasten_wrench(user, I, 5)
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/*///Handles the weaving.
|
||||
///Handles the weaving.
|
||||
/obj/structure/loom/proc/weave(obj/item/stack/sheet/S, mob/user)
|
||||
if(!istype(S) || !S.is_fabric)
|
||||
return FALSE
|
||||
if(!anchored)
|
||||
user.show_message("<span class='notice'>The loom needs to be wrenched down.</span>", MSG_VISUAL)
|
||||
user.show_message("<span class='notice'>The loom needs to be wrenched down.</span>", 1)
|
||||
return FALSE
|
||||
if(S.amount < FABRIC_PER_SHEET)
|
||||
user.show_message("<span class='notice'>You need at least [FABRIC_PER_SHEET] units of fabric before using this.</span>", 1)
|
||||
return FALSE
|
||||
user.show_message("<span class='notice'>You start weaving \the [S.name] through the loom..</span>", MSG_VISUAL)
|
||||
user.show_message("<span class='notice'>You start weaving \the [S.name] through the loom..</span>", 1)
|
||||
if(S.use_tool(src, user, S.pull_effort))
|
||||
if(S.amount >= FABRIC_PER_SHEET)
|
||||
new S.loom_result(drop_location())
|
||||
S.use(FABRIC_PER_SHEET)
|
||||
user.show_message("<span class='notice'>You weave \the [S.name] into a workable fabric.</span>", MSG_VISUAL)
|
||||
user.show_message("<span class='notice'>You weave \the [S.name] into a workable fabric.</span>", 1)
|
||||
return TRUE
|
||||
|
||||
/obj/structure/loom/unanchored
|
||||
anchored = FALSE
|
||||
|
||||
#undef FABRIC_PER_SHEET */
|
||||
#undef FABRIC_PER_SHEET
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
name = "Loom"
|
||||
desc = "A large pre-made loom."
|
||||
cost = 1000
|
||||
contains = list(/obj/structure/loom)
|
||||
contains = list(/obj/structure/loom/unanchored)
|
||||
crate_name = "loom crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1519,6 +1519,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
target.lastattacker = user.real_name
|
||||
target.lastattackerckey = user.ckey
|
||||
user.dna.species.spec_unarmedattacked(user, target)
|
||||
|
||||
if(user.limb_destroyer)
|
||||
target.dismembering_strike(user, affecting.body_zone)
|
||||
@@ -1532,6 +1533,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
else if(target.lying)
|
||||
target.forcesay(GLOB.hit_appends)
|
||||
|
||||
/datum/species/proc/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
||||
return
|
||||
|
||||
/datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
|
||||
// CITADEL EDIT slap mouthy gits and booty
|
||||
var/aim_for_mouth = user.zone_selected == "mouth"
|
||||
|
||||
@@ -943,6 +943,21 @@
|
||||
grab_sound = 'sound/weapons/whipgrab.ogg'
|
||||
attack_sound = 'sound/weapons/whip.ogg'
|
||||
|
||||
/datum/species/golem/durathread
|
||||
name = "Durathread Golem"
|
||||
id = "durathread golem"
|
||||
prefix = "Durathread"
|
||||
limbs_id = "d_golem"
|
||||
special_names = list("Boll","Weave")
|
||||
species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES)
|
||||
fixed_mut_color = null
|
||||
inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER)
|
||||
info_text = "As a <span class='danger'>Durathread Golem</span>, your strikes will cause those your targets to start choking, but your woven body won't withstand fire as well."
|
||||
|
||||
/datum/species/golem/durathread/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target)
|
||||
. = ..()
|
||||
target.apply_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
|
||||
|
||||
/datum/species/golem/bone
|
||||
name = "Bone Golem"
|
||||
id = "bone golem"
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
var/datum/gas_mixture/breath
|
||||
|
||||
if(!getorganslot(ORGAN_SLOT_BREATHING_TUBE))
|
||||
if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || lungs.organ_flags & ORGAN_FAILING)
|
||||
if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || HAS_TRAIT(src, TRAIT_MAGIC_CHOKE) || (lungs && lungs.organ_flags & ORGAN_FAILING))
|
||||
losebreath++ //You can't breath at all when in critical or when being choked, so you're going to miss a breath
|
||||
|
||||
else if(health <= crit_threshold)
|
||||
|
||||
@@ -85,7 +85,8 @@
|
||||
/obj/item/stack/tile/bronze = /datum/species/golem/bronze,
|
||||
/obj/item/stack/sheet/cardboard = /datum/species/golem/cardboard,
|
||||
/obj/item/stack/sheet/leather = /datum/species/golem/leather,
|
||||
/obj/item/stack/sheet/bone = /datum/species/golem/bone)
|
||||
/obj/item/stack/sheet/bone = /datum/species/golem/bone,
|
||||
/obj/item/stack/sheet/cotton/durathread = /datum/species/golem/durathread)
|
||||
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/O = I
|
||||
|
||||
Reference in New Issue
Block a user