hm
This commit is contained in:
@@ -42,6 +42,9 @@
|
||||
/obj/effect/decal/cleanable/glass/ex_act()
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/glass/plasma
|
||||
icon_state = "plasmatiny"
|
||||
|
||||
/obj/effect/decal/cleanable/dirt
|
||||
name = "dirt"
|
||||
desc = "Someone should clean that up."
|
||||
|
||||
@@ -36,4 +36,203 @@
|
||||
/obj/effect/turf_decal/tile/neutral
|
||||
name = "neutral corner"
|
||||
color = "#D4D4D4"
|
||||
alpha = 50
|
||||
alpha = 50
|
||||
|
||||
/obj/effect/turf_decal/trimline
|
||||
layer = TURF_PLATING_DECAL_LAYER
|
||||
alpha = 110
|
||||
icon_state = "trimline_box"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white
|
||||
color = "#FFFFFF"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/line
|
||||
name = "trim decal"
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/white/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red
|
||||
color = "#DE3A3A"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/red/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green
|
||||
color = "#9FED58"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/green/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue
|
||||
color = "#52B4E9"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/blue/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow
|
||||
color = "#EFB341"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple
|
||||
color = "#D381C9"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/purple/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown
|
||||
color = "#A46106"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral
|
||||
color = "#D4D4D4"
|
||||
alpha = 50
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/line
|
||||
icon_state = "trimline"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/corner
|
||||
icon_state = "trimline_corner"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/end
|
||||
icon_state = "trimline_end"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/filled
|
||||
icon_state = "trimline_box_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line
|
||||
icon_state = "trimline_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/corner
|
||||
icon_state = "trimline_corner_fill"
|
||||
|
||||
/obj/effect/turf_decal/trimline/brown/filled/end
|
||||
icon_state = "trimline_end_fill"
|
||||
@@ -68,6 +68,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person
|
||||
var/breakouttime = 0
|
||||
var/list/materials
|
||||
var/reskinned = FALSE
|
||||
|
||||
var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]"
|
||||
var/list/species_exception = null // list() of species types, if a species cannot put items in a certain slot, but species type is in list, it will be able to wear that item
|
||||
|
||||
@@ -37,6 +37,7 @@ RLD
|
||||
var/has_ammobar = FALSE //controls whether or not does update_icon apply ammo indicator overlays
|
||||
var/ammo_sections = 10 //amount of divisions in the ammo indicator overlay/number of ammo indicator states
|
||||
var/custom_range = 7
|
||||
var/upgrade = FALSE
|
||||
|
||||
/obj/item/construction/Initialize()
|
||||
. = ..()
|
||||
@@ -82,6 +83,11 @@ RLD
|
||||
loaded = loadwithsheets(W, sheetmultiplier * 0.25, user) // 1 matter for 1 floortile, as 4 tiles are produced from 1 metal
|
||||
if(loaded)
|
||||
to_chat(user, "<span class='notice'>[src] now holds [matter]/[max_matter] matter-units.</span>")
|
||||
else if(istype(W, /obj/item/rcd_upgrade))
|
||||
to_chat(user, "<span class='notice'>You upgrade the RCD with the [W]!</span>")
|
||||
upgrade = TRUE
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
qdel(W)
|
||||
else
|
||||
return ..()
|
||||
update_icon() //ensures that ammo counters (if present) get updated
|
||||
@@ -148,6 +154,7 @@ RLD
|
||||
has_ammobar = TRUE
|
||||
var/mode = 1
|
||||
var/ranged = FALSE
|
||||
var/computer_dir = 1
|
||||
var/airlock_type = /obj/machinery/door/airlock
|
||||
var/airlock_glass = FALSE // So the floor's rcd_act knows how much ammo to use
|
||||
var/window_type = /obj/structure/window/fulltile
|
||||
@@ -270,6 +277,28 @@ RLD
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/construction/rcd/proc/change_computer_dir(mob/user)
|
||||
if(!user)
|
||||
return
|
||||
var/list/computer_dirs = list(
|
||||
"NORTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "cnorth"),
|
||||
"EAST" = image(icon = 'icons/mob/radial.dmi', icon_state = "ceast"),
|
||||
"SOUTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "csouth"),
|
||||
"WEST" = image(icon = 'icons/mob/radial.dmi', icon_state = "cwest")
|
||||
)
|
||||
var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
|
||||
if(!check_menu(user))
|
||||
return
|
||||
switch(computerdirs)
|
||||
if("NORTH")
|
||||
computer_dir = 1
|
||||
if("EAST")
|
||||
computer_dir = 4
|
||||
if("SOUTH")
|
||||
computer_dir = 2
|
||||
if("WEST")
|
||||
computer_dir = 8
|
||||
|
||||
/obj/item/construction/rcd/proc/change_airlock_setting(mob/user)
|
||||
if(!user)
|
||||
return
|
||||
@@ -434,10 +463,15 @@ RLD
|
||||
..()
|
||||
var/list/choices = list(
|
||||
"Airlock" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlock"),
|
||||
"Deconstruct" = image(icon= 'icons/mob/radial.dmi', icon_state = "delete"),
|
||||
"Grilles & Windows" = image(icon = 'icons/mob/radial.dmi', icon_state = "grillewindow"),
|
||||
"Floors & Walls" = image(icon = 'icons/mob/radial.dmi', icon_state = "wallfloor")
|
||||
)
|
||||
if(upgrade)
|
||||
choices += list(
|
||||
"Deconstruct" = image(icon= 'icons/mob/radial.dmi', icon_state = "delete"),
|
||||
"Machine Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "machine"),
|
||||
"Computer Frames" = image(icon = 'icons/mob/radial.dmi', icon_state = "computer_dir"),
|
||||
)
|
||||
if(mode == RCD_AIRLOCK)
|
||||
choices += list(
|
||||
"Change Access" = image(icon = 'icons/mob/radial.dmi', icon_state = "access"),
|
||||
@@ -459,6 +493,12 @@ RLD
|
||||
mode = RCD_DECONSTRUCT
|
||||
if("Grilles & Windows")
|
||||
mode = RCD_WINDOWGRILLE
|
||||
if("Machine Frames")
|
||||
mode = RCD_MACHINE
|
||||
if("Computer Frames")
|
||||
mode = RCD_COMPUTER
|
||||
change_computer_dir(user)
|
||||
return
|
||||
if("Change Access")
|
||||
change_airlock_access(user)
|
||||
return
|
||||
@@ -511,6 +551,7 @@ RLD
|
||||
no_ammo_message = "<span class='warning'>Insufficient charge.</span>"
|
||||
desc = "A device used to rapidly build walls and floors."
|
||||
canRturf = TRUE
|
||||
upgrade = TRUE
|
||||
|
||||
|
||||
/obj/item/construction/rcd/borg/useResource(amount, mob/user)
|
||||
@@ -542,6 +583,9 @@ RLD
|
||||
/obj/item/construction/rcd/loaded
|
||||
matter = 160
|
||||
|
||||
/obj/item/construction/rcd/loaded/upgraded
|
||||
upgrade = TRUE
|
||||
|
||||
/obj/item/construction/rcd/combat
|
||||
name = "Combat RCD"
|
||||
desc = "A device used to rapidly build and deconstruct. Reload with metal, plasteel, glass or compressed matter cartridges. This RCD has been upgraded to be able to remove Rwalls!"
|
||||
@@ -582,7 +626,7 @@ RLD
|
||||
name = "admin RCD"
|
||||
max_matter = INFINITY
|
||||
matter = INFINITY
|
||||
|
||||
upgrade = TRUE
|
||||
|
||||
// Ranged RCD
|
||||
|
||||
@@ -776,6 +820,12 @@ RLD
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/rcd_upgrade
|
||||
name = "RCD advanced design disk"
|
||||
desc = "It contains the design for machine frames, computer frames, and deconstruction."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "datadisk3"
|
||||
|
||||
#undef GLOW_MODE
|
||||
#undef LIGHT_MODE
|
||||
#undef REMOVE_MODE
|
||||
|
||||
@@ -162,10 +162,11 @@
|
||||
|
||||
/obj/item/circuitboard/computer/prisoner
|
||||
name = "Prisoner Management Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/prisoner
|
||||
build_path = /obj/machinery/computer/prisoner/management
|
||||
|
||||
/obj/item/circuitboard/computer/gulag_teleporter_console
|
||||
name = "Labor Camp teleporter console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/gulag_teleporter_computer
|
||||
build_path = /obj/machinery/computer/prisoner/gulag_teleporter_computer
|
||||
|
||||
/obj/item/circuitboard/computer/rdconsole/production
|
||||
name = "R&D Console Production Only (Computer Board)"
|
||||
@@ -373,4 +374,4 @@
|
||||
|
||||
/obj/item/circuitboard/computer/nanite_cloud_controller
|
||||
name = "Nanite Cloud Control (Computer Board)"
|
||||
build_path = /obj/machinery/computer/nanite_cloud_controller
|
||||
build_path = /obj/machinery/computer/nanite_cloud_controller
|
||||
|
||||
@@ -32,6 +32,24 @@
|
||||
var/datum/integrated_io/selected_io = null //functional for integrated circuits.
|
||||
var/mode = 0
|
||||
|
||||
/obj/item/multitool/chaplain
|
||||
name = "\improper hypertool"
|
||||
desc = "Used for pulsing wires to test which to cut. Also emits microwaves to fry some brains!"
|
||||
damtype = BRAIN
|
||||
force = 18
|
||||
armour_penetration = 35
|
||||
hitsound = 'sound/effects/sparks4.ogg'
|
||||
var/chaplain_spawnable = TRUE
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
throw_speed = 3
|
||||
throw_range = 4
|
||||
throwforce = 10
|
||||
obj_flags = UNIQUE_RENAME
|
||||
|
||||
/obj/item/multitool/chaplain/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE)
|
||||
|
||||
/obj/item/multitool/examine(mob/user)
|
||||
..()
|
||||
if(selected_io)
|
||||
|
||||
@@ -229,8 +229,8 @@
|
||||
throwforce = 10
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
obj_flags = UNIQUE_RENAME
|
||||
var/reskinned = FALSE
|
||||
var/chaplain_spawnable = TRUE
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
/obj/item/nullrod/Initialize()
|
||||
. = ..()
|
||||
@@ -247,9 +247,12 @@
|
||||
/obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
|
||||
if(GLOB.holy_weapon_type)
|
||||
return
|
||||
var/obj/item/nullrod/holy_weapon
|
||||
var/obj/item/holy_weapon
|
||||
var/list/holy_weapons_list = typesof(/obj/item/nullrod) + list(
|
||||
/obj/item/melee/transforming/energy/sword/cx/chaplain
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/chaplain,
|
||||
/obj/item/gun/energy/laser/redtag/hitscan/chaplain,
|
||||
/obj/item/multitool/chaplain,
|
||||
/obj/item/melee/baseball_bat/chaplain
|
||||
)
|
||||
var/list/display_names = list()
|
||||
for(var/V in holy_weapons_list)
|
||||
@@ -273,6 +276,13 @@
|
||||
qdel(src)
|
||||
M.put_in_active_hand(holy_weapon)
|
||||
|
||||
/obj/item/nullrod/proc/jedi_spin(mob/living/user)
|
||||
for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH))
|
||||
user.setDir(i)
|
||||
if(i == WEST)
|
||||
user.emote("flip")
|
||||
sleep(1)
|
||||
|
||||
/obj/item/nullrod/godhand
|
||||
icon_state = "disintegrate"
|
||||
item_state = "disintegrate"
|
||||
@@ -328,7 +338,6 @@
|
||||
sharpness = IS_SHARP
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
/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)
|
||||
@@ -522,7 +531,6 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
attack_verb = list("smashed", "bashed", "hammered", "crunched")
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
/obj/item/nullrod/chainsaw
|
||||
name = "chainsaw hand"
|
||||
@@ -585,6 +593,7 @@
|
||||
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 12
|
||||
reach = 2
|
||||
attack_verb = list("whipped", "lashed")
|
||||
hitsound = 'sound/weapons/chainhit.ogg'
|
||||
@@ -661,6 +670,44 @@
|
||||
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
||||
|
||||
/obj/item/nullrod/claymore/bostaff/attack(mob/target, mob/living/user)
|
||||
add_fingerprint(user)
|
||||
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
||||
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
||||
user.Knockdown(60)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
||||
else
|
||||
user.take_bodypart_damage(2*force)
|
||||
return
|
||||
if(iscyborg(target))
|
||||
return ..()
|
||||
if(!isliving(target))
|
||||
return ..()
|
||||
var/mob/living/carbon/C = target
|
||||
if(C.stat || C.health < 0 || C.staminaloss > 130 )
|
||||
to_chat(user, "<span class='warning'>It would be dishonorable to attack a foe while they cannot retaliate.</span>")
|
||||
return
|
||||
if(user.a_intent == INTENT_DISARM)
|
||||
if(!ishuman(target))
|
||||
return ..()
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/list/fluffmessages = list("[user] clubs [H] with [src]!", \
|
||||
"[user] smacks [H] with the butt of [src]!", \
|
||||
"[user] broadsides [H] with [src]!", \
|
||||
"[user] smashes [H]'s head with [src]!", \
|
||||
"[user] beats [H] with front of [src]!", \
|
||||
"[user] twirls and slams [H] with [src]!")
|
||||
H.visible_message("<span class='warning'>[pick(fluffmessages)]</span>", \
|
||||
"<span class='userdanger'>[pick(fluffmessages)]</span>")
|
||||
playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1)
|
||||
H.adjustStaminaLoss(rand(12,18))
|
||||
if(prob(25))
|
||||
(INVOKE_ASYNC(src, .proc/jedi_spin, user))
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nullrod/tribal_knife
|
||||
icon_state = "crysknife"
|
||||
item_state = "crysknife"
|
||||
@@ -674,7 +721,6 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
item_flags = SLOWS_WHILE_IN_HAND
|
||||
total_mass = TOTAL_MASS_NORMAL_ITEM
|
||||
|
||||
/obj/item/nullrod/tribal_knife/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
target.LAssailant = null
|
||||
else
|
||||
target.LAssailant = user
|
||||
cooldown = world.time + 40
|
||||
cooldown = world.time
|
||||
user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina
|
||||
|
||||
/obj/item/melee/classic_baton/telescopic
|
||||
|
||||
@@ -629,7 +629,7 @@
|
||||
|
||||
/obj/item/toy/plush/mothplushie
|
||||
name = "insect plushie"
|
||||
desc = "An adorable stuffed toy that resembles some kind of insect"
|
||||
desc = "An adorable stuffed toy that resembles some kind of insect."
|
||||
icon_state = "bumble"
|
||||
item_state = "bumble"
|
||||
squeak_override = list('modular_citadel/sound/voice/mothsqueak.ogg' = 1)
|
||||
@@ -773,8 +773,10 @@
|
||||
item_state = "blep"
|
||||
|
||||
/obj/item/toy/plush/mammal/circe
|
||||
desc = "A luxuriously soft toy that resembles a nine-tailed kitsune."
|
||||
icon_state = "circe"
|
||||
item_state = "circe"
|
||||
attack_verb = list("medicated", "tailhugged", "kissed")
|
||||
|
||||
/obj/item/toy/plush/mammal/robin
|
||||
icon_state = "robin"
|
||||
@@ -839,8 +841,10 @@
|
||||
item_state = "rae"
|
||||
|
||||
/obj/item/toy/plush/mammal/zed
|
||||
desc = "A masked stuffed toy that resembles a fierce miner. He even comes with his own little crusher!"
|
||||
icon_state = "zed"
|
||||
item_state = "zed"
|
||||
attack_verb = list("ENDED", "CRUSHED", "GNOMED")
|
||||
|
||||
/obj/item/toy/plush/mammal/justin
|
||||
icon_state = "justin"
|
||||
@@ -852,6 +856,12 @@
|
||||
item_state = "reece"
|
||||
attack_verb = list("healed", "cured", "demoted")
|
||||
|
||||
/obj/item/toy/plush/mammal/redwood
|
||||
desc = "An adorable stuffed toy resembling a Nanotrasen Captain. That just happens to be a bunny."
|
||||
icon_state = "redwood"
|
||||
item_state = "redwood"
|
||||
attack_verb = list("ordered", "bapped", "reprimanded")
|
||||
|
||||
/obj/item/toy/plush/mammal/dog
|
||||
desc = "An adorable stuffed toy that resembles a canine."
|
||||
icon_state = "katlin"
|
||||
@@ -898,6 +908,12 @@
|
||||
obj_flags = UNIQUE_RENAME
|
||||
unique_reskin = list("Goodboye" = "fritz", "Badboye" = "fritz_bad")
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/jesse
|
||||
desc = "An adorable wolf toy that resembles a cream-colored wolf. He has a little pride flag!"
|
||||
icon_state = "jesse"
|
||||
item_state = "jesse"
|
||||
attack_verb = list("greeted", "merc'd", "howdy'd")
|
||||
|
||||
/obj/item/toy/plush/catgirl
|
||||
name = "feline plushie"
|
||||
desc = "An adorable stuffed toy that resembles a feline."
|
||||
@@ -935,3 +951,15 @@
|
||||
item_state = "fermis"
|
||||
attack_verb = list("cuddled", "petpatted", "wigglepurred")
|
||||
squeak_override = list('modular_citadel/sound/voice/merowr.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/catgirl/mariaf
|
||||
desc = "An adorable stuffed toy that resembles a very tall cat girl."
|
||||
icon_state = "mariaf"
|
||||
item_state = "mariaf"
|
||||
attack_verb = list("hugged", "stabbed", "licked")
|
||||
|
||||
/obj/item/toy/plush/catgirl/maya
|
||||
desc = "An adorable stuffed toy that resembles an angry cat girl. She has her own tiny nuke disk!"
|
||||
icon_state = "maya"
|
||||
item_state = "maya"
|
||||
attack_verb = list("nuked", "arrested", "harmbatonned")
|
||||
|
||||
@@ -23,7 +23,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/glass
|
||||
grind_results = list("silicon" = 20)
|
||||
grind_results = list(/datum/reagent/silicon = 20)
|
||||
point_value = 1
|
||||
|
||||
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
|
||||
@@ -87,7 +87,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasmaglass
|
||||
grind_results = list("silicon" = 20, "plasma" = 10)
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/fifty
|
||||
amount = 50
|
||||
@@ -138,7 +138,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/rglass
|
||||
grind_results = list("silicon" = 20, "iron" = 10)
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
|
||||
point_value = 4
|
||||
|
||||
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
||||
@@ -177,11 +177,11 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
singular_name = "reinforced plasma glass sheet"
|
||||
icon_state = "sheet-prglass"
|
||||
item_state = "sheet-prglass"
|
||||
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT, MAT_METAL = MINERAL_MATERIAL_AMOUNT * 0.5,)
|
||||
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT, MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5,)
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||
grind_results = list("silicon" = 20, "plasma" = 10, "iron" = 10)
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
|
||||
point_value = 23
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
@@ -243,8 +243,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
||||
max_integrity = 40
|
||||
var/cooldown = 0
|
||||
sharpness = IS_SHARP
|
||||
var/icon_prefix
|
||||
|
||||
|
||||
/obj/item/shard/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is slitting [user.p_their()] [pick("wrists", "throat")] with the shard of glass! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
@@ -266,9 +267,19 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
if("large")
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
var/matrix/M = matrix(transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
transform = M
|
||||
if (icon_prefix)
|
||||
icon_state = "[icon_prefix][icon_state]"
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && is_station_level(T.z))
|
||||
SSblackbox.record_feedback("tally", "station_mess_created", 1, name)
|
||||
|
||||
/obj/item/shard/Destroy()
|
||||
. = ..()
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && is_station_level(T.z))
|
||||
SSblackbox.record_feedback("tally", "station_mess_destroyed", 1, name)
|
||||
|
||||
/obj/item/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
|
||||
. = ..()
|
||||
@@ -298,6 +309,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
return ..()
|
||||
|
||||
/obj/item/shard/welder_act(mob/living/user, obj/item/I)
|
||||
..()
|
||||
if(I.use_tool(src, user, 0, volume=50))
|
||||
var/obj/item/stack/sheet/glass/NG = new (user.loc)
|
||||
for(var/obj/item/stack/sheet/glass/G in user.loc)
|
||||
@@ -316,4 +328,13 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
playsound(loc, 'sound/effects/glass_step.ogg', 30, 1)
|
||||
else
|
||||
playsound(loc, 'sound/effects/glass_step.ogg', 50, 1)
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/item/shard/plasma
|
||||
name = "purple shard"
|
||||
desc = "A nasty looking shard of plasma glass."
|
||||
force = 6
|
||||
throwforce = 11
|
||||
icon_state = "plasmalarge"
|
||||
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
|
||||
icon_prefix = "plasma"
|
||||
@@ -356,6 +356,7 @@
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/surgical_drapes(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/reagent_containers/medspray/sterilizine(src)
|
||||
new /obj/item/razor(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/sec
|
||||
@@ -377,6 +378,7 @@
|
||||
new /obj/item/cautery(src)
|
||||
new /obj/item/surgical_drapes(src)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
new /obj/item/reagent_containers/medspray/sterilizine(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/engineering
|
||||
name = "industrial duffel bag"
|
||||
@@ -470,6 +472,7 @@
|
||||
new /obj/item/mmi/syndie(src)
|
||||
new /obj/item/implantcase(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/reagent_containers/medspray/sterilizine(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery_adv
|
||||
name = "advanced surgery duffel bag"
|
||||
@@ -489,6 +492,7 @@
|
||||
new /obj/item/mmi/syndie(src)
|
||||
new /obj/item/implantcase(src)
|
||||
new /obj/item/implanter(src)
|
||||
new /obj/item/reagent_containers/medspray/sterilizine(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo
|
||||
name = "ammunition duffel bag"
|
||||
|
||||
@@ -487,6 +487,7 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
var/obj/item/grenade/explosive = null
|
||||
var/war_cry = "AAAAARGH!!!"
|
||||
var/icon_prefix = "spearglass"
|
||||
|
||||
/obj/item/twohanded/spear/Initialize()
|
||||
. = ..()
|
||||
@@ -529,7 +530,7 @@
|
||||
if(explosive)
|
||||
icon_state = "spearbomb[wielded]"
|
||||
else
|
||||
icon_state = "spearglass[wielded]"
|
||||
icon_state = "[icon_prefix][wielded]"
|
||||
|
||||
/obj/item/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
. = ..()
|
||||
@@ -556,6 +557,13 @@
|
||||
src.war_cry = input
|
||||
|
||||
/obj/item/twohanded/spear/CheckParts(list/parts_list)
|
||||
var/obj/item/shard/tip = locate() in parts_list
|
||||
if (istype(tip, /obj/item/shard/plasma))
|
||||
force_wielded = 19
|
||||
force_unwielded = 11
|
||||
throwforce = 21
|
||||
icon_prefix = "spearplasma"
|
||||
qdel(tip)
|
||||
var/obj/item/twohanded/spear/S = locate() in parts_list
|
||||
if(S)
|
||||
if(S.explosive)
|
||||
|
||||
@@ -255,7 +255,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
var/obj/item/twohanded/spear/S = new /obj/item/twohanded/spear
|
||||
|
||||
remove_item_from_storage(user)
|
||||
qdel(I)
|
||||
if (!user.transferItemToLoc(I, S))
|
||||
return
|
||||
S.CheckParts(list(I))
|
||||
qdel(src)
|
||||
|
||||
user.put_in_hands(S)
|
||||
@@ -513,6 +515,19 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
var/homerun_able = 0
|
||||
total_mass = 2.7 //a regular wooden major league baseball bat weighs somewhere between 2 to 3.4 pounds, according to google
|
||||
|
||||
/obj/item/melee/baseball_bat/chaplain
|
||||
name = "blessed baseball bat"
|
||||
desc = "There ain't a cult in the league that can withstand a swatter."
|
||||
force = 14
|
||||
throwforce = 14
|
||||
obj_flags = UNIQUE_RENAME
|
||||
var/chaplain_spawnable = TRUE
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
/obj/item/melee/baseball_bat/chaplain/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE)
|
||||
|
||||
/obj/item/melee/baseball_bat/homerun
|
||||
name = "home run bat"
|
||||
desc = "This thing looks dangerous... Dangerously good at baseball, that is."
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
new /obj/item/extinguisher/advanced(src)
|
||||
new /obj/item/storage/photo_album/CE(src)
|
||||
new /obj/item/storage/lockbox/medal/engineering(src)
|
||||
new /obj/item/construction/rcd/loaded/upgraded(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/engineering_electrical
|
||||
name = "electrical supplies locker"
|
||||
|
||||
@@ -100,6 +100,14 @@
|
||||
to_chat(user, "<span class='notice'>You start adding [B] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && B.use(1))
|
||||
make_new_table(/obj/structure/table/bronze)
|
||||
else if(istype(I, /obj/item/stack/sheet/plasmaglass))
|
||||
var/obj/item/stack/sheet/plasmaglass/G = I
|
||||
if(G.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one plasmaglass sheet to do this!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start adding [G] to [src]...</span>")
|
||||
if(do_after(user, 20, target = src) && G.use(1))
|
||||
make_new_table(/obj/structure/table/plasmaglass)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -258,6 +258,53 @@
|
||||
for(var/obj/item/shard/S in debris)
|
||||
S.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/*
|
||||
* Plasmaglass tables
|
||||
*/
|
||||
/obj/structure/table/plasmaglass
|
||||
name = "plasmaglass table"
|
||||
desc = "A glasstable, but it's pink and more sturdy. What will Nanotrasen design next with plasma?"
|
||||
icon = 'icons/obj/smooth_structures/plasmaglass_table.dmi'
|
||||
icon_state = "plasmaglass_table"
|
||||
climbable = TRUE
|
||||
buildstack = /obj/item/stack/sheet/plasmaglass
|
||||
canSmoothWith = null
|
||||
max_integrity = 270
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
var/list/debris = list()
|
||||
|
||||
/obj/structure/table/plasmaglass/New()
|
||||
. = ..()
|
||||
debris += new frame
|
||||
debris += new /obj/item/shard/plasma
|
||||
|
||||
/obj/structure/table/plasmaglass/Destroy()
|
||||
QDEL_LIST(debris)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/table/plasmaglass/proc/check_break(mob/living/M)
|
||||
return
|
||||
|
||||
/obj/structure/table/plasmaglass/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
..()
|
||||
return
|
||||
else
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, "shatter", 50, 1)
|
||||
for(var/X in debris)
|
||||
var/atom/movable/AM = X
|
||||
AM.forceMove(T)
|
||||
debris -= AM
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/table/plasmaglass/narsie_act()
|
||||
color = NARSIE_WINDOW_COLOUR
|
||||
for(var/obj/item/shard/S in debris)
|
||||
S.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/*
|
||||
* Wooden tables
|
||||
*/
|
||||
|
||||
@@ -281,6 +281,8 @@
|
||||
. += new /obj/effect/decal/cleanable/glass(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard(location)
|
||||
|
||||
/obj/structure/window/proc/can_be_rotated(mob/user,rotation_type)
|
||||
if(anchored)
|
||||
@@ -409,6 +411,15 @@
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
rad_insulation = RAD_NO_INSULATION
|
||||
|
||||
/obj/structure/window/plasma/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
. += new /obj/effect/decal/cleanable/glass/plasma(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
|
||||
/obj/structure/window/plasma/spawner/east
|
||||
dir = EAST
|
||||
|
||||
|
||||
Reference in New Issue
Block a user