Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 2/17/2018_make_AI_great_again

This commit is contained in:
Neerti
2018-04-03 22:16:16 -04:00
865 changed files with 31196 additions and 24991 deletions
@@ -50,6 +50,7 @@
/obj/item/ammo_magazine/s38/rubber
name = "speedloader (.38 rubber)"
icon_state = "T38"
ammo_type = /obj/item/ammo_casing/a38r
/obj/item/ammo_magazine/s38/emp
@@ -493,6 +494,23 @@
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/s44
name = "speedloader (.44)"
icon_state = "44"
ammo_type = /obj/item/ammo_casing/a44
matter = list(DEFAULT_WALL_MATERIAL = 1260) //metal costs are very roughly based around 1 .45 casing = 75 metal
caliber = ".44"
max_ammo = 6
multiple_sprites = 1
/obj/item/ammo_magazine/s44/empty
initial_ammo = 0
/obj/item/ammo_magazine/s44/rubber
name = "speedloader (.44 rubber)"
icon_state = "R44"
ammo_type = /obj/item/ammo_casing/a44r
///////// 7.62mm /////////
/obj/item/ammo_magazine/m762
@@ -59,6 +59,12 @@
caliber = ".44"
projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a44r
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
caliber = ".44"
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/*
* .75 (aka Gyrojet Rockets, aka admin abuse)
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/effect/projectile
icon = 'icons/effects/projectiles.dmi'
icon_state = "bolt"
layer = 20
plane = ABOVE_PLANE
/obj/effect/projectile/New(var/turf/location)
if(istype(location))
+17 -6
View File
@@ -18,7 +18,7 @@
if(propname == "mode_name")
name = propvalue
else if(isnull(propvalue))
if(isnull(propvalue))
settings[propname] = gun.vars[propname] //better than initial() as it handles list vars like burst_accuracy
else
settings[propname] = propvalue
@@ -58,6 +58,7 @@
var/move_delay = 1
var/fire_sound = 'sound/weapons/Gunshot.ogg'
var/fire_sound_text = "gunshot"
var/fire_anim = null
var/recoil = 0 //screen shake
var/silenced = 0
var/muzzle_flash = 3
@@ -379,10 +380,13 @@
if(one_handed_penalty >= 20)
to_chat(user, "<span class='warning'>You struggle to keep \the [src] pointed at the correct position with just one hand!</span>")
if(reflex)
admin_attack_log(user, target, attacker_message = "fired [src] by reflex.", victim_message = "triggered a reflex shot from [src].", admin_message = "shot [target], who triggered gunfire ([src]) by reflex)")
var/target_for_log
if(ismob(target))
target_for_log = target
else
admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
target_for_log = "[target.name]"
add_attack_logs(user,target_for_log,"Fired gun [src.name] ([reflex ? "REFLEX" : "MANUAL"])")
//update timing
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
@@ -454,9 +458,13 @@
target = targloc
//pointblank = 0
log_and_message_admins("Fired [src].")
var/target_for_log
if(ismob(target))
target_for_log = target
else
target_for_log = "[target.name]"
//admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
add_attack_logs("Unmanned",target_for_log,"Fired [src.name]")
//update timing
next_fire_time = world.time + fire_delay
@@ -491,6 +499,9 @@
//called after successfully firing
/obj/item/weapon/gun/proc/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0)
if(fire_anim)
flick(fire_anim, src)
if(silenced)
if(reflex)
user.visible_message(
@@ -99,7 +99,7 @@
fire_delay = 20
w_class = ITEMSIZE_LARGE
// one_handed_penalty = 90 // The thing's heavy and huge.
accuracy = 3
accuracy = 45
charge_cost = 600
/obj/item/weapon/gun/energy/lasercannon/mounted
@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/gun
name = "energy gun"
desc = "Another bestseller of Lawson Arms and the FTU, the LAEP90 Perun is a versatile energy based sidearm, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill."
desc = "Another bestseller of Lawson Arms and "+TSC_HEPH+", the LAEP90 Perun is a versatile energy based sidearm, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill."
icon_state = "energystun100"
item_state = null //so the human update icon uses the icon_state instead.
fire_delay = 10 // Handguns should be inferior to two-handed weapons.
@@ -64,4 +64,4 @@
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="nucgunstun", charge_cost = 240),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="nucgunkill", charge_cost = 480),
)
)
@@ -3,6 +3,7 @@
desc = "The NT Mk60 EW Halicon is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT. Not the best of its type."
icon_state = "ionrifle"
item_state = "ionrifle"
wielded_item_state = "ionrifle-wielded"
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4)
w_class = ITEMSIZE_LARGE
force = 10
@@ -33,7 +34,6 @@
charge_cost = 300
projectile_type = /obj/item/projectile/energy/phase
/obj/item/weapon/gun/energy/decloner
name = "biological demolecularisor"
desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements."
@@ -52,9 +52,9 @@
var/mob/living/L = hit_atom
//unfortuately we don't know where the dart will actually hit, since that's done by the parent.
if(L.can_inject() && syringe.reagents)
var/reagent_log = syringe.reagents.get_reagents()
syringe.reagents.trans_to_mob(L, 15, CHEM_BLOOD)
admin_inject_log(thrower, L, src, reagent_log, 15, violent=1)
var/contained = syringe.reagents.get_reagents()
var/trans = syringe.reagents.trans_to_mob(L, 15, CHEM_BLOOD)
add_attack_logs(thrower,L,"Shot with [src.name] containing [contained], trasferred [trans] units")
syringe.break_syringe(iscarbon(hit_atom)? hit_atom : null)
syringe.update_icon()
@@ -53,6 +53,8 @@
name = "assault rifle"
desc = "The rugged STS-35 is a durable automatic weapon of a make popular on the frontier worlds. Uses 5.45mm rounds."
icon_state = "arifle"
item_state = "arifle"
wielded_item_state = "arifle-wielded"
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
@@ -109,6 +111,7 @@
desc = "The Z8 Bulldog is an older model designated marksman rifle, made by the now defunct Zendai Foundries. Makes you feel like a space marine when you hold it, even though it can only hold 10 round magazines. Uses 7.62mm rounds and has an under barrel grenade launcher."
icon_state = "carbine" // This isn't a carbine. :T
item_state = "z8carbine"
wielded_item_state = "z8carbine-wielded"
w_class = ITEMSIZE_LARGE
force = 10
caliber = "7.62mm"
@@ -118,7 +118,6 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
return 1
// Blade Runner pistol.
/obj/item/weapon/gun/projectile/revolver/deckard
name = "\improper Deckard .38"
@@ -259,3 +258,24 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
to_chat(user, "\The [src] has a secondary barrel loaded with \a [to_print]")
else
to_chat(user, "\The [src] has a secondary barrel that is empty.")
//Ported from Bay
/obj/item/weapon/gun/projectile/revolver/webley
name = "service revolver"
desc = "A rugged top break revolver based on the Webley Mk. VI model, with modern improvements. Uses .44 magnum rounds."
icon_state = "webley2"
item_state = "webley2"
caliber = ".44"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
max_shells = 6
ammo_type = /obj/item/ammo_casing/a44
/obj/item/weapon/gun/projectile/revolver/webley/auto
name = "autorevolver"
icon_state = "mosley"
desc = "A shiny Mosley Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds."
fire_delay = 5.7 //Autorevolver. Also synced with the animation
fire_anim = "mosley_fire"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
+19 -12
View File
@@ -49,6 +49,7 @@
//Effects
var/incendiary = 0 //1 for ignite on hit, 2 for trail of fire. 3 maybe later for burst of fire around the impact point. - Mech
var/flammability = 0 //Amount of fire stacks to add for the above.
var/combustion = TRUE //Does this set off flammable objects on fire/hit?
var/stun = 0
var/weaken = 0
var/paralyze = 0
@@ -90,6 +91,10 @@
//called when the projectile stops flying because it collided with something
/obj/item/projectile/proc/on_impact(var/atom/A)
impact_effect(effect_transform) // generate impact effect
if(damage && damage_type == BURN)
var/turf/T = get_turf(A)
if(T)
T.hotspot_expose(700, 5)
return
//Checks if the projectile is eligible for embedding. Not that it necessarily will.
@@ -132,6 +137,9 @@
if (!istype(targloc) || !istype(curloc))
return 1
if(combustion)
curloc.hotspot_expose(700, 5)
if(targloc == curloc) //Shooting something in the same turf
target.bullet_act(src, target_zone)
on_impact(target)
@@ -200,17 +208,8 @@
//admin logs
if(!no_attack_log)
if(istype(firer, /mob))
var/attacker_message = "shot with \a [src.type]"
var/victim_message = "shot with \a [src.type]"
var/admin_message = "shot (\a [src.type])"
admin_attack_log(firer, target_mob, attacker_message, victim_message, admin_message)
else
if(target_mob) // Sometimes the target_mob gets gibbed or something.
target_mob.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[target_mob]/[target_mob.ckey]</b> with <b>\a [src]</b>"
msg_admin_attack("UNKNOWN shot [target_mob] ([target_mob.ckey]) with \a [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target_mob.x];Y=[target_mob.y];Z=[target_mob.z]'>JMP</a>)")
if(istype(firer, /mob) && istype(target_mob))
add_attack_logs(firer,target_mob,"Shot with \a [src.type] projectile")
//sometimes bullet_act() will want the projectile to continue flying
if (result == PROJECTILE_CONTINUE)
@@ -402,7 +401,7 @@
P.activate()
/obj/item/projectile/proc/impact_effect(var/matrix/M)
if(ispath(tracer_type))
if(ispath(tracer_type) && location)
var/obj/effect/projectile/P = new impact_type(location.loc)
if(istype(P))
@@ -428,6 +427,14 @@
return
if(istype(A, /obj/structure/foamedmetal)) //Turrets can detect through foamed metal, but will have to blast through it. Similar to windows, if someone runs behind it, a person should probably just not shoot.
return
if(istype(A, /obj/structure/girder)) //They see you there.
return
if(istype(A, /obj/structure/door_assembly)) //And through there.
return
if(istype(A, /obj/structure)) //Unanchored things you can shove around will still keep the turret or other firing at your position. Aim intent still functions.
var/obj/structure/S = A
if(!S.anchored)
return
if(istype(A, /mob/living) || istype(A, /obj/mecha) || istype(A, /obj/vehicle))
result_ref = A
result = 2 //We hit someone, return 1!
@@ -8,6 +8,7 @@
light_range = 2
light_power = 0.5
light_color = "#55AAFF"
combustion = FALSE
/obj/item/projectile/animate/Bump(var/atom/change)
if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects))
@@ -122,6 +122,8 @@
check_armour = "laser"
light_color = "#0066FF"
combustion = FALSE
muzzle_type = /obj/effect/projectile/laser_blue/muzzle
tracer_type = /obj/effect/projectile/laser_blue/tracer
impact_type = /obj/effect/projectile/laser_blue/impact
@@ -142,6 +144,8 @@
check_armour = "laser"
light_color = "#FF0D00"
combustion = FALSE
/obj/item/projectile/beam/lastertag/red/on_hit(var/atom/target, var/blocked = 0)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/M = target
@@ -157,6 +161,8 @@
check_armour = "laser"
light_color = "#00C6FF"
combustion = FALSE
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
tracer_type = /obj/effect/projectile/laser_omni/tracer
impact_type = /obj/effect/projectile/laser_omni/impact
@@ -190,6 +196,8 @@
damage_type = HALLOSS
light_color = "#FFFFFF"
combustion = FALSE
muzzle_type = /obj/effect/projectile/stun/muzzle
tracer_type = /obj/effect/projectile/stun/tracer
impact_type = /obj/effect/projectile/stun/impact
@@ -147,6 +147,14 @@
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
damage = 60
/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg'
damage = 10
agony = 60
embed_chance = 0
sharp = 0
check_armour = "melee"
/obj/item/projectile/bullet/pistol/rubber //"rubber" bullets
name = "rubber bullet"
damage = 5
@@ -191,6 +199,8 @@
sharp = 0
check_armour = "melee"
combustion = FALSE
/obj/item/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0)
..()
empulse(target, 0, 0, 0, 0) //Only affects what it hits
@@ -325,6 +335,8 @@
embed_chance = 0
sharp = 0
combustion = FALSE
/obj/item/projectile/bullet/pistol/cap/process()
loc = null
qdel(src)
@@ -6,6 +6,8 @@
nodamage = 1
check_armour = "energy"
combustion = FALSE
/obj/item/projectile/change/on_hit(var/atom/change)
wabbajack(change)
@@ -92,6 +92,7 @@
light_power = 0.5
light_color = "#33CC00"
combustion = FALSE
/obj/item/projectile/energy/dart
name = "dart"
@@ -101,6 +102,7 @@
agony = 120
check_armour = "energy"
combustion = FALSE
/obj/item/projectile/energy/bolt
name = "bolt"
@@ -122,6 +124,8 @@
agony = 10
check_armour = "bio"
combustion = FALSE
/obj/item/projectile/energy/neurotoxin
name = "neurotoxic spit"
icon_state = "neurotoxin"
@@ -130,6 +134,8 @@
agony = 80
check_armour = "bio"
combustion = FALSE
/obj/item/projectile/energy/neurotoxin/toxic //New alien mob projectile to match the player-variant's projectiles.
name = "neurotoxic spit"
icon_state = "neurotoxin"
@@ -149,6 +155,8 @@
light_power = 0.5
light_color = "#33CC00"
combustion = FALSE
/obj/item/projectile/energy/plasmastun
name = "plasma pulse"
icon_state = "plasma_stun"
@@ -5,6 +5,8 @@
damage = 20
check_armour = "energy"
combustion = FALSE
/obj/item/projectile/forcebolt/strong
name = "force bolt"
@@ -9,6 +9,9 @@
light_range = 2
light_power = 0.5
light_color = "#55AAFF"
combustion = FALSE
var/sev1_range = 0
var/sev2_range = 1
var/sev3_range = 1
@@ -56,6 +59,8 @@
light_power = 0.5
light_color = "#55AAFF"
combustion = FALSE
/obj/item/projectile/temp/on_hit(atom/target, blocked = FALSE)
..()
if(isliving(target))
@@ -85,6 +90,8 @@
name = "heat beam"
target_temperature = 1000
combustion = TRUE
/obj/item/projectile/meteor
name = "meteor"
icon = 'icons/obj/meteor.dmi'
@@ -127,6 +134,8 @@
light_power = 0.5
light_color = "#33CC00"
combustion = FALSE
/obj/item/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0)
var/mob/living/M = target
if(ishuman(target))
@@ -196,6 +205,8 @@
/obj/item/projectile/beam/mindflayer
name = "flayer ray"
combustion = FALSE
/obj/item/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
@@ -218,6 +229,8 @@
damage_type = HALLOSS
muzzle_type = null
combustion = FALSE
/obj/item/projectile/bola/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
@@ -235,6 +248,8 @@
damage_type = BRUTE
muzzle_type = null
combustion = FALSE
/obj/item/projectile/webball/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target.loc))
var/obj/effect/spider/stickyweb/W = locate() in get_turf(target)