diff --git a/ModularTegustation/tegu_items/extraction/egosurgery.dm b/ModularTegustation/tegu_items/extraction/egosurgery.dm
index 67f9728189c4..6d15f03288fe 100644
--- a/ModularTegustation/tegu_items/extraction/egosurgery.dm
+++ b/ModularTegustation/tegu_items/extraction/egosurgery.dm
@@ -9,7 +9,7 @@
var/maximum_energy = 5
var/target_item = null
var/current_progress = 0
- var/random_sound_list = list( //Random surgery sound for every step
+ var/random_sound_list = list( // Random surgery sound for every step
'sound/items/jaws_pry.ogg',
'sound/items/drill_use.ogg',
'sound/items/welder.ogg',
@@ -24,8 +24,8 @@
. = ..()
RegisterSignal(SSdcs, COMSIG_GLOB_WORK_COMPLETED, PROC_REF(WorkCharge))
RegisterSignal(SSdcs, COMSIG_GLOB_ORDEAL_END, PROC_REF(OrdealCharge))
- if(SSlobotomy_corp.next_ordeal_level > 2) //next_ordeal_level is 2 at roundstart
- maximum_energy = (5 + (5 * (SSlobotomy_corp.next_ordeal_level - 2))) //The math is weird on this - next_ordeal_level is the ordeal AFTER the one about to spawn, so 2 higher.
+ if(SSlobotomy_corp.next_ordeal_level > 2) // next_ordeal_level is 2 at roundstart
+ maximum_energy = (5 + (5 * (SSlobotomy_corp.next_ordeal_level - 2))) // The math is weird on this - next_ordeal_level is the ordeal AFTER the one about to spawn, so 2 higher.
/obj/item/extraction/upgrade_tool/Destroy()
UnregisterSignal(SSdcs, COMSIG_GLOB_WORK_COMPLETED)
@@ -59,7 +59,7 @@
/obj/item/extraction/upgrade_tool/pre_attack(atom/A, mob/living/user, params)
. = ..()
if(!tool_checks(user))
- return FALSE //You can't do any special interactions
+ return FALSE // You can't do any special interactions
if(energy < 1)
to_chat(user, span_warning("The [src] is out of energy!"))
return FALSE
@@ -85,14 +85,14 @@
if(istype(A, /obj/item/ego_weapon))
var/obj/item/ego_weapon/theweapon = A
- if(theweapon.force_multiplier >= 1.09) //Should prevent weirdness with numbers like 19.9999
+ if(theweapon.force_multiplier >= 1.09) // Should prevent weirdness with numbers like 19.9999
to_chat(user, span_warning("You can't modify this any further!"))
return
target_item = theweapon
ToolPrepare(user)
else if(istype(A, /obj/item/gun/ego_gun))
var/obj/item/gun/ego_gun/thegun = A
- if(thegun.projectile_damage_multiplier >= 1.09) //Should prevent weirdness with numbers like 19.9999
+ if(thegun.projectile_damage_multiplier >= 1.09) // Should prevent weirdness with numbers like 19.9999
to_chat(user, span_warning("You can't modify this any further!"))
return
target_item = thegun
@@ -113,7 +113,7 @@
if(!target_item)
return
to_chat(user, span_warning("You continue to attempt to modify [target_item]!"))
- playsound(get_turf(user), "[pick(random_sound_list)]", 50, TRUE) //I should probably give each sound custom text but its funnier to leave it to the player's imagination
+ playsound(get_turf(user), "[pick(random_sound_list)]", 50, TRUE) // I should probably give each sound custom text but its funnier to leave it to the player's imagination
/obj/item/extraction/upgrade_tool/proc/ToolProgress(mob/user)
if(!target_item)
@@ -135,11 +135,15 @@
return
if(istype(target_item, /obj/item/ego_weapon))
var/obj/item/ego_weapon/theweapon = target_item
- theweapon.force_multiplier = (clamp(theweapon.force_multiplier + 0.05, 0, 1.2))
+ theweapon.force_multiplier = (clamp(theweapon.force_multiplier + 0.05, 0, 1.2)) // Add 0.05 or 5% to the force multiplier
else if(istype(target_item, /obj/item/gun/ego_gun))
var/obj/item/gun/ego_gun/thegun = target_item
- thegun.projectile_damage_multiplier = (clamp(thegun.projectile_damage_multiplier + 0.05, 0, 1.2))
+ var/old_multiplier = thegun.force_multiplier
+ thegun.force_multiplier = (clamp(thegun.force_multiplier + 0.05, 0, 1.2))
+ var/difference = thegun.force_multiplier - old_multiplier
+ if(difference > 0)
+ thegun.projectile_damage_multiplier *= (1 + difference) // Sure we COULD just set it equal to force_multiplier but that would break some guns
to_chat(user, span_warning("You successfully improve [target_item]!"))
target_item = null
current_progress = 0
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index fc6aa198441e..25457cf896e0 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -278,9 +278,7 @@
if(I.force)
var/justice_mod = 1 + (get_modified_attribute_level(user, JUSTICE_ATTRIBUTE)/100)
var/damage = I.force * justice_mod
- if(istype(I, /obj/item/ego_weapon))
- var/obj/item/ego_weapon/theweapon = I
- damage *= theweapon.force_multiplier
+ damage *= I.force_multiplier
apply_damage(damage, I.damtype, white_healable = TRUE)
if(I.damtype in list(RED_DAMAGE, BLACK_DAMAGE, PALE_DAMAGE))
if(prob(33))
@@ -303,9 +301,7 @@
log_combat(user, src, "attacked", I)
var/justice_mod = 1 + (get_modified_attribute_level(user, JUSTICE_ATTRIBUTE)/100)
var/damage = I.force * justice_mod
- if(istype(I, /obj/item/ego_weapon))
- var/obj/item/ego_weapon/theweapon = I
- damage *= theweapon.force_multiplier
+ damage *= I.force_multiplier
take_damage(damage, I.damtype, attack_dir = get_dir(src, user))
return TRUE
diff --git a/code/datums/ai/sanity/_sanityloss_controller.dm b/code/datums/ai/sanity/_sanityloss_controller.dm
index 192cb82f20d9..9509861b3e8f 100644
--- a/code/datums/ai/sanity/_sanityloss_controller.dm
+++ b/code/datums/ai/sanity/_sanityloss_controller.dm
@@ -734,9 +734,7 @@
..()
retaliate(user)
var/aggro = I.force
- if(istype(I, /obj/item/ego_weapon))
- var/obj/item/ego_weapon/EW = I
- aggro *= EW.force_multiplier
+ aggro *= I.force_multiplier
if(ishuman(user))
aggro *= 1 + get_modified_attribute_level(user, JUSTICE_ATTRIBUTE) * 0.01
RegisterAggroValue(user, aggro, I.damtype)
@@ -779,9 +777,7 @@
var/mob/living/carbon/human/H = I.thrownby
retaliate(H)
var/aggro = I.throwforce * (1 + get_modified_attribute_level(H, JUSTICE_ATTRIBUTE) * 0.01)
- if(istype(I, /obj/item/ego_weapon))
- var/obj/item/ego_weapon/EW = I
- aggro *= EW.force_multiplier
+ aggro *= I.force_multiplier
RegisterAggroValue(H, aggro, I.damtype)
return
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index 160d2e36a8ab..92b5d4ab7d66 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -117,6 +117,8 @@
return
if(get_dist(source.mob, _target) < 2) //Adjacent clicking.
return
+ if(source.mob.next_move > world.time) //Too busy doing something else to fire
+ return
if(isnull(location)) //Clicking on a screen object.
if(_target.plane != CLICKCATCHER_PLANE) //The clickcatcher is a special case. We want the click to trigger then, under it.
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index aee9c203c988..9f8c91e61d20 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -202,6 +202,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/// What Color its swing animation is
var/swingcolor
+ /// How many deciseconds between attacks, times ten.
+ var/attack_speed = 1
+ /// A multiplier added to force through various means. Used primarily for weapon upgrades.
+ var/force_multiplier = 1
+
/obj/item/Initialize()
if(attack_verb_continuous)
@@ -354,6 +359,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
add_fingerprint(usr)
return ..()
+/obj/item/attack(mob/M, mob/user)
+ . = ..()
+ if(attack_speed && attack_speed != 1)
+ user.changeNext_move(CLICK_CD_MELEE * attack_speed)
+
/obj/item/attack_hand(mob/user)
. = ..()
if(.)
diff --git a/code/game/objects/items/ego_weapons/_ego_weapon.dm b/code/game/objects/items/ego_weapons/_ego_weapon.dm
index 52d5fee06373..9418448ee5b3 100644
--- a/code/game/objects/items/ego_weapons/_ego_weapon.dm
+++ b/code/game/objects/items/ego_weapons/_ego_weapon.dm
@@ -10,9 +10,7 @@
drag_slowdown = 1
swingstyle = WEAPONSWING_SMALLSWEEP
var/list/attribute_requirements = list()
- var/attack_speed = 1
var/special
- var/force_multiplier = 1
/// Is CleanUp proc running?
var/cleaning = FALSE
@@ -36,8 +34,6 @@
if(!CanUseEgo(user))
return FALSE
. = ..()
- if(attack_speed && attack_speed != 1)
- user.changeNext_move(CLICK_CD_MELEE * attack_speed)
if(charge && attack_charge_gain)
HandleCharge(1, target)
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/fullstop.dm b/code/game/objects/items/ego_weapons/non_abnormality/fullstop.dm
index d7a9ea6f24a8..31d5a8508828 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/fullstop.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/fullstop.dm
@@ -4,6 +4,7 @@
desc = "a template for fullstop."
icon_state = "fullstop"
inhand_icon_state = "fullstop"
+ force = 14
ammo_type = /obj/item/ammo_casing/caseless/fullstop //Does 10 damage
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
@@ -17,6 +18,7 @@
desc = "A heavy rifle. Guns like these are expensive in the City. You could buy a whole other weapon of good quality with the money for this one's bullets."
icon_state = "fullstop"
inhand_icon_state = "fullstop"
+ force = 20
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
shotsleft = 30
autofire = 0.12 SECONDS
@@ -33,6 +35,8 @@
desc = "A fullstop pistol. Looks familiar."
icon_state = "fullstoppistol"
inhand_icon_state = "fullstopsniper"
+ force = 12
+ attack_speed = 0.5
shotsleft = 17
fire_delay = 5
reloadtime = 1.3 SECONDS
@@ -48,6 +52,7 @@
desc = "A sniper rifle. Despite the cost and heavy regulations, you could still kill someone stealthily from a good distance with this."
icon_state = "fullstopsniper"
inhand_icon_state = "fullstopsniper"
+ force = 20
fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
zoom_amt = 10 //Long range, enough to see in front of you, but no tiles behind you.
zoomable = TRUE
@@ -67,6 +72,8 @@
desc = "An expensive pistol. Keep your hands steady. It's not over yet."
icon_state = "fullstopdeagle"
inhand_icon_state = "fullstopdeagle"
+ force = 17
+ attack_speed = 0.5
weapon_weight = WEAPON_LIGHT
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
projectile_damage_multiplier = 4
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/kcorp.dm b/code/game/objects/items/ego_weapons/non_abnormality/kcorp.dm
index d76dd9f1ee75..fcb661d05091 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/kcorp.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/kcorp.dm
@@ -95,6 +95,7 @@
inhand_icon_state = "kpistol"
lefthand_file = 'ModularTegustation/Teguicons/lc13_left.dmi'
righthand_file = 'ModularTegustation/Teguicons/lc13_right.dmi'
+ force = 8
ammo_type = /obj/item/ammo_casing/caseless/ego_kcorp
fire_delay = 5
shotsleft = 12
@@ -109,6 +110,7 @@
desc = "A lime green machinepistol used by Kcorp."
icon_state = "ksmg"
inhand_icon_state = "ksmg"
+ force = 17
fire_sound = 'sound/weapons/gun/smg/mp7.ogg'
autofire = 0.08 SECONDS
fire_delay = 1
@@ -127,6 +129,7 @@
desc = "A short grenade launcher used by Kcorp."
icon_state = "kgrenade"
inhand_icon_state = "kgrenade"
+ force = 17
ammo_type = /obj/item/ammo_casing/caseless/ego_knade
fire_delay = 7
shotsleft = 6
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/lcorp_melee.dm b/code/game/objects/items/ego_weapons/non_abnormality/lcorp_melee.dm
index 993db5eb530b..1c89e57bf9dc 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/lcorp_melee.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/lcorp_melee.dm
@@ -44,7 +44,7 @@
/obj/item/ego_weapon/city/lcorp/proc/IncreaseAttributes(mob/living/user, obj/item/egoshard/egoshard)
damtype = egoshard.damage_type
- force = (egoshard.base_damage) //base damage
+ force = egoshard.base_damage //base damage
for(var/atr in attribute_requirements)
attribute_requirements[atr] = egoshard.stat_requirement
to_chat(user, span_warning("The requirements to equip [src] have increased!"))
@@ -65,6 +65,7 @@
name = "l-corp combat baton"
icon_state = "baton"
desc = "A baton issued by L-Corp to those who cannot utilize E.G.O."
+ swingstyle = WEAPONSWING_LARGESWEEP
hitsound = 'sound/weapons/fixer/generic/baton1.ogg'
force = 22
@@ -84,6 +85,7 @@
name = "l-corp club"
icon_state = "club"
desc = "A heavy club issued by L-Corp to those who cannot utilize E.G.O."
+ swingstyle = WEAPONSWING_LARGESWEEP
hitsound = 'sound/weapons/fixer/generic/club2.ogg'
force = 35 //Still less DPS, replaces baseball bat
attack_speed = 1.6
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/lcorp_ranged.dm b/code/game/objects/items/ego_weapons/non_abnormality/lcorp_ranged.dm
index ed6ca7054c2a..7b8db61bc94a 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/lcorp_ranged.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/lcorp_ranged.dm
@@ -56,6 +56,7 @@
/obj/item/gun/ego_gun/city/lcorp/proc/IncreaseAttributes(mob/living/user, obj/item/egoshard/egoshard)
damtype = egoshard.damage_type
+ force = (egoshard.base_damage * 0.7) //70% of base damage which is to be expected of guns. Currently all guns override this with their own values.
tier = egoshard.tier
for(var/atr in attribute_requirements)
attribute_requirements[atr] = egoshard.stat_requirement
@@ -116,6 +117,8 @@
inhand_icon_state = "pistol"
special = "This weapon has pinpoint accuracy when dual wielded."
ammo_type = /obj/item/ammo_casing/caseless/lcorp/pistol
+ attack_speed = 0.5
+ force = 6
fire_delay = 10
shotsleft = 7
reloadtime = 2.1 SECONDS
@@ -134,6 +137,10 @@
damage = 11
damage_tier = list(11,20,30,55,90)
+/obj/item/gun/ego_gun/city/lcorp/pistol/IncreaseAttributes(mob/living/user, obj/item/egoshard/egoshard)
+ ..()
+ force = (egoshard.base_damage * 0.42) // 2 attacks per attack cycle due to being a pistol
+
/obj/item/gun/ego_gun/city/lcorp/automatic_pistol
name = "l-corp automatic pistol"
desc = "A rapid-fire pistol issued by L-Corp to those who cannot utilize E.G.O."
@@ -141,6 +148,8 @@
inhand_icon_state = "automatic"
w_class = WEIGHT_CLASS_NORMAL
ammo_type = /obj/item/ammo_casing/caseless/lcorp/automatic
+ attack_speed = 0.5
+ force = 6
fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
vary_fire_sound = FALSE
shotsleft = 20
@@ -157,6 +166,10 @@
damage = 2
damage_tier = list(2,4,6,9,15)
+/obj/item/gun/ego_gun/city/lcorp/automatic_pistol/IncreaseAttributes(mob/living/user, obj/item/egoshard/egoshard)
+ ..()
+ force = (egoshard.base_damage * 0.42) // 2 attacks per attack cycle due to being a pistol
+
///////////////////
//CLERK EQUIPMENT//
///////////////////
@@ -170,6 +183,8 @@
worn_icon_state = "gun"
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
+ attack_speed = 0.5
+ force = 6
w_class = WEIGHT_CLASS_NORMAL
ammo_type = /obj/item/ammo_casing/caseless/ego_clerk
burst_size = 1
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/limbus_labs.dm b/code/game/objects/items/ego_weapons/non_abnormality/limbus_labs.dm
index 110dfcdf92da..8644bc0daf7f 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/limbus_labs.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/limbus_labs.dm
@@ -6,6 +6,8 @@
inhand_icon_state = "lccb_pistol"
icon = 'icons/obj/limbus_weapons.dmi'
fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ force = 8
+ attack_speed = 0.5
weapon_weight = WEAPON_LIGHT
ammo_type = /obj/item/ammo_casing/caseless/fullstop
shotsleft = 13
@@ -19,6 +21,8 @@
icon_state = "lccb_burstpistol"
inhand_icon_state = "lccb_pistol"
icon = 'icons/obj/limbus_weapons.dmi'
+ force = 8
+ attack_speed = 0.5
fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
weapon_weight = WEAPON_LIGHT
ammo_type = /obj/item/ammo_casing/caseless/fullstop
@@ -35,6 +39,8 @@
inhand_icon_state = "lccb_magnum"
icon = 'icons/obj/limbus_weapons.dmi'
fire_sound = 'sound/weapons/gun/pistol/shot.ogg'
+ force = 8
+ attack_speed = 0.5
weapon_weight = WEAPON_HEAVY
ammo_type = /obj/item/ammo_casing/caseless/fullstop
projectile_damage_multiplier = 6 //60 damage per bullet
@@ -49,6 +55,7 @@
icon_state = "lccb_smg"
inhand_icon_state = "lccb_smg"
icon = 'icons/obj/limbus_weapons.dmi'
+ force = 14
fire_sound = 'sound/weapons/gun/smg/mp7.ogg'
ammo_type = /obj/item/ammo_casing/caseless/fullstop
spread = 30
@@ -63,6 +70,7 @@
icon_state = "lccb_shotgun"
inhand_icon_state = "lccb_shotgun"
icon = 'icons/obj/limbus_weapons.dmi'
+ force = 14
ammo_type = /obj/item/ammo_casing/caseless/thumbshell //Does 8 shells at 5 damage, total 40
projectile_damage_multiplier = 0.5 //5 damage per bullet
fire_delay = 10
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/rats.dm b/code/game/objects/items/ego_weapons/non_abnormality/rats.dm
index f3eeef022ec4..a68fdb459360 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/rats.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/rats.dm
@@ -35,7 +35,7 @@
desc = "It's a brick."
special = "Fits into an EGO belt."
icon_state = "ratbrick"
- force = 5
+ force = 6
throwforce = 50
attack_speed = 0.8
attack_verb_continuous = list("bricks", "smashes", "shatters")
@@ -87,9 +87,11 @@
return TRUE
/obj/item/gun/ego_gun/pistol/rats/afterattack(atom/target, mob/living/user, flag, params)
+ if(flag && (user.a_intent == INTENT_HARM || forced_melee)) // Don't want to take damage when just using melee
+ return ..()
if(prob(50))
to_chat(user,span_warning("You pinch your fingers in the weapon."))
user.apply_damage(10, RED_DAMAGE, null, user.run_armor_check(null, BLACK_DAMAGE))
return FALSE
- ..()
+ return ..()
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/shrimp.dm b/code/game/objects/items/ego_weapons/non_abnormality/shrimp.dm
index 58e0fba46d5f..86e68f63781b 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/shrimp.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/shrimp.dm
@@ -6,6 +6,8 @@
icon = 'ModularTegustation/Teguicons/lc13_weapons.dmi'
icon_state = "sodaminigun"
inhand_icon_state = "sodaminigun"
+ force = 31
+ attack_speed = 1.8
ammo_type = /obj/item/ammo_casing/caseless/ego_soda
weapon_weight = WEAPON_HEAVY
drag_slowdown = 3
@@ -28,6 +30,7 @@
icon = 'ModularTegustation/Teguicons/lc13_weapons.dmi'
icon_state = "sodaassault"
inhand_icon_state = "sodaassault"
+ force = 11
ammo_type = /obj/item/ammo_casing/caseless/ego_soda
weapon_weight = WEAPON_HEAVY
burst_size = 3
@@ -40,6 +43,8 @@
icon = 'ModularTegustation/Teguicons/lc13_weapons.dmi'
icon_state = "sodaminigun"
inhand_icon_state = "sodaminigun"
+ force = 105
+ attack_speed = 1.7
ammo_type = /obj/item/ammo_casing/caseless/ego_soda
weapon_weight = WEAPON_HEAVY
drag_slowdown = 2
diff --git a/code/game/objects/items/ego_weapons/non_abnormality/thumb.dm b/code/game/objects/items/ego_weapons/non_abnormality/thumb.dm
index 2459396996d0..2fe905112d80 100644
--- a/code/game/objects/items/ego_weapons/non_abnormality/thumb.dm
+++ b/code/game/objects/items/ego_weapons/non_abnormality/thumb.dm
@@ -5,7 +5,7 @@
icon_state = "thumb_soldato"
inhand_icon_state = "thumb_soldato"
force = 30
- var/attack_speed = 1.5
+ attack_speed = 1.5
ammo_type = /obj/item/ammo_casing/caseless/fullstop //Does 10 damage
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
@@ -25,7 +25,6 @@
..()
if(shotsleft < initial(shotsleft))
shotsleft += 1
- user.changeNext_move(CLICK_CD_MELEE * attack_speed)
//Capo
/obj/item/gun/ego_gun/city/thumb/capo
diff --git a/code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/joke/ego_guns.dm b/code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/joke/ego_guns.dm
index b7d13de9de7f..a252f8696d5a 100644
--- a/code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/joke/ego_guns.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/joke/ego_guns.dm
@@ -6,6 +6,7 @@
special = "Use this weapon in your hand when wearing matching armor to create food for people nearby."
icon = 'code/modules/mob/living/simple_animal/abnormality/_auxiliary_modes/joke/!icons/ego_weapons.dmi'
icon_state = "mcrib"
+ force = 6
ammo_type = /obj/item/ammo_casing/caseless/ego_mcrib
burst_size = 1
fire_delay = 10
diff --git a/code/modules/mob/living/simple_animal/abnormality/_tools/zayin/promise.dm b/code/modules/mob/living/simple_animal/abnormality/_tools/zayin/promise.dm
index 557af5c0e788..4e87618e5d53 100644
--- a/code/modules/mob/living/simple_animal/abnormality/_tools/zayin/promise.dm
+++ b/code/modules/mob/living/simple_animal/abnormality/_tools/zayin/promise.dm
@@ -51,6 +51,7 @@
I.forceMove(src)
if(prob(successrate))
SuccessEffect()
+ I.force_multiplier += 0.1
I.projectile_damage_multiplier += 0.1
I.forceMove(get_turf(src))
else
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 330ef4c3e836..42799f7639bf 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -42,6 +42,7 @@
var/semicd = 0 //cooldown handler
var/weapon_weight = WEAPON_LIGHT
var/dual_wield_spread = 24 //additional spread when dual wielding
+ var/forced_melee = FALSE //forced to melee attack. Currently only used for the ego_gun subtype
/// Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun.
var/projectile_damage_multiplier = 1
@@ -203,7 +204,7 @@
if(flag) //It's adjacent, is the user, or is on the user's person
if(target in user.contents) //can't shoot stuff inside us.
return
- if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack
+ if(!ismob(target) || user.a_intent == INTENT_HARM || forced_melee) //melee attack
return
if(target == user && user.zone_selected != BODY_ZONE_PRECISE_MOUTH) //so we can't shoot ourselves (unless mouth selected)
return
@@ -382,7 +383,7 @@
semicd = FALSE
/obj/item/gun/attack(mob/M as mob, mob/user)
- if(user.a_intent == INTENT_HARM) //Flogging
+ if(user.a_intent == INTENT_HARM || forced_melee) //Flogging
if(bayonet)
M.attackby(bayonet, user)
return
diff --git a/code/modules/projectiles/guns/ego_gun.dm b/code/modules/projectiles/guns/ego_gun.dm
index 8b659d87ea1a..2b8912926e72 100644
--- a/code/modules/projectiles/guns/ego_gun.dm
+++ b/code/modules/projectiles/guns/ego_gun.dm
@@ -29,6 +29,25 @@
/obj/item/gun/ego_gun/examine(mob/user)
. = ..()
. += EgoAttackInfo(user)
+ switch(attack_speed)
+ if(-INFINITY to 0.39)
+ . += span_notice("This weapon has a very fast attack speed.")
+
+ if(0.4 to 0.69) // nice
+ . += span_notice("This weapon has a fast attack speed.")
+
+ if(0.7 to 0.99)
+ . += span_notice("This weapon attacks slightly faster than normal.")
+
+ if(1.01 to 1.49)
+ . += span_notice("This weapon attacks slightly slower than normal.")
+
+ if(1.5 to 1.99)
+ . += span_notice("This weapon has a slow attack speed.")
+
+ if(2 to INFINITY)
+ . += span_notice("This weapon attacks extremely slow.")
+ . += GunAttackInfo(user)
if(special)
. += "[special]"
if(reloadtime)
@@ -90,6 +109,11 @@
to_chat(usr, display_text)
/obj/item/gun/ego_gun/proc/EgoAttackInfo(mob/user)
+ if(force_multiplier != 1)
+ return span_notice("It deals [round(force * force_multiplier, 0.1)] [damtype] damage in melee. (+ [(force_multiplier - 1) * 100]%)")
+ return span_notice("It deals [force] [damtype] damage in melee.")
+
+/obj/item/gun/ego_gun/proc/GunAttackInfo(mob/user)
if(chambered && chambered.BB)
if(projectile_damage_multiplier != 1)
return "Its bullets deal [round((chambered.BB.damage * projectile_damage_multiplier), 0.1)] [chambered.BB.damage_type] damage. (+ [(projectile_damage_multiplier - 1) * 100]%)"
@@ -167,8 +191,20 @@
playsound(src, 'sound/weapons/gun/general/bolt_rack.ogg', 50, TRUE)
shotsleft = initial(shotsleft)
is_reloading = FALSE
+ forced_melee = FALSE //no longer forced to resort to melee
+
+/obj/item/gun/ego_gun/attack(mob/M as mob, mob/user)
+ if(!CanUseEgo(user))
+ return FALSE
+ if(!can_shoot())
+ forced_melee = TRUE // Forces us to melee
+ return ..()
+
+//Pistols... There's really nothing attached to the default type except examine and attack speed
+/obj/item/gun/ego_gun/pistol
+ attack_speed = 0.5
+ force = 6
-//Examine text for pistols.
/obj/item/gun/ego_gun/pistol/examine(mob/user)
. = ..()
. += "This weapon fits in an ego weapon belt."
diff --git a/code/modules/projectiles/guns/ego_gun/aleph.dm b/code/modules/projectiles/guns/ego_gun/aleph.dm
index 80824a46b0d9..ae9704ae360e 100644
--- a/code/modules/projectiles/guns/ego_gun/aleph.dm
+++ b/code/modules/projectiles/guns/ego_gun/aleph.dm
@@ -8,6 +8,9 @@
icon_state = "star"
inhand_icon_state = "star"
special = "This gun scales with remaining SP."
+ force = 33
+ damtype = WHITE_DAMAGE
+ attack_speed = 0.5
ammo_type = /obj/item/ammo_casing/caseless/ego_star
weapon_weight = WEAPON_HEAVY
spread = 5
@@ -40,6 +43,8 @@
icon_state = "adoration"
inhand_icon_state = "adoration"
special = "Use in hand to swap between AOE, DOT and shotgun modes."
+ force = 56
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_adoration
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/effects/attackblob.ogg'
@@ -82,6 +87,8 @@
desc = "Having decided to trust its own intuition, the jester spake the names of everyone it had met on that path with each step it took."
icon_state = "nihil"
inhand_icon_state = "nihil"
+ force = 56
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_nihil
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/fixer/generic/energy1.ogg'
@@ -153,6 +160,8 @@
icon_state = "pink"
inhand_icon_state = "pink"
special = "This weapon has a scope, and fires projectiles with zero travel time. Damage dealt is increased when hitting targets further away. Middle mouse button click/alt click to zoom in that direction."
+ force = 56
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/pink
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/abnormalities/armyinblack/pink.ogg'
@@ -229,6 +238,7 @@
icon_state = "arcadia"
inhand_icon_state = "arcadia"
special = "Use in hand to load bullets."
+ force = 56
ammo_type = /obj/item/ammo_casing/caseless/arcadia
weapon_weight = WEAPON_HEAVY
spread = 5
@@ -264,6 +274,8 @@
desc = "You will be judged; as I have."
icon_state = "judge"
inhand_icon_state = "judge"
+ force = 56
+ damtype = WHITE_DAMAGE
weapon_weight = WEAPON_MEDIUM //Cannot be dual wielded
recoil = 2
fire_sound_volume = 30
diff --git a/code/modules/projectiles/guns/ego_gun/he.dm b/code/modules/projectiles/guns/ego_gun/he.dm
index d33f2bfb1a77..ed91db06a6ea 100644
--- a/code/modules/projectiles/guns/ego_gun/he.dm
+++ b/code/modules/projectiles/guns/ego_gun/he.dm
@@ -4,12 +4,13 @@
icon_state = "prank"
worn_icon_state = "prank"
inhand_icon_state = "prank"
+ force = 20
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_prank
weapon_weight = WEAPON_HEAVY
fire_delay = 5
shotsleft = 10
reloadtime = 1.4 SECONDS
- damtype = BLACK_DAMAGE
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
attribute_requirements = list(
TEMPERANCE_ATTRIBUTE = 40
@@ -20,6 +21,7 @@
desc = "A magnum pistol featuring excellent burst firing potential."
icon_state = "gaze"
inhand_icon_state = "gaze"
+ force = 12
ammo_type = /obj/item/ammo_casing/caseless/ego_gaze
fire_delay = 10
shotsleft = 8
@@ -40,6 +42,8 @@
special = "Use in hand to turn on homing mode. This mode fires slower, but homes in on a random target within 15 metres. \
WARNING: This feature is not accurate."
ammo_type = /obj/item/ammo_casing/caseless/ego_galaxy
+ force = 20
+ damtype = BLACK_DAMAGE
fire_delay = 15
fire_sound = 'sound/magic/wand_teleport.ogg'
weapon_weight = WEAPON_MEDIUM
@@ -72,6 +76,8 @@
special = "This weapon will sometimes jam. \
Use this weapon in hand to unjam it. \
this weapon fires faster and in a bigger burst for 15 seconds after being unjammed."
+ force = 20
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_unrequited
fire_delay = 3
burst_size = 3
@@ -143,6 +149,9 @@
icon_state = "harmony"
inhand_icon_state = "harmony"
special = "This weapon fires bouncing, piercing shots."
+ force = 30
+ damtype = WHITE_DAMAGE
+ attack_speed = 1.8
ammo_type = /obj/item/ammo_casing/caseless/ego_harmony
fire_sound = 'sound/weapons/ego/harmony1.ogg'
vary_fire_sound = FALSE
@@ -161,6 +170,7 @@
desc = "It's an old wooden longrifle."
icon_state = "transmission"
inhand_icon_state = "transmission"
+ force = 20
ammo_type = /obj/item/ammo_casing/caseless/ego_transmission
weapon_weight = WEAPON_HEAVY
fire_delay = 5
@@ -176,6 +186,8 @@
desc = "Nothing beats the classics."
icon_state = "song"
inhand_icon_state = "song"
+ force = 20
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_song
fire_sound = 'sound/weapons/gun/pistol/shot_alt.ogg'
weapon_weight = WEAPON_MEDIUM
@@ -193,6 +205,8 @@
icon_state = "songmini"
inhand_icon_state = "songmini"
special = "This weapon fires 3 pellets."
+ force = 12
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_songmini
fire_sound = 'sound/weapons/gun/revolver/shot_light.ogg'
shotsleft = 16
@@ -208,6 +222,8 @@
desc = "Hair has grown on the crossbow as if to express that the woman’s dejection will never be forgotten."
icon_state = "screamingwedge"
inhand_icon_state = "screamingwedge"
+ force = 20
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_wedge
weapon_weight = WEAPON_HEAVY
fire_delay = 10
@@ -226,6 +242,7 @@
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
special = "This weapon fires dice that deal varying amounts of damage."
+ force = 12
ammo_type = /obj/item/ammo_casing/caseless/ego_swindle
weapon_weight = WEAPON_HEAVY
fire_delay = 5
@@ -242,6 +259,8 @@
icon_state = "ringing"
inhand_icon_state = "ringing"
special = "This weapon can be used as a megaphone."
+ force = 20
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_ringing
weapon_weight = WEAPON_HEAVY
autofire = 0.15 SECONDS
@@ -279,6 +298,8 @@
icon_state = "syrinx"
inhand_icon_state = "syrinx"
special = "This weapon fires slow bullets with limited range."
+ force = 20
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_syrinx
weapon_weight = WEAPON_MEDIUM
spread = 40
@@ -296,6 +317,8 @@
desc = "Though I can't guide you... I can offer a warm embrace."
icon_state = "ardor_star"
inhand_icon_state = "ardor_star"
+ force = 30
+ attack_speed = 1.8
ammo_type = /obj/item/ammo_casing/caseless/ego_ardor
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
diff --git a/code/modules/projectiles/guns/ego_gun/special.dm b/code/modules/projectiles/guns/ego_gun/special.dm
index 150fcd4f96fd..b320dbaa869f 100644
--- a/code/modules/projectiles/guns/ego_gun/special.dm
+++ b/code/modules/projectiles/guns/ego_gun/special.dm
@@ -3,6 +3,7 @@
desc = "A gun used by shrimp corp, apparently."
icon_state = "sodarifle"
inhand_icon_state = "sodalong"
+ force = 14 // These guns don't have any stat requirements so they won't do high damage
ammo_type = /obj/item/ammo_casing/caseless/ego_shrimprifle
weapon_weight = WEAPON_HEAVY
fire_delay = 3
@@ -14,6 +15,8 @@
icon_state = "sodashotgun"
inhand_icon_state = "sodalong"
special = "This weapon fires 3 pellets."
+ force = 18
+ attack_speed = 1.3
ammo_type = /obj/item/ammo_casing/caseless/ego_shrimpshotgun
weapon_weight = WEAPON_HEAVY
fire_delay = 10
@@ -24,6 +27,7 @@
desc = "A gun used by shrimp corp, apparently."
icon_state = "sodasmg"
inhand_icon_state = "soda"
+ force = 14
ammo_type = /obj/item/ammo_casing/caseless/ego_soda
weapon_weight = WEAPON_HEAVY
spread = 8
@@ -67,6 +71,8 @@
fire_delay = 1
autofire = 0.5 SECONDS
special = "This weapon heals humans that it hits."
+ force = 56
+ damtype = BLACK_DAMAGE
weapon_weight = WEAPON_HEAVY
ammo_type = /obj/item/ammo_casing/caseless/ego_hatred
fire_sound = 'sound/abnormalities/hatredqueen/attack.ogg'
diff --git a/code/modules/projectiles/guns/ego_gun/teth.dm b/code/modules/projectiles/guns/ego_gun/teth.dm
index 397b7a1ef1ad..a1de62b1e408 100644
--- a/code/modules/projectiles/guns/ego_gun/teth.dm
+++ b/code/modules/projectiles/guns/ego_gun/teth.dm
@@ -9,6 +9,8 @@
icon_state = "match"
inhand_icon_state = "match"
special = "This weapon does AOE damage."
+ force = 23
+ attack_speed = 1.8
ammo_type = /obj/item/ammo_casing/caseless/ego_match
weapon_weight = WEAPON_HEAVY
fire_delay = 15
@@ -22,6 +24,7 @@
the weapon has high firepower despite its small size."
icon_state = "beak"
inhand_icon_state = "beak"
+ force = 14
ammo_type = /obj/item/ammo_casing/caseless/ego_beak
weapon_weight = WEAPON_MEDIUM
spread = 10
@@ -35,6 +38,7 @@
desc = "A heavy revolver that fires at a surprisingly fast rate, and is deadly accurate."
icon_state = "beakmagnum"
inhand_icon_state = "beakmagnum"
+ force = 8
special = "This weapon has pinpoint accuracy when dual wielded."
ammo_type = /obj/item/ammo_casing/caseless/ego_beakmagnum
fire_delay = 10
@@ -51,6 +55,8 @@
icon_state = "noise"
inhand_icon_state = "noise"
special = "This weapon fires 5 pellets."
+ force = 14
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_noise
weapon_weight = WEAPON_HEAVY
fire_delay = 10
@@ -63,6 +69,8 @@
desc = "A classic blue revolver, that gives you feelings of loneliness."
icon_state = "solitude"
inhand_icon_state = "solitude"
+ force = 8
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_solitude
fire_delay = 10
shotsleft = 5
@@ -77,6 +85,8 @@
When throbbing emotions surge up from time to time, it's best to simply cover the face."
icon_state = "shy"
inhand_icon_state = "shy"
+ force = 8
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_shy
fire_sound = 'sound/effects/meatslap.ogg'
vary_fire_sound = FALSE
@@ -89,6 +99,8 @@
desc = "And when the crying stops, dawn will break."
icon_state = "dream"
inhand_icon_state = "dream"
+ force = 14
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_dream
weapon_weight = WEAPON_HEAVY
fire_sound = "dreamy_gun"
@@ -99,12 +111,13 @@
desc = "The pain of creation! The pain! The pain!"
icon_state = "page"
inhand_icon_state = "page"
+ force = 14
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_page
weapon_weight = WEAPON_HEAVY
fire_delay = 5
shotsleft = 10
reloadtime = 1.4 SECONDS
- damtype = BLACK_DAMAGE
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
/obj/item/gun/ego_gun/snapshot
@@ -113,6 +126,8 @@
icon_state = "snapshot"
inhand_icon_state = "snapshot"
special = "This weapon fires a hitscan beam."
+ force = 14
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_snapshot
weapon_weight = WEAPON_HEAVY
fire_delay = 10
@@ -124,11 +139,12 @@
icon_state = "wishing_cairn"
inhand_icon_state = "wishing_cairn"
special = "This weapon has a combo system with a short range."
+ force = 14
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_wishing
weapon_weight = WEAPON_HEAVY
fire_delay = 3
burst_size = 2
- damtype = BLACK_DAMAGE
fire_sound = 'sound/abnormalities/pagoda/throw.ogg'
var/ammo2 = /obj/item/ammo_casing/caseless/ego_wishing2
@@ -148,6 +164,7 @@
icon_state = "aspiration"
inhand_icon_state = "aspiration"
special = "This weapon fires a hitscan beam at the cost of health. \n Upon hitting an ally, this weapon heals the target,"
+ force = 14
ammo_type = /obj/item/ammo_casing/caseless/ego_aspiration
weapon_weight = WEAPON_HEAVY
autofire = 0.5 SECONDS
@@ -170,6 +187,8 @@
inhand_x_dimension = 64
inhand_y_dimension = 64
special = "This weapon fires 4 pellets."
+ force = 18
+ attack_speed = 1.3
ammo_type = /obj/item/ammo_casing/caseless/ego_patriot
weapon_weight = WEAPON_HEAVY
fire_delay = 12
diff --git a/code/modules/projectiles/guns/ego_gun/waw.dm b/code/modules/projectiles/guns/ego_gun/waw.dm
index 4dafcdf3dbf8..e14e57e5746e 100644
--- a/code/modules/projectiles/guns/ego_gun/waw.dm
+++ b/code/modules/projectiles/guns/ego_gun/waw.dm
@@ -4,6 +4,9 @@
icon_state = "correctional"
inhand_icon_state = "correctional"
special = "This weapon fires 6 pellets."
+ force = 33
+ damtype = BLACK_DAMAGE
+ attack_speed = 1.3
ammo_type = /obj/item/ammo_casing/caseless/ego_correctional
weapon_weight = WEAPON_HEAVY
fire_delay = 7
@@ -22,13 +25,13 @@
The projectiles relive the legacy of the kingdom as they travel toward the target."
icon_state = "hornet"
inhand_icon_state = "hornet"
+ force = 28
ammo_type = /obj/item/ammo_casing/caseless/ego_hornet
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/gun/rifle/leveraction.ogg'
fire_delay = 2
shotsleft = 10
reloadtime = 1.4 SECONDS
- damtype = RED_DAMAGE
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 80
)
@@ -41,6 +44,8 @@
icon_state = "hatred"
inhand_icon_state = "hatred"
special = "This weapon heals humans that it hits."
+ force = 28
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_hatred
weapon_weight = WEAPON_HEAVY
fire_delay = 15
@@ -51,7 +56,7 @@
JUSTICE_ATTRIBUTE = 60
)
-/obj/item/gun/ego_gun/hatred/EgoAttackInfo(mob/user)
+/obj/item/gun/ego_gun/hatred/GunAttackInfo(mob/user)
if(chambered && chambered.BB)
return "Its bullets deal [chambered.BB.damage] randomly chosen damage."
return
@@ -77,6 +82,8 @@
special = "This weapon fires extremely slowly. \
This weapon pierces all targets. \
This weapon gets a firespeed bonus when wearing the matching armor."
+ force = 28
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_magicbullet
weapon_weight = WEAPON_HEAVY
fire_delay = 30 //Put on the armor, jackass.
@@ -115,6 +122,8 @@
icon_state = "solemnlament"
inhand_icon_state = "solemnlament"
special = "Firing both solemn lament and solemn vow at the same time will increase damage by 1.5x"
+ force = 17
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_solemnlament
fire_delay = 5
shotsleft = 18
@@ -150,6 +159,8 @@
icon_state = "solemnvow"
inhand_icon_state = "solemnvow"
special = "Firing both solemn lament and solemn vow at the same time will increase damage by 1.5x"
+ force = 17
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_solemnvow
fire_delay = 5
shotsleft = 18
@@ -183,6 +194,7 @@
desc = "Courtesy of the 16th Ego rifleman's brigade."
icon_state = "loyalty"
inhand_icon_state = "loyalty"
+ force = 28
ammo_type = /obj/item/ammo_casing/caseless/ego_loyalty
weapon_weight = WEAPON_HEAVY
spread = 26
@@ -202,6 +214,8 @@
icon_state = "executive"
inhand_icon_state = "executive"
special = "This gun scales with justice."
+ force = 12
+ damtype = PALE_DAMAGE
burst_size = 1
fire_delay = 5
shotsleft = 10
@@ -220,6 +234,7 @@
desc = "With steel in one hand and gunpowder in the other, there's nothing to fear in this place."
icon_state = "crimsonscar"
inhand_icon_state = "crimsonscar"
+ force = 17
ammo_type = /obj/item/ammo_casing/caseless/ego_crimson
weapon_weight = WEAPON_MEDIUM
special = "This weapon fires 3 pellets."
@@ -238,6 +253,8 @@
icon_state = "ecstasy"
inhand_icon_state = "ecstasy"
special = "This weapon fires slow bullets with limited range."
+ force = 28
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_ecstasy
weapon_weight = WEAPON_MEDIUM
spread = 40
@@ -256,6 +273,7 @@
icon_state = "praetorian"
inhand_icon_state = "executive"
special = "This weapon fires IFF bullets."
+ force = 28
ammo_type = /obj/item/ammo_casing/caseless/ego_praetorian
fire_sound = 'sound/weapons/gun/pistol/tp17.ogg'
autofire = 0.12 SECONDS
@@ -273,6 +291,8 @@
icon_state = "magic_pistol"
inhand_icon_state = "magic_pistol"
special = "This weapon pierces all targets. This weapon fires faster with the matching armor"
+ force = 17
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_magicpistol
fire_delay = 6
shotsleft = 7
@@ -303,6 +323,7 @@
desc = "There are no clocks to alert the arrival times."
icon_state = "laststop"
inhand_icon_state = "laststop"
+ force = 17
ammo_type = /obj/item/ammo_casing/caseless/ego_laststop
weapon_weight = WEAPON_HEAVY
fire_delay = 5
@@ -318,6 +339,7 @@
desc = "Go ahead and rattle 'em boys."
icon_state = "intentions"
inhand_icon_state = "intentions"
+ force = 17
ammo_type = /obj/item/ammo_casing/caseless/ego_intentions
weapon_weight = WEAPON_MEDIUM
spread = 40
@@ -335,6 +357,8 @@
The arrowhead is dull and sprouts flowers of vivid color wherever it strikes."
icon_state = "aroma"
inhand_icon_state = "aroma"
+ force = 28
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_aroma
weapon_weight = WEAPON_HEAVY
fire_delay = 25
@@ -350,6 +374,8 @@
icon_state = "assonance"
inhand_icon_state = "assonance"
special = "This weapon fires a hitscan beam. \nUpon hitting an enemy, this weapon heals a nearby Discord weapon user."
+ force = 28
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_assonance
weapon_weight = WEAPON_HEAVY
fire_delay = 5
@@ -369,7 +395,7 @@
inhand_icon_state = "featherofhonor"
ammo_type = /obj/item/ammo_casing/caseless/ego_feather
weapon_weight = WEAPON_HEAVY
- special = "This weapon deals 42 white in melee."
+ special = "This weapon is highly effective in melee."
force = 42
damtype = WHITE_DAMAGE
fire_delay = 12
@@ -383,6 +409,8 @@
desc = "A chunk of the naked nest inigrated with a launching mechanism."
icon_state = "exuviae"
inhand_icon_state = "exuviae"
+ force = 33
+ attack_speed = 1.3
ammo_type = /obj/item/ammo_casing/caseless/ego_exuviae
weapon_weight = WEAPON_HEAVY
special = "Upon hit the targets RED vulnerability is increased by 0.2."
@@ -401,6 +429,8 @@
icon_state = "warring"
inhand_icon_state = "warring"
special = "This weapon can unleash a special attack by loading a second arrow."
+ force = 28
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_warring
weapon_weight = WEAPON_HEAVY
fire_delay = 0//it caused some jank, like failing to charge after the do-after
@@ -475,8 +505,12 @@
desc = "Time for a feast! Enjoy the blood-red night imbued with madness to your heart’s content!"
icon_state = "banquet"
inhand_icon_state = "banquet"
- special = "This weapon uses HP to fire."
+ special = "This weapon uses HP to reload and heals you on a melee hit."
+ force = 36
+ damtype = BLACK_DAMAGE
+ attack_speed = 1.8
ammo_type = /obj/item/ammo_casing/caseless/ego_banquet
+ weapon_weight = WEAPON_MEDIUM
fire_delay = 13
shotsleft = 7
reloadtime = 1.6 SECONDS
@@ -486,12 +520,32 @@
TEMPERANCE_ATTRIBUTE = 60
)
-/obj/item/gun/ego_gun/banquet/before_firing(atom/target,mob/user)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.adjustBruteLoss(15)
+/obj/item/gun/ego_gun/banquet/attack(mob/living/target, mob/living/carbon/human/user)
+ if(!CanUseEgo(user))
+ return
+ if(!(target.status_flags & GODMODE) && target.stat != DEAD)
+ var/heal_amt = force*0.10
+ if(isanimal(target))
+ var/mob/living/simple_animal/S = target
+ if(S.damage_coeff.getCoeff(damtype) > 0)
+ heal_amt *= S.damage_coeff.getCoeff(damtype)
+ else
+ heal_amt = 0
+ user.adjustBruteLoss(-heal_amt)
..()
- return
+
+/obj/item/gun/ego_gun/banquet/reload_ego(mob/user)
+ is_reloading = TRUE
+ to_chat(user,span_notice("You start loading a new magazine."))
+ playsound(src, 'sound/weapons/gun/general/slide_lock_1.ogg', 50, TRUE)
+ if(do_after(user, reloadtime, src)) //gotta reload
+ playsound(src, 'sound/weapons/gun/general/bolt_rack.ogg', 50, TRUE)
+ if(isliving(user))
+ var/mob/living/the_gunner = user
+ the_gunner.adjustBruteLoss(3 * (initial(shotsleft) - shotsleft)) // Lose 3 * shots spent in hp
+ shotsleft = initial(shotsleft)
+ is_reloading = FALSE
+ forced_melee = FALSE //no longer forced to resort to melee
/obj/item/gun/ego_gun/blind_rage
name = "Blind Fire"
@@ -499,6 +553,8 @@
icon_state = "blind_gun"
special = "This weapon fires burning bullets. Watch out for friendly fire!"
ammo_type = /obj/item/ammo_casing/caseless/ego_blind_rage
+ force = 28
+ damtype = BLACK_DAMAGE
weapon_weight = WEAPON_HEAVY
fire_delay = 8
shotsleft = 8
@@ -515,6 +571,8 @@
The arrowhead is dull and sprouts flowers of vivid color wherever it strikes."
icon_state = "wife"
inhand_icon_state = "wife"
+ force = 28
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_bride
weapon_weight = WEAPON_HEAVY
fire_delay = 5
@@ -525,11 +583,13 @@
FORTITUDE_ATTRIBUTE = 80
)
-/obj/item/gun/ego_gun/hookah
+/obj/item/gun/ego_gun/hookah //TODO: Seems like lots of these are placeholder. remind me to finish this weapon if you are reading this.
name = "lethargy"
desc = "Courtesy of the 16th Ego rifleman's brigade."
icon_state = "loyalty"
inhand_icon_state = "loyalty"
+ force = 20
+ damtype = PALE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_hookah
weapon_weight = WEAPON_HEAVY
spread = 20
@@ -548,6 +608,8 @@
desc = "If no one had come in to get me, I would have stayed in that room, not even realizing the passing time."
icon_state = "innocence_gun"
inhand_icon_state = "innocence_gun"
+ force = 17
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_innocence
fire_sound = 'sound/abnormalities/orangetree/ding.ogg'
vary_fire_sound = TRUE
@@ -567,6 +629,8 @@
worn_icon_state = "hypocrisy"
special = "Use this weapon in hand to place a trap that inflicts \
50 RED damage and alerts the user of the area it was triggered."
+ force = 28
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_hypocrisy
weapon_weight = WEAPON_HEAVY
fire_delay = 25
diff --git a/code/modules/projectiles/guns/ego_gun/zayin.dm b/code/modules/projectiles/guns/ego_gun/zayin.dm
index 6c743d7f1201..a531e708c45e 100644
--- a/code/modules/projectiles/guns/ego_gun/zayin.dm
+++ b/code/modules/projectiles/guns/ego_gun/zayin.dm
@@ -1,9 +1,11 @@
+// All zayin pistols use the default 6 force for ego_gun pistols
/obj/item/gun/ego_gun/pistol/tough
name = "tough pistol"
desc = "A glock reminiscent of a certain detective who fought evil for 25 years, losing hair as time went by."
special = "Use this weapon in your hand when wearing matching armor to turn others nearby bald."
icon_state = "bald"
inhand_icon_state = "bald"
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_tough
burst_size = 1
fire_delay = 10
@@ -173,6 +175,7 @@
special = "If you are wearing the matching armor, fired shots will heal friendlies on hit."
icon_state = "nightshade"
inhand_icon_state = "nightshade"
+ damtype = BLACK_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_nightshade
burst_size = 1
fire_delay = 10
@@ -264,6 +267,7 @@
desc = "A pistol painted in a refreshing orange. Whenever this EGO is used, a faint scent of orange wafts through the air."
icon_state = "oceanic"
inhand_icon_state = "oceanic"
+ damtype = WHITE_DAMAGE
ammo_type = /obj/item/ammo_casing/caseless/ego_oceanic
burst_size = 1
fire_delay = 5
diff --git a/code/modules/spells/ability_types/realized.dm b/code/modules/spells/ability_types/realized.dm
index 57c5423d604e..f89b7f2b7761 100644
--- a/code/modules/spells/ability_types/realized.dm
+++ b/code/modules/spells/ability_types/realized.dm
@@ -1018,16 +1018,8 @@
return FALSE
if(!is_type_in_list(I, ego_list))
return FALSE
- if(istype(I, /obj/item/ego_weapon))
- var/obj/item/ego_weapon/egoweapon = I
- if(egoweapon.force_multiplier < 1.2)
- to_chat(user, span_notice("You must use a weapon with a damage multiplier of 20% or higher!"))
- return FALSE
- Reload(I, user)
- return TRUE
- if(istype(I, /obj/item/gun/ego_gun))
- var/obj/item/gun/ego_gun/egogun = I
- if(egogun.projectile_damage_multiplier < 1.2)
+ if(istype(I, /obj/item/ego_weapon) || istype(I, /obj/item/gun/ego_gun))
+ if(I.force_multiplier < 1.2)
to_chat(user, span_notice("You must use a weapon with a damage multiplier of 20% or higher!"))
return FALSE
Reload(I, user)
@@ -1069,6 +1061,7 @@
else if(ispath(ego, /obj/item/gun/ego_gun))
var/obj/item/gun/ego_gun/egogun = new ego(get_turf(user))
+ egogun.force_multiplier = 1.20
egogun.projectile_damage_multiplier = 1.20
egogun.name = "shimmering [egogun.name]"
egogun.set_light(3, 6, "#D4FAF37")