Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master'

# Conflicts:
#	_maps/map_files/cyberiad/cyberiad.dmm
This commit is contained in:
IK3I
2016-04-27 18:20:50 -05:00
26 changed files with 9163 additions and 204 deletions
+5 -4
View File
@@ -93,8 +93,8 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/foam_darts
name = "Pack of Foam Darts"
desc = "A refill pack of 10 foam darts."
typepath = /obj/item/weapon/storage/box/foam_darts
desc = "A refill pack with foam darts."
typepath = /obj/item/ammo_box/foambox
cost = 20
/datum/prize_item/minigibber
@@ -174,9 +174,10 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/crossbow
name = "Foam Dart Crossbow"
desc = "A toy crossbow that fires foam darts."
typepath = /obj/item/toy/crossbow
typepath = /obj/item/weapon/gun/projectile/shotgun/toy/crossbow
cost = 100
/datum/prize_item/toy_xeno
name = "Xeno Action Figure"
desc = "A lifelike replica of the horrific xeno scourge."
@@ -252,7 +253,7 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/tommygun
name = "Tommygun"
desc = "A replica tommygun that fires foam darts."
typepath = /obj/item/toy/crossbow/tommygun
typepath = /obj/item/weapon/gun/projectile/shotgun/toy/tommygun
cost = 175
/datum/prize_item/esword
+3 -3
View File
@@ -7,8 +7,8 @@
/obj/item/toy/blink = 2,
/obj/item/clothing/under/syndicate/tacticool = 2,
/obj/item/toy/sword = 2,
/obj/item/weapon/gun/projectile/revolver/capgun = 2,
/obj/item/toy/crossbow = 2,
/obj/item/weapon/gun/projectile/revolver/capgun = 2,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2,
/obj/item/clothing/suit/syndicatefake = 2,
/obj/item/weapon/storage/fancy/crayons = 2,
/obj/item/toy/spinningtoy = 2,
@@ -177,4 +177,4 @@
if(interactable())
computer.updateUsrDialog()
blocked = 0
return
return
+3
View File
@@ -327,10 +327,13 @@
if (C.handcuffed && !initial(C.handcuffed))
C.unEquip(C.handcuffed)
C.handcuffed = initial(C.handcuffed)
C.update_handcuffed()
if (C.legcuffed && !initial(C.legcuffed))
C.unEquip(C.legcuffed)
C.legcuffed = initial(C.legcuffed)
C.update_inv_legcuffed()
if(C.reagents)
for(var/datum/reagent/R in C.reagents.reagent_list)
C.reagents.clear_reagents()
+29 -10
View File
@@ -38,22 +38,41 @@
var/tmp_label = ""
var/label_text = sanitize(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label))
if(length(label_text) > 20)
to_chat(user, "\red The inscription can be at most 20 characters long.")
to_chat(user, "<span class='warning''>The inscription can be at most 20 characters long.</span>")
else
if(label_text == "")
to_chat(user, "\blue You scratch the inscription off of [initial(BB)].")
to_chat(user, "<span class='notice'>You scratch the inscription off of [initial(BB)].</span>")
BB.name = initial(BB.name)
else
to_chat(user, "\blue You inscribe \"[label_text]\" into \the [initial(BB.name)].")
to_chat(user, "<span class='notice'>You inscribe \"[label_text]\" into \the [initial(BB.name)].</span>")
BB.name = "[initial(BB.name)] \"[label_text]\""
else
to_chat(user, "\blue You can only inscribe a metal bullet.")//because inscribing beanbags is silly
to_chat(user, "<span class='notice'>You can only inscribe a metal bullet.</span>")//because inscribing beanbags is silly
else
to_chat(user, "\blue There is no bullet in the casing to inscribe anything into.")
to_chat(user, "<span class='notice'>There is no bullet in the casing to inscribe anything into.</span>")
/obj/item/ammo_casing/attackby(obj/item/ammo_box/box as obj, mob/user as mob, params)
if(!istype(box, /obj/item/ammo_box))
return
if(isturf(loc))
var/boolets = 0
for(var/obj/item/ammo_casing/pew in loc)
if(box.stored_ammo.len >= box.max_ammo)
break
if(pew.BB)
if(box.give_round(pew))
boolets++
else
continue
if(boolets > 0)
box.update_icon()
to_chat(user, "<span class='notice'>You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.</span>")
else
to_chat(user, "<span class='notice'>You fail to collect anything.</span>")
/obj/item/ammo_casing/proc/newshot() //For energy weapons, shotgun shells and wands (!).
if (!BB)
if(!BB)
BB = new projectile_type(src)
return
@@ -85,19 +104,19 @@
update_icon()
/obj/item/ammo_box/proc/get_round(var/keep = 0)
if (!stored_ammo.len)
if(!stored_ammo.len)
return null
else
var/b = stored_ammo[stored_ammo.len]
stored_ammo -= b
if (keep)
if(keep)
stored_ammo.Insert(1,b)
return b
/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/r)
var/obj/item/ammo_casing/rb = r
if (rb)
if (stored_ammo.len < max_ammo && rb.caliber == caliber)
if(rb)
if(stored_ammo.len < max_ammo && rb.caliber == caliber)
stored_ammo += rb
rb.loc = src
return 1
@@ -255,4 +255,42 @@
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
caliber = "40mm"
icon_state = "40mmHE"
projectile_type = "/obj/item/projectile/bullet/a40mm"
projectile_type = "/obj/item/projectile/bullet/a40mm"
//FOAM DARTS
/obj/item/ammo_casing/caseless/foam_dart
name = "foam dart"
desc = "It's nerf or nothing! Ages 8 and up."
projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart"
caliber = "foam_force"
icon = 'icons/obj/toyguns.dmi'
icon_state = "foamdart"
var/modified = 0
/obj/item/ammo_casing/caseless/foam_dart/update_icon()
if(modified)
icon_state = "foamdart_empty"
/obj/item/ammo_casing/caseless/foam_dart/attackby(var/obj/item/weapon/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 = "It's nerf or nothing! ...Although, this one doesn't look too safe."
to_chat(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)
if(!user.unEquip(A))
return
A.forceMove(BB)
BB.damage = 5
BB.nodamage = 0
to_chat(user, "<span class='notice'>You insert [A] into [src].</span>")
return
/obj/item/ammo_casing/caseless/foam_dart/riot
name = "riot foam dart"
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart/riot"
icon_state = "foamdart_riot"
+13 -1
View File
@@ -86,4 +86,16 @@
name = "Ammunition Box (tranquilizer darts)"
icon_state = "45box"
ammo_type = /obj/item/ammo_casing/shotgun/tranquilizer
materials = list(MAT_METAL=1750)
materials = list(MAT_METAL=1750)
//FOAM DARTS
/obj/item/ammo_box/foambox
name = "ammo box (Foam Darts)"
icon = 'icons/obj/toyguns.dmi'
icon_state = "foambox"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
max_ammo = 40
/obj/item/ammo_box/foambox/riot
icon_state = "foambox_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
@@ -101,6 +101,17 @@
max_ammo = 5
multiload = 1
/obj/item/ammo_box/magazine/internal/shot/toy
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart"
caliber = "foam_force"
max_ammo = 4
/obj/item/ammo_box/magazine/internal/shot/toy/crossbow
max_ammo = 5
/obj/item/ammo_box/magazine/internal/shot/toy/tommygun
max_ammo = 10
///////////EXTERNAL MAGAZINES////////////////
/obj/item/ammo_box/magazine/m10mm
@@ -290,4 +301,49 @@
/obj/item/ammo_box/magazine/m12g/dragon
name = "shotgun magazine (12g dragon's breath)"
icon_state = "m12gf"
ammo_type = "/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath"
ammo_type = "/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath"
//FOAM DARTS
/obj/item/ammo_box/magazine/toy
name = "foam force META magazine"
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart"
caliber = "foam_force"
/obj/item/ammo_box/magazine/toy/smg
name = "foam force SMG magazine"
icon_state = "smg9mm-30"
max_ammo = 30
/obj/item/ammo_box/magazine/toy/smg/update_icon()
..()
icon_state = "smg9mm-[round(ammo_count(),6)]"
/obj/item/ammo_box/magazine/toy/smg/riot
ammo_type = "/obj/item/ammo_casing/caseless/foam_dart/riot"
/obj/item/ammo_box/magazine/toy/pistol
name = "foam force pistol magazine"
icon_state = "9x19p"
max_ammo = 8
multiple_sprites = 2
/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"
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"
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)]"
+7 -7
View File
@@ -276,19 +276,19 @@
//Suicide handling.
if (M == user && user.zone_sel.selecting == "mouth" && !mouthshoot)
mouthshoot = 1
M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...")
M.visible_message("<span class='warning'> [user] sticks their gun in their mouth, ready to pull the trigger...</span>")
if(!do_after(user, 40, target = M))
M.visible_message("\blue [user] decided life was worth living")
M.visible_message("<span class='warning'> [user] decided life was worth living</span>")
mouthshoot = 0
return
if (process_chambered())
user.visible_message("<span class = 'warning'>[user] pulls the trigger.</span>")
user.visible_message("<span class='warning'>[user] pulls the trigger.</span>")
if(silenced)
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
if(istype(in_chamber, /obj/item/projectile/lasertag))
user.show_message("<span class = 'warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
if(istype(in_chamber, /obj/item/projectile/lasertag) || istype(in_chamber, /obj/item/projectile/bullet/reusable/foam_dart))
user.show_message("<span class='warning'>You feel rather silly, trying to commit suicide with a toy.</span>")
mouthshoot = 0
return
in_chamber.on_hit(M)
@@ -296,7 +296,7 @@
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
user.death()
else
to_chat(user, "<span class = 'notice'>Ow...</span>")
to_chat(user, "<span class='notice'>Ow...</span>")
user.apply_effect(110,STAMINA,0)
del(in_chamber)
mouthshoot = 0
@@ -380,4 +380,4 @@
update_icon()
else
set_light(0)
return
return
+13 -10
View File
@@ -16,15 +16,18 @@
/obj/item/weapon/gun/projectile/New()
..()
magazine = new mag_type(src)
if(!magazine)
magazine = new mag_type(src)
chamber_round()
update_icon()
return
/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1)
/obj/item/weapon/gun/projectile/process_chambered(var/eject_casing = 1, var/empty_chamber = 1 )
// if(in_chamber)
// return 1
@@ -50,9 +53,9 @@
/obj/item/weapon/gun/projectile/proc/chamber_round()
if (chambered || !magazine)
if(chambered || !magazine)
return
else if (magazine.ammo_count())
else if(magazine.ammo_count())
chambered = magazine.get_round()
chambered.loc = src
return
@@ -60,9 +63,9 @@
/obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob, params)
..()
if (istype(A, /obj/item/ammo_box/magazine))
if(istype(A, /obj/item/ammo_box/magazine))
var/obj/item/ammo_box/magazine/AM = A
if (!magazine && istype(AM, text2path(mag_type)))
if(!magazine && istype(AM, text2path(mag_type)))
user.remove_from_mob(AM)
magazine = AM
magazine.loc = src
@@ -71,7 +74,7 @@
A.update_icon()
update_icon()
return 1
else if (magazine)
else if(magazine)
to_chat(user, "<span class='notice'>There's already a magazine in \the [src].</span>")
if(istype(A, /obj/item/weapon/suppressor))
var/obj/item/weapon/suppressor/S = A
@@ -132,9 +135,9 @@
/obj/item/weapon/gun/projectile/proc/get_ammo(var/countchambered = 1)
var/boolets = 0 //mature var names for mature people
if (chambered && countchambered)
if(chambered && countchambered)
boolets++
if (magazine)
if(magazine)
boolets += magazine.ammo_count()
return boolets
@@ -146,4 +149,4 @@
item_state = "suppressor"
w_class = 2
var/oldsound = null
var/initial_w_class = null
var/initial_w_class = null
@@ -0,0 +1,100 @@
/obj/item/weapon/gun/projectile/automatic/toy
name = "foam force SMG"
desc = "A prototype three-round burst toy submachine gun. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
icon_state = "saber"
item_state = "gun"
mag_type = "/obj/item/ammo_box/magazine/toy/smg"
force = 0
throwforce = 0
burst_size = 3
can_suppress = 0
clumsy_check = 0
needs_permit = 0
/obj/item/weapon/gun/projectile/automatic/toy/process_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/automatic/toy/pistol
name = "foam force pistol"
desc = "A small, easily concealable toy handgun. Ages 8 and up."
icon_state = "pistol"
w_class = 2
mag_type = "/obj/item/ammo_box/magazine/toy/pistol"
fire_sound = 'sound/weapons/Gunshot.ogg'
can_suppress = 0
burst_size = 1
fire_delay = 0
action_button_name = null
/obj/item/weapon/gun/projectile/automatic/toy/pistol/update_icon()
..()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
/obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
name = "foam force riot pistol"
desc = "RIOT! Ages 8 and up."
/obj/item/weapon/gun/projectile/automatic/toy/pistol/riot/New()
magazine = new /obj/item/ammo_box/magazine/toy/pistol/riot(src)
..()
/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/toyguns.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_chambered()
return ..(0, 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/toyguns.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_chambered()
return ..(0, 1)
/obj/item/weapon/gun/projectile/shotgun/toy
name = "foam force shotgun"
desc = "A toy shotgun with wood furniture and a four-shell capacity underneath. Ages 8 and up."
icon = 'icons/obj/toyguns.dmi'
force = 0
throwforce = 0
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/pump_unload()
if(chambered)//We have a shell in the chamber
chambered = null
if(in_chamber)
in_chamber = null
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow
name = "foam force crossbow"
desc = "A weapon favored by many overactive children. Ages 8 and up."
icon_state = "crossbow"
item_state = "crossbow"
mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy/crossbow"
fire_sound = 'sound/items/syringeproj.ogg'
slot_flags = SLOT_BELT
w_class = 2
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun
name = "tommy gun"
desc = "Looks almost like the real thing! Great for practicing Drive-bys. Ages 8 and up."
icon = 'icons/obj/gun.dmi'
icon_state = "tommy"
item_state = "shotgun"
mag_type = "/obj/item/ammo_box/magazine/internal/shot/toy/tommygun"
w_class = 2
@@ -0,0 +1,45 @@
/obj/item/projectile/bullet/reusable
name = "reusable bullet"
desc = "How do you even reuse a bullet?"
var/obj/item/ammo_casing/caseless/ammo_type = /obj/item/ammo_casing/caseless/
var/hit = 0
/obj/item/projectile/bullet/reusable/on_hit(var/atom/target, var/blocked = 0)
if(!proj_hit)
proj_hit = 1
if (src.contents.len)
var/obj/content
for(content in src.contents)
content.loc = src.loc
else
new ammo_type(src.loc)
..()
/obj/item/projectile/bullet/reusable/on_range()
if(!proj_hit)
if (src.contents.len)
var/obj/content
for(content in src.contents)
content.loc = src.loc
else
new ammo_type(src.loc)
..()
/obj/item/projectile/bullet/reusable/foam_dart
name = "foam dart"
desc = "I hope you're wearing eye protection."
damage = 0 // It's a damn toy.
damage_type = OXY
nodamage = 1
edge = 0
embed = 0
icon = 'icons/obj/toyguns.dmi'
icon_state = "foamdart"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
range = 10
/obj/item/projectile/bullet/reusable/foam_dart/riot
name = "riot foam dart"
icon_state = "foamdart_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25
@@ -323,6 +323,14 @@
build_path = /obj/item/weapon/canvas/twentythreeXnineteen
category = list("initial", "Miscellaneous")
/datum/design/foambox
name = "Box of Foam Force darts"
id = "foamforce"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/ammo_box/foambox
category = list("initial", "Miscellaneous")
/datum/design/canvas/twentythreeXtwentythree
name = "23px by 23px Canvas"
id = "canvas23x23"
@@ -492,6 +492,17 @@
build_path = /obj/item/weapon/circuitboard/prize_counter
category = list("Misc. Machinery")
/datum/design/gameboard
name = "Machine Design (Virtual Gameboard)"
desc = "The circuit board for a Virtual Gameboard."
id = "gameboard"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS=1000, "sacid"=20)
build_path = /obj/item/weapon/circuitboard/gameboard
category = list("Misc. Machinery")
/datum/design/botany_extractor
name = "Machine Design (Lysis-Isolation Centrifuge)"
desc = "The circuit board for a lysis-isolation centrifuge."