Merge remote-tracking branch 'upstream/master' into second-autotransfer

This commit is contained in:
Eli
2023-05-01 17:32:43 +10:00
116 changed files with 129392 additions and 888 deletions
@@ -0,0 +1,101 @@
var/datum/gear_tweak/item_tf_spawn/gear_tweak_item_tf_spawn = new()
/datum/gear_tweak/item_tf_spawn
/datum/gear_tweak/item_tf_spawn/get_contents(var/metadata)
if(!islist(metadata) || metadata["state"] == "Not Enabled")
return "Item TF spawnpoint: Not Enabled"
else if(metadata["state"] == "Anyone")
return "Item TF spawnpoint: Enabled"
else
return "Item TF spawnpoint: Only ckeys [english_list(metadata["valid"], and_text = ", ")]"
/datum/gear_tweak/item_tf_spawn/get_default()
. = list()
.["state"] = "Not Enabled"
.["valid"] = list()
/datum/gear_tweak/item_tf_spawn/get_metadata(var/user, var/list/metadata)
. = get_default()
metadata = islist(metadata) ? metadata : .
var/entry = tgui_input_list(user, "Choose an entry.", "Character Preference", list("Not Enabled", "Anyone", "Only Specific Players"), metadata["state"])
if(entry)
.["state"] = entry
if(entry == "Only Specific Players")
var/ckey_input = tgui_input_text(user, "Input ckeys allowed to join on separate lines", "Allowed Players", jointext(metadata["valid"], "\n"), multiline = TRUE)
.["valid"] = splittext(lowertext(ckey_input), "\n")
else
.["valid"] = metadata["valid"]
else
return metadata
/datum/gear_tweak/item_tf_spawn/tweak_item(var/obj/item/I, var/metadata)
if(!islist(metadata))
return
if(metadata["state"] == "Not Enabled")
return
else if(metadata["state"] == "Anyone")
I.item_tf_spawnpoint_set()
else if(metadata["state"] == "Only Specific Players")
I.item_tf_spawnpoint_set()
I.ckeys_allowed_itemspawn = metadata["valid"]
/datum/gear_tweak/simplemob_picker
var/list/simplemob_list
/datum/gear_tweak/simplemob_picker/New(var/list/valid_simplemobs)
src.simplemob_list = valid_simplemobs
..()
/datum/gear_tweak/simplemob_picker/get_contents(var/metadata)
return "Type: [metadata]"
/datum/gear_tweak/simplemob_picker/get_default()
return simplemob_list[1]
/datum/gear_tweak/simplemob_picker/get_metadata(var/user, var/metadata)
return tgui_input_list(user, "Choose a type.", "Character Preference", simplemob_list, metadata)
/datum/gear_tweak/simplemob_picker/tweak_item(var/obj/item/capture_crystal/I, var/metadata)
if(!(metadata in simplemob_list))
return
if(!istype(I))
return
I.spawn_mob_type = simplemob_list[metadata]
I.spawn_mob_name = metadata
GLOBAL_DATUM_INIT(gear_tweak_free_matrix_recolor, /datum/gear_tweak/matrix_recolor, new)
/datum/gear_tweak/matrix_recolor
/datum/gear_tweak/matrix_recolor/get_contents(var/metadata)
if(islist(metadata) && length(metadata))
return "Matrix Recolor: [english_list(metadata)]"
return "Matrix Recolor"
/datum/gear_tweak/matrix_recolor/get_default()
return null
/datum/gear_tweak/matrix_recolor/get_metadata(user, metadata)
var/list/returned = color_matrix_picker(user, "Pick a color matrix for this item", "Matrix Recolor", "Ok", "Erase", "Cancel", TRUE, 10 MINUTES, islist(metadata) && metadata)
var/list/L = returned["matrix"]
if(returned["button"] == 3)
return metadata
if((returned["button"] == 2) || !islist(L) || !ISINRANGE(L.len, 9, 20))
return list()
var/identity = TRUE
var/static/list/ones = list(1, 5, 9)
for(var/i in 1 to L.len)
if(L[i] != ((i in ones)? 1 : 0))
identity = FALSE
break
return identity? list() : L
/datum/gear_tweak/matrix_recolor/tweak_item(obj/item/I, metadata)
. = ..()
if(!islist(metadata) || (length(metadata) < 12))
return
if(istype(I))
I.add_atom_colour(metadata, FIXED_COLOUR_PRIORITY)
else
I.color = metadata // fuck off underwear
@@ -6,7 +6,7 @@
var/list/new_fullness = ..()
. = new_fullness
for(var/datum/category_group/underwear/undergarment_class in global_underwear.categories)
if(new_fullness[undergarment_class.name] == 0)
if(!new_fullness[undergarment_class.name])
continue
new_fullness[undergarment_class.name] = -1 * round(-1 * new_fullness[undergarment_class.name]) // Doing a ceiling the only way BYOND knows how I guess
new_fullness[undergarment_class.name] = (min(2, new_fullness[undergarment_class.name]) - 2) * -1 //Complicated stuff to get it correctly aligned with the expected TRUE/FALSE
@@ -14,7 +14,7 @@
icon_gib = "syndicate_gib"
faction = "eclipse"
movement_cooldown = 3
movement_cooldown = 0
status_flags = 0
@@ -104,17 +104,17 @@
////////////////////////////////
/datum/ai_holder/simple_mob/merc/eclipse
threaten = FALSE
vision_range = 8
vision_range = 7
/datum/ai_holder/simple_mob/merc/eclipse/hunter
vision_range = 10
vision_range = 7
/datum/ai_holder/simple_mob/merc/eclipse/ranged
pointblank = TRUE // They get close? Just shoot 'em!
firing_lanes = TRUE // But not your buddies!
/datum/ai_holder/simple_mob/merc/eclipse/ranged/sniper
vision_range = 15 // We're a person with a long-ranged gun.
vision_range = 12 // We're a person with a long-ranged gun.
/datum/ai_holder/simple_mob/merc/eclipse/ranged/sniper/max_range(atom/movable/AM)
return holder.ICheckRangedAttack(AM) ? 16 : 1
@@ -123,25 +123,26 @@
//The solar part of the faction, highly resistant to burns and stuff
/mob/living/simple_mob/humanoid/eclipse/solar
name = "Solar Eclipse Initiate"
desc = "A silver cladded, dangerous looking indivual."
desc = "A dangerous indivual, a gleaming orange shield surronding them, seeming protected from energy and burns."
armor = list(melee = 50, bullet = 50, laser = 95, energy = 95, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns.
armor_soak = list(melee = 0, bullet = 0, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
armor = list(melee = -10, bullet = -10, laser = 75, energy = 75, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns.
armor_soak = list(melee = 0, bullet = 0, laser = 15, energy = 15, bomb = 0, bio = 0, rad = 0)
/mob/living/simple_mob/humanoid/eclipse/solar/teslanoodle
name = "Solar Eclipse Tesla Serpent"
health = 125
maxHealth = 125
health = 100
maxHealth = 100
icon_state = "eclipse_tesla"
icon_living = "eclipse_tesla"
reload_max = 5
movement_cooldown = 1
projectiletype = /obj/item/projectile/energy/electrode/eclipse
/mob/living/simple_mob/humanoid/eclipse/solar/firemoff
name = "Solar Eclipse Inferno Moth"
health = 90
maxHealth = 90
health = 75
maxHealth = 75
icon_state = "eclipse_moth"
icon_living = "eclipse_moth"
reload_max = 10
@@ -197,23 +198,23 @@
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh
name = "Solar Eclipse Sniper"
health = 75
maxHealth = 75
movement_cooldown = 1
health = 50
maxHealth = 50
movement_cooldown = -1
icon_state = "eclipse_snipertesh"
icon_living = "eclipse_snipertesh"
projectiletype = /obj/item/projectile/beam/sniper/eclipse
projectile_accuracy = 75
projectile_accuracy = 100
reload_max = 5
reload_time = 2.0 SECONDS
reload_max = 1
reload_time = 1.5 SECONDS
ai_holder_type = /datum/ai_holder/simple_mob/merc/eclipse/ranged/sniper
ranged_attack_delay = 0.5 SECONDS
ranged_attack_delay = 1.5 SECONDS
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh/ranged_pre_animation(atom/A)
Beam(get_turf(A), icon_state = "sniper_beam", time = 1 SECONDS, maxdistance = 15)
@@ -277,16 +278,17 @@
//The lunar mobs, highly resistant to brute based damage.
/mob/living/simple_mob/humanoid/eclipse/lunar
name = "Lunar Eclipse Initiate"
desc = "A silver cladded, dangerous looking indivual."
desc = "A dangerous indivual, a gleaming red shield surronding them, seemingly protected from blunt force trauma and ballastics."
armor = list(melee = 95, bullet = 95, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns.
armor_soak = list(melee = 15, bullet = 5, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP
armor = list(melee = 75, bullet = 75, laser = -10, energy = -10, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns.
armor_soak = list(melee = 15, bullet = 15, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP
/mob/living/simple_mob/humanoid/eclipse/lunar/silvernoodle //Bouncing bullet extreme
name = "Lunar Eclipse Silver Serpent"
health = 125
maxHealth = 125
reload_max = 15
health = 100
maxHealth = 100
reload_max = 6
movement_cooldown = 1
icon_state = "eclipse_silver"
icon_living = "eclipse_silver"
@@ -318,8 +320,8 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/shotgunner //wuff with shotgun
name = "Lunar Eclipse Shotgunner"
health = 90
maxHealth = 90
health = 75
maxHealth = 75
reload_max = 2
icon_state = "eclipse_shotwuff"
@@ -331,10 +333,11 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/bulletstorm //tesh got a gun
name = "Lunar Eclipse Judge"
health = 75
maxHealth = 75
health = 50
maxHealth = 50
icon_state = "eclipse_shottesh"
icon_living = "eclipse_shottesh"
movement_cooldown = -1
projectiletype = /obj/item/projectile/bullet/shotgun
@@ -346,8 +349,8 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/ravanger //Tanky boi. Very deadly melee
name = "Lunar Eclipse Ravanger"
health = 150
maxHealth = 150
health = 125
maxHealth = 125
icon_state = "eclipse_ravanger"
icon_living = "eclipse_ravanger"
@@ -366,10 +369,10 @@
/obj/item/projectile/energy/blob/moth
splatter = TRUE
damage = 20
armor_penetration = 25
my_chems = list("fuel")
my_chems = list("fuel", "mold")
flammability = 0.25
modifier_type_to_apply = /datum/modifier/fire
modifier_duration = 6 SECONDS
color = "#38b9ff"
@@ -392,6 +395,7 @@
/obj/item/projectile/beam/sniper/eclipse
armor_penetration = 50
damage = 30
/obj/item/projectile/energy/declone/burn
damage = 20
@@ -405,11 +409,11 @@
/mob/living/simple_mob/humanoid/eclipse/solar/hellhound
name = "Solar Eclipse Hound"
health = 200
maxHealth = 200
health = 150
maxHealth = 150
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
projectiletype = /obj/item/projectile/energy/flash
movement_cooldown = 1
movement_cooldown = -1
melee_damage_lower = 20
melee_damage_upper = 35
attack_armor_pen = 20
@@ -418,25 +422,25 @@
icon_living = "eclipse_hound"
size_multiplier = 1.25
var/poison_chance = 100
var/poison_per_bite = 8
var/poison_per_bite = 4
var/poison_type = "stoxin"
/mob/living/simple_mob/humanoid/eclipse/lunar/wheel
name = "Lunar Eclipse Wheel"
health = 200
maxHealth = 200
name = "Lunar Eclipse Armadillo"
health = 150
maxHealth = 150
melee_damage_lower = 15
melee_damage_upper = 25
attack_armor_pen = 50
reload_max = 3
reload_max = 1
icon_state = "eclipse_wheel"
icon_living = "eclipse_wheel"
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
projectiletype = /obj/item/projectile/beam/energy_net
movement_cooldown = 2
movement_cooldown = -0.5
var/cloaked_alpha = 50 // Lower = Harder to see.
var/cloaked_alpha = 60 // Lower = Harder to see.
var/cloak_cooldown = 5 SECONDS // Amount of time needed to re-cloak after losing it.
var/last_uncloak = 0 // world.time
@@ -539,21 +543,22 @@
/mob/living/simple_mob/humanoid/eclipse/lunar/pummler
name = "Lunar Eclipse Punnler"
name = "Lunar Eclipse Pummeler"
projectiletype = /obj/item/projectile/bullet/shotgun/ion/eclipse
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
melee_damage_lower = 20
melee_damage_lower = 10
melee_damage_upper = 30
attack_armor_pen = 30
movement_cooldown = 1
movement_cooldown = 0
icon_state = "eclipse_pummler"
icon_living = "eclipse_pummler"
reload_max = 25
reload_max = 5
size_multiplier = 1.5
var/poison_per_bite = 5
var/poison_type = "shredding_nanites"
var/poison_chance = 50
var/shock_chance = 30
var/poison_chance = 10
var/shock_chance = 60
base_attack_cooldown = 6
/mob/living/simple_mob/humanoid/eclipse/lunar/pummler/apply_melee_effects(var/atom/A)
if(isliving(A))
@@ -159,6 +159,7 @@
belly_data["digest_oxy"] = B.digest_oxy
belly_data["can_taste"] = B.can_taste
belly_data["is_feedable"] = B.is_feedable
belly_data["contaminates"] = B.contaminates
belly_data["contamination_flavor"] = B.contamination_flavor
belly_data["contamination_color"] = B.contamination_color