Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into lawstate

Conflicts:
	icons/obj/toy.dmi
This commit is contained in:
Markolie
2015-09-17 01:12:09 +02:00
21 changed files with 1204 additions and 1171 deletions
+2 -1
View File
@@ -923,7 +923,7 @@
"rM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew2,/area/space)
"rN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew10,/area/space)
"rO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew6,/area/space)
"rP" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/flashbang/clusterbang,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rP" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/clusterbuster,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rQ" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rR" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rS" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
@@ -2072,3 +2072,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
"}
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -45,7 +45,8 @@
/obj/item/weapon/spellbook/oneuse/fake_gib = 2,
/obj/item/toy/foamblade = 2,
/obj/item/toy/flash = 2,
/obj/item/toy/minigibber = 2
/obj/item/toy/minigibber = 2,
/obj/item/toy/toy_xeno = 2,
)
/obj/machinery/computer/arcade/power_change()
+1 -1
View File
@@ -402,7 +402,7 @@
name = "SOB-3 Grenade Launcher"
desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster."
projectiles = 3
projectile = /obj/item/weapon/grenade/flashbang/clusterbang
projectile = /obj/item/weapon/grenade/clusterbuster
projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher.
equip_cooldown = 90
size=1
+7 -1
View File
@@ -182,7 +182,13 @@
desc = initial(desc)
var/obj/item/I = new D.build_path
I.loc = get_step(src,SOUTH)
if(D.locked)
var/obj/item/weapon/storage/lockbox/large/L = new /obj/item/weapon/storage/lockbox/large(get_step(src,SOUTH)) //(Don't use capitals in paths, or single letters.
I.loc = L
L.name += " [initial(I.name)]"
L.origin_tech = I.origin_tech
else
I.loc = get_step(src,SOUTH)
I.materials[MAT_METAL] = get_resource_cost_w_coeff(D,MAT_METAL)
I.materials[MAT_GLASS] = get_resource_cost_w_coeff(D,MAT_GLASS)
visible_message("\icon[src] <b>\The [src]</b> beeps, \"\The [I] is complete.\"")
+1 -1
View File
@@ -276,7 +276,7 @@
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
visible_message("\red Something falls out of the [src]!")
var/obj/item/weapon/grenade/flashbang/clusterbang/C = new(src.loc)
var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc)
C.prime()
spawn(10)
new menace(src.loc)
@@ -83,6 +83,7 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \
throw_range = 5
origin_tech = "materials=1"
sheettype = "sandstone"
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
/obj/item/stack/sheet/mineral/sandstone/New()
..()
@@ -171,4 +172,5 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \
/obj/item/stack/sheet/mineral/enruranium
name = "enriched uranium"
icon_state = "sheet-enruranium"
origin_tech = "materials=5"
origin_tech = "materials=6"
materials = list(MAT_URANIUM=3000)
+30
View File
@@ -17,6 +17,7 @@
* Inflatable duck
* Foam armblade
* Mini Gibber
* Toy xeno
*/
@@ -1320,3 +1321,32 @@ obj/item/toy/cards/deck/syndicate/black
else
user << "<span class='warning'>You stop feeding \the [O] into \the [src]'s mini-input.</span>"
else ..()
/*
* Xenomorph action figure
*/
/obj/item/toy/toy_xeno
icon = 'icons/obj/toy.dmi'
icon_state = "toy_xeno"
name = "xenomorph action figure"
desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use."
w_class = 2
var/cooldown = 0
/obj/item/toy/toy_xeno/attack_self(mob/user)
if(cooldown <= world.time)
cooldown = (world.time + 50) //5 second cooldown
user.visible_message("<span class='notice'>[user] pulls back the string on [src].</span>")
icon_state = "[initial(icon_state)]_used"
sleep(5)
audible_message("<span class='danger'>\icon[src] Hiss!</span>")
var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg')
playsound(get_turf(src), pick(possible_sounds), 50, 1)
spawn(45)
if(src)
icon_state = "[initial(icon_state)]"
else
user << "<span class='warning'>The string on [src] hasn't rewound all the way!</span>"
return
@@ -415,8 +415,7 @@
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("aluminum", 25)
B1.reagents.add_reagent("incendiaryfuel",25)
B1.reagents.add_reagent("phosphorus", 25)
B2.reagents.add_reagent("plasma", 25)
B2.reagents.add_reagent("sacid", 25)
@@ -485,6 +484,26 @@
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/facid
name = "acid grenade"
desc = "Used for melting armoured opponents."
stage = READY
/obj/item/weapon/grenade/chem_grenade/facid/New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src)
B1.reagents.add_reagent("facid", 280)
B1.reagents.add_reagent("potassium", 20)
B2.reagents.add_reagent("phosphorus", 20)
B2.reagents.add_reagent("sugar", 20)
B2.reagents.add_reagent("facid", 260)
beakers += B1
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/tabungas
payload_name = "tabungas"
desc = "Contains tabun gas; extremely deadly and fast acting; use with extreme caution."
@@ -0,0 +1,266 @@
////////////////////
//Clusterbang
////////////////////
/obj/item/weapon/grenade/clusterbuster
desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
var/payload = /obj/item/weapon/grenade/flashbang/cluster
/obj/item/weapon/grenade/clusterbuster/prime()
update_mob()
var/numspawned = rand(4,8)
var/again = 0
for(var/more = numspawned,more > 0,more--)
if(prob(35))
again++
numspawned--
for(var/loop = again ,loop > 0, loop--)
new /obj/item/weapon/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
new /obj/effect/payload_spawner(loc, payload, numspawned)//Launches payload
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
qdel(src)
//////////////////////
//Clusterbang segment
//////////////////////
/obj/item/weapon/grenade/clusterbuster/segment
desc = "A smaller segment of a clusterbang. Better run."
name = "clusterbang segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
/obj/item/weapon/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/weapon/grenade/flashbang/cluster)
..()
icon_state = "clusterbang_segment_active"
payload = payload_type
active = 1
walk_away(src,loc,rand(1,4))
spawn(rand(15,60))
prime()
/obj/item/weapon/grenade/clusterbuster/segment/prime()
new /obj/effect/payload_spawner(loc, payload, rand(4,8))
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
qdel(src)
//////////////////////////////////
//The payload spawner effect
/////////////////////////////////
/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
for(var/loop = numspawned ,loop > 0, loop--)
var/obj/item/weapon/grenade/P = new type(loc)
if(istype(P, /obj/item/weapon/grenade))
P.active = 1
walk_away(P,loc,rand(1,4))
spawn(rand(15,60))
if(P && isnull(P.gcDestroyed))
if(istype(P, /obj/item/weapon/grenade))
P.prime()
qdel(src)
//////////////////////////////////
//Custom payload clusterbusters
/////////////////////////////////
/obj/item/weapon/grenade/flashbang/cluster
icon_state = "flashbang_active"
banglet = 1
/obj/item/weapon/grenade/clusterbuster/emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/empgrenade
/obj/item/weapon/grenade/clusterbuster/smoke
name = "Ninja Vanish"
payload = /obj/item/weapon/grenade/smokebomb
/obj/item/weapon/grenade/clusterbuster/metalfoam
name = "Instant Concrete"
payload = /obj/item/weapon/grenade/chem_grenade/metalfoam
/obj/item/weapon/grenade/clusterbuster/inferno
name = "Inferno"
payload = /obj/item/weapon/grenade/chem_grenade/incendiary
/obj/item/weapon/grenade/clusterbuster/antiweed
name = "RoundDown"
payload = /obj/item/weapon/grenade/chem_grenade/antiweed
/obj/item/weapon/grenade/clusterbuster/cleaner
name = "Mr. Proper"
payload = /obj/item/weapon/grenade/chem_grenade/cleaner
/obj/item/weapon/grenade/clusterbuster/teargas
name = "Oignon Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/teargas
/obj/item/weapon/grenade/clusterbuster/facid
name = "Aciding Rain"
payload = /obj/item/weapon/grenade/chem_grenade/facid
/obj/item/weapon/grenade/clusterbuster/syndieminibomb
name = "SyndiWrath"
payload = /obj/item/weapon/grenade/syndieminibomb
/obj/item/weapon/grenade/clusterbuster/spawner_manhacks
name = "iViscerator"
payload = /obj/item/weapon/grenade/spawnergrenade/manhacks
/obj/item/weapon/grenade/clusterbuster/spawner_spesscarp
name = "Invasion of the Space Carps"
payload = /obj/item/weapon/grenade/spawnergrenade/spesscarp
/obj/item/weapon/grenade/clusterbuster/monster
name = "Monster Megabomb"
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
/obj/item/weapon/grenade/clusterbuster/meat
name = "Mega Meat Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/meat
/obj/item/weapon/grenade/clusterbuster/nervegas
name = "Nerve Gas Clusterbomb"
payload = /obj/item/weapon/grenade/chem_grenade/tabungas
/obj/item/weapon/grenade/clusterbuster/megadirt
name = "Megamaid's Revenge Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/dirt
/obj/item/weapon/grenade/clusterbuster/ultima
name = "Earth Shattering Kaboom"
desc = "Contains one Aludium Q-36 explosive space modulator."
payload = /obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/lube
name = "Newton's First Law"
desc = "An object in motion remains in motion."
payload = /obj/item/weapon/grenade/chem_grenade/lube
/obj/item/weapon/grenade/clusterbuster/hippie
name = "Hippie Grenade"
desc = "Almost as good as the summer of '69."
payload = /obj/item/weapon/grenade/chem_grenade/drugs
/obj/item/weapon/grenade/clusterbuster/holy
name = "Purification Grenade"
desc = "Blessed excessively."
payload = /obj/item/weapon/grenade/chem_grenade/holywater
/obj/item/weapon/grenade/clusterbuster/hellwater
name = "Righteous Fury"
desc = "It's righteous, not badminnery."
payload = /obj/item/weapon/grenade/chem_grenade/hellwater
/obj/item/weapon/grenade/clusterbuster/booze
name = "Booze Grenade"
payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
/obj/item/weapon/grenade/clusterbuster/honk
name = "Mega Honk Grenade"
payload = /obj/item/weapon/bananapeel
/obj/item/weapon/grenade/clusterbuster/honk_evil
name = "Evil Mega Honk Grenade"
payload = /obj/item/weapon/grenade/clown_grenade
/obj/item/weapon/grenade/clusterbuster/xmas
name = "Christmas Miracle"
payload = /obj/item/weapon/a_gift
/obj/item/weapon/grenade/clusterbuster/dirt
name = "Megamaid's Job Security Grenade"
payload = /obj/effect/decal/cleanable/random
/obj/item/weapon/grenade/clusterbuster/apocalypsefake
name = "Fun Bomb"
desc = "Not like the other bomb."
payload = /obj/item/toy/spinningtoy
/obj/item/weapon/grenade/clusterbuster/apocalypse
name = "Apocalypse Bomb"
desc = "No matter what, do not EVER use this."
payload = /obj/singularity
/obj/item/weapon/grenade/clusterbuster/tools
name = "Quick Repair Grenade"
desc = "An assistant's every dream."
payload = /obj/random/tool
/obj/item/weapon/grenade/clusterbuster/tools
name = "Engineering Deployment Platfom"
desc = "For the that time when gearing up was just too hard."
payload = /obj/random/tech_supply
/obj/item/weapon/grenade/clusterbuster/toys
name = "Toy Delivery System"
desc = "Who needs skill at arcades anyway?"
payload = /obj/item/toy/random
/obj/item/weapon/grenade/clusterbuster/banquet
name = "Bork Bork Bonanza"
desc = "Bork bork bork."
payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
/obj/item/weapon/grenade/clusterbuster/banquet/child
payload = /obj/item/weapon/grenade/chem_grenade/large/feast
/obj/item/weapon/grenade/clusterbuster/aviary
name = "Poly-Poly Grenade"
desc = "That's an uncomfortable number of birds."
payload = /mob/living/simple_animal/parrot
/obj/item/weapon/grenade/clusterbuster/monkey
name = "Barrel of Monkeys"
desc = "Not really that much fun."
payload = /mob/living/carbon/human/monkey
/obj/item/weapon/grenade/clusterbuster/fluffy
name = "Fluffy Love Bomb"
desc = "Exactly as snuggly as it sounds."
payload = /mob/living/simple_animal/pet/corgi/puppy
/obj/item/weapon/grenade/clusterbuster/fox
name = "Troublemaking Grenade"
desc = "More trouble than two foxes combined."
payload = /mob/living/simple_animal/pet/fox
/obj/item/weapon/grenade/clusterbuster/crab
name = "Crab Grenade"
desc = "Reserved for those pesky request."
payload = /mob/living/simple_animal/crab
////////////Clusterbuster of Clusterbusters////////////
/obj/item/weapon/grenade/clusterbuster/mega_fox
name = "Mega Troublemaking Grenade."
payload = /obj/item/weapon/grenade/clusterbuster/fox
/obj/item/weapon/grenade/clusterbuster/mega_bang
name = "For when stunlocking is just too short."
payload = /obj/item/weapon/grenade/clusterbuster
/obj/item/weapon/grenade/clusterbuster/mega_syndieminibomb
name = "Mega SyndiWrath."
payload = /obj/item/weapon/grenade/clusterbuster/syndieminibomb
/obj/item/weapon/grenade/clusterbuster/mega_honk_evil
name = "Mega Evil Mega Honk Grenade."
payload = /obj/item/weapon/grenade/clusterbuster/honk_evil
/obj/item/weapon/grenade/clusterbuster/mega_emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/clusterbuster/emp
@@ -47,6 +47,22 @@
B.reagents.add_reagent("holywater",100)
beakers += B
/obj/item/weapon/grenade/chem_grenade/hellwater
payload_name = "hell water"
desc = "And he struck them down with an unholy fury that burn like one-thousands badmins."
stage = 2
det_time = 30
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("hellwater",80)
B1.reagents.add_reagent("sugar",20)
B2.reagents.add_reagent("hellwater", 60)
B2.reagents.add_reagent("potassium", 20)
B2.reagents.add_reagent("phosphorus", 20)
/obj/item/weapon/grenade/chem_grenade/drugs
payload_name = "miracle"
@@ -253,17 +269,6 @@
beakers += B1
beakers += B2
// Slime Clusterbusters
/*/obj/item/weapon/grenade/clusterbuster/bluespace
name = "Bluespace Megabomb"
desc = "Widely regarded as proof that while there is a God, He is Insane."
payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
/obj/item/weapon/grenade/clusterbuster/monster
name = "Monster Megabomb"
desc = "Widely regarded as proof that there is no God."
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
// --------------------------------------
// Syndie Kits
// --------------------------------------
@@ -291,171 +296,4 @@
new /obj/item/weapon/grenade/chem_grenade/lube(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
// --------------------------------------
// Clusterbuster Variable Payload Grenade
// Adapted from flashbang/clusterbang
// --------------------------------------
/obj/item/weapon/grenade/clusterbuster
desc = "This highly intimidating bunch of hardware seems eager to be let loose."
name = "Clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
var/payload = /obj/item/weapon/grenade/flashbang
// Subtypes
// Serious grenades
/obj/item/weapon/grenade/clusterbuster/explosion
name = "Cluster Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/chem_grenade/emp
/obj/item/weapon/grenade/clusterbuster/smoke
name = "Ninja Vanish"
payload = /obj/item/weapon/grenade/smokebomb
// Not serious grenades
/obj/item/weapon/grenade/clusterbuster/meat
name = "Mega Meat Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/meat
/obj/item/weapon/grenade/clusterbuster/booze
name = "Booze Grenade"
payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
/obj/item/weapon/grenade/clusterbuster/honk
name = "Mega Honk Grenade"
payload = /obj/item/weapon/bananapeel
/obj/item/weapon/grenade/clusterbuster/xmas
name = "Christmas Miracle"
payload = /obj/item/weapon/a_gift
/obj/item/weapon/grenade/clusterbuster/dirt
name = "Megamaid's Job Security Grenade"
payload = /obj/effect/decal/cleanable/random
/obj/item/weapon/grenade/clusterbuster/megadirt
name = "Megamaid's Revenge Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/dirt
/obj/item/weapon/grenade/clusterbuster/inferno
name = "Little Boy"
payload = /obj/item/weapon/grenade/chem_grenade/incendiary
/obj/item/weapon/grenade/clusterbuster/apocalypsefake
name = "Fun Bomb"
desc = "Not like the other bomb."
payload = /obj/item/toy/spinningtoy
// Grenades that should never see the light of day
/obj/item/weapon/grenade/clusterbuster/apocalypse
name = "Apocalypse Bomb"
desc = "No matter what, do not EVER use this."
payload = /obj/singularity
/obj/item/weapon/grenade/clusterbuster/ultima
name = "Earth Shattering Kaboom"
desc = "Contains one Aludium Q-36 explosive space modulator."
payload = /obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/lube
name = "Newton's First Law"
desc = "An object in motion remains in motion."
payload = /obj/item/weapon/grenade/chem_grenade/lube
/*/obj/item/weapon/grenade/clusterbuster/bluespace
name = "Maximum Warp"
desc = "Spacetime: Nice job breaking it, hero."
payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
/obj/item/weapon/grenade/clusterbuster/monster
name = "The Monster Mash"
desc = "It's a graveyeard smash."
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
/obj/item/weapon/grenade/clusterbuster/banquet
name = "Bork Bork Bonanza"
desc = "Bork bork bork."
payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
child
payload = /obj/item/weapon/grenade/chem_grenade/large/feast
// Mob spawning grenades
/obj/item/weapon/grenade/clusterbuster/aviary
name = "Poly-Poly Grenade"
desc = "That's an uncomfortable number of birds."
payload = /mob/living/simple_animal/parrot
/obj/item/weapon/grenade/clusterbuster/monkey
name = "Barrel of Monkeys"
desc = "Not really that much fun."
payload = /mob/living/carbon/human/monkey
/obj/item/weapon/grenade/clusterbuster/fluffy
name = "Fluffy Love Bomb"
desc = "Exactly as snuggly as it sounds."
payload = /mob/living/simple_animal/pet/corgi/puppy
/obj/item/weapon/grenade/clusterbuster/prime()
var/numspawned = rand(4,8)
var/again = 0
for(var/more = numspawned,more > 0,more--)
if(prob(35))
again++
numspawned --
for(,numspawned > 0, numspawned--)
spawn(0)
new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload,name)//Launches payload
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
for(,again > 0, again--)
spawn(0)
new /obj/item/weapon/grenade/clusterbuster/segment(src.loc,payload,name)//Creates a 'segment' that launches more payloads
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
spawn(0)
qdel(src)
return
/obj/item/weapon/grenade/clusterbuster/segment
desc = "What's happening? Aaah!"
name = "clusterbuster segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
/obj/item/weapon/grenade/clusterbuster/segment/New(var/turf/newloc,var/T,var/N)//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
icon_state = "clusterbang_segment_active"
active = 1
payload = T
name = N
var/stepdist = rand(1,5) //How far to step
var/temploc = src.loc //Saves the current location to know where to step away from
walk_away(src,temploc,stepdist) //I must go, my people need me
var/dettime = rand(15,60)
spawn(dettime)
prime()
/obj/item/weapon/grenade/clusterbuster/segment/prime()
var/numspawned = rand(4,8)
for(var/more = numspawned,more > 0,more--)
if(prob(35))
numspawned --
for(,numspawned > 0, numspawned--)
new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload)
spawn(0)
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
qdel(src)
return
/obj/item/weapon/grenade/clusterbuster/node/New(var/turf/newloc,var/T,var/N)
icon_state = "flashbang_active"
active = 1
payload = T
name = N
var/stepdist = rand(1,4)
var/temploc = src.loc
walk_away(src,temploc,stepdist)
var/dettime = rand(15,60)
spawn(dettime)
var/atom/A = new payload(loc)
if(istype(A,/obj/item/weapon/grenade))
A:prime()
if(istype(A,/obj/singularity)) // I can't emphasize enough how much you should never use this grenade
A:energy = 200
qdel(src)
return
@@ -21,7 +21,7 @@
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
M.show_message("<span class='warning'>BANG</span>", 2)
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
playsound(loc, 'sound/effects/bang.ogg', 25, 1)
//Checking for protections
var/eye_safety = 0
@@ -48,12 +48,12 @@
M << "<span class='warning'>Your eyes start to burn badly!</span>"
else
M << "<span class='warning'>The flash blinds you!</span>"
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
if(!banglet)
if (E.damage >= E.min_broken_damage)
M << "<span class='warning'>You can't see anything!</span>"
//Bang
if((src.loc == M) || src.loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
if((loc == M) || loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
M.Stun(10)
M.Weaken(10)
if(!ear_safety)
@@ -63,81 +63,10 @@
M.ear_deaf = max(M.ear_deaf,15)
if (M.ear_damage >= 15)
M << "<span class='warning'>Your ears start to ring badly!</span>"
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
if(!banglet)
if(prob(M.ear_damage - 10 + 5))
M << "<span class='warning'>You can't hear anything!</span>"
M.disabilities |= DEAF
else
if (M.ear_damage >= 5)
M << "<span class='warning'>Your ears start to ring!</span>"
////////////////////
//Clusterbang
////////////////////
/obj/item/weapon/grenade/flashbang/clusterbang
desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
/obj/item/weapon/grenade/flashbang/clusterbang/prime()
update_mob()
var/numspawned = rand(4,8)
var/again = 0
for(var/more = numspawned,more > 0,more--)
if(prob(35))
again++
numspawned--
for(var/loop = numspawned, loop > 0, loop--)
new /obj/item/weapon/grenade/flashbang/cluster(loc)//Launches flashbangs
for(var/loop = again ,loop > 0, loop--)
new /obj/item/weapon/grenade/flashbang/clusterbang/segment(loc)//Creates a 'segment' that launches a few more flashbangs
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
qdel(src)
//////////////////////
//Clusterbang segment
//////////////////////
/obj/item/weapon/grenade/flashbang/clusterbang/segment
desc = "A smaller segment of a clusterbang. Better run."
name = "clusterbang segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
/obj/item/weapon/grenade/flashbang/clusterbang/segment/New()
..()
icon_state = "clusterbang_segment_active"
active = 1
walk_away(src,loc,rand(1,4))
spawn(rand(15,60))
prime()
/obj/item/weapon/grenade/flashbang/clusterbang/segment/prime()
update_mob()
var/numspawned = rand(4,8)
for(var/loop = numspawned ,loop > 0, loop--)
new /obj/item/weapon/grenade/flashbang/cluster(loc)
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
qdel(src)
////////////////////////////////
//Clusterbang spawned flashbang
////////////////////////////////
/obj/item/weapon/grenade/flashbang/cluster/New()
..()
icon_state = "flashbang_active"
active = 1
banglet = 1
walk_away(src,loc,rand(1,3))
spawn(rand(15,60))
prime()
M << "<span class='warning'>Your ears start to ring!</span>"
@@ -53,41 +53,6 @@
target.update_inv_handcuffed(1)
return
var/last_chew = 0
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
if (A != src)
return ..()
if (last_chew + 26 > world.time)
return
var/mob/living/carbon/human/H = A
if (!H.handcuffed)
return
if (H.a_intent != I_HARM)
return
if (H.zone_sel.selecting != "mouth")
return
if (H.wear_mask)
return
if (istype(H.wear_suit, /obj/item/clothing/suit/straight_jacket))
return
var/obj/item/organ/external/O = H.organs_by_name[H.hand ? "l_hand" : "r_hand"]
if (!O)
return
var/s = "<span class='danger'>[H.name] chews on \his [O.name]!</span>"
H.visible_message(s, "<span class='userdanger'>You chew on your [O.name]!</span>")
H.attack_log += text("\[[time_stamp()]\] <font color='red'>[s] ([H.ckey])</font>")
log_attack("[s] ([H.ckey])")
if(O.take_damage(3,0,1,1,"teeth marks"))
H.UpdateDamageIcon()
if(prob(10))
O.droplimb()
last_chew = world.time
/obj/item/weapon/restraints/handcuffs/cable
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
@@ -62,6 +62,13 @@
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
return
/obj/item/weapon/storage/lockbox/large
name = "Large lockbox"
desc = "A large lockbox"
max_w_class = 4
max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
storage_slots = 1
/obj/item/weapon/storage/lockbox/loyalty
name = "Lockbox (Loyalty Implants)"
req_access = list(access_security)
@@ -81,7 +88,7 @@
New()
..()
new /obj/item/weapon/grenade/flashbang/clusterbang(src)
new /obj/item/weapon/grenade/clusterbuster(src)
/obj/item/weapon/storage/lockbox/medal
+9 -1
View File
@@ -22,6 +22,7 @@
origin_tech = "materials=5"
points = 18
refined_type = /obj/item/stack/sheet/mineral/uranium
materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/iron
name = "iron ore"
@@ -29,6 +30,7 @@
origin_tech = "materials=1"
points = 1
refined_type = /obj/item/stack/sheet/metal
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/glass
name = "sand pile"
@@ -36,6 +38,7 @@
origin_tech = "materials=1"
points = 1
refined_type = /obj/item/stack/sheet/glass
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/glass/attack_self(mob/living/user as mob)
user << "<span class='notice'>You use the sand to make sandstone.</span>"
@@ -59,9 +62,10 @@
/obj/item/weapon/ore/plasma
name = "plasma ore"
icon_state = "Plasma ore"
origin_tech = "materials=2"
origin_tech = "plasmatech=2;materials=2"
points = 36
refined_type = /obj/item/stack/sheet/mineral/plasma
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/plasma/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/weldingtool))
@@ -77,6 +81,7 @@
origin_tech = "materials=3"
points = 18
refined_type = /obj/item/stack/sheet/mineral/silver
materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/gold
name = "gold ore"
@@ -84,6 +89,7 @@
origin_tech = "materials=4"
points = 18
refined_type = /obj/item/stack/sheet/mineral/gold
materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/diamond
name = "diamond ore"
@@ -91,6 +97,7 @@
origin_tech = "materials=6"
points = 36
refined_type = /obj/item/stack/sheet/mineral/diamond
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/bananium
name = "bananium ore"
@@ -98,6 +105,7 @@
origin_tech = "materials=4"
points = 27
refined_type = /obj/item/stack/sheet/mineral/bananium
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/slag
name = "slag"
-3
View File
@@ -1,6 +1,3 @@
/mob/living/silicon/say(var/message, var/sanitize = 1)
return ..(sanitize ? sanitize(message) : message)
/mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
log_say("[key_name(src)] : [message]")
@@ -40,38 +40,6 @@
M.adjustBruteLoss(2)
holder.remove_reagent(src.id, 1)
/datum/reagent/incendiary_fuel //copy-pasta of welding fuel; allow incendiary grenades to function better without the headache of people spraying fuel everywhere with regular welding fuel.
name = "Incendiary fuel"
id = "incendiaryfuel"
description = "A highly flammable compound used in incendiary grenades."
reagent_state = LIQUID
color = "#660000" // rgb: 102, 0, 0
/datum/reagent/incendiary_fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
if(!istype(M, /mob/living))
return
if(method == TOUCH)
M.adjust_fire_stacks(volume / 10)
return
/datum/reagent/incendiary_fuel/reaction_obj(var/obj/O, var/volume)
var/turf/the_turf = get_turf(O)
if(!the_turf)
return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume)
/datum/reagent/incendiary_fuel/reaction_turf(var/turf/T, var/volume)
new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
return
/datum/reagent/incendiary_fuel/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1)
..()
return
/datum/reagent/plasma
name = "Plasma"
id = "plasma"
@@ -9,12 +9,12 @@
item_state = "beaker"
New()
..()
reagents.add_reagent("slime", 50)
reagents.add_reagent("slimejelly", 50)
on_reagent_change()
if (reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
if("slime")
if("slimejelly")
icon_state = "jar_slime"
name = "slime jam"
desc = "A jar of slime jam. Delicious!"
@@ -48,14 +48,14 @@
user.changeNext_move(CLICK_CD_RANGE*2)
if(reagents.has_reagent("sacid"))
message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].")
msg_admin_attack("[key_name_admin(user)] fired sulphuric acid from \a [src].")
log_game("[key_name(user)] fired sulphuric acid from \a [src].")
if(reagents.has_reagent("facid"))
message_admins("[key_name_admin(user)] fired fluorosulfuric acid from \a [src].")
log_game("[key_name(user)] fired Fluorosulfuric Acid from \a [src].")
msg_admin_attack("[key_name_admin(user)] fired fluorosulfuric acid from \a [src].")
log_game("[key_name(user)] fired fluorosulfuric Acid from \a [src].")
if(reagents.has_reagent("lube"))
message_admins("[key_name_admin(user)] fired space lube from \a [src].")
log_game("[key_name(user)] fired Space lube from \a [src].")
msg_admin_attack("[key_name_admin(user)] fired space lube from \a [src].")
log_game("[key_name(user)] fired space lube from \a [src].")
return
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

+2 -1
View File
@@ -715,7 +715,6 @@
#include "code\game\objects\items\weapons\fireworks.dm"
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
#include "code\game\objects\items\weapons\grenades.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
#include "code\game\objects\items\weapons\holosign.dm"
#include "code\game\objects\items\weapons\hydroponics.dm"
@@ -752,6 +751,8 @@
#include "code\game\objects\items\weapons\grenades\bananade.dm"
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
#include "code\game\objects\items\weapons\grenades\clowngrenade.dm"
#include "code\game\objects\items\weapons\grenades\clusterbuster.dm"
#include "code\game\objects\items\weapons\grenades\custom_grenades.dm"
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
#include "code\game\objects\items\weapons\grenades\ghettobomb.dm"