Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-04-04

# Conflicts:
#	code/modules/economy/lorenews.dm
#	code/modules/mob/living/simple_animal/animals/cat.dm
#	html/changelogs/.all_changelog.yml
#	maps/southern_cross/southern_cross-1.dmm
This commit is contained in:
Leshana
2018-04-06 15:40:06 -04:00
59 changed files with 593 additions and 420 deletions
+4
View File
@@ -6,6 +6,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
var/previous_rights = 0
//Clear profile access
for(var/A in world.GetConfig("admin"))
world.SetConfig("APP/admin", A, null)
//load text from file
var/list/Lines = file2list("config/admin_ranks.txt")
+2
View File
@@ -23,6 +23,8 @@ var/list/admin_datums = list()
rank = initial_rank
rights = initial_rights
admin_datums[ckey] = src
if(rights & R_DEBUG) //grant profile access
world.SetConfig("APP/admin", ckey, "role=admin")
/datum/admins/proc/associate(client/C)
if(istype(C))
@@ -26,7 +26,9 @@
if(icon_override)
if("[tmp_icon_state]_tie" in icon_states(icon_override))
tmp_icon_state = "[tmp_icon_state]_tie"
inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH)
inv_overlay = image(icon = icon_override, icon_state = tmp_icon_state, dir = SOUTH)
else
inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH)
return inv_overlay
/obj/item/clothing/accessory/proc/get_mob_overlay()
@@ -387,4 +389,4 @@
/obj/item/clothing/accessory/bracelet/material/glass/New(var/newloc)
..(newloc, "glass")
..()
..()
+18 -1
View File
@@ -13,6 +13,7 @@ var/list/global/map_templates = list()
/datum/map_template
var/name = "Default Template Name"
var/desc = "Some text should go here. Maybe."
var/template_group = null // If this is set, no more than one template in the same group will be spawned, per submap seeding.
var/width = 0
var/height = 0
var/mappath = null
@@ -67,7 +68,7 @@ var/list/global/map_templates = list()
admin_notice("<span class='danger'>Initializing newly created atom(s) in submap.</span>", R_DEBUG)
SSatoms.InitializeAtoms(atoms)
admin_notice("<span class='danger'>Initializing atmos pipenets and machinery in submap.</span>", R_DEBUG)
SSmachines.setup_atmos_machinery(atmos_machines)
@@ -190,6 +191,7 @@ var/list/global/map_templates = list()
CHECK_TICK
var/list/loaded_submap_names = list()
var/list/template_groups_used = list() // Used to avoid spawning three seperate versions of the same PoI.
// Now lets start choosing some.
while(budget > 0 && overall_sanity > 0)
@@ -210,6 +212,14 @@ var/list/global/map_templates = list()
// Can we afford it?
if(chosen_template.cost > budget)
priority_submaps -= chosen_template
potential_submaps -= chosen_template
continue
// Did we already place down a very similar submap?
if(chosen_template.template_group && chosen_template.template_group in template_groups_used)
priority_submaps -= chosen_template
potential_submaps -= chosen_template
continue
// If so, try to place it.
@@ -242,14 +252,21 @@ var/list/global/map_templates = list()
CHECK_TICK
// For pretty maploading statistics.
if(loaded_submap_names[chosen_template.name])
loaded_submap_names[chosen_template.name] += 1
else
loaded_submap_names[chosen_template.name] = 1
// To avoid two 'related' similar submaps existing at the same time.
if(chosen_template.template_group)
template_groups_used += chosen_template.template_group
// To deduct the cost.
if(chosen_template.cost >= 0)
budget -= chosen_template.cost
// Remove the submap from our options.
if(chosen_template in priority_submaps) // Always remove priority submaps.
priority_submaps -= chosen_template
else if(!chosen_template.allow_duplicates)
+35 -62
View File
@@ -399,12 +399,9 @@
var/modified = 0
var/perpname = "wot"
if(wear_id)
var/obj/item/weapon/card/id/I = wear_id.GetID()
if(I)
perpname = I.registered_name
else
perpname = name
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = name
@@ -438,14 +435,11 @@
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
@@ -468,14 +462,11 @@
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
@@ -496,14 +487,11 @@
if (href_list["secrecordadd"])
if(hasHUD(usr,"security"))
var/perpname = "wot"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
@@ -527,14 +515,11 @@
var/perpname = "wot"
var/modified = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
@@ -566,14 +551,11 @@
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
@@ -597,14 +579,11 @@
var/perpname = "wot"
var/read = 0
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
@@ -625,14 +604,11 @@
if (href_list["medrecordadd"])
if(hasHUD(usr,"medical"))
var/perpname = "wot"
if(wear_id)
if(istype(wear_id,/obj/item/weapon/card/id))
perpname = wear_id:registered_name
else if(istype(wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = wear_id
perpname = tempPda.owner
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = src.name
perpname = name
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
@@ -1184,7 +1160,7 @@
if(!(gender in species.genders))
gender = species.genders[1]
icon_state = lowertext(species.name)
//icon_state = lowertext(species.name) //Necessary?
species.create_organs(src)
@@ -1615,12 +1591,9 @@
if(hasHUD(user,"security"))
//Try to find their name
var/perpname
if(wear_id)
var/obj/item/weapon/card/id/I = wear_id.GetID()
if(I)
perpname = I.registered_name
else
perpname = name
var/obj/item/weapon/card/id/I = GetIdCard()
if(I)
perpname = I.registered_name
else
perpname = name
//Try to find their record
@@ -5,9 +5,46 @@
return
..()
/mob/living/simple_animal/slime/Found(mob/living/L)
if(isliving(L))
if(SA_attackable(L))
if(L.faction == faction && !attack_same)
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too.
return H // Monkeys are always food.
else
return
if(L in friends)
return
if(istype(L, /mob/living/simple_animal/slime))
var/mob/living/simple_animal/slime/buddy = L
if(buddy.slime_color == src.slime_color || discipline || unity || buddy.unity)
return // Don't hurt same colored slimes.
else
return buddy //do hurt others
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too.
return H // Monkeys are always food.
if(issilicon(L) || isbot(L))
if(discipline && !rabid)
return // We're a good slime. For now at least.
return
return
/mob/living/simple_animal/slime/special_target_check(mob/living/L)
if(L.faction == faction && !attack_same)
return FALSE
if(L.faction == faction && !attack_same && !istype(L, /mob/living/simple_animal/slime))
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too.
return TRUE // Monkeys are always food.
else
return FALSE
if(L in friends)
return FALSE
@@ -112,6 +112,11 @@
if(!speaker.client)
return
//Are all slimes being referred to?
var/mass_order = 0
if(findtext(message, "slimes"))
mass_order = 1
// Say hello back.
if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings"))
delayed_say(pick("Hello...", "Hi..."), speaker)
@@ -165,13 +170,14 @@
var/list/valid_names = splittext(L.name, " ") // Should output list("John", "Doe") as an example.
for(var/line in valid_names) // Check each part of someone's name.
if(findtext(message, lowertext(line))) // If part of someone's name is in the command, the slime targets them if allowed to.
if(special_target_check(L))
delayed_say("Okay... I attack \the [L]...", speaker)
LoseFollow()
set_target(L)
return
else
delayed_say("No... I won't attack \the [L].", speaker)
return
// If we're here, it couldn't find anyone with that name.
delayed_say("No... I don't know who to attack...", speaker)
if(!(mass_order && line == "slime")) //don't think random other slimes are target
if(special_target_check(L))
delayed_say("Okay... I attack \the [L]...", speaker)
LoseFollow()
set_target(L, 1)
return
else
delayed_say("No... I won't attack \the [L].", speaker)
return
// If we're here, it couldn't find anyone with that name.
delayed_say("No... I don't know who to attack...", speaker)
@@ -356,10 +356,13 @@
baby.mutation_chance = mutation_chance
baby.power_charge = round(power_charge / 4)
baby.resentment = max(resentment - 1, 0)
baby.discipline = max(discipline - 1, 0)
baby.obedience = max(obedience - 1, 0)
baby.unity = unity
if(!istype(baby, /mob/living/simple_animal/slime/light_pink))
baby.discipline = max(discipline - 1, 0)
baby.obedience = max(obedience - 1, 0)
if(!istype(baby, /mob/living/simple_animal/slime/rainbow))
baby.unity = unity
baby.faction = faction
baby.attack_same = attack_same
baby.friends = friends.Copy()
if(rabid)
baby.enrage()
@@ -120,7 +120,7 @@
/mob/living/simple_animal/slime/dark_purple
desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it."
color = "#CC23FF"
color = "#660088"
slime_color = "dark purple"
coretype = /obj/item/slime_extract/dark_purple
reagent_injected = "phoron"
+4 -4
View File
@@ -201,7 +201,7 @@ obj/machinery/atmospherics/pipe/zpipe/up/scrubbers
desc = "A scrubbers pipe segment to connect upwards."
connect_types = CONNECT_TYPE_SCRUBBER
piping_layer = PIPING_LAYER_SCRUBBER
layer = 2.38
layer = PIPES_SCRUBBER_LAYER
icon_connect_type = "-scrubbers"
color = PIPE_COLOR_RED
@@ -211,7 +211,7 @@ obj/machinery/atmospherics/pipe/zpipe/up/supply
desc = "A supply pipe segment to connect upwards."
connect_types = CONNECT_TYPE_SUPPLY
piping_layer = PIPING_LAYER_SUPPLY
layer = 2.39
layer = PIPES_SUPPLY_LAYER
icon_connect_type = "-supply"
color = PIPE_COLOR_BLUE
@@ -221,7 +221,7 @@ obj/machinery/atmospherics/pipe/zpipe/down/scrubbers
desc = "A scrubbers pipe segment to connect downwards."
connect_types = CONNECT_TYPE_SCRUBBER
piping_layer = PIPING_LAYER_SCRUBBER
layer = 2.38
layer = PIPES_SCRUBBER_LAYER
icon_connect_type = "-scrubbers"
color = PIPE_COLOR_RED
@@ -231,6 +231,6 @@ obj/machinery/atmospherics/pipe/zpipe/down/supply
desc = "A supply pipe segment to connect downwards."
connect_types = CONNECT_TYPE_SUPPLY
piping_layer = PIPING_LAYER_SUPPLY
layer = 2.39
layer = PIPES_SUPPLY_LAYER
icon_connect_type = "-supply"
color = PIPE_COLOR_BLUE
+20 -14
View File
@@ -50,7 +50,7 @@
/obj/item/organ/external/diona/arm
name = "left upper tendril"
organ_tag = "l_arm"
organ_tag = BP_L_ARM
icon_name = "l_arm"
max_damage = 30
min_broken_damage = 20
@@ -61,13 +61,13 @@
/obj/item/organ/external/diona/arm/right
name = "right upper tendril"
organ_tag = "r_arm"
organ_tag = BP_R_ARM
icon_name = "r_arm"
body_part = ARM_RIGHT
/obj/item/organ/external/diona/leg
name = "left lower tendril"
organ_tag = "l_leg"
organ_tag = BP_L_LEG
icon_name = "l_leg"
max_damage = 30
min_broken_damage = 20
@@ -79,50 +79,50 @@
/obj/item/organ/external/diona/leg/right
name = "right lower tendril"
organ_tag = "r_leg"
organ_tag = BP_R_LEG
icon_name = "r_leg"
body_part = LEG_RIGHT
icon_position = RIGHT
/obj/item/organ/external/diona/foot
name = "left foot"
organ_tag = "l_foot"
organ_tag = BP_L_FOOT
icon_name = "l_foot"
max_damage = 25
min_broken_damage = 10
w_class = ITEMSIZE_SMALL
body_part = FOOT_LEFT
icon_position = LEFT
parent_organ = "l_leg"
parent_organ = BP_R_LEG
can_stand = 1
/obj/item/organ/external/diona/foot/right
name = "right foot"
organ_tag = "r_foot"
organ_tag = BP_R_FOOT
icon_name = "r_foot"
body_part = FOOT_RIGHT
icon_position = RIGHT
parent_organ = "r_leg"
parent_organ = BP_R_LEG
joint = "right ankle"
amputation_point = "right ankle"
/obj/item/organ/external/diona/hand
name = "left grasper"
organ_tag = "l_hand"
organ_tag = BP_L_HAND
icon_name = "l_hand"
max_damage = 25
min_broken_damage = 15
w_class = ITEMSIZE_SMALL
body_part = HAND_LEFT
parent_organ = "l_arm"
parent_organ = BP_L_ARM
can_grasp = 1
/obj/item/organ/external/diona/hand/right
name = "right grasper"
organ_tag = "r_hand"
organ_tag = BP_R_HAND
icon_name = "r_hand"
body_part = HAND_RIGHT
parent_organ = "r_arm"
parent_organ = BP_R_ARM
//DIONA ORGANS.
/obj/item/organ/external/diona/removed()
@@ -157,26 +157,32 @@
/obj/item/organ/internal/diona/strata
name = "neural strata"
parent_organ = BP_TORSO
organ_tag = O_STRATA
/obj/item/organ/internal/diona/bladder
name = "gas bladder"
parent_organ = BP_HEAD
organ_tag = O_GBLADDER
/obj/item/organ/internal/diona/polyp
name = "polyp segment"
parent_organ = BP_GROIN
organ_tag = O_POLYP
/obj/item/organ/internal/diona/ligament
name = "anchoring ligament"
parent_organ = BP_GROIN
organ_tag = O_ANCHOR
/obj/item/organ/internal/diona/node
name = "receptor node"
parent_organ = BP_HEAD
organ_tag = O_RESPONSE
/obj/item/organ/internal/diona/nutrients
name = O_NUTRIENT
parent_organ = BP_TORSO
organ_tag = O_NUTRIENT
// These are different to the standard diona organs as they have a purpose in other
// species (absorbing radiation and light respectively)
@@ -191,8 +197,8 @@
/obj/item/organ/internal/diona/node
name = "response node"
parent_organ = "head"
organ_tag = "receptor node"
parent_organ = BP_HEAD
organ_tag = O_RESPONSE
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
+16 -16
View File
@@ -72,7 +72,7 @@
owner.custom_pain("A jolt of pain surges through your [name]!",1)
/obj/item/organ/external/arm
organ_tag = "l_arm"
organ_tag = BP_L_ARM
name = "left arm"
icon_name = "l_arm"
max_damage = 80
@@ -98,13 +98,13 @@
if (. >= 2)
if(prob(.))
owner.custom_pain("A jolt of pain surges through your [name]!",1)
if(organ_tag == "l_arm") //Specific level 2 'feature
if(organ_tag == BP_L_ARM) //Specific level 2 'feature
owner.drop_l_hand()
else if(organ_tag == "r_arm")
else if(organ_tag == BP_R_ARM)
owner.drop_r_hand()
/obj/item/organ/external/arm/right
organ_tag = "r_arm"
organ_tag = BP_R_ARM
name = "right arm"
icon_name = "r_arm"
body_part = ARM_RIGHT
@@ -112,7 +112,7 @@
amputation_point = "right shoulder"
/obj/item/organ/external/leg
organ_tag = "l_leg"
organ_tag = BP_L_LEG
name = "left leg"
icon_name = "l_leg"
max_damage = 80
@@ -142,7 +142,7 @@
owner.Weaken(5)
/obj/item/organ/external/leg/right
organ_tag = "r_leg"
organ_tag = BP_R_LEG
name = "right leg"
icon_name = "r_leg"
body_part = LEG_RIGHT
@@ -151,7 +151,7 @@
amputation_point = "right hip"
/obj/item/organ/external/foot
organ_tag = "l_foot"
organ_tag = BP_L_FOOT
name = "left foot"
icon_name = "l_foot"
max_damage = 50
@@ -159,7 +159,7 @@
w_class = ITEMSIZE_SMALL
body_part = FOOT_LEFT
icon_position = LEFT
parent_organ = "l_leg"
parent_organ = BP_L_LEG
joint = "left ankle"
amputation_point = "left ankle"
can_stand = 1
@@ -186,24 +186,24 @@
owner.Weaken(5)
/obj/item/organ/external/foot/right
organ_tag = "r_foot"
organ_tag = BP_R_FOOT
name = "right foot"
icon_name = "r_foot"
body_part = FOOT_RIGHT
icon_position = RIGHT
parent_organ = "r_leg"
parent_organ = BP_R_LEG
joint = "right ankle"
amputation_point = "right ankle"
/obj/item/organ/external/hand
organ_tag = "l_hand"
organ_tag = BP_L_HAND
name = "left hand"
icon_name = "l_hand"
max_damage = 50
min_broken_damage = 15
w_class = ITEMSIZE_SMALL
body_part = HAND_LEFT
parent_organ = "l_arm"
parent_organ = BP_L_ARM
joint = "left wrist"
amputation_point = "left wrist"
can_grasp = 1
@@ -229,17 +229,17 @@
if (. >= 2)
if(prob(.))
owner.custom_pain("A jolt of pain surges through your [name]!",1)
if(organ_tag == "l_hand") //Specific level 2 'feature
if(organ_tag == BP_L_HAND) //Specific level 2 'feature
owner.drop_l_hand()
else if(organ_tag == "r_hand")
else if(organ_tag == BP_R_HAND)
owner.drop_r_hand()
/obj/item/organ/external/hand/right
organ_tag = "r_hand"
organ_tag = BP_R_HAND
name = "right hand"
icon_name = "r_hand"
body_part = HAND_RIGHT
parent_organ = "r_arm"
parent_organ = BP_R_ARM
joint = "right wrist"
amputation_point = "right wrist"
+2 -1
View File
@@ -53,7 +53,8 @@ var/list/possible_cable_coil_colours = list(
icon_state = "0-1"
var/d1 = 0
var/d2 = 1
layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4
plane = PLATING_PLANE
layer = WIRES_LAYER
color = COLOR_RED
var/obj/machinery/power/breakerbox/breaker_box
+2 -1
View File
@@ -8,7 +8,8 @@
icon = 'icons/obj/power_cond_heavy.dmi'
name = "large power cable"
desc = "This cable is tough. It cannot be cut with simple hand tools."
layer = 2.39 //Just below pipes, which are at 2.4
plane = PLATING_PLANE
layer = PIPES_LAYER - 0.05 //Just below pipes
color = null
unacidable = 1
var/id = null
+2 -1
View File
@@ -7,7 +7,8 @@
icon = 'icons/obj/power_cond_heavy.dmi'
name = "large power cable"
desc = "This cable is tough. It cannot be cut with simple hand tools."
layer = 2.39 //Just below pipes, which are at 2.4
plane = PLATING_PLANE
layer = PIPES_LAYER - 0.05 //Just below pipes
color = null
/obj/structure/cable/heavyduty/attackby(obj/item/W, mob/user)
@@ -50,6 +50,7 @@
/obj/item/ammo_magazine/s38/rubber
name = "speedloader (.38 rubber)"
icon_state = "T38"
ammo_type = /obj/item/ammo_casing/a38r
/obj/item/ammo_magazine/s38/emp
@@ -493,6 +494,23 @@
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/s44
name = "speedloader (.44)"
icon_state = "44"
ammo_type = /obj/item/ammo_casing/a44
matter = list(DEFAULT_WALL_MATERIAL = 1260) //metal costs are very roughly based around 1 .45 casing = 75 metal
caliber = ".44"
max_ammo = 6
multiple_sprites = 1
/obj/item/ammo_magazine/s44/empty
initial_ammo = 0
/obj/item/ammo_magazine/s44/rubber
name = "speedloader (.44 rubber)"
icon_state = "R44"
ammo_type = /obj/item/ammo_casing/a44r
///////// 7.62mm /////////
/obj/item/ammo_magazine/m762
@@ -59,6 +59,12 @@
caliber = ".44"
projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a44r
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
caliber = ".44"
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/*
* .75 (aka Gyrojet Rockets, aka admin abuse)
*/
+5 -1
View File
@@ -58,6 +58,7 @@
var/move_delay = 1
var/fire_sound = 'sound/weapons/Gunshot.ogg'
var/fire_sound_text = "gunshot"
var/fire_anim = null
var/recoil = 0 //screen shake
var/silenced = 0
var/muzzle_flash = 3
@@ -492,7 +493,7 @@
if(!(target && target.loc))
target = targloc
//pointblank = 0
var/target_for_log
if(ismob(target))
target_for_log = target
@@ -533,6 +534,9 @@
//called after successfully firing
/obj/item/weapon/gun/proc/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0)
if(fire_anim)
flick(fire_anim, src)
if(silenced)
if(reflex)
user.visible_message(
@@ -118,7 +118,6 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
return 1
// Blade Runner pistol.
/obj/item/weapon/gun/projectile/revolver/deckard
name = "\improper Deckard .38"
@@ -259,3 +258,24 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
to_chat(user, "\The [src] has a secondary barrel loaded with \a [to_print]")
else
to_chat(user, "\The [src] has a secondary barrel that is empty.")
//Ported from Bay
/obj/item/weapon/gun/projectile/revolver/webley
name = "service revolver"
desc = "A rugged top break revolver based on the Webley Mk. VI model, with modern improvements. Uses .44 magnum rounds."
icon_state = "webley2"
item_state = "webley2"
caliber = ".44"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
max_shells = 6
ammo_type = /obj/item/ammo_casing/a44
/obj/item/weapon/gun/projectile/revolver/webley/auto
name = "autorevolver"
icon_state = "mosley"
desc = "A shiny Mosley Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds."
fire_delay = 5.7 //Autorevolver. Also synced with the animation
fire_anim = "mosley_fire"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
@@ -147,6 +147,14 @@
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
damage = 60
/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
damage = 10
agony = 60
embed_chance = 0
sharp = 0
check_armour = "melee"
/obj/item/projectile/bullet/pistol/rubber //"rubber" bullets
name = "rubber bullet"
damage = 5
+1
View File
@@ -663,6 +663,7 @@
var/dpdir = 0 // bitmask of pipe directions
dir = 0 // dir will contain dominant direction for junction pipes
var/health = 10 // health points 0-10
plane = PLATING_PLANE
layer = DISPOSAL_LAYER // slightly lower than wires and other pipes
var/base_icon_state // initial icon state on map
var/sortType = ""