Adds everything and makes it all work perfectly. It's like I'm almost good at this or something. (Seriously, points of interest: Secbots react to being shot. Dart rigging. Donksoft guns.)

This commit is contained in:
Fayrik
2015-03-21 16:18:32 +00:00
parent d3d491588e
commit 0173c7af6e
14 changed files with 111 additions and 29 deletions

View File

@@ -37,14 +37,6 @@
bot_type = SEC_BOT
bot_filter = RADIO_SECBOT
//List of weapons that secbots will not arrest for
var/safe_weapons = list(\
/obj/item/weapon/gun/energy/laser/bluetag,\
/obj/item/weapon/gun/energy/laser/redtag,\
/obj/item/weapon/gun/energy/laser/practice,\
/obj/item/weapon/melee/classic_baton/telescopic,\
/obj/item/weapon/gun/energy/kinetic_accelerator)
/obj/item/weapon/ed209_assembly
name = "\improper ED-209 assembly"
@@ -206,6 +198,17 @@ Auto Patrol[]"},
icon_state = "[lasercolor]ed209[on]"
set_weapon()
/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if (!Proj.nodamage && Proj.damage < src.health)
threatlevel = Proj.firer.assess_threat(src)
threatlevel += 6
if(threatlevel >= 4)
target = Proj.firer
mode = BOT_HUNT
..()
/obj/machinery/bot/ed209/bot_process()
if (!..())
return
@@ -392,9 +395,8 @@ Auto Patrol[]"},
continue
/obj/machinery/bot/ed209/proc/check_for_weapons(var/obj/item/slot_item)
if(istype(slot_item, /obj/item/weapon/gun) || istype(slot_item, /obj/item/weapon/melee))
if(!(slot_item.type in safe_weapons))
return 1
if(slot_item && slot_item.needs_permit)
return 1
return 0
/* terrible

View File

@@ -27,15 +27,6 @@
bot_type = SEC_BOT
bot_filter = RADIO_SECBOT
//List of weapons that secbots will not arrest for
var/safe_weapons = list(\
/obj/item/weapon/gun/energy/laser/bluetag,\
/obj/item/weapon/gun/energy/laser/redtag,\
/obj/item/weapon/gun/energy/laser/practice,\
/obj/item/weapon/melee/classic_baton/telescopic,\
/obj/item/weapon/gun/energy/kinetic_accelerator)
/obj/machinery/bot/secbot/beepsky
name = "Officer Beep O'sky"
desc = "It's Officer Beep O'sky! Powered by a potato and a shot of whiskey."
@@ -189,6 +180,17 @@ Auto Patrol: []"},
declare_arrests = 0
icon_state = "secbot[on]"
/obj/machinery/bot/secbot/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))
if (!Proj.nodamage && Proj.damage < src.health)
threatlevel = Proj.firer.assess_threat(src)
threatlevel += 6
if(threatlevel >= 4)
target = Proj.firer
mode = BOT_HUNT
..()
/obj/machinery/bot/secbot/bot_process()
if (!..())
return
@@ -350,9 +352,8 @@ Auto Patrol: []"},
else
continue
/obj/machinery/bot/secbot/proc/check_for_weapons(var/obj/item/slot_item)
if(istype(slot_item, /obj/item/weapon/gun) || istype(slot_item, /obj/item/weapon/melee))
if(!(slot_item.type in safe_weapons))
return 1
if(slot_item && slot_item.needs_permit)
return 1
return 0
/obj/machinery/bot/secbot/explode()

View File

@@ -43,6 +43,7 @@
var/g_amt = 0 // glass
var/reliability = 100 //Used by SOME devices to determine how reliable they are.
var/origin_tech = null //Used by R&D to determine what research bonuses it grants.
var/needs_permit = 0 //Used by security bots to determine if this item is safe for public use.
var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]"
var/list/species_exception = list() // even if a species cannot put items in a certain slot, if the species id is in the item's exception list, it will be able to wear that item

View File

@@ -1,3 +1,6 @@
/obj/item/weapon/melee
needs_permit = 1
/obj/item/weapon/melee/chainofcommand
name = "chain of command"
desc = "A tool used by great men to placate the frothing masses."
@@ -79,6 +82,7 @@
item_state = null
slot_flags = SLOT_BELT
w_class = 2
needs_permit = 0
force = 0
on = 0

View File

@@ -42,7 +42,7 @@
for(var/obj/item/ammo_casing/bullet in src.loc)
if (box.stored_ammo.len >= box.max_ammo)
break
if (box.ammo_type == bullet.type && bullet.BB)
if (bullet.BB)
if (box.give_round(bullet, 0))
boolets++
else

View File

@@ -216,6 +216,29 @@
caliber = "foam_force"
icon = 'icons/obj/guns/toy.dmi'
icon_state = "foamdart"
var/modified = 0
/obj/item/ammo_casing/caseless/foam_dart/update_icon()
..()
if (modified)
icon_state = "foamdart_empty"
desc = "Its nerf or nothing! ...Although, this one doesn't look too safe."
/obj/item/ammo_casing/caseless/foam_dart/attackby(var/obj/item/A as obj, mob/user as mob, params)
..()
if (istype(A, /obj/item/weapon/screwdriver) && !modified)
modified = 1
BB.damage_type = BRUTE
icon_state = "foamdart_empty"
desc = "Its nerf or nothing! ...Although, this one doesn't look too safe."
user << "<span class='notice'>You pop the safety cap off of [src].</span>"
else if ((istype(A, /obj/item/weapon/pen)) && modified && !BB.contents.len)
user.drop_item()
A.loc = BB
BB.damage = 5
BB.nodamage = 0
user << "<span class='notice'>You insert [A] into [src].</span>"
return
/obj/item/ammo_casing/caseless/foam_dart/riot
name = "riot foam dart"

View File

@@ -250,3 +250,23 @@ obj/item/ammo_box/magazine/tommygunm45
/obj/item/ammo_box/magazine/toy/pistol/riot
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
/obj/item/ammo_box/magazine/toy/smgm45
name = "donksoft SMG magazine"
caliber = "foam_force"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
max_ammo = 20
/obj/item/ammo_box/magazine/toy/smgm45/update_icon()
..()
icon_state = "c20r45-[round(ammo_count(),2)]"
/obj/item/ammo_box/magazine/toy/m762
name = "donksoft box magazine"
caliber = "foam_force"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
max_ammo = 50
/obj/item/ammo_box/magazine/toy/m762/update_icon()
..()
icon_state = "a762-[round(ammo_count(),10)]"

View File

@@ -17,6 +17,7 @@
throw_range = 5
force = 5.0
origin_tech = "combat=1"
needs_permit = 1
attack_verb = list("struck", "hit", "bashed")
var/fire_sound = "gunshot"

View File

@@ -14,6 +14,7 @@
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
clumsy_check = 0
needs_permit = 0
obj/item/weapon/gun/energy/laser/retro
name ="retro laser"
@@ -105,6 +106,7 @@ obj/item/weapon/gun/energy/laser/retro
ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag)
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
var/charge_tick = 0
pin = /obj/item/device/firing_pin/tag/blue
@@ -135,6 +137,7 @@ obj/item/weapon/gun/energy/laser/retro
ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag)
origin_tech = "combat=1;magnets=2"
clumsy_check = 0
needs_permit = 0
var/charge_tick = 0
pin = /obj/item/device/firing_pin/tag/red

View File

@@ -123,6 +123,7 @@
item_state = "kineticgun"
ammo_type = list(/obj/item/ammo_casing/energy/kinetic)
cell_type = "/obj/item/weapon/stock_parts/cell/emproof"
needs_permit = 0 // Aparently these are safe to carry? I'm sure Golliaths would disagree.
var/overheat = 0
var/recent_reload = 1
var/range_add = 0

View File

@@ -11,6 +11,7 @@
burst_size = 3
can_suppress = 0
clumsy_check = 0
needs_permit = 0
/obj/item/weapon/gun/projectile/automatic/toy/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
..()
@@ -40,6 +41,7 @@
origin_tech = null
mag_type = /obj/item/ammo_box/magazine/internal/shot/toy
clumsy_check = 0
needs_permit = 0
/obj/item/weapon/gun/projectile/shotgun/toy/process_chamber()
..()
@@ -56,3 +58,25 @@
fire_sound = 'sound/items/syringeproj.ogg'
slot_flags = SLOT_BELT
w_class = 2
/obj/item/weapon/gun/projectile/automatic/c20r/toy
name = "donksoft SMG"
desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up."
icon = 'icons/obj/guns/toy.dmi'
can_suppress = 0
needs_permit = 0
mag_type = /obj/item/ammo_box/magazine/toy/smgm45
/obj/item/weapon/gun/projectile/automatic/c20r/toy/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
..()
/obj/item/weapon/gun/projectile/automatic/l6_saw/toy
name = "donksoft LMG"
desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up."
icon = 'icons/obj/guns/toy.dmi'
can_suppress = 0
needs_permit = 0
mag_type = /obj/item/ammo_box/magazine/toy/m762
/obj/item/weapon/gun/projectile/automatic/l6_saw/toy/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
..()

View File

@@ -37,7 +37,7 @@
damage = 0 // It's a damn toy.
damage_type = OXY
nodamage = 1
icon = 'icons/obj/toy.dmi'
icon = 'icons/obj/guns/toy.dmi'
icon_state = "foamdart"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
range = 10

View File

@@ -7,6 +7,8 @@ changes:
- rscadd: "Added an abstract new type of reusable ammo."
- rscadd: "Added three new foam force guns and a foam force crossbow, all of which take the new foam dart ammo."
- rscadd: "Added foam force dart boxes to the autolathe, and two crates orderable from cargo containing the new guns."
- rscadd: "New crossbow can be won as an arcade prize."
- rscadd: "All kinds of ammo containers can now be used to rapidly collect live ammunition on the ground."
- rscadd: "Speedloaders and traditional ammo boxes can now be restocked."
- rscadd: "Added two new donksoft guns, the syndicate's own brand of Foam Force."
- tweak: "New crossbow can be won as an arcade prize."
- tweak: "All kinds of ammo containers can now be used to rapidly collect live ammunition on the ground."
- tweak: "Speedloaders and traditional ammo boxes can now be restocked."
- bugfix: "Security bots now react to being shot."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB