mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-20 18:46:31 +01:00
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:
@@ -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")
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
Reference in New Issue
Block a user