Random maint loot and miscellaneous things (#1052)

Things done:
Created several random objects, that can be used to randomize loot in the maint or other places. Several items, some rare things and other random useful or not objects.
Added a svd gun with its own snowflakness, to replace the heister's lwap, but, they will get an extra energy gun to compesate.
Added tracksuits, stunrod, new sprite for the rapier, a new sword flavor and the old cane sword.
Changed the heister ship armory; two random melee weapons, the dragunov with an extra mag and a random energy gun.
Changed the chances of ghetto guns going bad.
Replaced the carbines in the ert area with energy pistols, so, they can make use of the holsters.
Clumsy people may have trouble with glowsticks now.
This commit is contained in:
Alberyk
2016-10-26 20:29:38 +03:00
committed by skull132
parent b5e554812b
commit 479666a47d
23 changed files with 570 additions and 98 deletions
+3 -2
View File
@@ -88,11 +88,12 @@
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
/obj/item/weapon/cane/concealed
w_class = 4
var/concealed_blade
/obj/item/weapon/cane/concealed/New()
..()
var/obj/item/weapon/material/butterfly/switchblade/temp_blade = new(src)
var/obj/item/weapon/canesword/temp_blade = new(src)
concealed_blade = temp_blade
temp_blade.attack_self()
@@ -110,7 +111,7 @@
else
..()
/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user)
/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/canesword/W, var/mob/user)
if(!src.concealed_blade && istype(W))
user.visible_message("<span class='warning'>[user] has sheathed \a [W] into \his [src]!</span>", "You sheathe \the [W] into \the [src].")
user.drop_from_inventory(W)
@@ -263,7 +263,15 @@
on = 0
update_icon()
/obj/item/device/flashlight/glowstick/attack_self(mob/user)
/obj/item/device/flashlight/glowstick/attack_self(var/mob/living/user)
if(((CLUMSY in user.mutations)) && prob(50))
user << "<span class='notice'>You break \the [src] apart, spilling its contents everywhere!</span>"
fuel = 0
new /obj/effect/decal/cleanable/greenglow(get_turf(user))
user.apply_effect((rand(15,30)),IRRADIATE,blocked = user.getarmor(null, "rad"))
qdel(src)
return
if(!fuel)
user << "<span class='notice'>\The [src] has already been used.</span>"
@@ -34,8 +34,10 @@
/obj/item/weapon/material/sword/rapier
name = "rapier"
desc = "A slender, fancy and sharply pointed sword."
icon = 'icons/obj/sword.dmi'
icon_state = "rapier"
item_state = "claymore"
item_state = "rapier"
contained_sprite = 1
slot_flags = SLOT_BELT
attack_verb = list("attacked", "stabbed", "prodded", "poked", "lunged")
@@ -65,3 +67,15 @@
icon_state = "sabre"
item_state = "katana"
slot_flags = SLOT_BELT
/obj/item/weapon/material/sword/axe
name = "battle axe"
desc = "A one handed battle axe, still a deadly weapon."
icon = 'icons/obj/sword.dmi'
icon_state = "axe"
item_state = "axe"
contained_sprite = 1
slot_flags = SLOT_BACK
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
applies_material_colour = 0
@@ -265,6 +265,16 @@
return
return ..()
//predefined materials for spears
/obj/item/weapon/material/twohanded/spear/steel/New(var/newloc)
..(newloc,"steel")
/obj/item/weapon/material/twohanded/spear/plasteel/New(var/newloc)
..(newloc,"plasteel")
/obj/item/weapon/material/twohanded/spear/diamond/New(var/newloc)
..(newloc,"diamond")
/obj/structure/headspear
name = "head on a spear"
desc = "How barbaric."
@@ -277,4 +287,4 @@
new /obj/item/weapon/material/twohanded/spear(user.loc)
for(var/obj/item/organ/external/head/H in src)
H.loc = user.loc
qdel(src)
qdel(src)
@@ -197,7 +197,7 @@
/obj/item/device/flashlight,
/obj/item/device/pda,
/obj/item/device/radio/headset,
/obj/item/weapon/melee/energy/sword,
/obj/item/weapon/melee,
/obj/item/weapon/shield/energy,
/obj/item/weapon/pinpointer,
/obj/item/weapon/plastique,
@@ -203,3 +203,32 @@
slot_flags = null
baton_color = "#FFDF00"
/obj/item/weapon/melee/baton/stunrod
name = "stunrod"
desc = "A more-than-lethal weapon used to deal with high threat situations."
icon = 'icons/obj/stunrod.dmi'
icon_state = "stunrod"
item_state = "stunrod"
force = 20
baton_color = "#75ACFF"
origin_tech = "combat=4,illegal=2"
contained_sprite = 1
/obj/item/weapon/melee/baton/stunrod/New()
..()
bcell = new/obj/item/weapon/cell/high(src)
update_icon()
return
/obj/item/weapon/melee/baton/stunrod/update_icon() //this is needed due to how contained sprites work
if(status)
icon_state = "[initial(name)]_active"
item_state = "[initial(name)]_active"
else if(!bcell)
icon_state = "[initial(name)]_nocell"
item_state = "[initial(name)]"
else
icon_state = "[initial(name)]"
item_state = "[initial(name)]"
..()
@@ -259,3 +259,18 @@
health -= W.force
healthcheck()
..()
/obj/item/weapon/canesword
name = "thin sword"
desc = "A thin, sharp blade with an elegant handle."
icon = 'icons/obj/sword.dmi'
icon_state = "canesword"
item_state = "canesword"
force = 20
throwforce = 5
w_class = 4
sharp = 1
edge = 1
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
contained_sprite = 1
+248
View File
@@ -440,3 +440,251 @@
type = pick(options)
return type
/obj/random/glowstick
name = "random glowstick"
desc = "This is a random glowstick."
icon = 'icons/obj/glowsticks.dmi'
icon_state = "glowstick"
/obj/random/glowstick/item_to_spawn()
return pick(/obj/item/device/flashlight/glowstick,\
/obj/item/device/flashlight/glowstick/red,\
/obj/item/device/flashlight/glowstick/blue,\
/obj/item/device/flashlight/glowstick/orange,\
/obj/item/device/flashlight/glowstick/yellow)
/obj/random/booze
name = "random alcoholic drink"
desc = "This is a random alcoholic drink."
icon = 'icons/obj/drinks.dmi'
icon_state = "broken_bottle"
/obj/random/booze/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/brandy,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/guinnes,\
/obj/item/weapon/reagent_containers/food/drinks/bottle/drambuie,\
/obj/item/weapon/reagent_containers/food/drinks/cans/beer,\
/obj/item/weapon/reagent_containers/food/drinks/cans/ale)
/obj/random/melee
name = "random melee weapon"
desc = "This is a random melee weapon."
icon = 'icons/obj/weapons.dmi'
icon_state = "baton"
/obj/random/melee/item_to_spawn()
return pick(/obj/item/weapon/melee/telebaton,\
/obj/item/weapon/melee/energy/sword,\
/obj/item/weapon/melee/energy/sword/pirate,\
/obj/item/weapon/melee/energy/glaive,\
/obj/item/weapon/melee/chainsword,\
/obj/item/weapon/melee/baton/stunrod,\
/obj/item/weapon/material/harpoon,\
/obj/item/weapon/material/scythe,\
/obj/item/weapon/material/twohanded/spear/plasteel,\
/obj/item/weapon/material/sword/trench,\
/obj/item/weapon/material/sword/rapier)
/obj/random/coin
name = "random coin"
desc = "This is a random coin."
icon = 'icons/obj/items.dmi'
icon_state = "coin"
/obj/random/coin/item_to_spawn()
var/list/coin = list("/obj/item/weapon/coin/iron" = 5,
"/obj/item/weapon/coin/silver" = 3,
"/obj/item/weapon/coin/gold" = 1,
"/obj/item/weapon/coin/silver" = 0.7,
"/obj/item/weapon/coin/phoron" = 0.5,
"obj/item/weapon/coin/uranium" = 0.5,
"/obj/item/weapon/coin/platinum" = 0.2,
"/obj/item/weapon/coin/diamond" = 0.1,
)
return pickweight(coin)
/obj/random/energy_antag
name = "random energy weapon"
desc = "This is a random energy weapon."
icon = 'icons/obj/gun.dmi'
icon_state = "retro100"
/obj/random/energy_antag/item_to_spawn()
return pick(/obj/item/weapon/gun/energy/retro,\
/obj/item/weapon/gun/energy/xray,\
/obj/item/weapon/gun/energy/gun,\
/obj/item/weapon/gun/energy/pistol,\
/obj/item/weapon/gun/energy/rifle,\
/obj/item/weapon/gun/energy/mindflayer,\
/obj/item/weapon/gun/energy/toxgun,\
/obj/item/weapon/gun/energy/vaurca/gatlinglaser,\
/obj/item/weapon/gun/energy/vaurca/blaster,\
/obj/item/weapon/gun/energy/crossbow/largecrossbow)
/obj/random/colored_jumpsuit
name = "random colored jumpsuit"
desc = "This is a random colowerd jumpsuit."
icon = 'icons/obj/clothing/uniforms.dmi'
icon_state = "black"
/obj/random/colored_jumpsuit/item_to_spawn()
return pick(/obj/item/clothing/under/color/black,\
/obj/item/clothing/under/color/blackf,\
/obj/item/clothing/under/color/blue,\
/obj/item/clothing/under/color/green,\
/obj/item/clothing/under/color/grey,\
/obj/item/clothing/under/color/orange,\
/obj/item/clothing/under/color/pink,\
/obj/item/clothing/under/color/red,\
/obj/item/clothing/under/color/white,\
/obj/item/clothing/under/color/yellow,\
/obj/item/clothing/under/lightblue,\
/obj/item/clothing/under/aqua,\
/obj/item/clothing/under/purple,\
/obj/item/clothing/under/lightpurple,\
/obj/item/clothing/under/lightgreen,\
/obj/item/clothing/under/lightbrown,\
/obj/item/clothing/under/brown,\
/obj/item/clothing/under/yellowgreen,\
/obj/item/clothing/under/darkblue,\
/obj/item/clothing/under/lightred,\
/obj/item/clothing/under/darkred)
/obj/random/loot
name = "random maintenance loot items"
desc = "Stuff for the maint-dwellers."
icon = 'icons/obj/items.dmi'
icon_state = "gift3"
/obj/random/loot/item_to_spawn()
var/list/maint = list("/obj/item/clothing/glasses/meson" = 1,
"/obj/item/clothing/glasses/meson/prescription" = 0.7,
"/obj/item/clothing/glasses/material" = 0.8,
"/obj/item/clothing/glasses/sunglasses" = 1.5,
"/obj/item/clothing/glasses/welding" = 1.2,
"/obj/item/clothing/under/captain_fly" = 0.7,
"/obj/item/clothing/under/rank/mailman" = 0.6,
"/obj/item/clothing/under/rank/vice" = 0.8,
"/obj/item/clothing/under/assistantformal" = 1,
"/obj/item/clothing/under/rainbow" = 0.9,
"/obj/item/clothing/under/overalls" = 1,
"/obj/item/clothing/under/redcoat" = 0.5,
"/obj/item/clothing/under/serviceoveralls" = 1,
"/obj/item/clothing/under/psyche" = 0.5,
"/obj/item/clothing/under/track" = 0.9,
"/obj/item/clothing/under/rank/dispatch" = 1,
"/obj/item/clothing/under/syndicate/tacticool" = 1,
"/obj/item/clothing/under/syndicate/tracksuit" = 0.2,
"/obj/item/clothing/accessory/badge" = 0.2,
"/obj/item/clothing/accessory/badge/old" = 0.2,
"/obj/item/clothing/accessory/storage/webbing" = 0.6,
"/obj/item/clothing/accessory/storage/knifeharness" = 0.3,
"/obj/item/clothing/head/collectable/petehat" = 0.3,
"/obj/item/clothing/head/hardhat" = 1.5,
"/obj/item/clothing/head/redcoat" = 0.4,
"/obj/item/clothing/head/syndicatefake" = 0.5,
"/obj/item/clothing/head/richard," = 0.3,
"/obj/item/clothing/head/soft/rainbow" = 0.7,
"/obj/item/clothing/head/plaguedoctorhat" = 0.5,
"/obj/item/clothing/head/cueball" = 0.5,
"/obj/item/clothing/head/pirate" = 0.4,
"/obj/item/clothing/head/bearpelt" = 0.4,
"/obj/item/clothing/head/witchwig" = 0.5,
"/obj/item/clothing/head/pumpkinhead" = 0.6,
"/obj/item/clothing/head/kitty" = 0.2,
"/obj/item/clothing/head/ushanka" = 0.6,
"/obj/item/clothing/head/helmet/augment" = 0.1,
"/obj/item/clothing/mask/balaclava" = 1,
"/obj/item/clothing/mask/gas" = 1.5,
"/obj/item/clothing/mask/gas/cyborg" = 0.7,
"/obj/item/clothing/mask/gas/owl_mask" = 0.8,
"/obj/item/clothing/mask/gas/syndicate" = 0.4,
"/obj/item/clothing/mask/fakemoustache" = 0.4,
"/obj/item/clothing/mask/horsehead" = 0.9,
"/obj/item/clothing/shoes/rainbow" = 1,
"/obj/item/clothing/shoes/jackboots" = 1,
"/obj/item/clothing/shoes/workboots" = 1,
"/obj/item/clothing/shoes/cyborg" = 0.4,
"/obj/item/clothing/shoes/galoshes" = 0.6,
"/obj/item/clothing/shoes/slippers_worn" = 0.7,
"/obj/item/clothing/shoes/combat" = 0.2,
"/obj/item/clothing/shoes/clown_shoes" = 0.1,
"/obj/item/clothing/suit/storage/hazardvest" = 1,
"/obj/item/clothing/suit/storage/leather_jacket/nanotrasen" = 0.7,
"/obj/item/clothing/suit/storage/toggle/tracksuit" = 0.7,
"/obj/item/clothing/suit/ianshirt" = 0.5,
"/obj/item/clothing/suit/syndicatefake" = 0.6,
"/obj/item/clothing/suit/imperium_monk" = 0.4,
"/obj/item/clothing/suit/storage/vest" = 0.2,
"/obj/item/clothing/gloves/black" = 1,
"/obj/item/clothing/gloves/fyellow" = 1.2,
"/obj/item/clothing/gloves/yellow" = 0.9,
"/obj/item/clothing/gloves/watch" = 0.8,
"/obj/item/clothing/gloves/boxing" = 0.8,
"/obj/item/clothing/gloves/boxing/green" = 0.8,
"/obj/item/clothing/gloves/botanic_leather" = 0.7,
"/obj/item/clothing/gloves/combat" = 0.2,
"/obj/item/toy/bosunwhistle" = 0.5,
"/obj/item/toy/balloon" = 0.4,
"/obj/item/weapon/haircomb" = 0.5,
"/obj/item/weapon/lipstick" = 0.6,
"/obj/item/weapon/material/knife/hook," = 0.3,
"/obj/item/weapon/material/hatchet/tacknife" = 0.4,
"/obj/item/weapon/storage/fancy/cigarettes/dromedaryco" = 1.2,
"/obj/item/weapon/storage/bag/plasticbag" = 1,
"/obj/item/weapon/extinguisher" = 1.3,
"/obj/item/weapon/extinguisher/mini" = 0.9,
"/obj/item/device/radiojammer/improvised" = 0.3,
"/obj/item/device/flashlight" = 1,
"/obj/item/device/flashlight/heavy" = 0.5,
"/obj/item/device/flashlight/maglight" = 0.4,
"/obj/item/device/flashlight/flare" = 0.5,
"/obj/item/device/flashlight/lantern" = 0.4,
"/obj/item/weapon/reagent_containers/food/drinks/teapot" = 0.4,
"/obj/item/weapon/reagent_containers/food/drinks/flask/shiny" = 0.3,
"/obj/item/weapon/reagent_containers/food/drinks/flask/lithium" = 0.3,
"/obj/item/bodybag" = 0.7,
"/obj/item/weapon/reagent_containers/spray/cleaner" = 0.6,
"/obj/item/weapon/tank/emergency_oxygen" = 0.7,
"/obj/item/weapon/tank/emergency_oxygen/double" = 0.4,
"/obj/item/clothing/mask/smokable/pipe/cobpipe" = 0.5,
"/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba" = 0.7,
"/obj/item/weapon/flame/lighter" = 0.9,
"/obj/item/weapon/flame/lighter/zippo" = 0.7,
"/obj/item/device/gps/engineering" = 0.6,
"/obj/item/device/megaphone" = 0.5,
"/obj/item/device/floor_painter" = 0.6,
"/obj/random/toolbox" = 1,
"/obj/random/coin" = 1.2,
"/obj/random/tech_supply," = 1.2,
"/obj/random/powercell" = 0.8,
"/obj/random/colored_jumpsuit" = 0.7,
"/obj/random/booze" = 1.1,
"/obj/random/belt" = 0.9,
"/obj/random/contraband" = 0.9,
"/obj/random/glowstick" = 0.7,
"/obj/item/weapon/caution/cone" = 0.7,
"/obj/item/weapon/staff/broom" = 0.5,
"/obj/item/weapon/soap" = 0.4,
"/obj/item/weapon/material/wirerod" = 0.4,
"/obj/item/weapon/storage/box/donkpockets" = 0.6,
"/obj/item/weapon/contraband/poster" = 1.3,
)
return pickweight(maint)
+11 -1
View File
@@ -401,4 +401,14 @@
icon_state = "black_hoodie"
item_state = "black_hoodie"
icon_open = "black_hoodie_open"
icon_closed = "black_hoodie"
icon_closed = "black_hoodie"
/obj/item/clothing/suit/storage/toggle/tracksuit
name = "track jacket"
desc = "An athletic black and white track jacket."
icon = 'icons/obj/tracksuit.dmi'
icon_state = "trackjacket"
item_state = "trackjacket"
icon_open = "trackjacket_open"
icon_closed = "trackjacket"
contained_sprite = 1
@@ -525,3 +525,11 @@
icon_state = "blue_blazer"
item_state = "blue_blazer"
worn_state = "blue_blazer"
/obj/item/clothing/under/track
name = "track pants"
desc = "Track pants, perfect for squatting."
icon = 'icons/obj/tracksuit.dmi'
icon_state = "trackpants"
item_state = "trackpants"
contained_sprite = 1
+8
View File
@@ -19,3 +19,11 @@
worn_state = "tactifool"
siemens_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/under/syndicate/tracksuit
name = "tactical tracksuit"
desc = "A tactical ready tracksuit, perfect for stealthy operations and squatting in cold places."
icon = 'icons/obj/tracksuit.dmi'
icon_state = "fulltracksuit"
item_state = "fulltracksuit"
contained_sprite = 1
@@ -328,3 +328,19 @@
ammo_type = /obj/item/ammo_casing/shotgun/incendiary
max_ammo = 8
matter = list(DEFAULT_WALL_MATERIAL = 3600)
//dragunov magazine
/obj/item/ammo_magazine/d762
name = "magazine (7.62mm)"
icon = 'icons/obj/dragunov.dmi'
icon_state = "SVD"
mag_type = MAGAZINE
caliber = "a762"
matter = list(DEFAULT_WALL_MATERIAL = 1200)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 10
multiple_sprites = 1
/obj/item/ammo_magazine/d762/empty
initial_ammo = 0
@@ -19,7 +19,7 @@
load_method = SINGLE_CASING
/obj/item/weapon/gun/projectile/shotgun/improvised/special_check(var/mob/living/carbon/human/M)
if(prob(60 - (loaded.len * 10)))
if(prob(35))
M.visible_message("<span class='danger'>[M]'s weapon blows up, shattering into pieces!</span>","<span class='danger'>[src] blows up in your face!</span>", "You hear a loud bang!")
M.take_organ_damage(0,30)
M.drop_item()
@@ -140,7 +140,7 @@
origin_tech = "combat=2;materials=2"
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
jam_chance = 55
jam_chance = 30
/obj/item/weapon/stock/update_icon()
icon_state = "ipistol[buildstate]"
@@ -0,0 +1,63 @@
/obj/item/weapon/gun/projectile/dragunov
name = "\improper dragunov sniper rifle"
desc = "An old semi-automatic marksman rifle. Uses 7.62mm rounds."
icon = 'icons/obj/dragunov.dmi'
icon_state = "dragunov"
item_state = "dragunov"
contained_sprite = 1
w_class = 4
force = 10
slot_flags = SLOT_BACK
origin_tech = "combat=8;materials=3;syndicate=5"
caliber = "a762"
recoil = 2
fire_sound = 'sound/weapons/svd_shot.ogg'
load_method = MAGAZINE
max_shells = 10
magazine_type = /obj/item/ammo_magazine/d762
allowed_magazines = list(/obj/item/ammo_magazine/d762)
accuracy = -4
scoped_accuracy = 2
recoil_wielded = 1
accuracy_wielded = 0
//action button for wielding
action_button_name = "Wield rifle"
/obj/item/weapon/gun/projectile/dragunov/update_icon()
if(ammo_magazine)
icon_state = "dragunov"
else
icon_state = "dragunov-empty"
/obj/item/weapon/gun/projectile/dragunov/can_wield()
return 1
/obj/item/weapon/gun/projectile/dragunov/ui_action_click()
if(src in usr)
toggle_wield(usr)
/obj/item/weapon/gun/projectile/dragunov/verb/wield_rifle()
set name = "Wield rifle"
set category = "Object"
set src in usr
toggle_wield(usr)
/obj/item/weapon/gun/projectile/dragunov/special_check(mob/user)
if(!wielded)
user << "<span class='warning'>You can't fire without stabilizing the rifle!</span>"
return 0
return ..()
/obj/item/weapon/gun/projectile/dragunov/verb/scope()
set category = "Object"
set name = "Use Scope"
set popup_menu = 1
if(wielded)
toggle_scope(2.0)
else
usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>"