Resolves conflicts.

This commit is contained in:
Desolate
2018-10-11 05:36:22 -05:00
486 changed files with 16260 additions and 10647 deletions
+20 -1
View File
@@ -85,7 +85,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "syringe_kit"
materials = list(MAT_METAL=30000)
materials = list(MAT_METAL = 30000)
throwforce = 2
w_class = WEIGHT_CLASS_TINY
throw_speed = 4
@@ -96,11 +96,14 @@
var/multiple_sprites = 0
var/caliber
var/multiload = 1
var/list/initial_mats //For calculating refund values.
/obj/item/ammo_box/New()
for(var/i in 1 to max_ammo)
stored_ammo += new ammo_type(src)
update_icon()
initial_mats = materials.Copy()
update_mat_value()
/obj/item/ammo_box/Destroy()
QDEL_LIST(stored_ammo)
@@ -115,6 +118,7 @@
stored_ammo -= b
if(keep)
stored_ammo.Insert(1,b)
update_mat_value()
return b
/obj/item/ammo_box/proc/give_round(obj/item/ammo_casing/R, replace_spent = 0)
@@ -125,6 +129,7 @@
if(stored_ammo.len < max_ammo)
stored_ammo += R
R.loc = src
update_mat_value()
return 1
//for accessibles magazines (e.g internal ones) when full, start replacing spent ammo
else if(replace_spent)
@@ -135,6 +140,7 @@
stored_ammo += R
R.loc = src
update_mat_value()
return 1
return 0
@@ -184,6 +190,19 @@
icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]"
desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!"
/obj/item/ammo_box/proc/update_mat_value()
var/num_ammo = 0
for(var/B in stored_ammo)
var/obj/item/ammo_casing/AC = B
if(!AC.BB) //Skip any casing which are empty
continue
num_ammo++
for(var/M in initial_mats) //In case we have multiple types of materials
var/materials_per = initial_mats[M] / max_ammo
var/value = max(materials_per * num_ammo, 2000) //Enforce a minimum of 2000 units even if empty.
materials[M] = value
//Behavior for magazines
/obj/item/ammo_box/magazine/proc/ammo_count()
return stored_ammo.len
@@ -87,7 +87,7 @@
desc = "A .45 rubber bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/weakbullet4
projectile_type = /obj/item/projectile/bullet/midbullet_r
/obj/item/ammo_casing/c45
desc = "A .45 bullet casing."
@@ -67,6 +67,18 @@
fire_sound = 'sound/weapons/laser3.ogg'
e_cost = 125
/obj/item/ammo_casing/energy/immolator/strong
projectile_type = /obj/item/projectile/beam/immolator/strong
e_cost = 125
select_name = "precise"
/obj/item/ammo_casing/energy/immolator/scatter
projectile_type = /obj/item/projectile/beam/immolator/weak
e_cost = 125
pellets = 6
variance = 25
select_name = "scatter"
/obj/item/ammo_casing/energy/electrode
projectile_type = /obj/item/projectile/energy/electrode
select_name = "stun"
@@ -208,12 +208,16 @@
caliber = ".45"
max_ammo = 8
multiple_sprites = 1
/obj/item/ammo_box/magazine/m45/enforcer45
name = "handgun magazine (.45)"
icon_state = "enforcer"
ammo_type = /obj/item/ammo_casing/rubber45
/obj/item/ammo_box/magazine/m45/enforcer45/update_icon()
/obj/item/ammo_box/magazine/enforcer
name = "handgun magazine (9mm)"
icon_state = "enforcer"
ammo_type = /obj/item/ammo_casing/rubber9mm
max_ammo = 8
multiple_sprites = 1
caliber = "9mm"
/obj/item/ammo_box/magazine/enforcer/update_icon()
..()
overlays.Cut()
@@ -221,21 +225,21 @@
if(ammo && is_rubber())
overlays += image('icons/obj/ammo.dmi', icon_state = "enforcer-r")
/obj/item/ammo_box/magazine/m45/enforcer45/examine(mob/user, var/distance)
/obj/item/ammo_box/magazine/enforcer/examine(mob/user, var/distance)
..()
if(distance <= 2)
to_chat(user, "It seems to be loaded with [is_rubber() ? "rubber" : "lethal"] bullets.")//only can see the topmost one.
/obj/item/ammo_box/magazine/m45/enforcer45/proc/is_rubber()//if the topmost bullet is a rubber one
/obj/item/ammo_box/magazine/enforcer/proc/is_rubber()//if the topmost bullet is a rubber one
var/ammo = ammo_count()
if(!ammo)
return 0
if(istype(contents[contents.len], /obj/item/ammo_casing/rubber45))
if(istype(contents[contents.len], /obj/item/ammo_casing/rubber9mm))
return 1
return 0
/obj/item/ammo_box/magazine/m45/enforcer45/lethal
ammo_type = /obj/item/ammo_casing/c45
/obj/item/ammo_box/magazine/enforcer/lethal
ammo_type = /obj/item/ammo_casing/c9mm
/obj/item/ammo_box/magazine/wt550m9
name = "wt550 magazine (4.6x30mm)"
@@ -125,6 +125,19 @@
origin_tech = "combat=4;magnets=4;powerstorage=3"
shaded_charge = 1
/obj/item/gun/energy/immolator/multi
name = "multi lens immolator cannon"
desc = "A large laser cannon, similar to the Immolator Laser, with toggleable firemodes. It is frequently used by military-like forces through Nanotrasen."
icon_state = "multilensimmolator"
ammo_type = list(/obj/item/ammo_casing/energy/immolator/strong, /obj/item/ammo_casing/energy/immolator/scatter)
origin_tech = "combat=5;magnets=5;powerstorage=4"
/obj/item/gun/energy/immolator/multi/update_icon()
..()
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
var/append = shot.select_name
overlays += image(icon = icon, icon_state = "multilensimmolator-[append]")
////////Laser Tag////////////////////
/obj/item/gun/energy/laser/bluetag
@@ -65,6 +65,11 @@
ammo_x_offset = 1
shaded_charge = 1
/obj/item/gun/energy/gun/blueshield/pdw9
name = "PDW-9 taser pistol"
desc = "A military grade sidearm, used by many militia forces throughout the local sector."
icon_state = "pdw9pistol"
/obj/item/gun/energy/gun/turret
name = "hybrid turret gun"
desc = "A heavy hybrid energy cannon with two settings: Stun and kill."
+3
View File
@@ -23,6 +23,9 @@
processing_objects.Remove(src)
return ..()
/obj/item/gun/medbeam/handle_suicide()
return
/obj/item/gun/medbeam/dropped(mob/user)
..()
LoseTarget()
@@ -257,7 +257,7 @@
/obj/item/gun/projectile/automatic/lasercarbine
name = "\improper IK-60 Laser Carbine"
desc = "An experimental carbine. Uses encased laser projectors as ammunition."//we need to uncouple the toroidal resistance dejammers
desc = "A short, compact carbine like rifle, relying more on battery cartridges rather than a built in power cell. Utilized by the Nanotrasen Navy for combat operations."
icon_state = "lasercarbine"
item_state = "laser"
w_class = WEIGHT_CLASS_NORMAL
@@ -27,15 +27,27 @@
can_suppress = 0
/obj/item/gun/projectile/automatic/pistol/enforcer
name = "Enforcer .45"
name = "Enforcer"
desc = "A pistol of modern design."
icon_state = "enforcer_grey"
force = 10
mag_type = /obj/item/ammo_box/magazine/m45/enforcer45
mag_type = /obj/item/ammo_box/magazine/enforcer
can_suppress = TRUE
unique_reskin = TRUE
can_flashlight = TRUE
/obj/item/gun/projectile/automatic/pistol/enforcer/New()
..()
options["Grey slide"] = "enforcer_grey"
options["Red slide"] = "enforcer_red"
options["Green slide"] = "enforcer_green"
options["Tan slide"] = "enforcer_tan"
options["Black slide"] = "enforcer_black"
options["Green Handle"] = "enforcer_greengrip"
options["Tan Handle"] = "enforcer_tangrip"
options["Red Handle"] = "enforcer_redgrip"
options["Cancel"] = null
/obj/item/gun/projectile/automatic/pistol/enforcer/update_icon()
..()
if(current_skin)
@@ -54,17 +66,11 @@
/obj/item/gun/projectile/automatic/pistol/enforcer/ui_action_click()
toggle_gunlight()
/obj/item/gun/projectile/automatic/pistol/enforcer/New()
/obj/item/gun/projectile/automatic/pistol/enforcer/lethal
/obj/item/gun/projectile/automatic/pistol/enforcer/lethal/New()
magazine = new/obj/item/ammo_box/magazine/enforcer/lethal
..()
options["Grey slide"] = "enforcer_grey"
options["Red slide"] = "enforcer_red"
options["Green slide"] = "enforcer_green"
options["Tan slide"] = "enforcer_tan"
options["Black slide"] = "enforcer_black"
options["Green Handle"] = "enforcer_greengrip"
options["Tan Handle"] = "enforcer_tangrip"
options["Red Handle"] = "enforcer_redgrip"
options["Cancel"] = null
/obj/item/gun/projectile/automatic/pistol/deagle
name = "desert eagle"
@@ -42,8 +42,8 @@
..()
/obj/item/gun/projectile/automatic/toy/pistol/enforcer
name = "Enforcer trainer"
desc = "A foam version of the Enforcer meant to be used for training new caddets who can't be trusted with rubber bullets."
name = "Foam Enforcer"
desc = "A foam shooting version of the Enforcer meant to be used for training new caddets who can't be trusted with rubber bullets."
icon_state = "enforcer"
mag_type = /obj/item/ammo_box/magazine/toy/enforcer
can_flashlight = TRUE
+7 -4
View File
@@ -7,7 +7,7 @@
anchored = 1 //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots.
flags = ABSTRACT
pass_flags = PASSTABLE
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
hitsound = 'sound/weapons/pierce.ogg'
var/hitsound_wall = ""
pressure_resistance = INFINITY
@@ -28,16 +28,17 @@
var/speed = 1 //Amount of deciseconds it takes for projectile to travel
var/Angle = 0
var/spread = 0 //amount (in degrees) of projectile spread
var/legacy = 0 //legacy projectile system
var/legacy = FALSE //legacy projectile system
animate_movement = 0
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
var/projectile_type = "/obj/item/projectile"
var/range = 50 //This will de-increment every step. When 0, it will delete the projectile.
var/is_reflectable = FALSE // Can it be reflected or not?
var/alwayslog = FALSE // ALWAYS log this projectile on hit even if it doesn't hit a living target. Useful for AOE explosion / EMP.
//Effects
var/stun = 0
var/weaken = 0
@@ -68,6 +69,8 @@
/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone)
var/turf/target_loca = get_turf(target)
if(alwayslog)
add_attack_logs(firer, target, "Shot with a [type]")
if(!isliving(target))
return 0
var/mob/living/L = target
@@ -121,7 +124,7 @@
reagent_note += R.id + " ("
reagent_note += num2text(R.volume) + ") "
has_reagents = TRUE
if(!log_override && firer && original)
if(!log_override && firer && !alwayslog)
if(has_reagents)
add_attack_logs(firer, L, "Shot with a [type] (containing [reagent_note])")
else
@@ -119,6 +119,16 @@
/obj/item/projectile/beam/immolator
name = "immolation beam"
/obj/item/projectile/beam/immolator/strong
name = "heavy immolation beam"
damage = 45
icon_state = "heavylaser"
/obj/item/projectile/beam/immolator/weak
name = "light immolation beam"
damage = 8
icon_state = "scatterlaser"
/obj/item/projectile/beam/immolator/on_hit(var/atom/target, var/blocked = 0)
. = ..()
if(istype(target, /mob/living/carbon))
@@ -123,6 +123,10 @@
damage = 20
stamina = 65 //two rounds from the c20r knocks people down
/obj/item/projectile/bullet/midbullet_r
damage = 5
stamina = 75 //Still two rounds to knock people down
/obj/item/projectile/bullet/midbullet2
damage = 25
+10 -4
View File
@@ -2,43 +2,46 @@
name = "ion bolt"
icon_state = "ion"
damage = 0
alwayslog = TRUE
damage_type = BURN
nodamage = 1
flag = "energy"
/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0)
..()
empulse(target, 1, 1, 1)
empulse(target, 1, 1, 1, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/ion/weak
/obj/item/projectile/ion/weak/on_hit(atom/target, blocked = 0)
..()
empulse(target, 0, 0, 1)
empulse(target, 0, 0, 1, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
damage = 50
alwayslog = TRUE
flag = "bullet"
/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0)
..()
explosion(target, -1, 0, 2)
explosion(target, -1, 0, 2, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/bullet/a40mm
name ="40mm grenade"
desc = "USE A WEEL GUN"
icon_state= "bolter"
alwayslog = TRUE
damage = 60
flag = "bullet"
/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
..()
explosion(target, -1, 0, 2, 1, 0, flame_range = 3)
explosion(target, -1, 0, 2, 1, 0, flame_range = 3, cause = "[type] fired by [key_name(firer)]")
return 1
/obj/item/projectile/temp
@@ -229,6 +232,7 @@
name ="explosive slug"
damage = 25
weaken = 5
alwayslog = TRUE
/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = 0)
..()
@@ -276,6 +280,7 @@
icon_state = "bluespace"
damage = 0
nodamage = 1
alwayslog = TRUE
var/teleport_target = null
/obj/item/projectile/energy/teleport/New(loc, tele_target)
@@ -289,6 +294,7 @@
do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon
else
do_teleport(target, target, 15) //Otherwise it just warps you off somewhere.
add_attack_logs(firer, target, "Shot with a [type] [teleport_target ? "(Destination: [teleport_target])" : ""]")
/obj/item/projectile/snowball
name = "snowball"