Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Armour Refactor #18547

Merged
merged 28 commits into from
Aug 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
cb83600
initial commit
Edan52 Jul 24, 2022
eeeaa48
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 25, 2022
4b32acc
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 25, 2022
4eb75a2
bullet fix + 100% armour pen
Edan52 Jul 25, 2022
f213d7b
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 26, 2022
4266fda
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 26, 2022
7fd61de
equivalent armour values
Edan52 Jul 26, 2022
28eba4f
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 28, 2022
7309a14
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 28, 2022
64f237a
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 28, 2022
190eda7
percentage armour pen
Edan52 Jul 28, 2022
71b747c
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 28, 2022
6d7896f
updates bombing
Edan52 Jul 28, 2022
b18a0fe
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 29, 2022
3e1c443
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 29, 2022
1ba73a1
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 29, 2022
9c28cad
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 29, 2022
fc802d1
adds more defines
Edan52 Jul 29, 2022
0fcfd47
i like armour too much
Edan52 Jul 29, 2022
04a00ba
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 30, 2022
432718a
review pass 1
Edan52 Jul 30, 2022
3d4330e
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 30, 2022
67435b5
review pass 2
Edan52 Jul 30, 2022
0b0d655
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 30, 2022
86fe60d
updates with lavaland elites
Edan52 Jul 30, 2022
54b5a60
armour penetration value tweaks
Edan52 Jul 30, 2022
653630e
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise int…
Edan52 Jul 31, 2022
5d1baca
wt550 AP round change
Edan52 Aug 1, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
6 changes: 6 additions & 0 deletions code/__DEFINES/armour.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Armour defines for the new armour system.

#define ARMOUR_CONSTANT 50
#define ARMOUR_EQUATION(damage, armour, modifier) (armour <= -ARMOUR_CONSTANT ? INFINITY : (damage / (1 + (armour / ARMOUR_CONSTANT))) * modifier)
#define ARMOUR_PERCENTAGE_TO_VALUE(percentage) (percentage >= 100 ? INFINITY : (5000 / (100 - percentage)) - 50)
#define ARMOUR_VALUE_TO_PERCENTAGE(value) (value == INFINITY ? 100 : round((100 - (100 / (1 + (value / ARMOUR_CONSTANT)))), 0.01))
6 changes: 3 additions & 3 deletions code/datums/weather/weather_types/radiation_storm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,18 @@


/datum/weather/rad_storm/weather_act(mob/living/L)
var/resist = L.getarmor(null, RAD)
if(!prob(60))
return

if(!ishuman(L))
return

var/mob/living/carbon/human/H = L
if(HAS_TRAIT(H, TRAIT_RADIMMUNE))
var/resist = H.getarmor(null, RAD)
if(HAS_TRAIT(H, TRAIT_RADIMMUNE) || resist == INFINITY)
return

if(prob(max(0, 100 - resist)) && !HAS_TRAIT(H, TRAIT_GENELESS))
if(prob(max(0, 100 - ARMOUR_VALUE_TO_PERCENTAGE(resist))) && !HAS_TRAIT(H, TRAIT_GENELESS))
randmuti(H) // Applies bad mutation
if(prob(50))
if(prob(90))
Expand Down
20 changes: 10 additions & 10 deletions code/game/gamemodes/cult/cult_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_cover = HEADCOVERSEYES
armor = list(melee = 30, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10)
armor = list(MELEE = 20, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, BIO = 0, RAD = 0, FIRE = 5, ACID = 5)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
magical = TRUE
Expand All @@ -110,7 +110,7 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/culthood
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10)
armor = list(MELEE = 35, BULLET = 20, LASER = 35, ENERGY = 10, BOMB = 15, BIO = 5, RAD = 0, FIRE = 5, ACID = 5)
flags_inv = HIDEJUMPSUIT
magical = TRUE

Expand All @@ -124,7 +124,7 @@
desc = "A space worthy helmet used by the followers of a cult."
icon_state = "cult_helmet"
item_state = "cult_helmet"
armor = list(MELEE = 70, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 40, ACID = 75)
armor = list(MELEE = 115, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 20, RAD = 20, FIRE = 35, ACID = 150)
magical = TRUE

/obj/item/clothing/suit/space/cult
Expand All @@ -135,7 +135,7 @@
w_class = WEIGHT_CLASS_NORMAL
allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals)
slowdown = 1
armor = list(MELEE = 70, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 40, ACID = 75)
armor = list(MELEE = 115, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 20, RAD = 20, FIRE = 35, ACID = 150)
magical = TRUE

/obj/item/clothing/suit/hooded/cultrobes/cult_shield
Expand All @@ -144,7 +144,7 @@
icon_state = "cult_armour"
item_state = "cult_armour"
w_class = WEIGHT_CLASS_BULKY
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 30, BOMB = 50, BIO = 30, RAD = 30, FIRE = 50, ACID = 60)
armor = list(MELEE = 50, BULLET = 35, LASER = 50, ENERGY = 20, BOMB = 50, BIO = 20, RAD = 20, FIRE = 50, ACID = 75)
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie
Expand All @@ -156,7 +156,7 @@
name = "empowered cultist hood"
desc = "An empowered garb which creates a powerful shield around the user."
icon_state = "cult_hoodalt"
armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10)
armor = list(MELEE = 35, BULLET = 20, LASER = 35, ENERGY = 10, BOMB = 15, BIO = 5, RAD = 0, FIRE = 5, ACID = 5)
body_parts_covered = HEAD
flags = BLOCKHAIR
flags_inv = HIDEFACE
Expand Down Expand Up @@ -200,7 +200,7 @@
flags_inv = HIDEJUMPSUIT
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
armor = list(MELEE = -50, BULLET = -50, LASER = -50, ENERGY = -50, BOMB = -50, BIO = -50, RAD = -50, FIRE = 0, ACID = 0)
armor = list(MELEE = -25, BULLET = -25, LASER = -25, ENERGY = -25, BOMB = -25, BIO = -25, RAD = -25, FIRE = 0, ACID = 0)
hal9000PR marked this conversation as resolved.
Show resolved Hide resolved
sprite_sheets = list(
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
"Drask" = 'icons/mob/clothing/species/drask/suit.dmi',
Expand Down Expand Up @@ -233,7 +233,7 @@
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_cover = HEADCOVERSEYES
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
armor = list(MELEE = -25, BULLET = -25, LASER = -25, ENERGY = -25, BOMB = -25, BIO = -25, RAD = -25, FIRE = 0, ACID = 0)
sprite_sheets = list(
"Vox" = 'icons/mob/clothing/species/vox/head.dmi',
"Drask" = 'icons/mob/clothing/species/drask/head.dmi',
Expand Down Expand Up @@ -401,7 +401,7 @@
item_state = "cultrobesalt"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
armor = list(melee = 50, bullet = 30, laser = 50, energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
armor = list(MELEE = 50, BULLET = 20, LASER = 50, ENERGY = 10, BOMB = 15, BIO = 5, RAD = 0, FIRE = 5, ACID = 5)
flags_inv = HIDEJUMPSUIT
flags = NODROP | DROPDEL

Expand Down Expand Up @@ -565,7 +565,7 @@
force_wielded = 24
throwforce = 40
throw_speed = 2
armour_penetration = 30
armour_penetration_percentage = 50
block_chance = 30
attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored")
sharp = TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/cult/ritual.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
w_class = WEIGHT_CLASS_SMALL
force = 15
throwforce = 25
armour_penetration = 35
armour_penetration_flat = 35
sprite_sheets_inhand = null // Override parent
var/drawing_rune = FALSE
var/scribe_multiplier = 1 // Lower is faster
Expand Down
6 changes: 3 additions & 3 deletions code/game/gamemodes/miniantags/abduction/abduction_gear.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
item_state = "armor"
blood_overlay_type = "armor"
origin_tech = "magnets=7;biotech=4;powerstorage=4;abductor=4"
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, RAD = 15, FIRE = 70, ACID = 70)
armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 10, RAD = 10, FIRE = 115, ACID = 115)
actions_types = list(/datum/action/item_action/hands_free/activate)
allowed = list(/obj/item/abductor, /obj/item/abductor_baton, /obj/item/melee/baton, /obj/item/gun/energy, /obj/item/restraints/handcuffs)
var/mode = VEST_STEALTH
var/stealth_active = 0
var/combat_cooldown = 10
var/datum/icon_snapshot/disguise
var/stealth_armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, RAD = 15, FIRE = 70, ACID = 70)
var/combat_armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, RAD = 50, FIRE = 90, ACID = 90)
var/stealth_armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 10, RAD = 10, FIRE = 115, ACID = 115)
var/combat_armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, RAD = 50, FIRE = 450, ACID = 450)
sprite_sheets = null

/obj/item/clothing/suit/armor/abductor/vest/Initialize(mapload)
Expand Down
6 changes: 3 additions & 3 deletions code/game/gamemodes/miniantags/guardian/types/assassin.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/mob/living/simple_animal/hostile/guardian/assassin
melee_damage_lower = 15
melee_damage_upper = 15
armour_penetration = 0
armour_penetration_percentage = 0
playstyle_string = "As an <b>Assassin</b> type you do medium damage and have no damage resistance, but can enter stealth, massively increasing the damage of your next attack and causing it to ignore armor. Stealth is broken when you attack or take damage."
magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin."
tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online."
Expand Down Expand Up @@ -44,7 +44,7 @@
if(toggle)
melee_damage_lower = initial(melee_damage_lower)
melee_damage_upper = initial(melee_damage_upper)
armour_penetration = initial(armour_penetration)
armour_penetration_percentage = initial(armour_penetration_percentage)
obj_damage = initial(obj_damage)
environment_smash = initial(environment_smash)
alpha = initial(alpha)
Expand All @@ -62,7 +62,7 @@
return
melee_damage_lower = 50
melee_damage_upper = 50
armour_penetration = 100
armour_penetration_percentage = 100
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
new /obj/effect/temp_visual/guardian/phase/out(get_turf(src))
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/miniantags/guardian/types/ranged.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
icon_state = "guardian"
damage = 20
damage_type = BRUTE
armour_penetration = 100
armour_penetration_percentage = 100

/mob/living/simple_animal/hostile/guardian/ranged
friendly = "quietly assesses"
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/HolodeckControl.dm
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@
throw_range = 5
throwforce = 0
w_class = WEIGHT_CLASS_SMALL
armour_penetration = 50
armour_penetration_percentage = 50
block_chance = 50
var/active = FALSE

Expand Down
5 changes: 4 additions & 1 deletion code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,10 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
var/permeability_coefficient = 1 // for chemicals/diseases
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/armour_penetration = 0 //percentage of armour effectiveness to remove
/// Flat armour reduction, occurs after percentage armour penetration.
var/armour_penetration_flat = 0
/// Percentage armour reduction, happens before flat armour reduction.
var/armour_penetration_percentage = 0
var/list/allowed = null //suit storage stuff.
var/obj/item/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers.

Expand Down
10 changes: 7 additions & 3 deletions code/game/objects/items/weapons/batons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,13 @@
* * user - The attacking user
*/
/obj/item/melee/classic_baton/proc/on_non_silicon_stun(mob/living/target, mob/living/user)
var/armour = target.run_armor_check("chest", armour_penetration = stamina_armour_pen) // returns a % of their chest melee armour
var/factor = (100 - armour) / 100 // converts the % into a decimal
target.adjustStaminaLoss(stamina_damage * factor)
var/armour = target.run_armor_check("chest", armour_penetration_percentage = stamina_armour_pen) // returns their chest melee armour
var/percentage_reduction = 0
if(ishuman(target))
percentage_reduction = (100 - ARMOUR_VALUE_TO_PERCENTAGE(armour)) / 100
else
percentage_reduction = (100 - armour) / 100 // converts the % into a decimal
target.adjustStaminaLoss(stamina_damage * percentage_reduction)

/**
* # Fancy Cane
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/grenades/frag.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

/obj/item/grenade/frag/proc/embed_shrapnel(mob/living/carbon/human/H, amount)
for(var/i = 0, i < amount, i++)
if(prob(embed_prob - H.getarmor(null, BOMB)))
if(prob(embed_prob - ARMOUR_VALUE_TO_PERCENTAGE(H.getarmor(null, BOMB))))
hal9000PR marked this conversation as resolved.
Show resolved Hide resolved
var/obj/item/embedded/S = new embedded_type(src)
H.hitby(S, skipcatch = 1)
S.throwforce = 1
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/holy_weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
item_state = "scythe0"
desc = "Ask not for whom the bell tolls..."
w_class = WEIGHT_CLASS_BULKY
armour_penetration = 35
armour_penetration_flat = 30
slot_flags = SLOT_BACK
sharp = TRUE
attack_verb = list("chopped", "sliced", "cut", "reaped")
Expand Down
5 changes: 3 additions & 2 deletions code/game/objects/items/weapons/melee/energy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
w_class_on = WEIGHT_CLASS_HUGE
hitsound = 'sound/weapons/bladeslice.ogg'
flags = CONDUCT
armour_penetration = 100
armour_penetration_percentage = 100
origin_tech = "combat=4;magnets=3"
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
attack_verb_on = list()
Expand All @@ -121,7 +121,8 @@
hitsound = "swing_hit"
embed_chance = 75
embedded_impact_pain_multiplier = 10
armour_penetration = 35
armour_penetration_percentage = 50
armour_penetration_flat = 10
origin_tech = "combat=3;magnets=4;syndicate=4"
block_chance = 50
sharp = TRUE
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/weapons/melee/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
throwforce = 10
w_class = WEIGHT_CLASS_BULKY
block_chance = 50
armour_penetration = 75
armour_penetration_percentage = 75
sharp = TRUE
origin_tech = "combat=5"
attack_verb = list("lunged at", "stabbed")
Expand Down Expand Up @@ -116,7 +116,7 @@
hitsound = 'sound/weapons/rapierhit.ogg'
w_class = WEIGHT_CLASS_BULKY
force = 25
armour_penetration = 50
armour_penetration_flat = 50
block_chance = 50
///enchantment holder, gives it unique on hit effects.
var/datum/enchantment/enchant = null
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/staff.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
armour_penetration = 100
armour_penetration_percentage = 100
attack_verb = list("bludgeoned", "whacked", "disciplined")
resistance_flags = FLAMMABLE

Expand Down
15 changes: 9 additions & 6 deletions code/game/objects/items/weapons/twohanded.dm
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,8 @@
/obj/item/twohanded/fireaxe/energized
desc = "Someone with a love for fire axes decided to turn this one into a high-powered energy weapon. Seems excessive."
force_wielded = 35
armour_penetration = 20
armour_penetration_flat = 10
armour_penetration_percentage = 30
var/charge = 20
var/max_charge = 20

Expand Down Expand Up @@ -279,7 +280,8 @@
force_wielded = 34
wieldsound = 'sound/weapons/saberon.ogg'
unwieldsound = 'sound/weapons/saberoff.ogg'
armour_penetration = 35
armour_penetration_percentage = 50
armour_penetration_flat = 10
origin_tech = "magnets=4;syndicate=5"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 75
Expand Down Expand Up @@ -392,7 +394,7 @@
force_wielded = 18
throwforce = 20
throw_speed = 4
armour_penetration = 10
armour_penetration_flat = 5
materials = list(MAT_METAL = 1150, MAT_GLASS = 2075)
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
Expand Down Expand Up @@ -443,7 +445,7 @@
force_unwielded = 11
force_wielded = 20 //I have no idea how to balance
throwforce = 22
armour_penetration = 15 //Enhanced armor piercing
armour_penetration_percentage = 15 //Enhanced armor piercing
icon_prefix = "bone_spear"

//GREY TIDE
Expand Down Expand Up @@ -576,7 +578,7 @@
/obj/item/twohanded/required/chainsaw/doomslayer
name = "OOOH BABY"
desc = "<span class='warning'>VRRRRRRR!!!</span>"
armour_penetration = 100
armour_penetration_percentage = 100
force_on = 30

/obj/item/twohanded/required/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
Expand All @@ -602,7 +604,8 @@
hitsound = null // Handled in the snowflaked attack proc
wieldsound = 'sound/weapons/chainsawstart.ogg'
hitsound = null
armour_penetration = 35
armour_penetration_percentage = 50
armour_penetration_flat = 10
origin_tech = "materials=6;syndicate=4"
attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered")
sharp = TRUE
Expand Down
Loading