mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)]"
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user