mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-02-04 21:58:22 +00:00
Merge pull request #5095 from tigercat2000/ACTION_BUTTONS
Action Button Update
This commit is contained in:
@@ -655,7 +655,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
|
||||
M.equip_to_slot_or_del(J, slot_back)
|
||||
J.toggle()
|
||||
J.turn_on()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
|
||||
J.Topic(null, list("stat" = 1))
|
||||
equip_special_id(M,get_all_accesses(), "Space Explorer", /obj/item/weapon/card/id)
|
||||
@@ -684,7 +684,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/atmos(M), slot_head)
|
||||
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
|
||||
M.equip_to_slot_or_del(J, slot_back)
|
||||
J.toggle()
|
||||
J.turn_on()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
|
||||
equip_special_id(M,get_all_accesses(), "RIG Tester", /obj/item/weapon/card/id)
|
||||
J.Topic(null, list("stat" = 1))
|
||||
|
||||
@@ -59,7 +59,7 @@ var/global/sent_honksquad = 0
|
||||
new_honksquad.key = pick(commandos)
|
||||
commandos -= new_honksquad.key
|
||||
new_honksquad.internal = new_honksquad.s_store
|
||||
new_honksquad.internals.icon_state = "internal1"
|
||||
new_honksquad.update_internals_hud_icon(1)
|
||||
|
||||
//So they don't forget their code or mission.
|
||||
new_honksquad.mind.store_memory("<B>Mission:</B> \red [input].")
|
||||
|
||||
@@ -375,7 +375,7 @@ client/proc/one_click_antag()
|
||||
|
||||
new_syndicate_commando.key = theghost.key
|
||||
new_syndicate_commando.internal = new_syndicate_commando.s_store
|
||||
new_syndicate_commando.internals.icon_state = "internal1"
|
||||
new_syndicate_commando.update_internals_hud_icon(1)
|
||||
|
||||
//So they don't forget their code or mission.
|
||||
|
||||
|
||||
@@ -407,7 +407,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Death Commando")//Leaves them at late-join spawn.
|
||||
new_character.equip_death_commando()
|
||||
new_character.internal = new_character.s_store
|
||||
new_character.internals.icon_state = "internal1"
|
||||
new_character.update_internals_hud_icon(1)
|
||||
else//They may also be a cyborg or AI.
|
||||
switch(new_character.mind.assigned_role)
|
||||
if("Cyborg")//More rigging to make em' work and check if they're traitor.
|
||||
|
||||
@@ -64,7 +64,7 @@ var/global/sent_strike_team = 0
|
||||
new_commando.key = pick(commandos)
|
||||
commandos -= new_commando.key
|
||||
new_commando.internal = new_commando.s_store
|
||||
new_commando.internals.icon_state = "internal1"
|
||||
new_commando.update_internals_hud_icon(1)
|
||||
|
||||
//So they don't forget their code or mission.
|
||||
if(nuke_code)
|
||||
|
||||
@@ -71,7 +71,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
new_syndicate_commando.key = pick(commandos)
|
||||
commandos -= new_syndicate_commando.key
|
||||
new_syndicate_commando.internal = new_syndicate_commando.s_store
|
||||
new_syndicate_commando.internals.icon_state = "internal1"
|
||||
new_syndicate_commando.update_internals_hud_icon(1)
|
||||
|
||||
//So they don't forget their code or mission.
|
||||
if(nuke_code)
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
|
||||
|
||||
dropped()
|
||||
..()
|
||||
spawn(0)
|
||||
sense()
|
||||
return
|
||||
|
||||
@@ -289,7 +289,6 @@ BLIND // can't see anything
|
||||
body_parts_covered = HEAD
|
||||
slot_flags = SLOT_MASK
|
||||
var/mask_adjusted = 0
|
||||
var/ignore_maskadjust = 1
|
||||
var/adjusted_flags = null
|
||||
strip_delay = 40
|
||||
put_on_delay = 40
|
||||
@@ -297,60 +296,61 @@ BLIND // can't see anything
|
||||
//Proc that moves gas/breath masks out of the way
|
||||
/obj/item/clothing/mask/proc/adjustmask(var/mob/user)
|
||||
var/mob/living/carbon/human/H = usr //Used to check if the mask is on the head, to check if the hands are full, and to turn off internals if they were on when the mask was pushed out of the way.
|
||||
if(!ignore_maskadjust)
|
||||
if(user.incapacitated()) //This check allows you to adjust your masks while you're buckled into chairs or beds.
|
||||
return
|
||||
if(mask_adjusted)
|
||||
icon_state = copytext(icon_state, 1, findtext(icon_state, "_up")) /*Trims the '_up' off the end of the icon state, thus reverting to the most recent previous state.
|
||||
Had to use this instead of initial() because initial reverted to the wrong state.*/
|
||||
gas_transfer_coefficient = initial(gas_transfer_coefficient)
|
||||
permeability_coefficient = initial(permeability_coefficient)
|
||||
to_chat(user, "You push \the [src] back into place.")
|
||||
mask_adjusted = 0
|
||||
slot_flags = initial(slot_flags)
|
||||
if(flags_inv != initial(flags_inv))
|
||||
if(initial(flags_inv) & HIDEFACE) //If the mask is one that hides the face and can be adjusted yet lost that trait when it was adjusted, make it hide the face again.
|
||||
flags_inv |= HIDEFACE
|
||||
if(flags != initial(flags))
|
||||
if(initial(flags) & MASKCOVERSMOUTH) //If the mask covers the mouth when it's down and can be adjusted yet lost that trait when it was adjusted, make it cover the mouth again.
|
||||
flags |= MASKCOVERSMOUTH
|
||||
if(initial(flags) & AIRTIGHT) //If the mask is airtight and thus, one that you'd be able to run internals from yet can't because it was adjusted, make it airtight again.
|
||||
flags |= AIRTIGHT
|
||||
if(H.head == src && flags_inv == HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
|
||||
if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
|
||||
user.unEquip(src)
|
||||
else //Otherwise, put it in an available hand, the active one preferentially.
|
||||
src.loc = user
|
||||
H.head = null
|
||||
user.put_in_hands(src)
|
||||
else
|
||||
icon_state += "_up"
|
||||
to_chat(user, "You push \the [src] out of the way.")
|
||||
gas_transfer_coefficient = null
|
||||
permeability_coefficient = null
|
||||
mask_adjusted = 1
|
||||
if(adjusted_flags)
|
||||
slot_flags = adjusted_flags
|
||||
if(ishuman(user) && H.internal && user.wear_mask == src && H.internals) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals.
|
||||
Otherwise, they adjusted it while it was in their hands or some such so we won't be needing to turn off internals.*/
|
||||
H.internals.icon_state = "internal0"
|
||||
H.internal = null
|
||||
if(flags_inv & HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
|
||||
flags_inv &= ~HIDEFACE /*Done after the above to avoid having to do a check for initial(src.flags_inv == HIDEFACE).
|
||||
This reveals the user's face since the bandana will now be going on their head.*/
|
||||
if(flags & MASKCOVERSMOUTH) //Mask won't cover the mouth any more since it's been pushed out of the way. Allows for CPRing with adjusted masks.
|
||||
flags &= ~MASKCOVERSMOUTH
|
||||
if(flags & AIRTIGHT) //If the mask was airtight, it won't be anymore since you just pushed it off your face.
|
||||
flags &= ~AIRTIGHT
|
||||
if(user.wear_mask == src && initial(flags_inv) == HIDEFACE) //Means that you won't have to take off and put back on simple things like breath masks which, realistically, can just be pulled down off your face.
|
||||
if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
|
||||
user.unEquip(src)
|
||||
else //Otherwise, put it in an available hand, the active one preferentially.
|
||||
src.loc = user
|
||||
user.wear_mask = null
|
||||
user.put_in_hands(src)
|
||||
usr.update_inv_wear_mask()
|
||||
usr.update_inv_head()
|
||||
if(user.incapacitated()) //This check allows you to adjust your masks while you're buckled into chairs or beds.
|
||||
return
|
||||
if(mask_adjusted)
|
||||
icon_state = initial(icon_state)
|
||||
gas_transfer_coefficient = initial(gas_transfer_coefficient)
|
||||
permeability_coefficient = initial(permeability_coefficient)
|
||||
to_chat(user, "<span class='notice'>You push \the [src] back into place.</span>")
|
||||
mask_adjusted = 0
|
||||
slot_flags = initial(slot_flags)
|
||||
if(flags_inv != initial(flags_inv))
|
||||
if(initial(flags_inv) & HIDEFACE) //If the mask is one that hides the face and can be adjusted yet lost that trait when it was adjusted, make it hide the face again.
|
||||
flags_inv |= HIDEFACE
|
||||
if(flags != initial(flags))
|
||||
if(initial(flags) & MASKCOVERSMOUTH) //If the mask covers the mouth when it's down and can be adjusted yet lost that trait when it was adjusted, make it cover the mouth again.
|
||||
flags |= MASKCOVERSMOUTH
|
||||
if(initial(flags) & AIRTIGHT) //If the mask is airtight and thus, one that you'd be able to run internals from yet can't because it was adjusted, make it airtight again.
|
||||
flags |= AIRTIGHT
|
||||
if(H.head == src && flags_inv == HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
|
||||
if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
|
||||
user.unEquip(src)
|
||||
else //Otherwise, put it in an available hand, the active one preferentially.
|
||||
src.loc = user
|
||||
H.head = null
|
||||
user.put_in_hands(src)
|
||||
else
|
||||
icon_state += "_up"
|
||||
to_chat(user, "<span class='notice'>You push \the [src] out of the way.</span>")
|
||||
gas_transfer_coefficient = null
|
||||
permeability_coefficient = null
|
||||
mask_adjusted = 1
|
||||
if(adjusted_flags)
|
||||
slot_flags = adjusted_flags
|
||||
if(ishuman(user) && H.internal && user.wear_mask == src) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals.
|
||||
Otherwise, they adjusted it while it was in their hands or some such so we won't be needing to turn off internals.*/
|
||||
H.update_internals_hud_icon(0)
|
||||
H.internal = null
|
||||
if(flags_inv & HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
|
||||
flags_inv &= ~HIDEFACE /*Done after the above to avoid having to do a check for initial(src.flags_inv == HIDEFACE).
|
||||
This reveals the user's face since the bandana will now be going on their head.*/
|
||||
if(flags & MASKCOVERSMOUTH) //Mask won't cover the mouth any more since it's been pushed out of the way. Allows for CPRing with adjusted masks.
|
||||
flags &= ~MASKCOVERSMOUTH
|
||||
if(flags & AIRTIGHT) //If the mask was airtight, it won't be anymore since you just pushed it off your face.
|
||||
flags &= ~AIRTIGHT
|
||||
if(user.wear_mask == src && initial(flags_inv) == HIDEFACE) //Means that you won't have to take off and put back on simple things like breath masks which, realistically, can just be pulled down off your face.
|
||||
if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
|
||||
user.unEquip(src)
|
||||
else //Otherwise, put it in an available hand, the active one preferentially.
|
||||
src.loc = user
|
||||
user.wear_mask = null
|
||||
user.put_in_hands(src)
|
||||
usr.update_inv_wear_mask()
|
||||
usr.update_inv_head()
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
//Shoes
|
||||
/obj/item/clothing/shoes
|
||||
@@ -493,6 +493,7 @@ BLIND // can't see anything
|
||||
to_chat(user, "<span class='notice'>You attempt to button up the velcro on \the [src], before promptly realising how retarded you are.</span>")
|
||||
|
||||
/obj/item/clothing/suit/equipped(var/mob/living/carbon/human/user, var/slot) //Handle tail-hiding on a by-species basis.
|
||||
..()
|
||||
if(ishuman(user) && hide_tail_by_species && slot == slot_wear_suit)
|
||||
if(user.species.name in hide_tail_by_species)
|
||||
if(!(flags_inv & HIDETAIL)) //Hide the tail if the user's species is in the hide_tail_by_species list and the tail isn't already hidden.
|
||||
@@ -511,10 +512,11 @@ BLIND // can't see anything
|
||||
return
|
||||
adjustsuit(user)
|
||||
|
||||
/obj/item/clothing/suit/ui_action_click() //This is what happens when you click the HUD action button to adjust your suit.
|
||||
/obj/item/clothing/suit/ui_action_click(mob/user) //This is what happens when you click the HUD action button to adjust your suit.
|
||||
if(!ignore_suitadjust)
|
||||
adjustsuit(usr)
|
||||
else ..() //This is required in order to ensure that the UI buttons for items that have alternate functions tied to UI buttons still work.
|
||||
adjustsuit(user)
|
||||
else
|
||||
..() //This is required in order to ensure that the UI buttons for items that have alternate functions tied to UI buttons still work.
|
||||
|
||||
//Spacesuit
|
||||
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
|
||||
|
||||
@@ -101,15 +101,11 @@
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/eyes.dmi'
|
||||
)
|
||||
actions_types = list(/datum/action/item_action/toggle_research_scanner)
|
||||
|
||||
/obj/item/clothing/glasses/science/equipped(mob/user, slot)
|
||||
/obj/item/clothing/glasses/science/item_action_slot_check(slot)
|
||||
if(slot == slot_glasses)
|
||||
user.scanner.Grant(user)
|
||||
..(user, slot)
|
||||
|
||||
/obj/item/clothing/glasses/science/dropped(mob/user)
|
||||
user.scanner.devices -= 1
|
||||
..(user)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/glasses/science/night
|
||||
name = "Night Vision Science Goggle"
|
||||
@@ -242,13 +238,16 @@
|
||||
/obj/item/clothing/glasses/sunglasses/noir
|
||||
name = "noir sunglasses"
|
||||
desc = "Somehow these seem even more out-of-date than normal sunglasses."
|
||||
action_button_name = "Noir Mode"
|
||||
actions_types = list(/datum/action/item_action/noir)
|
||||
var/noir_mode = 0
|
||||
color_view = MATRIX_GREYSCALE
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/noir/attack_self()
|
||||
if(is_equipped())
|
||||
toggle_noir()
|
||||
toggle_noir()
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/noir/item_action_slot_check(slot)
|
||||
if(slot == slot_glasses)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/noir/proc/toggle_noir()
|
||||
if(!noir_mode)
|
||||
@@ -277,12 +276,11 @@
|
||||
name = "agreeable glasses"
|
||||
desc = "H.C Limited edition."
|
||||
var/punused = null
|
||||
action_button_name = "YEAH!"
|
||||
actions_types = list(/datum/action/item_action/YEEEAAAAAHHHHHHHHHHHHH)
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/yeah/attack_self()
|
||||
pun()
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/yeah/verb/pun()
|
||||
set category = "Object"
|
||||
set name = "YEAH!"
|
||||
@@ -330,7 +328,7 @@
|
||||
desc = "Protects the eyes from welders, approved by the mad scientist association."
|
||||
icon_state = "welding-g"
|
||||
item_state = "welding-g"
|
||||
action_button_name = "Flip welding goggles"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
flash_protect = 2
|
||||
tint = 2
|
||||
species_fit = list("Vox")
|
||||
@@ -375,7 +373,6 @@
|
||||
item_state = "rwelding-g"
|
||||
flash_protect = 2
|
||||
tint = 0
|
||||
action_button_name = "Flip welding goggles"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold
|
||||
name = "blindfold"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
H.add_hud_to(user)
|
||||
|
||||
/obj/item/clothing/glasses/hud/dropped(mob/living/carbon/human/user)
|
||||
..()
|
||||
if(HUDType && istype(user) && user.glasses == src)
|
||||
var/datum/atom_hud/H = huds[HUDType]
|
||||
H.remove_hud_from(user)
|
||||
|
||||
@@ -9,19 +9,21 @@
|
||||
item_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
|
||||
armor = list(melee = 15, bullet = 5, laser = 20, energy = 10, bomb = 20, bio = 10, rad = 20)
|
||||
flags_inv = 0
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
|
||||
attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "You cannot turn the light on while in this [user.loc]")//To prevent some lighting anomalities.
|
||||
/obj/item/clothing/head/hardhat/attack_self(mob/user)
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
item_state = "hardhat[on]_[item_color]"
|
||||
|
||||
return
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
item_state = "hardhat[on]_[item_color]"
|
||||
if(on)
|
||||
set_light(brightness_on)
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
if(on) set_light(brightness_on)
|
||||
else set_light(0)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
icon_state = "justice"
|
||||
toggle_message = "You turn off the lights on"
|
||||
alt_toggle_message = "You turn on the lights on"
|
||||
action_button_name = "Toggle JUSTICE"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
can_toggle = 1
|
||||
toggle_cooldown = 20
|
||||
active_sound = 'sound/items/WEEOO1.ogg'
|
||||
|
||||
@@ -350,7 +350,7 @@
|
||||
item_state = "griffinhat"
|
||||
flags = BLOCKHAIR|NODROP
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
action_button_name = "Caw"
|
||||
actions_types = list(/datum/action/item_action/caw)
|
||||
|
||||
/obj/item/clothing/head/griffin/attack_self()
|
||||
caw()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
tint = 2
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
|
||||
action_button_name = "flip welding helmet"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi',
|
||||
@@ -148,7 +148,6 @@
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
|
||||
action_button_name = "Toggle Pumpkin Light"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
brightness_on = 2 //luminosity when on
|
||||
|
||||
@@ -160,7 +159,6 @@
|
||||
item_state = "hardhat0_reindeer"
|
||||
item_color = "reindeer"
|
||||
flags_inv = 0
|
||||
action_button_name = "Toggle Nose Light"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
brightness_on = 1 //luminosity when on
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
action_button_name = "Adjust Balaclava"
|
||||
ignore_maskadjust = 0
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
adjusted_flags = SLOT_HEAD
|
||||
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
action_button_name = "Adjust Breath Mask"
|
||||
ignore_maskadjust = 0
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
species_fit = list("Vox", "Vox Armalis", "Unathi", "Tajaran", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/mask.dmi',
|
||||
@@ -38,5 +37,4 @@
|
||||
item_state = "voxmask"
|
||||
permeability_coefficient = 0.01
|
||||
species_restricted = list("Vox")
|
||||
action_button_name = null
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list()
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
tint = 2
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
origin_tech = "materials=2;engineering=2"
|
||||
action_button_name = "Toggle Welding Helmet"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
|
||||
/obj/item/clothing/mask/gas/welding/attack_self()
|
||||
toggle()
|
||||
@@ -166,7 +166,7 @@
|
||||
desc = "Twoooo!"
|
||||
icon_state = "owl"
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | NODROP
|
||||
action_button_name = "Hoot"
|
||||
actions_types = list(/datum/action/item_action/hoot)
|
||||
|
||||
/obj/item/clothing/mask/gas/owl_mask/attack_self()
|
||||
hoot()
|
||||
@@ -190,26 +190,24 @@
|
||||
/obj/item/clothing/mask/gas/sechailer
|
||||
name = "security gas mask"
|
||||
desc = "A standard issue Security gas mask with integrated 'Compli-o-nator 3000' device, plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you taze them. Do not tamper with the device."
|
||||
action_button_name = "HALT!"
|
||||
icon_state = "sechailer"
|
||||
var/aggressiveness = 2
|
||||
var/safety = 1
|
||||
ignore_maskadjust = 0
|
||||
action_button_name = "HALT!"
|
||||
actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/adjust)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/hos
|
||||
name = "\improper HOS SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a tan stripe."
|
||||
icon_state = "hosmask"
|
||||
aggressiveness = 3
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/warden
|
||||
name = "\improper Warden SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a blue stripe."
|
||||
icon_state = "wardenmask"
|
||||
aggressiveness = 3
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat
|
||||
@@ -217,7 +215,7 @@
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000."
|
||||
icon_state = "officermask"
|
||||
aggressiveness = 3
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/blue
|
||||
name = "\improper blue SWAT mask"
|
||||
@@ -225,7 +223,7 @@
|
||||
icon_state = "blue_sechailer"
|
||||
item_state = "blue_sechailer"
|
||||
aggressiveness = 3
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/cyborg
|
||||
name = "security hailer"
|
||||
@@ -233,16 +231,13 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "taperecorder_idle"
|
||||
aggressiveness = 1 //Borgs are nicecurity!
|
||||
ignore_maskadjust = 1
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/cyborg/New()
|
||||
..()
|
||||
verbs -= /obj/item/clothing/mask/gas/sechailer/verb/adjust
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/verb/adjust()
|
||||
set category = "Object"
|
||||
set name = "Adjust Mask"
|
||||
adjustmask(usr)
|
||||
/obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, actiontype)
|
||||
if(actiontype == /datum/action/item_action/halt)
|
||||
halt()
|
||||
else
|
||||
adjustmask(user)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
|
||||
@@ -64,8 +64,7 @@
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 25, rad = 0)
|
||||
action_button_name = "Adjust Sterile Mask"
|
||||
ignore_maskadjust = 0
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/mask.dmi',
|
||||
@@ -209,7 +208,6 @@
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
ignore_maskadjust = 0
|
||||
adjusted_flags = SLOT_HEAD
|
||||
icon_state = "bandbotany"
|
||||
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin")
|
||||
@@ -219,7 +217,7 @@
|
||||
"Tajaran" = 'icons/mob/species/tajaran/mask.dmi',
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi'
|
||||
)
|
||||
action_button_name = "Adjust Bandana"
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
|
||||
/obj/item/clothing/mask/bandana/attack_self(var/mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
@@ -5,18 +5,18 @@
|
||||
var/magboot_state = "magboots"
|
||||
var/magpulse = 0
|
||||
var/slowdown_active = 2
|
||||
action_button_name = "Toggle Magboots"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
strip_delay = 70
|
||||
put_on_delay = 70
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/shoes/magboots/attack_self(mob/user)
|
||||
if(src.magpulse)
|
||||
src.flags &= ~NOSLIP
|
||||
src.slowdown = SHOES_SLOWDOWN
|
||||
if(magpulse)
|
||||
flags &= ~NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
else
|
||||
src.flags |= NOSLIP
|
||||
src.slowdown = slowdown_active
|
||||
flags |= NOSLIP
|
||||
slowdown = slowdown_active
|
||||
magpulse = !magpulse
|
||||
icon_state = "[magboot_state][magpulse]"
|
||||
to_chat(user, "You [magpulse ? "enable" : "disable"] the mag-pulse traction system.")
|
||||
|
||||
@@ -182,10 +182,8 @@
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/feet.dmi'
|
||||
)
|
||||
|
||||
action_button_name = "Toggle the magclaws"
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox/attack_self(mob/user)
|
||||
if(src.magpulse)
|
||||
if(magpulse)
|
||||
flags &= ~NOSLIP
|
||||
magpulse = 0
|
||||
flags |= NODROP
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
desc = "An advanced spacesuit equipped with teleportation and anti-compression technology"
|
||||
icon_state = "chronosuit"
|
||||
item_state = "chronosuit"
|
||||
action_button_name = "Toggle Chronosuit"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90)
|
||||
var/obj/item/clothing/head/helmet/space/chronos/helmet = null
|
||||
var/obj/effect/chronos_cam/camera = null
|
||||
|
||||
@@ -46,13 +46,9 @@
|
||||
var/base_state = "plasmaman_helmet"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/proc/toggle_light(mob/user)
|
||||
@@ -68,6 +64,10 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_head()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
// ENGINEERING
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/assistant
|
||||
name = "plasmaman assistant suit"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
item_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
|
||||
//Species-specific stuff.
|
||||
species_restricted = list("exclude","Diona","Wryn")
|
||||
@@ -31,10 +31,6 @@
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/proc/toggle_light(mob/user)
|
||||
@@ -50,6 +46,14 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_head()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/item_action_slot_check(slot)
|
||||
if(slot == slot_head)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/suit/space/rig
|
||||
name = "hardsuit"
|
||||
desc = "A special space suit for environments that might pose hazards beyond just the vacuum of space. Provides more protection than a standard space suit."
|
||||
@@ -298,17 +302,12 @@
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
on = 1
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
action_button_name = "Toggle Helmet Mode"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/update_icon()
|
||||
icon_state = "rig[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "You cannot toggle your helmet while in this [user.loc].")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
|
||||
on = !on
|
||||
if(on)
|
||||
to_chat(user, "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
|
||||
@@ -331,6 +330,10 @@
|
||||
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
user.update_inv_head()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi
|
||||
name = "blood-red hardsuit"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
@@ -339,7 +342,7 @@
|
||||
item_color = "syndi"
|
||||
w_class = 3
|
||||
var/on = 1
|
||||
action_button_name = "Toggle Hardsuit Mode"
|
||||
actions_types = list(/datum/action/item_action/toggle_hardsuit_mode)
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
|
||||
@@ -370,6 +373,10 @@
|
||||
user.update_inv_wear_suit()
|
||||
user.update_inv_w_uniform()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
//Elite Syndie suit
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/elite
|
||||
name = "elite syndicate hardsuit helmet"
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
/obj/item/rig_module/maneuvering_jets/engage()
|
||||
if(!..())
|
||||
return 0
|
||||
jets.toggle_rockets()
|
||||
jets.toggle_stabilization(usr)
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/maneuvering_jets/activate()
|
||||
@@ -354,15 +354,13 @@
|
||||
suit_overlay = null
|
||||
holder.update_icon()
|
||||
|
||||
if(!jets.on)
|
||||
jets.toggle()
|
||||
jets.turn_on()
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/maneuvering_jets/deactivate()
|
||||
if(!..())
|
||||
return 0
|
||||
if(jets.on)
|
||||
jets.toggle()
|
||||
jets.turn_off()
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/maneuvering_jets/New()
|
||||
|
||||
@@ -50,7 +50,8 @@
|
||||
W.forceMove(src)
|
||||
attached_badge = W
|
||||
|
||||
action_button_name = "Remove Holobadge"
|
||||
var/datum/action/A = new /datum/action/item_action/remove_badge(src)
|
||||
A.Grant(user)
|
||||
icon_state = "armorsec"
|
||||
user.update_inv_wear_suit()
|
||||
desc = "An armored vest that protects against some damage. This one has [attached_badge] attached to it."
|
||||
@@ -63,8 +64,10 @@
|
||||
add_fingerprint(user)
|
||||
user.put_in_hands(attached_badge)
|
||||
|
||||
action_button_name = null
|
||||
action.Remove(user)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Remove(user)
|
||||
|
||||
icon_state = "armor"
|
||||
user.update_inv_wear_suit()
|
||||
desc = "An armored vest that protects against some damage. This one has a clip for a holobadge."
|
||||
@@ -101,7 +104,7 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Open/Close Jacket"
|
||||
actions_types = list(/datum/action/item_action/openclose)
|
||||
adjust_flavour = "unzip"
|
||||
|
||||
/obj/item/clothing/suit/armor/hos
|
||||
@@ -124,7 +127,7 @@
|
||||
flags_inv = 0
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Open/Close Trenchcoat"
|
||||
actions_types = list(/datum/action/item_action/openclose)
|
||||
adjust_flavour = "unbutton"
|
||||
|
||||
/obj/item/clothing/suit/armor/hos/jensen
|
||||
@@ -243,7 +246,7 @@
|
||||
item_state = "reactiveoff"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
action_button_name = "Toggle Reactive Armor"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
unacidable = 1
|
||||
hit_reaction_chance = 50
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//Hoods for winter coats and chaplain hoodie etc
|
||||
|
||||
/obj/item/clothing/suit/hooded
|
||||
action_button_name = "Adjust hood"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
var/obj/item/clothing/head/hood
|
||||
var/hoodtype = /obj/item/clothing/head/winterhood //so the chaplain hoodie or other hoodies can override this
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
/obj/item/clothing/suit/hooded/ui_action_click()
|
||||
ToggleHood()
|
||||
|
||||
/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user)
|
||||
if(slot == slot_wear_suit)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/suit/hooded/equipped(mob/user, slot)
|
||||
if(slot != slot_wear_suit)
|
||||
RemoveHood()
|
||||
@@ -35,6 +39,9 @@
|
||||
H.unEquip(hood, 1)
|
||||
H.update_inv_wear_suit()
|
||||
hood.loc = src
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/suit/hooded/dropped()
|
||||
..()
|
||||
@@ -64,5 +71,8 @@
|
||||
suit_adjusted = 1
|
||||
icon_state = "[initial(icon_state)]_hood"
|
||||
H.update_inv_wear_suit()
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
else
|
||||
RemoveHood()
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
|
||||
/obj/item/clothing/suit/storage/lawyer/bluejacket
|
||||
@@ -222,7 +222,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
|
||||
/obj/item/clothing/suit/storage/lawyer/purpjacket
|
||||
@@ -243,7 +243,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -258,7 +258,7 @@
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -276,7 +276,7 @@
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
)
|
||||
action_button_name = "Button/Unbutton Labcoat"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/cmo
|
||||
|
||||
@@ -558,7 +558,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
ignore_suitadjust = 0
|
||||
suit_adjusted = 1
|
||||
action_button_name = "Open/Close Jacket"
|
||||
actions_types = list(/datum/action/item_action/openclose)
|
||||
adjust_flavour = "unzip"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -623,7 +623,7 @@
|
||||
icon_state = "militaryjacket"
|
||||
item_state = "militaryjacket"
|
||||
ignore_suitadjust = 1
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/revolver,/obj/item/weapon/gun/projectile/revolver/detective)
|
||||
|
||||
@@ -717,7 +717,7 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
action_button_name = "Zip/Unzip Jacket"
|
||||
actions_types = list(/datum/action/item_action/zipper)
|
||||
adjust_flavour = "unzip"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -746,7 +746,7 @@
|
||||
desc = "Pompadour not included."
|
||||
icon_state = "leatherjacket"
|
||||
ignore_suitadjust = 1
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
|
||||
/obj/item/clothing/suit/officercoat
|
||||
@@ -755,7 +755,7 @@
|
||||
icon_state = "officersuit"
|
||||
item_state = "officersuit"
|
||||
ignore_suitadjust = 0
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -768,7 +768,7 @@
|
||||
icon_state = "soldiersuit"
|
||||
item_state = "soldiersuit"
|
||||
ignore_suitadjust = 0
|
||||
action_button_name = "Button/Unbutton Jacket"
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -783,7 +783,7 @@
|
||||
body_parts_covered = ARMS
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite)
|
||||
action_button_name = "Toggle Owl Wings"
|
||||
actions_types = list(/datum/action/item_action/toggle_wings)
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings
|
||||
@@ -823,7 +823,7 @@
|
||||
desc = "An incredibly advanced and complex suit; it has so many buttons and dials as to be incomprehensible."
|
||||
icon_state = "bomb"
|
||||
item_state = "bomb"
|
||||
action_button_name = "Toggle Advanced Protective Suit"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
var/slot = "decor"
|
||||
var/obj/item/clothing/under/has_suit = null //the suit the tie may be attached to
|
||||
var/image/inv_overlay = null //overlay used when attached to clothing.
|
||||
action_button_custom_type = /datum/action/item_action/accessory
|
||||
|
||||
/obj/item/clothing/accessory/New()
|
||||
..()
|
||||
@@ -23,6 +22,13 @@
|
||||
has_suit = S
|
||||
loc = has_suit
|
||||
has_suit.overlays += inv_overlay
|
||||
has_suit.actions += actions
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
if(has_suit.is_equipped())
|
||||
var/mob/M = has_suit.loc
|
||||
A.Grant(M)
|
||||
|
||||
if(user)
|
||||
to_chat(user, "<span class='notice'>You attach [src] to [has_suit].</span>")
|
||||
@@ -32,6 +38,14 @@
|
||||
if(!has_suit)
|
||||
return
|
||||
has_suit.overlays -= inv_overlay
|
||||
has_suit.actions -= actions
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
if(ismob(has_suit.loc))
|
||||
var/mob/M = has_suit.loc
|
||||
A.Remove(M)
|
||||
|
||||
has_suit = null
|
||||
usr.put_in_hands(src)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
slot = "utility"
|
||||
var/holster_allow = /obj/item/weapon/gun
|
||||
var/obj/item/weapon/gun/holstered = null
|
||||
action_button_name = "Holster"
|
||||
actions_types = list(/datum/action/item_action/accessory/holster)
|
||||
w_class = 3 // so it doesn't fit in pockets
|
||||
|
||||
//subtypes can override this to specify what can be holstered
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
slot = "utility"
|
||||
var/slots = 3
|
||||
var/obj/item/weapon/storage/internal/hold
|
||||
action_button_name = "View Storage"
|
||||
actions_types = list(/datum/action/item_action/accessory/storage)
|
||||
w_class = 3 // so it doesn't fit in pockets
|
||||
|
||||
/obj/item/clothing/accessory/storage/New()
|
||||
|
||||
@@ -322,7 +322,7 @@
|
||||
icon_state = "kidosvest"
|
||||
item_state = "kidosvest"
|
||||
ignore_suitadjust = 1
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
species_fit = null
|
||||
sprite_sheets = null
|
||||
@@ -437,7 +437,7 @@
|
||||
icon_state = "fox_jacket"
|
||||
item_state = "fox_jacket"
|
||||
ignore_suitadjust = 1
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
species_fit = null
|
||||
sprite_sheets = null
|
||||
@@ -489,7 +489,7 @@
|
||||
icon_state = "chronx_hood"
|
||||
item_state = "chronx_hood"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
action_button_name = "Transform Hood"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
var/adjusted = 0
|
||||
|
||||
/obj/item/clothing/head/fluff/chronx/ui_action_click()
|
||||
@@ -519,7 +519,7 @@
|
||||
icon_state = "chronx_robe"
|
||||
item_state = "chronx_robe"
|
||||
flags_size = ONESIZEFITSALL
|
||||
action_button_name = "Transform Robes"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
adjust_flavour = "untransform"
|
||||
ignore_suitadjust = 0
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ var/global/list/boo_phrases=list(
|
||||
school = "transmutation"
|
||||
charge_max = 600
|
||||
clothes_req = 0
|
||||
stat_allowed = 1
|
||||
invocation = ""
|
||||
invocation_type = "none"
|
||||
range = 1 // Or maybe 3?
|
||||
|
||||
@@ -54,8 +54,12 @@
|
||||
if(in_contents_of(/obj/mecha))
|
||||
canmove = 1
|
||||
use_me = 1 //If it can move, let it emote
|
||||
else if(istype(loc, /obj/item/device/mmi)) canmove = 1 //mmi won't move anyways so whatever
|
||||
else canmove = 0
|
||||
else if(istype(loc, /obj/item/device/mmi))
|
||||
canmove = 1 //mmi won't move anyways so whatever
|
||||
else
|
||||
canmove = 0
|
||||
|
||||
update_action_buttons_icon()
|
||||
return canmove
|
||||
|
||||
/mob/living/carbon/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up.
|
||||
|
||||
@@ -644,8 +644,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
if(do_mob(usr, src, POCKET_STRIP_DELAY))
|
||||
if(internal)
|
||||
internal = null
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
update_internals_hud_icon(0)
|
||||
else
|
||||
var/no_mask2
|
||||
if(!(wear_mask && wear_mask.flags & AIRTIGHT))
|
||||
@@ -655,8 +654,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
to_chat(usr, "<span class='warning'>[src] is not wearing a suitable mask or helmet!</span>")
|
||||
return
|
||||
internal = ITEM
|
||||
if(internals)
|
||||
internals.icon_state = "internal1"
|
||||
update_internals_hud_icon(1)
|
||||
|
||||
visible_message("<span class='danger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>", \
|
||||
"<span class='userdanger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>")
|
||||
@@ -858,7 +856,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
|
||||
else
|
||||
clear_alert("handcuffed")
|
||||
update_action_buttons() //some of our action buttons might be unusable when we're handcuffed.
|
||||
update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed.
|
||||
update_inv_handcuffed()
|
||||
update_hud_handcuffed()
|
||||
|
||||
@@ -1031,3 +1029,16 @@ so that different stomachs can handle things in different ways VB*/
|
||||
var/obj/item/LH = get_inactive_hand()
|
||||
if(LH)
|
||||
. |= LH.GetAccess()
|
||||
|
||||
/mob/living/carbon/proc/can_breathe_gas()
|
||||
if(!wear_mask)
|
||||
return TRUE
|
||||
|
||||
if(!(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) && internal == null)
|
||||
return TRUE
|
||||
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0)
|
||||
if(hud_used && hud_used.internals)
|
||||
hud_used.internals.icon_state = "internal[internal_state]"
|
||||
@@ -79,7 +79,7 @@
|
||||
break
|
||||
|
||||
if(thrust)
|
||||
if((movement_dir || thrust.stabilization_on) && thrust.allow_thrust(0.01, src))
|
||||
if((movement_dir || thrust.stabilizers) && thrust.allow_thrust(0.01, src))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -164,9 +164,8 @@
|
||||
update_fhair()
|
||||
update_head_accessory()
|
||||
if(internal)
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
internal = null
|
||||
update_internals_hud_icon(0)
|
||||
sec_hud_set_ID()
|
||||
update_inv_wear_mask()
|
||||
else if(I == wear_id)
|
||||
|
||||
@@ -328,7 +328,6 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/get_breath_from_internal(volume_needed) //making this call the parent would be far too complicated
|
||||
|
||||
if(internal)
|
||||
var/null_internals = 0 //internals are invalid, therefore turn them off
|
||||
var/skip_contents_check = 0 //rigsuit snowflake, oxygen tanks aren't stored inside the mob, so the 'contents.Find' check has to be skipped.
|
||||
@@ -353,12 +352,10 @@
|
||||
|
||||
|
||||
if(internal) //check for hud updates every time this is called
|
||||
if(internals)
|
||||
internals.icon_state = "internal1"
|
||||
update_internals_hud_icon(1)
|
||||
return internal.remove_air_volume(volume_needed) //returns the valid air
|
||||
else
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
update_internals_hud_icon(0)
|
||||
|
||||
return null
|
||||
|
||||
|
||||
@@ -125,8 +125,7 @@
|
||||
H.equip_or_collect(new/obj/item/weapon/tank/plasma/plasmaman(H), tank_slot) // Bigger plasma tank from Raggy.
|
||||
to_chat(H, "<span class='notice'>You are now running on plasma internals from the [H.s_store] in your [tank_slot_name]. You must breathe plasma in order to survive, and are extremely flammable.</span>")
|
||||
H.internal = H.get_item_by_slot(tank_slot)
|
||||
if(H.internals)
|
||||
H.internals.icon_state = "internal1"
|
||||
H.update_internals_hud_icon(1)
|
||||
|
||||
// Plasmamen are so fucking different that they need their own proc.
|
||||
/datum/species/plasmaman/handle_breath(var/datum/gas_mixture/breath, var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -364,8 +364,7 @@
|
||||
H.equip_or_collect(new /obj/item/weapon/tank/emergency_oxygen/vox(H), slot_l_hand)
|
||||
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from the [H.l_hand] in your hand. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
|
||||
H.internal = H.l_hand
|
||||
if(H.internals)
|
||||
H.internals.icon_state = "internal1"
|
||||
H.update_internals_hud_icon(1)
|
||||
|
||||
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
updatespeciescolor(H)
|
||||
|
||||
@@ -181,19 +181,17 @@
|
||||
|
||||
/mob/living/carbon/proc/get_breath_from_internal(volume_needed)
|
||||
if(internal)
|
||||
if(!contents.Find(internal))
|
||||
if(internal.loc != src)
|
||||
internal = null
|
||||
if(!wear_mask || !(wear_mask.flags & AIRTIGHT)) //not wearing mask or non-breath mask
|
||||
if(!head || !(head.flags & AIRTIGHT)) //not wearing helmet or non-breath helmet
|
||||
internal = null //turn off internals
|
||||
|
||||
if(internal)
|
||||
if(internals)
|
||||
internals.icon_state = "internal1"
|
||||
update_internals_hud_icon(1)
|
||||
return internal.remove_air_volume(volume_needed)
|
||||
else
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
update_internals_hud_icon(0)
|
||||
|
||||
return
|
||||
|
||||
@@ -437,12 +435,6 @@
|
||||
see_invisible = see_override
|
||||
|
||||
|
||||
/mob/living/carbon/handle_actions()
|
||||
..()
|
||||
for(var/obj/item/I in internal_organs)
|
||||
give_action_button(I, 1)
|
||||
|
||||
|
||||
/mob/living/carbon/handle_hud_icons()
|
||||
return
|
||||
|
||||
|
||||
@@ -243,6 +243,7 @@
|
||||
else if(nutrition >= get_grow_nutrition() && amount_grown < 10)
|
||||
nutrition -= 20
|
||||
amount_grown++
|
||||
update_action_buttons_icon()
|
||||
|
||||
if(amount_grown >= 10 && !Victim && !Target && !ckey)
|
||||
if(is_adult)
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
blinded = max(blinded, 1)
|
||||
|
||||
clear_fullscreens()
|
||||
update_action_buttons_icon()
|
||||
..(gibbed)
|
||||
@@ -49,8 +49,6 @@
|
||||
handle_disabilities() // eye, ear, brain damages
|
||||
handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc
|
||||
|
||||
handle_actions()
|
||||
|
||||
update_canmove()
|
||||
|
||||
if(client)
|
||||
@@ -197,7 +195,6 @@
|
||||
|
||||
handle_vision()
|
||||
handle_hud_icons()
|
||||
update_action_buttons()
|
||||
|
||||
return 1
|
||||
|
||||
@@ -247,84 +244,6 @@
|
||||
/mob/living/proc/handle_hud_icons_health()
|
||||
return
|
||||
|
||||
/mob/living/proc/handle_actions()
|
||||
//Pretty bad, i'd use picked/dropped instead but the parent calls in these are nonexistent
|
||||
for(var/datum/action/A in actions)
|
||||
if(A.CheckRemoval(src))
|
||||
A.Remove(src)
|
||||
for(var/obj/item/I in src)
|
||||
give_action_button(I, 1)
|
||||
return
|
||||
|
||||
/mob/living/proc/give_action_button(var/obj/item/I, recursive = 0)
|
||||
if(I.action_button_name)
|
||||
if(!I.action)
|
||||
if(I.action_button_custom_type)
|
||||
I.action = new I.action_button_custom_type
|
||||
else
|
||||
I.action = new /datum/action/item_action
|
||||
I.action.name = I.action_button_name
|
||||
I.action.target = I
|
||||
I.action.Grant(src)
|
||||
|
||||
if(recursive)
|
||||
for(var/obj/item/T in I)
|
||||
give_action_button(T, recursive - 1)
|
||||
|
||||
/mob/living/update_action_buttons()
|
||||
if(!hud_used) return
|
||||
if(!client) return
|
||||
|
||||
if(!hud_used.hud_shown)
|
||||
return
|
||||
|
||||
client.screen -= hud_used.hide_actions_toggle
|
||||
for(var/datum/action/A in actions)
|
||||
if(A.button)
|
||||
client.screen -= A.button
|
||||
|
||||
if(hud_used.action_buttons_hidden)
|
||||
if(!hud_used.hide_actions_toggle)
|
||||
hud_used.hide_actions_toggle = new(hud_used)
|
||||
hud_used.hide_actions_toggle.UpdateIcon()
|
||||
|
||||
if(!hud_used.hide_actions_toggle.moved)
|
||||
hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1)
|
||||
//hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1)
|
||||
|
||||
client.screen += hud_used.hide_actions_toggle
|
||||
return
|
||||
|
||||
var/button_number = 0
|
||||
for(var/datum/action/A in actions)
|
||||
button_number++
|
||||
if(A.button == null)
|
||||
var/obj/screen/movable/action_button/N = new(hud_used)
|
||||
N.owner = A
|
||||
A.button = N
|
||||
|
||||
var/obj/screen/movable/action_button/B = A.button
|
||||
|
||||
B.UpdateIcon()
|
||||
|
||||
B.name = A.UpdateName()
|
||||
|
||||
client.screen += B
|
||||
|
||||
if(!B.moved)
|
||||
B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number)
|
||||
//hud_used.SetButtonCoords(B,button_number)
|
||||
|
||||
if(button_number > 0)
|
||||
if(!hud_used.hide_actions_toggle)
|
||||
hud_used.hide_actions_toggle = new(hud_used)
|
||||
hud_used.hide_actions_toggle.InitialiseIcon(src)
|
||||
if(!hud_used.hide_actions_toggle.moved)
|
||||
hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1)
|
||||
//hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1)
|
||||
client.screen += hud_used.hide_actions_toggle
|
||||
|
||||
|
||||
/mob/living/proc/process_nations()
|
||||
if(client)
|
||||
var/client/C = client
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
var/list/icon/pipes_shown = list()
|
||||
var/last_played_vent
|
||||
|
||||
var/list/datum/action/actions = list()
|
||||
var/step_count = 0
|
||||
|
||||
var/list/butcher_results = null
|
||||
|
||||
@@ -234,6 +234,7 @@
|
||||
else
|
||||
canmove = 1
|
||||
update_transform()
|
||||
update_action_buttons_icon()
|
||||
return canmove
|
||||
|
||||
//Robots on fire
|
||||
|
||||
@@ -88,6 +88,8 @@ var/list/robot_verbs_default = list(
|
||||
var/obj/item/borg/sight/hud/sec/sechud = null
|
||||
var/obj/item/borg/sight/hud/med/healthhud = null
|
||||
|
||||
var/datum/action/item_action/toggle_research_scanner/scanner = null
|
||||
|
||||
/mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0)
|
||||
spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
@@ -144,6 +146,7 @@ var/list/robot_verbs_default = list(
|
||||
cell_component.installed = 1
|
||||
|
||||
diag_hud_set_borgcell()
|
||||
scanner = new(src)
|
||||
scanner.Grant(src)
|
||||
|
||||
/mob/living/silicon/robot/proc/init(var/alien=0)
|
||||
|
||||
@@ -627,6 +627,7 @@
|
||||
else
|
||||
canmove = 1
|
||||
update_transform()
|
||||
update_action_buttons_icon()
|
||||
return canmove
|
||||
|
||||
/mob/living/simple_animal/update_transform()
|
||||
|
||||
@@ -1052,6 +1052,7 @@ var/list/slot_equipment_priority = list( \
|
||||
layer = initial(layer)
|
||||
|
||||
update_transform()
|
||||
update_action_buttons_icon()
|
||||
return canmove
|
||||
|
||||
/mob/proc/fall(var/forced)
|
||||
@@ -1367,16 +1368,7 @@ mob/proc/yank_out_object()
|
||||
|
||||
/mob/proc/AddSpell(var/obj/effect/proc_holder/spell/spell)
|
||||
spell_list += spell
|
||||
if(!spell.action)
|
||||
spell.action = new/datum/action/spell_action
|
||||
spell.action.target = spell
|
||||
spell.action.name = spell.name
|
||||
spell.action.button_icon = spell.action_icon
|
||||
spell.action.button_icon_state = spell.action_icon_state
|
||||
spell.action.background_icon_state = spell.action_background_icon_state
|
||||
if(isliving(src))
|
||||
spell.action.Grant(src)
|
||||
return
|
||||
spell.action.Grant(src)
|
||||
|
||||
//override to avoid rotating pixel_xy on mobs
|
||||
/mob/shuttleRotate(rotation)
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
var/obj/screen/hands = null
|
||||
var/obj/screen/pullin = null
|
||||
var/obj/screen/internals = null
|
||||
var/obj/screen/i_select = null
|
||||
var/obj/screen/m_select = null
|
||||
var/obj/screen/healths = null
|
||||
@@ -123,7 +122,6 @@
|
||||
hud_possible = list(SPECIALROLE_HUD)
|
||||
|
||||
var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining.
|
||||
var/datum/action/scan_mode/scanner = new
|
||||
|
||||
var/list/grabbed_by = list( )
|
||||
var/list/requests = list( )
|
||||
@@ -233,4 +231,6 @@
|
||||
|
||||
var/datum/vision_override/vision_type = null //Vision override datum.
|
||||
|
||||
var/list/permanent_huds = list()
|
||||
var/list/permanent_huds = list()
|
||||
|
||||
var/list/actions = list()
|
||||
@@ -251,7 +251,9 @@ obj/item/weapon/gun/proc/newshot(params)
|
||||
I.loc = src
|
||||
update_icon()
|
||||
update_gunlight(user)
|
||||
verbs += /obj/item/weapon/gun/proc/toggle_gunlight
|
||||
var/datum/action/A = new /datum/action/item_action/toggle_gunlight(src)
|
||||
if(loc == user)
|
||||
A.Grant(user)
|
||||
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(F && can_flashlight)
|
||||
@@ -262,7 +264,8 @@ obj/item/weapon/gun/proc/newshot(params)
|
||||
update_gunlight(user)
|
||||
S.update_brightness(user)
|
||||
update_icon()
|
||||
verbs -= /obj/item/weapon/gun/proc/toggle_gunlight
|
||||
for(var/datum/action/item_action/toggle_gunlight/TGL in actions)
|
||||
qdel(TGL)
|
||||
|
||||
if(unique_rename)
|
||||
if(istype(I, /obj/item/weapon/pen))
|
||||
@@ -296,6 +299,10 @@ obj/item/weapon/gun/proc/newshot(params)
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/weapon/gun/pickup(mob/user)
|
||||
..()
|
||||
if(azoom)
|
||||
@@ -376,7 +383,7 @@ obj/item/weapon/gun/proc/newshot(params)
|
||||
|
||||
/datum/action/toggle_scope_zoom
|
||||
name = "Toggle Scope"
|
||||
check_flags = AB_CHECK_ALIVE|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING
|
||||
button_icon_state = "sniper_zoom"
|
||||
var/obj/item/weapon/gun/gun = null
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
can_suppress = 1
|
||||
burst_size = 3
|
||||
fire_delay = 2
|
||||
action_button_name = "Toggle Firemode"
|
||||
actions_types = list(/datum/action/item_action/toggle_firemode)
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/isHandgun()
|
||||
return 0
|
||||
@@ -58,6 +58,9 @@
|
||||
|
||||
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
|
||||
update_icon()
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/can_shoot()
|
||||
return get_ammo()
|
||||
@@ -107,7 +110,7 @@
|
||||
fire_delay = 2
|
||||
can_suppress = 0
|
||||
burst_size = 1
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
|
||||
..()
|
||||
@@ -129,7 +132,6 @@
|
||||
origin_tech = "combat=5;materials=2;syndicate=8"
|
||||
mag_type = /obj/item/ammo_box/magazine/m556
|
||||
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
action_button_name = "Toggle Grenade Launcher"
|
||||
can_suppress = 0
|
||||
var/obj/item/weapon/gun/projectile/revolver/grenadelauncher/underbarrel
|
||||
burst_size = 3
|
||||
@@ -227,7 +229,7 @@
|
||||
can_suppress = 0
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New()
|
||||
..()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
mag_type = /obj/item/ammo_box/magazine/m75
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/gyropistol/isHandgun()
|
||||
return 1
|
||||
@@ -65,7 +65,7 @@
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
select = 0
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/speargun/update_icon()
|
||||
return
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
can_suppress = 1
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol/isHandgun()
|
||||
return 1
|
||||
@@ -64,4 +64,4 @@
|
||||
can_suppress = 0
|
||||
burst_size = 3
|
||||
fire_delay = 2
|
||||
action_button_name = "Toggle Firemode"
|
||||
actions_types = list(/datum/action/item_action/toggle_firemode)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
zoomable = TRUE
|
||||
zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you.
|
||||
slot_flags = SLOT_BACK
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/sniper_rifle/update_icon()
|
||||
if(magazine)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
can_suppress = 0
|
||||
burst_size = 1
|
||||
fire_delay = 0
|
||||
action_button_name = null
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/toy/pistol/update_icon()
|
||||
..()
|
||||
|
||||
@@ -292,11 +292,11 @@
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
if(C.can_breathe_gas())
|
||||
C.emote("gasp")
|
||||
C.losebreath++
|
||||
C.reagents.add_reagent("toxin",10)
|
||||
C.reagents.add_reagent("neurotoxin2",20)
|
||||
C.reagents.add_reagent("toxin", 10)
|
||||
C.reagents.add_reagent("neurotoxin2", 20)
|
||||
|
||||
/datum/chemical_reaction/saltpetre
|
||||
name = "saltpetre"
|
||||
@@ -432,7 +432,7 @@
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
if(C.can_breathe_gas())
|
||||
C.reagents.add_reagent("jenkem", 25)
|
||||
|
||||
/datum/reagent/jenkem
|
||||
|
||||
@@ -229,8 +229,8 @@
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
C.reagents.add_reagent("cyanide",7)
|
||||
if(C.can_breathe_gas())
|
||||
C.reagents.add_reagent("cyanide", 7)
|
||||
|
||||
/datum/reagent/itching_powder
|
||||
name = "Itching Powder"
|
||||
@@ -633,8 +633,8 @@
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 2))
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
C.reagents.add_reagent("sarin",4)
|
||||
if(C.can_breathe_gas())
|
||||
C.reagents.add_reagent("sarin", 4)
|
||||
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
name = "Slime management console"
|
||||
desc = "A computer used for remotely handling slimes."
|
||||
networks = list("SS13")
|
||||
off_action = new/datum/action/camera_off/xenobio
|
||||
var/datum/action/slime_place/slime_place_action = new
|
||||
var/datum/action/slime_pick_up/slime_up_action = new
|
||||
var/datum/action/feed_slime/feed_slime_action = new
|
||||
var/datum/action/monkey_recycle/monkey_recycle_action = new
|
||||
off_action = new /datum/action/innate/camera_off/xenobio
|
||||
var/datum/action/innate/slime_place/slime_place_action = new
|
||||
var/datum/action/innate/slime_pick_up/slime_up_action = new
|
||||
var/datum/action/innate/feed_slime/feed_slime_action = new
|
||||
var/datum/action/innate/monkey_recycle/monkey_recycle_action = new
|
||||
|
||||
var/list/stored_slimes = list()
|
||||
var/max_slimes = 5
|
||||
@@ -62,7 +62,7 @@
|
||||
return
|
||||
return ..()
|
||||
|
||||
/datum/action/camera_off/xenobio/Activate()
|
||||
/datum/action/innate/camera_off/xenobio/Activate()
|
||||
if(!target || !ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/C = target
|
||||
@@ -88,12 +88,11 @@
|
||||
src.Remove(C)
|
||||
|
||||
|
||||
/datum/action/slime_place
|
||||
/datum/action/innate/slime_place
|
||||
name = "Place Slimes"
|
||||
action_type = AB_INNATE
|
||||
button_icon_state = "slime_down"
|
||||
|
||||
/datum/action/slime_place/Activate()
|
||||
/datum/action/innate/slime_place/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
@@ -106,12 +105,11 @@
|
||||
S.visible_message("[S] warps in!")
|
||||
X.stored_slimes -= S
|
||||
|
||||
/datum/action/slime_pick_up
|
||||
/datum/action/innate/slime_pick_up
|
||||
name = "Pick up Slime"
|
||||
action_type = AB_INNATE
|
||||
button_icon_state = "slime_up"
|
||||
|
||||
/datum/action/slime_pick_up/Activate()
|
||||
/datum/action/innate/slime_pick_up/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
@@ -131,12 +129,11 @@
|
||||
X.stored_slimes += S
|
||||
|
||||
|
||||
/datum/action/feed_slime
|
||||
/datum/action/innate/feed_slime
|
||||
name = "Feed Slimes"
|
||||
action_type = AB_INNATE
|
||||
button_icon_state = "monkey_down"
|
||||
|
||||
/datum/action/feed_slime/Activate()
|
||||
/datum/action/innate/feed_slime/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
@@ -151,12 +148,11 @@
|
||||
to_chat(owner, "[X] now has [X.monkeys] monkeys left.")
|
||||
|
||||
|
||||
/datum/action/monkey_recycle
|
||||
/datum/action/innate/monkey_recycle
|
||||
name = "Recycle Monkeys"
|
||||
action_type = AB_INNATE
|
||||
button_icon_state = "monkey_up"
|
||||
|
||||
/datum/action/monkey_recycle/Activate()
|
||||
/datum/action/innate/monkey_recycle/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
name = "Activate Pill"
|
||||
|
||||
/datum/action/item_action/hands_free/activate_pill/Trigger()
|
||||
if(!Checks())
|
||||
if(!..())
|
||||
return
|
||||
to_chat(owner, "<span class='caution'>You grit your teeth and burst the implanted [target]!</span>")
|
||||
add_logs(owner, null, "swallowed an implanted pill", target)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
implant_color = "#DE7E00"
|
||||
slot = "brain_antidrop"
|
||||
origin_tech = "materials=5;programming=4;biotech=4"
|
||||
organ_action_name = "Toggle Anti-Drop"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click()
|
||||
active = !active
|
||||
@@ -263,7 +263,7 @@
|
||||
implant_color = "#007ACC"
|
||||
slot = "shoulders"
|
||||
origin_tech = "materials=5;biotech=4;powerstorage=4"
|
||||
organ_action_name = "Toggle Arm Mod"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
var/obj/holder//is defined as the retractable item itself. ensure this is defined somewhere!
|
||||
var/out = 0//determines if the item is in the owner's hand or not
|
||||
var/overloaded = 0//is set to 1 when owner gets EMPed. if set to 1, implant doesn't work.
|
||||
@@ -319,7 +319,7 @@
|
||||
desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arms and remains in the shoulders when not in use."
|
||||
icon_state = "armcannon_tase_implant"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4"
|
||||
organ_action_name = "Toggle Arm Cannon Taser"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/tase/New()//when the implant is created...
|
||||
holder = new /obj/item/weapon/gun/energy/gun/advtaser/mounted(src)//assign a brand new item to it. (in this case, a gun)
|
||||
@@ -329,7 +329,7 @@
|
||||
desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arms and remains in the shoulders when not in use."
|
||||
icon_state = "armcannon_lase_implant"
|
||||
origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4;syndicate=5"//this is kinda nutty and i might lower it
|
||||
organ_action_name = "Toggle Arm Cannon Laser"
|
||||
actions_types = list(/datum/action/item_action/organ_action/toggle)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/arm_mod/lase/New()
|
||||
holder = new /obj/item/weapon/gun/energy/laser/mounted(src)
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
var/zone = "chest"
|
||||
var/slot
|
||||
vital = 0
|
||||
var/organ_action_name = null
|
||||
var/non_primary = 0
|
||||
action_button_custom_type = /datum/action/item_action/organ_action
|
||||
|
||||
/obj/item/organ/internal/New(var/mob/living/carbon/holder)
|
||||
if(istype(holder))
|
||||
@@ -41,8 +39,9 @@
|
||||
parent.internal_organs |= src
|
||||
//M.internal_organs_by_name[src] |= src(H,1)
|
||||
loc = null
|
||||
if(organ_action_name)
|
||||
action_button_name = organ_action_name
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(M)
|
||||
|
||||
|
||||
/obj/item/organ/internal/remove(mob/living/carbon/M, special = 0)
|
||||
@@ -61,14 +60,18 @@
|
||||
else
|
||||
parent.internal_organs -= src
|
||||
|
||||
if(organ_action_name)
|
||||
action_button_name = null
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Remove(M)
|
||||
|
||||
|
||||
/obj/item/organ/internal/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
|
||||
insert(target)
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/item_action_slot_check(slot, mob/user)
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/proc/on_find(mob/living/finder)
|
||||
return
|
||||
|
||||
@@ -197,7 +200,7 @@
|
||||
icon_state = "cursedheart-off"
|
||||
icon_base = "cursedheart"
|
||||
origin_tech = "biotech=5"
|
||||
organ_action_name = "pump your blood"
|
||||
actions_types = list(/datum/action/item_action/organ_action/cursed_heart)
|
||||
var/last_pump = 0
|
||||
var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal)
|
||||
var/blood_loss = 100 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?)
|
||||
@@ -235,25 +238,33 @@
|
||||
if(owner)
|
||||
to_chat(owner, "<span class='userdanger'>Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!</span>")
|
||||
|
||||
|
||||
/datum/action/item_action/organ_action/cursed_heart
|
||||
name = "pump your blood"
|
||||
|
||||
//You are now brea- pumping blood manually
|
||||
/obj/item/organ/internal/heart/cursed/ui_action_click()
|
||||
if(world.time < (last_pump + (pump_delay-10))) //no spam
|
||||
to_chat(owner, "<span class='userdanger'>Too soon!</span>")
|
||||
return
|
||||
/datum/action/item_action/organ_action/cursed_heart/Trigger()
|
||||
. = ..()
|
||||
if(. && istype(target,/obj/item/organ/internal/heart/cursed))
|
||||
var/obj/item/organ/internal/heart/cursed/cursed_heart = target
|
||||
|
||||
last_pump = world.time
|
||||
playsound(owner, 'sound/effects/singlebeat.ogg', 40, 1)
|
||||
to_chat(owner, "<span class='notice'>Your heart beats.</span>")
|
||||
if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam
|
||||
to_chat(owner, "<span class='userdanger'>Too soon!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
H.vessel.add_reagent("blood", (blood_loss*0.5))//gain half the blood back from a failure
|
||||
if(owner.client)
|
||||
owner.client.color = ""
|
||||
cursed_heart.last_pump = world.time
|
||||
playsound(owner,'sound/effects/singlebeat.ogg',40,1)
|
||||
to_chat(owner, "<span class = 'notice'>Your heart beats.</span>")
|
||||
|
||||
H.adjustBruteLoss(-heal_brute)
|
||||
H.adjustFireLoss(-heal_burn)
|
||||
H.adjustOxyLoss(-heal_oxy)
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
H.vessel.add_reagent("blood", (cursed_heart.blood_loss*0.5))//gain half the blood back from a failure
|
||||
if(owner.client)
|
||||
owner.client.color = ""
|
||||
|
||||
H.adjustBruteLoss(-cursed_heart.heal_brute)
|
||||
H.adjustFireLoss(-cursed_heart.heal_burn)
|
||||
H.adjustOxyLoss(-cursed_heart.heal_oxy)
|
||||
|
||||
/obj/item/organ/internal/lungs
|
||||
name = "lungs"
|
||||
|
||||
Reference in New Issue
Block a user