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
+2 -3
View File
@@ -160,7 +160,7 @@
"dd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"de" = (/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"df" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dg" = (/obj/structure/table,/obj/item/weapon/paper{info = "Grade: A+ Educator's Notes: Excellent form."; name = "Summoning Midterm Exam"},/obj/item/toy/crossbow/tommygun,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"dg" = (/obj/structure/table,/obj/item/weapon/paper{info = "Grade: A+ Educator's Notes: Excellent form."; name = "Summoning Midterm Exam"},/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"dh" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/awaymission/academy/classrooms)
"di" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/awaymission/academy/classrooms)
"dj" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "green"},/area/awaymission/academy/classrooms)
@@ -340,7 +340,7 @@
"gB" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"gD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"gE" = (/obj/structure/table,/obj/item/weapon/paper{info = "Grade: B- Educator's Notes: Keep applying yourself, you're showing improvement."; name = "Summoning Midterm Exam"},/obj/item/toy/crossbow,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gE" = (/obj/structure/table,/obj/item/weapon/paper{info = "Grade: B- Educator's Notes: Keep applying yourself, you're showing improvement."; name = "Summoning Midterm Exam"},/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gG" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gH" = (/obj/structure/window/reinforced,/obj/item/ammo_casing,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaymission/academy/classrooms)
"gI" = (/mob/living/simple_animal/hostile/bear,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
@@ -672,4 +672,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+1 -2
View File
@@ -189,7 +189,7 @@
"dJ" = (/obj/item/target/syndicate,/turf/simulated/floor/carpet,/area/awaymission)
"dK" = (/obj/item/trash/candy,/turf/simulated/floor/carpet,/area/awaymission)
"dL" = (/obj/item/toy/spinningtoy,/turf/simulated/floor/carpet,/area/awaymission)
"dM" = (/obj/item/toy/crossbow,/turf/simulated/floor/carpet,/area/awaymission)
"dM" = (/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/turf/simulated/floor/carpet,/area/awaymission)
"dN" = (/obj/structure/barricade/wooden,/obj/structure/barricade/wooden,/turf/simulated/floor/carpet,/area/awaymission)
"dO" = (/obj/machinery/door/airlock,/turf/simulated/floor/carpet,/area/awaymission)
"dP" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/wall,/area/awaymission)
@@ -322,4 +322,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabReWeXbDbDbDbDbDeSeSeSbDbDbDbDeYeUeVaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZbRfabDeSeWeSbDbDeRbDbDfbfceSeTeUeVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZeNeMeHeIeNeLeLeLeNeMeHeIeNfdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -286,8 +286,8 @@
"fz" = (/obj/structure/table,/obj/item/device/analyzer,/obj/item/device/mass_spectrometer{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research)
"fA" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/weapon/paper/sc_safehint_paper_caf,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"fB" = (/obj/structure/target_stake,/obj/item/weapon/grown/sunflower,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research)
"fC" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/toy/crossbow/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"fD" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/obj/item/toy/crossbow/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"fC" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"fD" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"fE" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock)
"fF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/awaymission/midblock)
"fG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/awaymission/midblock)
@@ -315,7 +315,7 @@
"gc" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock)
"gd" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock)
"ge" = (/obj/item/weapon/storage/secure/safe/sc_ssafe{pixel_x = 4; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock)
"gf" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/obj/item/toy/crossbow/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"gf" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"gg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/midblock)
"gh" = (/obj/structure/closet/wardrobe/generic,/turf/simulated/floor/plasteel,/area/awaymission/midblock)
"gi" = (/turf/simulated/floor/plasteel,/area/awaymission/midblock)
@@ -689,4 +689,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzltlFlGlHhuhuhuiYlIkfkfkpkRjKlJjKlKiYlLlMlNlOlOlP
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzgzgzgzgzgzgzgziYlVlWlXiYkfkdlYlZmaiYjKjKjKmbmbmbmbmcjulCmdmejuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYjujujujujuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
File diff suppressed because it is too large Load Diff
+36 -3
View File
@@ -1348,9 +1348,19 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/datum/supply_packs/misc/mafia
name = "Mafia Supply Crate"
contains = list(/obj/item/clothing/suit/browntrenchcoat =1,/obj/item/clothing/suit/blacktrenchcoat =1,/obj/item/clothing/head/fedora/whitefedora =1,
/obj/item/clothing/head/fedora/brownfedora =1,/obj/item/clothing/head/fedora =1,/obj/item/clothing/under/flappers =1,/obj/item/clothing/under/mafia =1,/obj/item/clothing/under/mafia/vest =1,/obj/item/clothing/under/mafia/white =1,
/obj/item/clothing/under/mafia/sue =1,/obj/item/clothing/under/mafia/tan =1, /obj/item/toy/crossbow/tommygun =2)
contains = list(/obj/item/clothing/suit/browntrenchcoat,
/obj/item/clothing/suit/blacktrenchcoat,
/obj/item/clothing/head/fedora/whitefedora,
/obj/item/clothing/head/fedora/brownfedora,
/obj/item/clothing/head/fedora,
/obj/item/clothing/under/flappers,
/obj/item/clothing/under/mafia,
/obj/item/clothing/under/mafia/vest,
/obj/item/clothing/under/mafia/white,
/obj/item/clothing/under/mafia/sue,
/obj/item/clothing/under/mafia/tan,
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun)
cost = 15
containername = "mafia supply crate"
@@ -1385,6 +1395,29 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
..()
/datum/supply_packs/misc/foamforce
name = "Foam Force Crate"
contains = list(/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy)
cost = 10
containername = "foam force crate"
/datum/supply_packs/misc/foamforce/bonus
name = "Foam Force Pistols Crate"
contains = list(/obj/item/weapon/gun/projectile/automatic/toy/pistol,
/obj/item/weapon/gun/projectile/automatic/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol)
cost = 40
containername = "foam force pistols crate"
contraband = 1
/datum/supply_packs/misc/randomised/contraband
num_contained = 5
contains = list(/obj/item/weapon/storage/pill_bottle/random_drug_bottle,
+37 -1
View File
@@ -407,6 +407,34 @@ var/list/uplink_items = list()
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/dangerous/foamsmg
name = "Toy Submachine Gun"
desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade rounds with a 20-round magazine."
reference = "FSMG"
item = /obj/item/weapon/gun/projectile/automatic/c20r/toy
cost = 5
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/dangerous/foammachinegun
name = "Toy Machine Gun"
desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating riot grade darts, that can briefly incapacitate someone in just one volley."
reference = "FLMG"
item = /obj/item/weapon/gun/projectile/automatic/l6_saw/toy
cost = 10
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/ammo/toydarts
name = "Box of Riot Darts"
desc = "A box of 40 Donksoft foam riot darts, for reloading any compatible foam dart gun. Don't forget to share!"
reference = "FOAM"
item = /obj/item/ammo_box/foambox/riot
cost = 2
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
//for refunding the syndieborg teleporter
/datum/uplink_item/dangerous/syndieborg/spawn_item()
var/obj/item/weapon/antag_spawner/borg_tele/T = ..()
@@ -550,6 +578,14 @@ var/list/uplink_items = list()
cost = 8
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/stealthy_weapons/foampistol
name = "Toy Gun (with Stun Darts)"
desc = "An innocent looking toy pistol designed to fire foam darts. Comes loaded with riot grade darts, to incapacitate a target."
reference = "FSPI"
item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
cost = 3
surplus = 10
/datum/uplink_item/stealthy_weapons/soap
name = "Syndicate Soap"
desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people."
@@ -1105,4 +1141,4 @@ var/list/uplink_items = list()
U.purchase_log += "<BIG>\icon[C]</BIG>"
for(var/item in bought_items)
new item(C)
U.purchase_log += "<BIG>\icon[item]</BIG>"
U.purchase_log += "<BIG>\icon[item]</BIG>"
+2 -2
View File
@@ -5,7 +5,7 @@
name = "Random Toy"
New()
..()
var/list/types = list(/obj/item/toy/crossbow,/obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/list/types = list(/obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/T = pick(types)
new T(loc)
spawn(1)
@@ -332,4 +332,4 @@
new nade3(src)
new nade4(src)
new nade5(src)
new nade6(src)
new nade6(src)
+1 -139
View File
@@ -3,8 +3,6 @@
* Balloons
* Fake telebeacon
* Fake singularity
* Toy crossbow
* Toy Tommy Gun
* Toy swords
* Toy mechs
* Snap pops
@@ -132,142 +130,6 @@
icon = 'icons/obj/singularity.dmi'
icon_state = "singularity_s1"
/*
* Toy crossbow
*/
/obj/item/toy/crossbow
name = "foam dart crossbow"
desc = "A weapon favored by many overactive children. Ages 8 and up."
icon = 'icons/obj/gun.dmi'
icon_state = "crossbow"
item_state = "crossbow"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
w_class = 2.0
attack_verb = list("attacked", "struck", "hit")
var/bullets = 5
/obj/item/toy/crossbow/examine(mob/user)
..(user)
if (bullets)
to_chat(user, "<span class='notice'>It is loaded with [bullets] foam darts!</span>")
/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/toy/ammo/crossbow))
if(bullets <= 4)
user.drop_item()
qdel(I)
bullets++
to_chat(user, "<span class='notice'>You load the foam dart into the crossbow.</span>")
else
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
if(!isturf(target.loc) || target == user) return
if(flag) return
if (locate (/obj/structure/table, src.loc))
return
else if (bullets)
var/turf/trg = get_turf(target)
var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src))
bullets--
D.icon_state = "foamdart"
D.name = "foam dart"
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
for(var/i=0, i<6, i++)
if (D)
if(D.loc == trg) break
step_towards(D,trg)
for(var/mob/living/M in D.loc)
if(!istype(M,/mob/living)) continue
if(M == user) continue
D.visible_message("<span class='danger'>[M] was hit by the foam dart!</span>")
new /obj/item/toy/ammo/crossbow(M.loc)
qdel(D)
return
for(var/atom/A in D.loc)
if(A == user) continue
if(A.density)
new /obj/item/toy/ammo/crossbow(A.loc)
qdel(D)
sleep(1)
spawn(10)
if(D)
new /obj/item/toy/ammo/crossbow(D.loc)
qdel(D)
return
else if (bullets == 0)
user.Weaken(5)
user.visible_message("<span class='danger'>[user] realized they were out of ammo and starting scrounging for some!</span>")
/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob)
add_fingerprint(user)
// ******* Check
if (bullets > 0 && M.lying)
visible_message("<span class='danger'>[user] casually lines up a shot with [M]'s head and pulls the trigger!</span>", "<span class='danger'>You hear the sound of foam against skull.</span>")
M.visible_message("<span class='warning'>[M] was hit in the head by the foam dart!</span>")
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
new /obj/item/toy/ammo/crossbow(M.loc)
bullets--
else if (M.lying && bullets == 0)
visible_message("<span class='danger'>[user] casually lines up a shot with [M]'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!</span>", "<span class='danger'>You hear someone fall.</span>")
user.Weaken(5)
return
/obj/item/toy/ammo/crossbow
name = "foam dart"
desc = "Its nerf or nothing! Ages 8 and up."
icon = 'icons/obj/toy.dmi'
icon_state = "foamdart"
w_class = 1.0
/obj/effect/foam_dart_dummy
name = ""
desc = ""
icon = 'icons/obj/toy.dmi'
icon_state = "null"
anchored = 1
density = 0
/*
* Tommy gun
*/
/obj/item/toy/crossbow/tommygun
name = "tommy gun"
desc = "Looks almost like the real thing! Great for practicing Drive-bys"
icon_state = "tommy"
item_state = "tommy"
flags = CONDUCT
w_class = 1.0
attack_verb = list("struck", "hammered", "hit", "bashed")
bullets = 20.0
/obj/item/toy/crossbow/tommygun/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/toy/ammo/crossbow))
if(bullets <= 19)
user.drop_item()
qdel(I)
bullets++
to_chat(user, "<span class='notice'>You load the foam dart into the tommy gun.</span>")
else
to_chat(user, "<span class='danger'>It's already fully loaded.</span>")
/*
* Toy swords
*/
@@ -1777,4 +1639,4 @@ obj/item/toy/cards/deck/syndicate/black
desc = "All hail the Magic Conch!"
icon_state = "conch"
use_action = "pulls the string"
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
@@ -80,7 +80,7 @@
/obj/item/weapon/banhammer,
/obj/item/toy/balloon,
/obj/item/toy/blink,
/obj/item/toy/crossbow,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,
/obj/item/weapon/gun/projectile/revolver/capgun,
/obj/item/toy/katana,
/obj/random/mech,
@@ -115,7 +115,7 @@
/obj/item/toy/AI,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/weapon/storage/box/fakesyndiesuit,
/obj/item/toy/crossbow/tommygun,
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,
/obj/item/stack/tile/fakespace/loaded,
)
@@ -685,14 +685,3 @@
new /obj/item/weapon/lipstick/green(src)
new /obj/item/weapon/lipstick/blue(src)
new /obj/item/weapon/lipstick/white(src)
/obj/item/weapon/storage/box/foam_darts
name = "Foam Dart Pack"
desc = "Extra ammo for foam dart launchers. Contains 10 darts."
storage_slots = 10
max_combined_w_class = 10
/obj/item/weapon/storage/box/foam_darts/New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/toy/ammo/crossbow(src)
+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."
@@ -0,0 +1,4 @@
author: FlattestGuitar
delete-after: True
changes:
- rscadd: "ports /tg/ Foam Force guns, now you can shoot foam at your enemies /with style/"
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

+2
View File
@@ -1775,11 +1775,13 @@
#include "code\modules\projectiles\guns\projectile\revolver.dm"
#include "code\modules\projectiles\guns\projectile\rocket.dm"
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
#include "code\modules\projectiles\guns\projectile\toy.dm"
#include "code\modules\projectiles\projectile\beams.dm"
#include "code\modules\projectiles\projectile\bullets.dm"
#include "code\modules\projectiles\projectile\energy.dm"
#include "code\modules\projectiles\projectile\force.dm"
#include "code\modules\projectiles\projectile\magic.dm"
#include "code\modules\projectiles\projectile\reusable.dm"
#include "code\modules\projectiles\projectile\special.dm"
#include "code\modules\reagents\Chemistry-Colours.dm"
#include "code\modules\reagents\Chemistry-Holder.dm"