Merge pull request #6582 from DeityLink/Bleeding-Edge
Fixing yet more stuff
@@ -202,10 +202,11 @@
|
||||
var/area/Hallway = locate(type)
|
||||
|
||||
for(var/turf/simulated/floor/Floor in Hallway.contents)
|
||||
if(Floor.contents.len <= 0)
|
||||
if(!is_blocked_turf(Floor))
|
||||
Floors += Floor
|
||||
|
||||
if(Floors.len) // pick a floor to spawn at
|
||||
var/turf/simulated/floor/Floor = pick(Floors)
|
||||
new/obj/effect/biomass_controller(Floor) // spawn a controller at floor
|
||||
message_admins("<span class='notice'>Event: Biomass spawned at [Floor.loc] ([Floor.x].[Floor.y].[Floor.z])</span>")
|
||||
log_admin("Event: Biomass spawned at [Floor.loc] ([Floor.x],[Floor.y],[Floor.z]).")
|
||||
message_admins("Event: Biomass spawned at [Floor.loc] [formatJumpTo(Floor)]")
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//Carn: Spacevines random event.
|
||||
/proc/spacevine_infestation()
|
||||
|
||||
//writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/spacevine_infestation() called tick#: [world.time]")
|
||||
|
||||
spawn() //to stop the secrets panel hanging
|
||||
@@ -8,10 +7,11 @@
|
||||
for(var/areapath in typesof(/area/hallway))
|
||||
var/area/A = locate(areapath)
|
||||
for(var/turf/simulated/floor/F in A.contents)
|
||||
if(!F.contents.len)
|
||||
if(!is_blocked_turf(F))
|
||||
turfs += F
|
||||
|
||||
if(turfs.len) //Pick a turf to spawn at if we can
|
||||
var/turf/simulated/floor/T = pick(turfs)
|
||||
new/obj/effect/plant_controller(T) //spawn a controller at turf
|
||||
message_admins("<span class='notice'>Event: Spacevines spawned at [T.loc] ([T.x],[T.y],[T.z])</span>")
|
||||
log_admin("Event: Spacevines spawned at [T.loc] ([T.x],[T.y],[T.z]).")
|
||||
message_admins("Event: Spacevines spawned at [T.loc] [formatJumpTo(T)]")
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "eshield0" // eshield1 for expanded
|
||||
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/shields.dmi', "right_hand" = 'icons/mob/in-hand/right/shields.dmi')
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
force = 3.0
|
||||
@@ -71,9 +72,36 @@
|
||||
attack_verb = list("shoved", "bashed")
|
||||
var/active = 0
|
||||
|
||||
suicide_act(mob/user)
|
||||
viewers(user) << "<span class='danger'>[user] is putting the [src.name] to their head and activating it! It looks like \he's trying to commit suicide!</span>"
|
||||
return (BRUTELOSS)
|
||||
/obj/item/weapon/shield/energy/suicide_act(mob/user)
|
||||
viewers(user) << "<span class='danger'>[user] is putting the [src.name] to their head and activating it! It looks like \he's trying to commit suicide!</span>"
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/shield/energy/IsShield()
|
||||
if(active)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob)
|
||||
if ((M_CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You beat yourself in the head with [src].</span>"
|
||||
user.take_organ_damage(5)
|
||||
active = !active
|
||||
if (active)
|
||||
force = 10
|
||||
w_class = 4
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
user << "<span class='notice'>[src] is now active.</span>"
|
||||
else
|
||||
force = 3
|
||||
w_class = 1
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
user << "<span class='notice'>[src] can now be concealed.</span>"
|
||||
icon_state = "eshield[active]"
|
||||
item_state = "eshield[active]"
|
||||
user.regenerate_icons()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/cloaking_device
|
||||
|
||||
@@ -207,31 +207,3 @@
|
||||
return
|
||||
|
||||
|
||||
/*
|
||||
* Energy Shield
|
||||
*/
|
||||
/obj/item/weapon/shield/energy/IsShield()
|
||||
if(active)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob)
|
||||
if ((M_CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You beat yourself in the head with [src].</span>"
|
||||
user.take_organ_damage(5)
|
||||
active = !active
|
||||
if (active)
|
||||
force = 10
|
||||
icon_state = "eshield[active]"
|
||||
w_class = 4
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
user << "<span class='notice'>[src] is now active.</span>"
|
||||
else
|
||||
force = 3
|
||||
icon_state = "eshield[active]"
|
||||
w_class = 1
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
user << "<span class='notice'>[src] can now be concealed.</span>"
|
||||
add_fingerprint(user)
|
||||
return
|
||||
@@ -2795,16 +2795,17 @@
|
||||
A.update_lightsource()
|
||||
A.busjuke.dir = EAST
|
||||
message_admins("[key_name_admin(usr)] has spawned an Adminbus. Who gave him the keys?")
|
||||
log_admin("[key_name_admin(usr)] has spawned an Adminbus.")
|
||||
if("spawnselfdummy")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","TD")
|
||||
message_admins("[key_name_admin(usr)] spawned himself as a Test Dummy.")
|
||||
log_admin("[key_name_admin(usr)] spawned himself as a Test Dummy.")
|
||||
var/turf/T = get_turf(usr)
|
||||
var/mob/living/carbon/human/dummy/D = new /mob/living/carbon/human/dummy(T)
|
||||
usr.client.cmd_assume_direct_control(D)
|
||||
D.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(D), slot_w_uniform)
|
||||
D.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(D), slot_shoes)
|
||||
D.equip_to_slot_or_del(new /obj/item/weapon/card/id/admin(D), slot_wear_id)
|
||||
D.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(D), slot_ears)
|
||||
D.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(D), slot_back)
|
||||
D.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(D.back), slot_in_backpack)
|
||||
@@ -2817,6 +2818,9 @@
|
||||
newname = "Admin"
|
||||
D.name = newname
|
||||
D.real_name = newname
|
||||
var/obj/item/weapon/card/id/admin/admin_id = new(D)
|
||||
admin_id.registered_name = newname
|
||||
D.equip_to_slot_or_del(admin_id, slot_wear_id)
|
||||
//False flags and bait below. May cause mild hilarity or extreme pain. Now in one button
|
||||
if("fakealerts")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
|
||||
@@ -130,14 +130,14 @@
|
||||
|
||||
if(prob(seed ? seed.potency : 25))
|
||||
|
||||
if(!locked_atoms.len)
|
||||
if(!locked_atoms || !locked_atoms.len)
|
||||
var/mob/living/carbon/V = locate() in src.loc
|
||||
if(V && V.stat != DEAD) // If mob exists and is not dead or captured.
|
||||
lock_atom(V)
|
||||
V << "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>"
|
||||
|
||||
// FEED ME, SEYMOUR.
|
||||
if(seed && locked_atoms.len)
|
||||
if(seed && locked_atoms && locked_atoms.len)
|
||||
var/mob/V = locked_atoms[1]
|
||||
if(V.stat != DEAD) //Don't bother with a dead mob.
|
||||
|
||||
|
||||
@@ -482,7 +482,6 @@ var/global/list/damage_icon_parts = list()
|
||||
update_mutations(0)
|
||||
update_mutantrace(0)
|
||||
update_inv_w_uniform(0)
|
||||
update_inv_wear_id(0)
|
||||
update_inv_gloves(0)
|
||||
update_inv_glasses(0)
|
||||
update_inv_ears(0)
|
||||
@@ -493,6 +492,7 @@ var/global/list/damage_icon_parts = list()
|
||||
update_inv_belt(0)
|
||||
update_inv_back(0)
|
||||
update_inv_wear_suit(0)
|
||||
update_inv_wear_id(0)
|
||||
update_inv_r_hand(0)
|
||||
update_inv_l_hand(0)
|
||||
update_inv_handcuffed(0)
|
||||
@@ -580,8 +580,9 @@ var/global/list/damage_icon_parts = list()
|
||||
wear_id.screen_loc = ui_id //TODO
|
||||
if(w_uniform && w_uniform:displays_id)
|
||||
var/obj/Overlays/O = obj_overlays[ID_LAYER]
|
||||
O.icon = 'icons/mob/mob.dmi'
|
||||
O.icon_state = "id"
|
||||
var/obj/item/weapon/card/ID_worn = wear_id
|
||||
O.icon = 'icons/mob/ids.dmi'
|
||||
O.icon_state = ID_worn.icon_state
|
||||
O.overlays.len = 0
|
||||
if(wear_id.dynamic_overlay)
|
||||
if(wear_id.dynamic_overlay["[ID_LAYER]"])
|
||||
|
||||
@@ -14,31 +14,31 @@
|
||||
/obj/Overlays/uniform_layer
|
||||
layer = FLOAT_LAYER - 20
|
||||
|
||||
/obj/Overlays/id_layer
|
||||
/obj/Overlays/shoes_layer
|
||||
layer = FLOAT_LAYER - 19
|
||||
|
||||
/obj/Overlays/shoes_layer
|
||||
/obj/Overlays/gloves_layer
|
||||
layer = FLOAT_LAYER - 18
|
||||
|
||||
/obj/Overlays/gloves_layer
|
||||
/obj/Overlays/ears_layer
|
||||
layer = FLOAT_LAYER - 17
|
||||
|
||||
/obj/Overlays/ears_layer
|
||||
/obj/Overlays/suit_layer
|
||||
layer = FLOAT_LAYER - 16
|
||||
|
||||
/obj/Overlays/suit_layer
|
||||
/obj/Overlays/glasses_layer
|
||||
layer = FLOAT_LAYER - 15
|
||||
|
||||
/obj/Overlays/glasses_layer
|
||||
/obj/Overlays/belt_layer
|
||||
layer = FLOAT_LAYER - 14
|
||||
|
||||
/obj/Overlays/belt_layer
|
||||
/obj/Overlays/suit_store_layer
|
||||
layer = FLOAT_LAYER - 13
|
||||
|
||||
/obj/Overlays/suit_store_layer
|
||||
/obj/Overlays/back_layer
|
||||
layer = FLOAT_LAYER - 12
|
||||
|
||||
/obj/Overlays/back_layer
|
||||
/obj/Overlays/id_layer
|
||||
layer = FLOAT_LAYER - 11
|
||||
|
||||
/obj/Overlays/hair_layer
|
||||
|
||||
@@ -1070,15 +1070,15 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
|
||||
#define MUTATIONS_LAYER 3
|
||||
#define DAMAGE_LAYER 4
|
||||
#define UNIFORM_LAYER 5
|
||||
#define ID_LAYER 6
|
||||
#define SHOES_LAYER 7
|
||||
#define GLOVES_LAYER 8
|
||||
#define EARS_LAYER 9
|
||||
#define SUIT_LAYER 10
|
||||
#define GLASSES_LAYER 11
|
||||
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 13
|
||||
#define BACK_LAYER 14
|
||||
#define SHOES_LAYER 6
|
||||
#define GLOVES_LAYER 7
|
||||
#define EARS_LAYER 8
|
||||
#define SUIT_LAYER 9
|
||||
#define GLASSES_LAYER 10
|
||||
#define BELT_LAYER 11 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 12
|
||||
#define BACK_LAYER 13
|
||||
#define ID_LAYER 14
|
||||
#define HAIR_LAYER 15 //TODO: make part of head layer?
|
||||
#define GLASSES_OVER_HAIR_LAYER 16
|
||||
#define FACEMASK_LAYER 17
|
||||
|
||||
8
html/changelogs/DeityLink_6582.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
author: Deity Link
|
||||
delete-after: true
|
||||
changes:
|
||||
- imageadd: Added on-mob sprites for every kinds of IDs.
|
||||
- imageadd: Added on-mob sprites for every kinds of headsets.
|
||||
- tweak: Moved the ID layer above suits and backpacks, so it's less likely to be hidden when it shouldn't.
|
||||
- bugfix: Fixed energy shield sprite not updating when the shield is activated.
|
||||
- bugfix: Fixed spacevine and biomass events being borked and not properly triggering. Welcome back spacevines random events.
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
icons/mob/ids.dmi
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 699 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 684 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 209 KiB |