Using summon guns gives a message to the the user to confirm it working.
Added a new borg upgrade module which requires illegal tech and combat tech to make. It allows you to give them their emagged equipment without fucking with their laws. New LMG by Ausops (both sprites and code). Right now appears only in Summon Guns, but may appear elsewhere in time. Grilles now have a bullet act, so they no longer magically absorb infinite bullets. Updated changelog. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5037 316c924e-a436-60f5-8080-3fe189b3f50e
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/mob/proc/rightandwrong()
|
/mob/proc/rightandwrong()
|
||||||
|
usr << "<B>You summoned guns!</B>"
|
||||||
message_admins("[key_name_admin(usr, 1)] summoned guns!")
|
message_admins("[key_name_admin(usr, 1)] summoned guns!")
|
||||||
for(var/mob/living/carbon/human/H in player_list)
|
for(var/mob/living/carbon/human/H in player_list)
|
||||||
if(H.stat == 2 || !(H.client)) continue
|
if(H.stat == 2 || !(H.client)) continue
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
for(var/datum/objective/OBJ in H.mind.objectives)
|
for(var/datum/objective/OBJ in H.mind.objectives)
|
||||||
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||||
obj_count++
|
obj_count++
|
||||||
var/randomize = pick("taser","egun","laser","revolver","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","shotgun","mateba","uzi","crossbow")
|
var/randomize = pick("taser","egun","laser","revolver","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","shotgun","mateba","uzi","crossbow","saw")
|
||||||
switch (randomize)
|
switch (randomize)
|
||||||
if("taser")
|
if("taser")
|
||||||
new /obj/item/weapon/gun/energy/taser(get_turf(H))
|
new /obj/item/weapon/gun/energy/taser(get_turf(H))
|
||||||
@@ -48,3 +49,5 @@
|
|||||||
new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
|
new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
|
||||||
if("crossbow")
|
if("crossbow")
|
||||||
new /obj/item/weapon/gun/energy/crossbow(get_turf(H))
|
new /obj/item/weapon/gun/energy/crossbow(get_turf(H))
|
||||||
|
if("saw")
|
||||||
|
new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H))
|
||||||
@@ -133,3 +133,20 @@
|
|||||||
R.internals = src
|
R.internals = src
|
||||||
R.icon_state="Miner+j"
|
R.icon_state="Miner+j"
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/borg/upgrade/syndicate/
|
||||||
|
name = "Illegal Equipment Module"
|
||||||
|
desc = "Unlocks the hidden, deadlier functions of a cyborg"
|
||||||
|
construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000)
|
||||||
|
icon_state = "cyborg_upgrade3"
|
||||||
|
require_module = 1
|
||||||
|
|
||||||
|
/obj/item/borg/upgrade/syndicate/action(var/mob/living/silicon/robot/R)
|
||||||
|
if(..()) return 0
|
||||||
|
|
||||||
|
if(R.emagged == 1)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
R.emagged = 1
|
||||||
|
return 1
|
||||||
@@ -92,6 +92,11 @@
|
|||||||
else
|
else
|
||||||
return !density
|
return !density
|
||||||
|
|
||||||
|
/obj/structure/grille/bullet_act(var/obj/item/projectile/Proj)
|
||||||
|
if(!Proj) return
|
||||||
|
src.health -= Proj.damage*0.2
|
||||||
|
healthcheck()
|
||||||
|
return 0
|
||||||
|
|
||||||
/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
if(iswirecutter(W))
|
if(iswirecutter(W))
|
||||||
|
|||||||
@@ -92,3 +92,18 @@
|
|||||||
icon_state = "75"
|
icon_state = "75"
|
||||||
ammo_type = "/obj/item/ammo_casing/a75"
|
ammo_type = "/obj/item/ammo_casing/a75"
|
||||||
max_ammo = 0
|
max_ammo = 0
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/a762
|
||||||
|
name = "magazine (a762)"
|
||||||
|
icon_state = "a762-50"
|
||||||
|
origin_tech = "combat=2"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/a762"
|
||||||
|
max_ammo = 50
|
||||||
|
multiple_sprites = 1
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/a762/empty
|
||||||
|
name = "magazine (a762)"
|
||||||
|
icon_state = "a762-0"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/a762"
|
||||||
|
max_ammo = 0
|
||||||
|
multiple_sprites = 1
|
||||||
@@ -89,3 +89,8 @@
|
|||||||
icon_state = "blshell" //someone, draw the icon, please.
|
icon_state = "blshell" //someone, draw the icon, please.
|
||||||
projectile_type = "/obj/item/projectile/energy/dart"
|
projectile_type = "/obj/item/projectile/energy/dart"
|
||||||
m_amt = 12500
|
m_amt = 12500
|
||||||
|
|
||||||
|
/obj/item/ammo_casing/a762
|
||||||
|
desc = "A 7.62 bullet casing."
|
||||||
|
caliber = "a762"
|
||||||
|
projectile_type = "/obj/item/projectile/bullet"
|
||||||
@@ -65,4 +65,116 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||||
|
name = "L6 SAW"
|
||||||
|
desc = "A rather traditionally made light machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever"
|
||||||
|
icon_state = "l4closed100"
|
||||||
|
item_state = "l6closedmag"
|
||||||
|
max_shells = 50
|
||||||
|
caliber = "a762"
|
||||||
|
origin_tech = "combat=5;materials=1;syndicate=2"
|
||||||
|
ammo_type = "/obj/item/ammo_casing/a762"
|
||||||
|
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
||||||
|
load_method = 2
|
||||||
|
//recoil = 1
|
||||||
|
var/cover_open = 0
|
||||||
|
var/mag_inserted = 1
|
||||||
|
|
||||||
|
attack_self(mob/user as mob)
|
||||||
|
if(!cover_open && mag_inserted)
|
||||||
|
cover_open = 1
|
||||||
|
icon_state = "l4open[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6openmag"
|
||||||
|
usr << "You open the [src]'s cover, allowing you to swap magazines."
|
||||||
|
else if(cover_open && mag_inserted)
|
||||||
|
cover_open = 0
|
||||||
|
icon_state = "l4closed[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6closedmag"
|
||||||
|
usr << "You close the [src]'s cover."
|
||||||
|
else if(!cover_open && !mag_inserted)
|
||||||
|
cover_open = 1
|
||||||
|
icon_state = "l4opennomag"
|
||||||
|
item_state = "l6opennomag"
|
||||||
|
usr << "You open the [src]'s cover, allowing you to swap magazines."
|
||||||
|
else if(cover_open && !mag_inserted)
|
||||||
|
cover_open = 0
|
||||||
|
icon_state = "l4closednomag"
|
||||||
|
item_state = "l6closednomag"
|
||||||
|
usr << "You close the [src]'s cover."
|
||||||
|
update_icon() //another update_icon() thing here, I know it's repeated in afterattack() but this one also takes into account cover_open
|
||||||
|
if(!cover_open)
|
||||||
|
icon_state = "l4closed[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6closedmag"
|
||||||
|
else
|
||||||
|
icon_state = "l4open[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6openmag"
|
||||||
|
//update_inv_l_hand()
|
||||||
|
//update_inv_r_hand()
|
||||||
|
|
||||||
|
afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays
|
||||||
|
if(cover_open)
|
||||||
|
usr << "The SAW cover is open! Close it before firing!"
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
if(!cover_open && mag_inserted)
|
||||||
|
icon_state = "l4closed[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6closedmag"
|
||||||
|
else if(!cover_open && !mag_inserted)
|
||||||
|
icon_state = "l4closednomag"
|
||||||
|
item_state = "l6nomag"
|
||||||
|
//update_inv_l_hand()
|
||||||
|
//update_inv_r_hand()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/l6_saw/verb/remove_magazine()
|
||||||
|
set category = "Object"
|
||||||
|
set name = "Remove SAW magazine."
|
||||||
|
set src in view(1)
|
||||||
|
var/mob/M = usr
|
||||||
|
|
||||||
|
if(usr.canmove && !usr.stat && !usr.restrained() && !M.paralysis && ! M.stunned)
|
||||||
|
if(!cover_open)
|
||||||
|
usr << "The [src]'s cover is closed! You can't remove the magazine!"
|
||||||
|
else if (!cover_open && !mag_inserted)
|
||||||
|
usr << "The [src]'s cover is open but there's no magazine for you to remove!"
|
||||||
|
else if (cover_open && mag_inserted)
|
||||||
|
drop_mag()
|
||||||
|
loaded = list()
|
||||||
|
mag_inserted = 0
|
||||||
|
icon_state = "l4opennomag"
|
||||||
|
item_state = "l6opennomag"
|
||||||
|
usr << "You remove the magazine from the [src]!"
|
||||||
|
//update_inv_l_hand()
|
||||||
|
//update_inv_r_hand()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/l6_saw/proc/drop_mag()
|
||||||
|
empty_mag = new /obj/item/ammo_magazine/a762(src)
|
||||||
|
empty_mag.stored_ammo = loaded
|
||||||
|
empty_mag.icon_state = "a762-[round((loaded.len),10)]"
|
||||||
|
//desc = "There are [loaded] shells left!"
|
||||||
|
empty_mag.loc = get_turf(src.loc)
|
||||||
|
empty_mag = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||||
|
if(!cover_open)
|
||||||
|
usr << "The [src]'s cover is closed! You can't insert a new mag!"
|
||||||
|
else if (cover_open && mag_inserted)
|
||||||
|
usr << "The [src] already has a magazine inserted!"
|
||||||
|
else if (cover_open && !mag_inserted)
|
||||||
|
mag_inserted = 1
|
||||||
|
usr << "You insert the magazine!"
|
||||||
|
icon_state = "l4openmag[round(((loaded.len)*2),25)]"
|
||||||
|
item_state = "l6openmag"
|
||||||
|
update_icon()
|
||||||
|
..()
|
||||||
|
//update_inv_l_hand() something pete suggested. Dunno if this is a proc already defined way up in the obj/ thing
|
||||||
|
//update_inv_r_hand() or if it's something I have to define myself
|
||||||
|
|
||||||
|
|
||||||
|
/* The thing I found with guns in ss13 is that they don't seem to simulate the rounds in the magazine in the gun.
|
||||||
|
Afaik, since projectile.dm features a revolver, this would make sense since the magazine is part of the gun.
|
||||||
|
However, it looks like subsequent guns that use removable magazines don't take that into account and just get
|
||||||
|
around simulating a removable magazine by adding the casings into the loaded list and spawning an empty magazine
|
||||||
|
when the gun is out of rounds. Which means you can't eject magazines with rounds in them. The below is a very
|
||||||
|
rough and poor attempt at making that happen. -Ausops */
|
||||||
|
|
||||||
|
|||||||
@@ -44,3 +44,6 @@
|
|||||||
stun = 10
|
stun = 10
|
||||||
weaken = 10
|
weaken = 10
|
||||||
stutter = 10
|
stutter = 10
|
||||||
|
|
||||||
|
/obj/item/projectile/bullet/a762
|
||||||
|
damage = 25
|
||||||
@@ -1580,3 +1580,14 @@ datum/design/security_hud
|
|||||||
src.pixel_y = rand(-5.0, 5)
|
src.pixel_y = rand(-5.0, 5)
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////
|
||||||
|
//////////////Borg Upgrades//////////////
|
||||||
|
/////////////////////////////////////////
|
||||||
|
datum/design/borg_syndicate_module
|
||||||
|
name = "Borg Illegal Weapons Upgrade"
|
||||||
|
desc = "Allows for the construction of illegal upgrades for cyborgs"
|
||||||
|
id = "borg_syndicate_module"
|
||||||
|
build_type = MECHFAB
|
||||||
|
req_tech = list("combat" = 4, "syndicate" = 3)
|
||||||
|
build_path = "/obj/item/borg/upgrade/syndicate"
|
||||||
|
category = "Cyborg Upgrade Modules"
|
||||||
|
|||||||
@@ -48,6 +48,15 @@ Stuff which is in development and not yet visible to players or just code relate
|
|||||||
should be listed in the changelog upon commit tho. Thanks. -->
|
should be listed in the changelog upon commit tho. Thanks. -->
|
||||||
|
|
||||||
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
||||||
|
<div class="commit sansserif">
|
||||||
|
<h2 class="date">11 November 2012</h2>
|
||||||
|
<h3 class="author">Kor updated:</h3>
|
||||||
|
<ul class="changes bgimages16">
|
||||||
|
<li class="rscadd">New cyborg upgrade available for production that requires illegal and combat tech</li>
|
||||||
|
<li class="tweak">Summon Guns has a new gun type created by Ausops. It also lets the user know when its been cast now to prevent people trying to buy it multiple times</li>
|
||||||
|
<li class="tweak">Grilles are no longer immortal in regards to solid projectiles, you can now shoot out windows.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="commit sansserif">
|
<div class="commit sansserif">
|
||||||
<h2 class="date">09 November 2012</h2>
|
<h2 class="date">09 November 2012</h2>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 44 KiB |