mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Resolves conflicts.
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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,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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user