This commit is contained in:
Ghommie
2019-06-02 19:03:34 +02:00
57 changed files with 588 additions and 65 deletions

View File

@@ -71,6 +71,7 @@
#define TRAIT_MUSICIAN "musician"
#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
#define TRAIT_NYMPHO "nymphomania"
#define TRAIT_MASO "masochism"
// common trait sources
#define TRAIT_GENERIC "generic"

View File

@@ -21,6 +21,8 @@
/datum/ert/amber
code = "Amber"
leader_role = /datum/antagonist/ert/commander/red
roles = list(/datum/antagonist/ert/security/red, /datum/antagonist/ert/medic/red, /datum/antagonist/ert/engineer/red)
/datum/ert/red
leader_role = /datum/antagonist/ert/commander/red

View File

@@ -80,9 +80,21 @@
/obj/machinery/computer/atmos_alert/update_icon()
..()
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
var/overlay_state = icon_screen
if(stat & (NOPOWER|BROKEN))
add_overlay("[icon_keyboard]_off")
return
add_overlay(icon_keyboard)
if(priority_alarms.len)
overlay_state = "alert:2"
add_overlay("alert:2")
else if(minor_alarms.len)
overlay_state = "alert:1"
add_overlay("alert:1")
else
overlay_state = "alert:0"
add_overlay("alert:0")
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)

View File

@@ -76,12 +76,23 @@
/obj/machinery/computer/station_alert/update_icon()
..()
cut_overlays()
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
var/overlay_state = icon_screen
if(stat & (NOPOWER|BROKEN))
add_overlay("[icon_keyboard]_off")
return
add_overlay(icon_keyboard)
var/active_alarms = FALSE
for(var/cat in alarms)
var/list/L = alarms[cat]
if(L.len)
active_alarms = TRUE
if(active_alarms)
overlay_state = "alert:2"
add_overlay("alert:2")
else
overlay_state = "alert:0"
add_overlay("alert:0")
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)

View File

@@ -449,7 +449,11 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
return 0
/obj/item/proc/eyestab(mob/living/carbon/M, mob/living/carbon/user)
if(user.has_trait(TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm [M]!</span>")
return
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
var/is_human_victim = 0
var/obj/item/bodypart/affecting = M.get_bodypart(BODY_ZONE_HEAD)
if(ishuman(M))

View File

@@ -49,8 +49,6 @@
forkload = null
else if(user.zone_selected == BODY_ZONE_PRECISE_EYES)
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
else
return ..()
@@ -79,8 +77,6 @@
/obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user)
if(user.zone_selected == BODY_ZONE_PRECISE_EYES)
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
else
return ..()

View File

@@ -283,7 +283,7 @@
else
var/turf/T = get_turf(src)
if(!isspaceturf(T))
consume_turf(T)
shard.consume_turf(T)
/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
. = ..()
@@ -330,18 +330,7 @@
else if(!isturf(target))
shard.Bumped(target)
else
consume_turf(target)
/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T)
var/oldtype = T.type
var/turf/newT = T.ScrapeAway()
if(newT.type == oldtype)
return
playsound(T, 'sound/effects/supermatter.ogg', 50, 1)
T.visible_message("<span class='danger'>[T] smacks into [src] and rapidly flashes to ash.</span>",\
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
shard.Consume()
T.CalculateAdjacentTurfs()
shard.consume_turf(target)
/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna)
return FALSE

View File

@@ -635,6 +635,13 @@
attack_verb = list("lit", "flickered", "flashed")
squeak_override = list('sound/weapons/magout.ogg' = 1)
/obj/item/toy/plush/box
name = "cardboard plushie"
desc = "A toy box plushie, it holds cotten. Only a baddie would place a bomb through the postal system..."
icon_state = "box"
item_state = "box"
attack_verb = list("open", "closed", "packed", "hidden", "rigged", "bombed", "sent", "gave")
/obj/item/toy/plush/borgplushie
name = "robot plushie"
desc = "An adorable stuffed toy of a robot."
@@ -659,6 +666,12 @@
icon_state = "neeb"
item_state = "neeb"
/obj/item/toy/plush/borgplushie/bhijn
desc = "An adorable stuffed toy of a IPC."
icon_state = "bhijn"
item_state = "bhijn"
attack_verb = list("closed", "reworked", "merged")
/obj/item/toy/plush/bird
name = "bird plushie"
desc = "An adorable stuffed plushie that resembles an avian."
@@ -743,6 +756,7 @@
/obj/item/toy/plush/mammal/edgar
icon_state = "edgar"
item_state = "edgar"
attack_verb = list("collared", "tricked", "headpatted")
/obj/item/toy/plush/mammal/frank
icon_state = "frank"
@@ -777,6 +791,16 @@
icon_state = "zed"
item_state = "zed"
/obj/item/toy/plush/mammal/justin
icon_state = "justin"
item_state = "justin"
attack_verb = list("buttslapped", "fixed")
/obj/item/toy/plush/mammal/reece
icon_state = "reece"
item_state = "reece"
attack_verb = list("healed", "cured", "demoted")
/obj/item/toy/plush/mammal/dog
desc = "An adorable stuffed toy that resembles a canine."
icon_state = "katlin"
@@ -840,6 +864,12 @@
icon_state = "drew"
item_state = "drew"
/obj/item/toy/plush/catgirl/trilby
desc = "A masked stuffed toy that resembles a feline scientist."
icon_state = "trilby"
item_state = "trilby"
attack_verb = list("pred", "coded", "remembered")
/obj/item/toy/plush/catgirl/fermis
name = "medcat plushie"
desc = "An affectionate stuffed toy that resembles a certain medcat, comes complete with battery operated wagging tail!! You get the impression she's cheering you on to to find happiness and be kind to people."

View File

@@ -153,3 +153,16 @@
slot_flags = null
to_chat(user, "<span class='notice'>[src] can now be concealed.</span>")
add_fingerprint(user)
/obj/item/shield/makeshift
name = "metal shield"
desc = "A large shield made of wired and welded sheets of metal. The handle is made of cloth and leather making it unwieldy."
armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80)
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
item_state = "makeshift_shield"
materials = list(MAT_METAL = 18000)
slot_flags = null
block_chance = 25
force = 5
throwforce = 7

View File

@@ -75,11 +75,6 @@
return ..()
if(user.zone_selected != BODY_ZONE_PRECISE_EYES && user.zone_selected != BODY_ZONE_HEAD)
return ..()
if(user.has_trait(TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm [M]!</span>")
return
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
/obj/item/screwdriver/brass
@@ -103,7 +98,7 @@
/obj/item/screwdriver/abductor/get_belt_overlay()
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_nuke")
/obj/item/screwdriver/power
name = "hand drill"
desc = "A simple powered hand drill. It's fitted with a screw bit."

View File

@@ -46,7 +46,8 @@
/datum/outfit/ert/commander/alert
name = "ERT Commander - High Alert"
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert
glasses = /obj/item/clothing/glasses/thermal/eyepatch
backpack_contents = list(/obj/item/storage/box/engineer=1,\
/obj/item/melee/baton/loaded=1,\
@@ -80,7 +81,8 @@
/datum/outfit/ert/security/alert
name = "ERT Security - High Alert"
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert/sec
backpack_contents = list(/obj/item/storage/box/engineer=1,\
/obj/item/storage/box/handcuffs=1,\
/obj/item/clothing/mask/gas/sechailer/swat=1,\
@@ -117,6 +119,7 @@
/datum/outfit/ert/medic/alert
name = "ERT Medic - High Alert"
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert/med
backpack_contents = list(/obj/item/storage/box/engineer=1,\
/obj/item/melee/baton/loaded=1,\
/obj/item/clothing/mask/gas/sechailer/swat=1,\
@@ -153,6 +156,7 @@
/datum/outfit/ert/engineer/alert
name = "ERT Engineer - High Alert"
suit = /obj/item/clothing/suit/space/hardsuit/ert/alert/engi
backpack_contents = list(/obj/item/storage/box/engineer=1,\
/obj/item/melee/baton/loaded=1,\
/obj/item/clothing/mask/gas/sechailer/swat=1,\

View File

@@ -0,0 +1,36 @@
/obj/item/clothing/shoes/clown_shoes/taeclowndo
var/list/spelltypes = list (
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie,
/obj/effect/proc_holder/spell/aimed/banana_peel,
/obj/effect/proc_holder/spell/targeted/touch/megahonk,
/obj/effect/proc_holder/spell/targeted/touch/bspie,
)
var/list/spells = list()
/obj/item/clothing/shoes/clown_shoes/taeclowndo/equipped(mob/user, slot)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(!(H.has_trait(TRAIT_CLUMSY)) && !(H.mind && H.mind.assigned_role == "Clown"))
return
if(slot == SLOT_SHOES)
spells = new
for(var/spell in spelltypes)
var/obj/effect/proc_holder/spell/S = new spell
spells += S
S.charge_counter = 0
S.start_recharge()
H.mind.AddSpell(S)
/obj/item/clothing/shoes/clown_shoes/taeclowndo/dropped(mob/user)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.get_item_by_slot(SLOT_SHOES) == src)
for(var/spell in spells)
var/obj/effect/proc_holder/spell/S = spell
H.mind.spell_list.Remove(S)
qdel(S)

View File

@@ -8,7 +8,8 @@ Contains:
- NASA Voidsuit
- Father Christmas' magical clothes
- Pirate's spacesuit
- ERT hardsuit: command, sec, engi, med
- ERT hardsuit: Command, Sec, Engi, Med
- ERT High Alarm - Command, Sec, Engi, Med
- EVA spacesuit
- Freedom's spacesuit (freedom from vacuum's oppression)
- Carp hardsuit
@@ -185,6 +186,7 @@ Contains:
slowdown = 0
strip_delay = 130
resistance_flags = ACID_PROOF
tauric = TRUE //Citadel Add for tauric hardsuits
//ERT Security
/obj/item/clothing/head/helmet/space/hardsuit/ert/sec
@@ -198,7 +200,6 @@ Contains:
icon_state = "ert_security"
item_state = "ert_security"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/sec
tauric = TRUE //Citadel Add for tauric hardsuits
//ERT Engineering
/obj/item/clothing/head/helmet/space/hardsuit/ert/engi
@@ -212,7 +213,6 @@ Contains:
icon_state = "ert_engineer"
item_state = "ert_engineer"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/engi
tauric = TRUE //Citadel Add for tauric hardsuits
//ERT Medical
/obj/item/clothing/head/helmet/space/hardsuit/ert/med
@@ -227,8 +227,73 @@ Contains:
item_state = "ert_medical"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/med
species_exception = list(/datum/species/angel)
//Red alert ERT
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert
name = "emergency response unit helmet"
desc = "Red alert command helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_commander-alert"
item_state = "hardsuit0-ert_commander-alert"
item_color = "ert_commander-alert"
armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
item_flags = NODROP
brightness_on = 8
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/suit/space/hardsuit/ert/alert
name = "emergency response team suit"
desc = "Red alert command suit for the ERT. This one is more armored than its standard version."
icon_state = "ert_command-alert"
item_state = "ert_command-alert"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
resistance_flags = FIRE_PROOF | ACID_PROOF
tauric = TRUE //Citadel Add for tauric hardsuits
//ERT Security
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec
desc = "Red alert security helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_security-alert"
item_state = "hardsuit0-ert_security-alert"
item_color = "ert_security-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/sec
desc = "Red alert security suit for the ERT. This one is more armored than its standard version."
icon_state = "ert_security-alert"
item_state = "ert_security-alert"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec
//ERT Engineering
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert/engi
desc = "Red alert engineer helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_engineer-alert"
item_state = "hardsuit0-ert_engineer-alert"
item_color = "ert_engineer-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/engi
desc = "Red alert engineer suit for the ERT. This one is more armored than its standard version."
icon_state = "ert_engineer-alert"
item_state = "ert_engineer-alert"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/engi
//ERT Medical
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert/med
desc = "Red alert medical helmet for the ERT. This one is more armored than its standard version."
icon_state = "hardsuit0-ert_medical-alert"
item_state = "hardsuit0-ert_medical-alert"
item_color = "ert_medical-alert"
/obj/item/clothing/suit/space/hardsuit/ert/alert/med
desc = "Red alert medical suit for the ERT. This one is more armored than its standard version."
icon_state = "ert_medical-alert"
item_state = "ert_medical-alert"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/med
species_exception = list(/datum/species/angel)
/obj/item/clothing/suit/space/eva
name = "EVA suit"
icon_state = "space"
@@ -280,7 +345,6 @@ Contains:
item_flags = NODROP
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/space/hardsuit/carp
name = "carp space suit"
desc = "A slimming piece of dubious space carp technology, you suspect it won't stand up to hand-to-hand blows."
@@ -291,7 +355,6 @@ Contains:
allowed = list(/obj/item/tank/internals, /obj/item/gun/ballistic/automatic/speargun) //I'm giving you a hint here
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
name = "paranormal response unit helmet"
desc = "A helmet worn by those who deal with paranormal threats for a living."

View File

@@ -24,11 +24,11 @@
ToggleHood()
/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user)
if(slot == SLOT_WEAR_SUIT)
if(slot == SLOT_WEAR_SUIT || slot == SLOT_NECK)
return 1
/obj/item/clothing/suit/hooded/equipped(mob/user, slot)
if(slot != SLOT_WEAR_SUIT)
if(slot != SLOT_WEAR_SUIT && slot != SLOT_NECK)
RemoveHood()
..()

View File

@@ -54,6 +54,18 @@
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/makeshiftshield
name = "Makeshift Metal Shield"
result = /obj/item/shield/makeshift
reqs = list(/obj/item/stack/cable_coil = 30,
/obj/item/stack/sheet/metal = 10,
/obj/item/stack/sheet/cloth = 2,
/obj/item/stack/sheet/leather = 3)
tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/molotov
name = "Molotov"
result = /obj/item/reagent_containers/food/drinks/bottle/molotov

View File

@@ -108,9 +108,9 @@ All foods are distributed among various categories. Use common sense.
else if(fullness > 150 && fullness < 500)
user.visible_message("<span class='notice'>[user] takes a [eatverb] from \the [src].</span>", "<span class='notice'>You take a [eatverb] from \the [src].</span>")
else if(fullness > 500 && fullness < 600)
user.visible_message("<span class='notice'>[user] unwillingly takes a [eatverb] of a bit of \the [src].</span>", "<span class='notice'>You unwillingly take a [eatverb] of a bit of \the [src].</span>")
user.visible_message("<span class='notice'>[user] unwillingly takes a [eatverb] of a bit of \the [src].</span>", "<span class='warning'>You unwillingly take a [eatverb] of a bit of \the [src].</span>")
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
user.visible_message("<span class='warning'>[user] cannot force any more of \the [src] to go down [user.p_their()] throat!</span>", "<span class='warning'>You cannot force any more of \the [src] to go down your throat!</span>")
user.visible_message("<span class='warning'>[user] cannot force any more of \the [src] to go down [user.p_their()] throat!</span>", "<span class='danger'>You cannot force any more of \the [src] to go down your throat!</span>")
return 0
if(M.has_trait(TRAIT_VORACIOUS))
M.changeNext_move(CLICK_CD_MELEE * 0.5) //nom nom nom

View File

@@ -62,6 +62,28 @@
/obj/item/reagent_containers/food/snacks/pie/cream/nostun
stunning = FALSE
/obj/item/reagent_containers/food/snacks/pie/cream/body
/obj/item/reagent_containers/food/snacks/pie/cream/body/Destroy()
var/turf/T = get_turf(src)
for(var/atom/movable/A in contents)
A.forceMove(T)
A.throw_at(T, 1, 1)
. = ..()
/obj/item/reagent_containers/food/snacks/pie/cream/body/On_Consume(mob/living/carbon/M)
if(!reagents.total_volume) //so that it happens on the last bite
if(iscarbon(M) && contents.len)
var/turf/T = get_turf(src)
for(var/atom/movable/A in contents)
A.forceMove(T)
A.throw_at(T, 1, 1)
M.visible_message("[src] bursts out of [M]!</span>")
M.emote("scream")
M.Knockdown(40)
M.adjustBruteLoss(60)
return ..()
/obj/item/reagent_containers/food/snacks/pie/berryclafoutis
name = "berry clafoutis"
desc = "No black birds, this is a good sign."

View File

@@ -215,7 +215,7 @@
The 'fire' activator will cause the mechanism to attempt to launch objects at the coordinates, if possible. Note that the \
projectile needs to be inside the machine, or on an adjacent tile, and must be medium sized or smaller. The assembly \
must also be a gun if you wish to launch something while the assembly is in hand."
complexity = 75
complexity = 50
w_class = WEIGHT_CLASS_SMALL
size = 4
cooldown_per_use = 30
@@ -306,7 +306,7 @@
desc = "Used to stun a target holding the device via electricity."
icon_state = "power_relay"
extended_desc = "Attempts to stun the holder of this device, with the strength input being the strength of the stun, from 1 to 70."
complexity = 60
complexity = 30
size = 4
inputs = list("strength" = IC_PINTYPE_NUMBER)
activators = list("stun" = IC_PINTYPE_PULSE_IN, "on success" = IC_PINTYPE_PULSE_OUT, "on fail" = IC_PINTYPE_PULSE_OUT)
@@ -340,4 +340,4 @@
var/mob/living/carbon/human/H = L
H.forcesay(GLOB.hit_appends)
return 1
return 1

View File

@@ -1494,7 +1494,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
)
if (target.canbearoused)
target.adjustArousalLoss(5)
if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna())
if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_MASO) && target.has_dna())
target.mob_climax(forced_climax=TRUE)
if (!target.has_trait(TRAIT_NYMPHO))
stop_wagging_tail(target)
@@ -1727,6 +1727,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(BP)
if(damage > 0 ? BP.receive_damage(damage * hit_percent * brutemod * H.physiology.brute_mod, 0) : BP.heal_damage(abs(damage * hit_percent * brutemod * H.physiology.brute_mod), 0))
H.update_damage_overlays()
if(H.has_trait(TRAIT_MASO))
H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod)
if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna())
H.mob_climax(forced_climax=TRUE)
else//no bodypart, we deal damage with a more general method.
H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod)
if(BURN)

View File

@@ -103,21 +103,23 @@
//CIT CHANGES START HERE - makes it so resting stops you from moving through standing folks without a short delay
if(resting && !L.resting)
if(attemptingcrawl)
return TRUE
if(getStaminaLoss() >= STAMINA_SOFTCRIT)
to_chat(src, "<span class='warning'>You're too exhausted to crawl under [L].</span>")
return TRUE
attemptingcrawl = TRUE
var/origtargetloc = L.loc
visible_message("<span class='notice'>[src] is attempting to crawl under [L].</span>", "<span class='notice'>You are now attempting to crawl under [L].</span>")
if(do_after(src, CRAWLUNDER_DELAY, target = src))
if(resting)
var/src_passmob = (pass_flags & PASSMOB)
pass_flags |= PASSMOB
Move(origtargetloc)
if(!src_passmob)
pass_flags &= ~PASSMOB
if(!pulledby)
if(attemptingcrawl)
return TRUE
if(getStaminaLoss() >= STAMINA_SOFTCRIT)
to_chat(src, "<span class='warning'>You're too exhausted to crawl under [L].</span>")
return TRUE
attemptingcrawl = TRUE
visible_message("<span class='notice'>[src] is attempting to crawl under [L].</span>", "<span class='notice'>You are now attempting to crawl under [L].</span>")
if(!do_after(src, CRAWLUNDER_DELAY, target = src) || !resting)
attemptingcrawl = FALSE
return TRUE
var/src_passmob = (pass_flags & PASSMOB)
pass_flags |= PASSMOB
Move(origtargetloc)
if(!src_passmob)
pass_flags &= ~PASSMOB
attemptingcrawl = FALSE
return TRUE
//END OF CIT CHANGES

View File

@@ -295,6 +295,16 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
E.energy = power
qdel(src)
/obj/machinery/power/supermatter_crystal/proc/consume_turf(turf/T)
var/oldtype = T.type
var/turf/newT = T.ScrapeAway()
if(newT.type == oldtype)
return
playsound(T, 'sound/effects/supermatter.ogg', 50, 1)
T.visible_message("<span class='danger'>[T] smacks into [src] and rapidly flashes to ash.</span>",\
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
T.CalculateAdjacentTurfs()
/obj/machinery/power/supermatter_crystal/process_atmos()
var/turf/T = loc
@@ -303,6 +313,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(!istype(T)) //We are in a crate or somewhere that isn't turf, if we return to turf resume processing but for now.
return //Yeah just stop.
if(istype(T, /turf/closed))
consume_turf(T)
if(power)
soundloop.volume = min(40, (round(power/100)/50)+1) // 5 +1 volume per 20 power. 2500 power is max

View File

@@ -319,7 +319,7 @@
victim.blind_eyes(2)
victim.confused = max(M.confused, 3)
victim.damageoverlaytemp = 60
victim.Knockdown(60)
victim.Knockdown(60, override_stamdmg = min(reac_volume * 3, 15))
return
else if ( eyes_covered ) // Eye cover is better than mouth cover
victim.blur_eyes(3)
@@ -332,7 +332,7 @@
victim.blind_eyes(3)
victim.confused = max(M.confused, 6)
victim.damageoverlaytemp = 75
victim.Knockdown(100)
victim.Knockdown(100, override_stamdmg = min(reac_volume * 5, 25))
victim.update_damage_hud()
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M)

View File

@@ -18,6 +18,7 @@
var/spray_range = 3 //the range of tiles the sprayer will reach when in spray mode.
var/stream_range = 1 //the range of tiles the sprayer will reach when in stream mode.
var/stream_amount = 10 //the amount of reagents transfered when in stream mode.
var/spray_delay = 3 //The amount of sleep() delay between each chempuff step.
var/can_fill_from_container = TRUE
amount_per_transfer_from_this = 5
volume = 250
@@ -64,7 +65,7 @@
/obj/item/reagent_containers/spray/proc/spray(atom/A)
var/range = max(min(current_range, get_dist(src, A)), 1)
var/range = CLAMP(get_dist(src, A), 1, current_range)
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
D.create_reagents(amount_per_transfer_from_this)
var/puff_reagent_left = range //how many turf, mob or dense objet we can react with before we consider the chem puff consumed
@@ -74,7 +75,7 @@
else
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
D.color = mix_color_from_reagents(D.reagents.reagent_list)
var/wait_step = max(round(2+3/range), 2)
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
do_spray(A, wait_step, D, range, puff_reagent_left)
/obj/item/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
@@ -166,7 +167,7 @@
user.visible_message("<span class='suicide'>[user] decided life was worth living.</span>")
return
//Drying Agent
//Drying Agent
/obj/item/reagent_containers/spray/drying_agent
name = "drying agent spray"
desc = "A spray bottle for drying agent."
@@ -194,6 +195,7 @@
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
volume = 40
stream_range = 4
spray_delay = 1
amount_per_transfer_from_this = 5
list_reagents = list("condensedcapsaicin" = 40)

View File

@@ -59,6 +59,14 @@
build_path = /obj/item/reagent_containers/food/snacks/monkeycube
category = list("initial", "Food")
/datum/design/smeat
name = "Biomass Meat Slab"
id = "smeat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 175)
build_path = /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat
category = list("initial", "Food")
/datum/design/ez_nut
name = "E-Z Nutrient"
id = "ez_nut"

View File

@@ -74,6 +74,8 @@
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
current_amount--
if(!projectile_type)
return
for(var/i in 1 to projectiles_per_fire)
var/obj/item/projectile/P = new projectile_type(user.loc)
P.firer = user

View File

@@ -94,3 +94,87 @@
M.Stun(40)
M.petrify()
return ..()
/obj/item/melee/touch_attack/megahonk
name = "\improper honkmother's blessing"
desc = "You've got a feeling they won't be laughing after this one. Honk honk."
catchphrase = "HONKDOOOOUKEN!"
on_use_sound = 'sound/items/airhorn.ogg'
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_honker"
/obj/item/melee/touch_attack/megahonk/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
return
user.say(catchphrase, forced = "spell")
playsound(get_turf(target), on_use_sound,100,1)
for(var/mob/living/carbon/M in (hearers(1, target) - user)) //3x3 around the target, not affecting the user
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
continue
var/mul = (M==target ? 1 : 0.5)
to_chat(M, "<font color='red' size='7'>HONK</font>")
M.SetSleeping(0)
M.stuttering += 20*mul
M.adjustEarDamage(0, 30*mul)
M.Knockdown(60*mul)
if(prob(40))
M.Knockdown(200*mul)
else
M.Jitter(500*mul)
charges--
if(charges <= 0)
qdel(src)
/obj/item/melee/touch_attack/megahonk/attack_self(mob/user)
. = ..()
to_chat(user, "<span class='notice'>\The [src] disappears, to honk another day.</span>")
qdel(src)
/obj/item/melee/touch_attack/bspie
name = "\improper bluespace pie"
desc = "A thing you can barely comprehend as you hold it in your hand. You're fairly sure you could fit an entire body inside."
on_use_sound = 'sound/magic/demon_consume.ogg'
icon = 'icons/obj/food/piecake.dmi'
icon_state = "frostypie"
color = "#000077"
/obj/item/melee/touch_attack/bspie/attack_self(mob/user)
. = ..()
to_chat(user, "<span class='notice'>You smear \the [src] on your chest! </span>")
qdel(src)
/obj/item/melee/touch_attack/bspie/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
return
if(target == user)
to_chat(user, "<span class='notice'>You smear \the [src] on your chest!</span>")
qdel(src)
return
var/mob/living/carbon/M = target
user.visible_message("<span class='warning'>[user] is trying to stuff [M]\s body into \the [src]!</span>")
if(do_mob(user, M, 250))
var/name = M.real_name
var/obj/item/reagent_containers/food/snacks/pie/cream/body/pie = new(get_turf(M))
pie.name = "\improper [name] [pie.name]"
playsound(get_turf(target), on_use_sound, 50, 1)
/*
var/obj/item/bodypart/head = M.get_bodypart("head")
if(head)
head.drop_limb()
head.throw_at(get_turf(head), 1, 1)
qdel(M)
*/
M.forceMove(pie)
charges--
if(charges <= 0)
qdel(src)

View File

@@ -0,0 +1,86 @@
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie
name = "Summon Creampie"
desc = "A clown's weapon of choice. Use this to summon a fresh pie, just waiting to acquaintain itself with someone's face."
invocation_type = "none"
include_user = 1
range = -1
clothes_req = 0
item_type = /obj/item/reagent_containers/food/snacks/pie/cream
charge_max = 30
cooldown_min = 30
action_icon = 'icons/obj/food/piecake.dmi'
action_icon_state = "pie"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/aimed/banana_peel
name = "Conjure Banana Peel"
desc = "Make a banana peel appear out of thin air right under someone's feet!"
charge_type = "recharge"
charge_max = 100
cooldown_min = 100
clothes_req = 0
invocation_type = "none"
range = 7
selection_type = "view"
projectile_type = null
active_msg = "You focus, your mind reaching to the clown dimension, ready to make a peel matrialize wherever you want!"
deactive_msg = "You relax, the peel remaining right in the \"thin air\" it would appear out of."
action_icon = 'icons/obj/hydroponics/harvest.dmi'
base_icon_state = "banana_peel"
action_icon_state = "banana"
/obj/effect/proc_holder/spell/aimed/banana_peel/cast(list/targets, mob/user = usr)
var/target = get_turf(targets[1])
if(get_dist(user,target)>range)
to_chat(user, "<span class='notice'>\The [target] is too far away!</span>")
return
. = ..()
new /obj/item/grown/bananapeel(target)
/obj/effect/proc_holder/spell/aimed/banana_peel/update_icon()
if(!action)
return
if(active)
action.button_icon_state = base_icon_state
else
action.button_icon_state = action_icon_state
action.UpdateButtonIcon()
return
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/targeted/touch/megahonk
name = "Mega HoNk"
desc = "This spell channels your inner clown powers, concentrating them into one massive HONK."
hand_path = /obj/item/melee/touch_attack/megahonk
charge_max = 100
clothes_req = 0
cooldown_min = 100
action_icon = 'icons/mecha/mecha_equipment.dmi'
action_icon_state = "mecha_honker"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/targeted/touch/bspie
name = "Bluespace Banana Pie"
desc = "An entire body would fit in there!"
hand_path = /obj/item/melee/touch_attack/bspie
charge_max = 450
clothes_req = 0
cooldown_min = 450
action_icon = 'icons/obj/food/piecake.dmi'
action_icon_state = "frostypie"

View File

@@ -388,7 +388,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
autoinjectors for rapid application on up to two targets each, a syringe, and a bottle containing \
the BVAK solution."
item = /obj/item/storage/box/syndie_kit/tuberculosisgrenade
cost = 12
cost = 8
surplus = 35
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
restricted = TRUE
@@ -768,7 +768,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
The concussive effect from the explosion will knock the recipient out for a short period, and deafen \
them for longer. Beware, it has a chance to detonate your PDA."
item = /obj/item/cartridge/virus/syndicate
cost = 6
cost = 5
restricted = TRUE
/datum/uplink_item/stealthy_weapons/suppressor
@@ -837,6 +837,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 0
include_modes = list(/datum/game_mode/nuclear/clown_ops)
datum/uplink_item/stealthy_tools/taeclowndo_shoes
name = "Tae-clown-do Shoes"
desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
cost = 12
item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
include_modes = list(/datum/game_mode/nuclear/clown_ops)
/datum/uplink_item/stealthy_tools/frame
name = "F.R.A.M.E. PDA Cartridge"
desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \
@@ -894,7 +901,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "Screwed up and have security on your tail? This handy syringe will give you a completely new identity \
and appearance."
item = /obj/item/reagent_containers/syringe/mulligan
cost = 4
cost = 3
surplus = 30
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
@@ -1208,7 +1215,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Syndicate Sentience Potion"
item = /obj/item/slimepotion/slime/sentience/nuclear
desc = "A potion recovered at great risk by undercover syndicate operatives and then subsequently modified with syndicate technology. Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors."
cost = 4
cost = 2
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
restricted = TRUE
@@ -1382,6 +1389,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/dnainjector/clumsymut
restricted_roles = list("Clown")
/datum/uplink_item/role_restricted/taeclowndo_shoes
name = "Tae-clown-do Shoes"
desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
cost = 14
item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
restricted_roles = list("Clown")
/datum/uplink_item/role_restricted/mimery
name = "Guide to Advanced Mimery Series"
desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. Obviously only works for Mimes."
@@ -1448,7 +1462,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Gold Toolbox"
desc = "A gold planted plastitanium toolbox loaded with tools. Comes with a set of AI detection multi-tool and a pare of combat gloves."
item = /obj/item/storage/toolbox/gold_real
cost = 5 // Has synda tools + gloves + a robust weapon
cost = 3 // Has synda tools + gloves + a robust weapon
restricted_roles = list("Assistant", "Curator") //Curator do to being made of gold - It fits the theme
/datum/uplink_item/role_restricted/brainwash_disk
@@ -1457,7 +1471,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
Insert into an Operating Console to enable the procedure."
item = /obj/item/disk/surgery/brainwashing
restricted_roles = list("Medical Doctor")
cost = 5
cost = 3
/datum/uplink_item/role_restricted/haunted_magic_eightball
name = "Haunted Magic Eightball"

View File

@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Stops pulls of resting mobs breaking off whenever you swap turfs with someone else because of crawling delays."

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscadd: "bio mass meat"

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- tweak: "5->6"

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- tweak: "mulligan costs 4 - > 3"

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- tweak: "Tuberculosis 12tc - > 8tc"

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- tweak: "2 < - 4"

View File

@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscadd: "shield + crafting"

View File

@@ -0,0 +1,4 @@
author: "Poojawa"
delete-after: True
changes:
- bugfix: "Atmos and Station alerts should be more alerting."

View File

@@ -0,0 +1,5 @@
author: "Ghommie"
delete-after: True
changes:
- balance: "Buffs condensed capsaicin, a yet another feature previously dunked by stam combat."
- balance: "speeds up pepper spray puffs."

View File

@@ -0,0 +1,10 @@
author: "Useroth"
delete-after: True
changes:
- rscadd: "Taeclowndo shoes which grant the four following abilities:
- Conjuring a cream pie right into their hand. Every three seconds.
- Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds.
- Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds.
- Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a \"[victim's name] cream pie\". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube.
It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops."

View File

@@ -0,0 +1,4 @@
author: "deathride58"
delete-after: True
changes:
- rscadd: "Ported the zulie cloak and blackredgold coat donor items from RP."

View File

@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "fixes eyestabbing people with cutlery while being a pacifist."

View File

@@ -0,0 +1,5 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscadd: "More plushies"
- tweak: "attack verbs and descs"

View File

@@ -0,0 +1,4 @@
author: "BurgerBB"
delete-after: True
changes:
- tweak: "\"Unwillingly\" eating food now sends a warning message instead of a notice. Unable to stuff food down your throat sends a danger message instead of a warning message."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -4,6 +4,7 @@
name = "Nymphomania"
desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual."
value = 0
mob_trait = TRAIT_NYMPHO
gain_text = "<span class='notice'>You are feeling extra wild.</span>"
lose_text = "<span class='notice'>You don't feel that burning sensation anymore.</span>"
@@ -22,3 +23,11 @@
if(M.canbearoused == FALSE)
to_chat(quirk_holder, "<span class='notice'>Having high libido is useless when you can't feel arousal at all!</span>")
qdel(src)
/datum/quirk/maso
name = "Masochism"
desc = "You are aroused by pain."
value = 0
mob_trait = TRAIT_MASO
gain_text = "<span class='notice'>You desire to be hurt.</span>"
lose_text = "<span class='notice'>Pain has become less exciting for you.</span>"

View File

@@ -373,4 +373,16 @@ datum/gear/darksabresheath
name = "French Beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/frenchberet
ckeywhitelist = list("notazoltan")
ckeywhitelist = list("notazoltan")
/datum/gear/zuliecloak
name = "Project: Zul-E"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/zuliecloak
ckeywhitelist = list("asky")
/datum/gear/blackredgold
name = "Black, Red, and Gold Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/blackredgold
ckeywhitelist = list("ttbnc")

View File

@@ -454,3 +454,34 @@
icon_state = "moveralls"
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/hooded/cloak/zuliecloak
name = "Project: Zul-E"
desc = "A standard version of a prototype cloak given out by Nanotrasen higher ups. It's surprisingly thick and heavy for a cloak despite having most of it's tech stripped. It also comes with a bluespace trinket which calls it's accompanying hat onto the user. A worn inscription on the inside of the cloak reads 'Fleuret' ...the rest is faded away."
icon_state = "zuliecloak"
item_state = "zuliecloak"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak
body_parts_covered = CHEST|GROIN|ARMS
slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong?
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/head/hooded/cloakhood/zuliecloak
name = "NT Special Issue"
desc = "This hat is unquestionably the best one, bluespaced to and from CentComm. It smells of Fish and Tea with a hint of antagonism"
icon_state = "zuliecap"
item_state = "zuliecap"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
flags_inv = HIDEEARS|HIDEHAIR
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/blackredgold
name = "Multicolor Coat"
desc = "An oddly special looking coat with black, red, and gold"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "redgoldjacket"
item_state = "redgoldjacket"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = NO_MUTANTRACE_VARIATION

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

@@ -1496,6 +1496,7 @@
#include "code\modules\clothing\shoes\colour.dm"
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
#include "code\modules\clothing\shoes\taeclowndo.dm"
#include "code\modules\clothing\shoes\vg_shoes.dm"
#include "code\modules\clothing\spacesuits\_spacesuits.dm"
#include "code\modules\clothing\spacesuits\chronosuit.dm"
@@ -2663,6 +2664,7 @@
#include "code\modules\spells\spell_types\shapeshift.dm"
#include "code\modules\spells\spell_types\spacetime_distortion.dm"
#include "code\modules\spells\spell_types\summonitem.dm"
#include "code\modules\spells\spell_types\taeclowndo.dm"
#include "code\modules\spells\spell_types\the_traps.dm"
#include "code\modules\spells\spell_types\touch_attacks.dm"
#include "code\modules\spells\spell_types\trigger.dm"