Merge branch 'master' of https://github.com/tgstation/-tg-station into newshotguns

Conflicts:
	code/modules/projectiles/ammunition/magazines.dm
	code/modules/projectiles/guns/projectile/shotgun.dm
	icons/mob/back.dmi
	icons/obj/gun.dmi
This commit is contained in:
paprka
2014-10-19 17:30:47 -07:00
75 changed files with 471 additions and 227 deletions
+1 -1
View File
@@ -20,7 +20,7 @@
item_state = "bio_suit"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen)
allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash/handheld, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen)
//Chaplain
/obj/item/clothing/suit/chaplain_hoodie
+34 -36
View File
@@ -1,17 +1,26 @@
/obj/item/clothing/under/color
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
/obj/item/clothing/under/color/random/New()
var/list/excluded = list(/obj/item/clothing/under/color/random, /obj/item/clothing/under/color)
var/obj/item/clothing/under/color/C = pick(typesof(/obj/item/clothing/under/color) - excluded)
name = initial(C.name)
icon_state = initial(C.icon_state)
item_state = initial(C.item_state)
item_color = initial(C.item_color)
/obj/item/clothing/under/color/black
name = "black jumpsuit"
icon_state = "black"
item_state = "bl_suit"
item_color = "black"
/obj/item/clothing/under/color/blackf
name = "feminine black jumpsuit"
desc = "It's very smart and in a ladies-size!"
icon_state = "black"
item_state = "bl_suit"
item_color = "blackf"
fitted = 0
can_adjust = 0
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
icon_state = "grey"
item_state = "gy_suit"
item_color = "grey"
/obj/item/clothing/under/color/blue
name = "blue jumpsuit"
@@ -25,20 +34,12 @@
item_state = "g_suit"
item_color = "green"
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
icon_state = "grey"
item_state = "gy_suit"
item_color = "grey"
/obj/item/clothing/under/color/orange
name = "orange jumpsuit"
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
desc = "Don't wear this near paranoid security officers."
icon_state = "orange"
item_state = "o_suit"
item_color = "orange"
has_sensor = 2
sensor_mode = 3
/obj/item/clothing/under/color/pink
name = "pink jumpsuit"
@@ -64,81 +65,78 @@
item_state = "y_suit"
item_color = "yellow"
/obj/item/clothing/under/color/psyche
name = "psychedelic jumpsuit"
desc = "Groovy!"
icon_state = "psyche"
item_color = "psyche"
/obj/item/clothing/under/color/lightblue
name = "lightblue jumpsuit"
desc = "lightblue"
icon_state = "lightblue"
item_state = "b_suit"
item_color = "lightblue"
/obj/item/clothing/under/color/aqua
name = "aqua jumpsuit"
desc = "aqua"
icon_state = "aqua"
item_state = "b_suit"
item_color = "aqua"
/obj/item/clothing/under/color/purple
name = "purple jumpsuit"
desc = "purple"
icon_state = "purple"
item_state = "p_suit"
item_color = "purple"
/obj/item/clothing/under/color/lightpurple
name = "lightpurple jumpsuit"
desc = "lightpurple"
icon_state = "lightpurple"
item_state = "p_suit"
item_color = "lightpurple"
/obj/item/clothing/under/color/lightgreen
name = "lightgreen jumpsuit"
desc = "lightgreen"
icon_state = "lightgreen"
item_state = "g_suit"
item_color = "lightgreen"
/obj/item/clothing/under/color/lightblue
name = "lightblue jumpsuit"
desc = "lightblue"
icon_state = "lightblue"
item_state = "b_suit"
item_color = "lightblue"
/obj/item/clothing/under/color/lightbrown
name = "lightbrown jumpsuit"
desc = "lightbrown"
icon_state = "lightbrown"
item_color = "lightbrown"
/obj/item/clothing/under/color/brown
name = "brown jumpsuit"
desc = "brown"
icon_state = "brown"
item_color = "brown"
/obj/item/clothing/under/color/yellowgreen
name = "yellowgreen jumpsuit"
desc = "yellowgreen"
icon_state = "yellowgreen"
item_state = "y_suit"
item_color = "yellowgreen"
/obj/item/clothing/under/color/darkblue
name = "darkblue jumpsuit"
desc = "darkblue"
icon_state = "darkblue"
item_state = "b_suit"
item_color = "darkblue"
/obj/item/clothing/under/color/lightred
name = "lightred jumpsuit"
desc = "lightred"
icon_state = "lightred"
item_state = "r_suit"
item_color = "lightred"
/obj/item/clothing/under/color/darkred
name = "darkred jumpsuit"
desc = "darkred"
icon_state = "darkred"
item_color = "darkred"
item_state = "r_suit"
item_color = "darkred"
/obj/item/clothing/under/color/maroon
name = "maroon jumpsuit"
icon_state = "maroon"
item_state = "r_suit"
item_color = "maroon"
@@ -46,6 +46,15 @@
item_color = "waiter"
can_adjust = 0
/obj/item/clothing/under/rank/prisoner
name = "prison jumpsuit"
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
icon_state = "prisoner"
item_state = "o_suit"
item_color = "prisoner"
has_sensor = 2
sensor_mode = 3
/obj/item/clothing/under/rank/mailman
name = "mailman's jumpsuit"
desc = "<i>'Special delivery!'</i>"
@@ -53,6 +62,13 @@
item_state = "b_suit"
item_color = "mailman"
/obj/item/clothing/under/rank/psyche
name = "psychedelic jumpsuit"
desc = "Groovy!"
icon_state = "psyche"
item_state = "p_suit"
item_color = "psyche"
/obj/item/clothing/under/sexyclown
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
+1 -4
View File
@@ -365,10 +365,7 @@ ________________________________________________________________________________
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
equip_to_slot_or_del(R, slot_ears)
if(gender==FEMALE)
equip_to_slot_or_del(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform)
else
equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes)
equip_to_slot_or_del(new /obj/item/clothing/suit/space/space_ninja(src), slot_wear_suit)
equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves)
+1 -1
View File
@@ -349,7 +349,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/laser/captain,\
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
/obj/item/clothing/shoes/magboots, /obj/item/areaeditor/blueprints, /obj/item/weapon/disk/nuclear,\
/obj/item/clothing/suit/space/nasavoid, /obj/item/weapon/tank)
/proc/fake_attack(var/mob/living/target)
+17
View File
@@ -750,6 +750,23 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
qdel(src)
return
/obj/item/weapon/reagent_containers/food/snacks/grown/carpet
seed = /obj/item/seeds/carpetseed
name = "carpet"
desc = "The textile industry's dark secret."
icon_state = "carpetclump"
/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/attack_self(mob/user as mob)
user << "<span class='notice'>You roll out the red carpet.</span>"
var/location = get_turf(user)
var/carpetAmt = 1 + round(potency / 50) // The carpet we're holding
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/carpetToConvert in location) // The carpet on the floor
carpetAmt += 1
qdel(carpetToConvert)
var/obj/item/stack/tile/newAstroturf = new /obj/item/stack/tile/carpet(location)
newAstroturf.amount = carpetAmt
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
seed = /obj/item/seeds/kudzuseed
name = "kudzu pod"
+17
View File
@@ -1013,6 +1013,23 @@
potency = 10
plant_type = 0
growthstages = 2
mutatelist = list(/obj/item/seeds/carpetseed)
/obj/item/seeds/carpetseed
name = "pack of carpet seeds"
desc = "These seeds grow into stylish carpet samples."
icon_state = "seed-carpet"
species = "carpet"
plantname = "Carpet"
product = /obj/item/weapon/reagent_containers/food/snacks/grown/carpet
lifespan = 40
endurance = 40
maturation = 2
production = 5
yield = 5
potency = 10
plant_type = 0
growthstages = 2
/obj/item/seeds/cocoapodseed
name = "pack of cocoa pod seeds"
@@ -30,7 +30,7 @@
var/fire_alert = 0
var/heat_protection = 0.5
var/leaping = 0
/mob/living/carbon/alien/New()
verbs += /mob/living/proc/mob_sleep
@@ -8,7 +8,6 @@
icon_state = "alienh_s"
plasma_rate = 5
/mob/living/carbon/alien/humanoid/hunter/New()
create_reagents(100)
if(name == "alien hunter")
@@ -50,26 +49,105 @@
//Hunter verbs
/*
/mob/living/carbon/alien/humanoid/hunter/verb/invis()
set name = "Invisibility (50)"
set desc = "Makes you invisible for 15 seconds"
set category = "Alien"
if(alien_invis)
update_icons()
/mob/living/carbon/alien/humanoid/hunter/proc/toggle_leap()
leap_on_click = !leap_on_click
leap_icon.icon_state = "leap_[leap_on_click ? "on":"off"]"
src << "<span class='noticealien'>You will now [leap_on_click ? "leap at":"slash at"] enemies!</span>"
/mob/living/carbon/alien/humanoid/hunter/ClickOn(var/atom/A, var/params)
face_atom(A)
if(leap_on_click)
leap_at(A)
else
if(powerc(50))
adjustToxLoss(-50)
alien_invis = 1.0
update_icons()
src << "\green You are now invisible."
for(var/mob/O in oviewers(src, null))
O.show_message(text("\red <B>[src] fades into the surroundings!</B>"), 1)
spawn(250)
if(!isnull(src))//Don't want the game to runtime error when the mob no-longer exists.
alien_invis = 0.0
update_icons()
src << "\green You are no longer invisible."
return
*/
..()
#define MAX_ALIEN_LEAP_DIST 7
/mob/living/carbon/alien/humanoid/hunter/proc/leap_at(var/atom/A)
if(leaping) //Leap while you leap, so you can leap while you leap
return
if(!has_gravity(src) || !has_gravity(A))
src << "<span class='alertalien'>It is unsafe to leap without gravity!</span>"
//It's also extremely buggy visually, so it's balance+bugfix
return
if(lying)
return
leaping = 1
update_icons()
throw_at(A,MAX_ALIEN_LEAP_DIST,1)
leaping = 0
update_icons()
/mob/living/carbon/alien/humanoid/throw_impact(A)
var/msg = ""
if(A)
if(istype(A, /mob/living))
var/mob/living/L = A
msg = "<span class ='alertalien'>[src] pounces on [A]!</span>"
L.Weaken(5)
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
else
msg = "<span class ='alertalien'>[src] smashes into [A]!</span>"
weakened = 2
if(leaping)
leaping = 0
update_canmove()
visible_message(msg)
/mob/living/carbon/alien/humanoid/float(on)
if(leaping)
return
..()
//Modified throw_at() that will use diagonal dirs where appropriate
//instead of locking it to cardinal dirs
/mob/living/carbon/alien/humanoid/throw_at(atom/target, range, speed)
if(!target || !src || (flags & NODROP)) return 0
src.throwing = 1
var/dist_x = abs(target.x - src.x)
var/dist_y = abs(target.y - src.y)
var/dist_travelled = 0
var/dist_since_sleep = 0
var/tdist_x = dist_x;
var/tdist_y = dist_y;
if(dist_x <= dist_y)
tdist_x = dist_y;
tdist_y = dist_x;
var/error = tdist_x/2 - tdist_y
while(target && (((((dist_x > dist_y) && ((src.x < target.x) || (src.x > target.x))) || ((dist_x <= dist_y) && ((src.y < target.y) || (src.y > target.y))) || (src.x > target.x)) && dist_travelled < range) || !has_gravity(src)))
if(!src.throwing) break
if(!istype(src.loc, /turf)) break
var/atom/step = get_step(src, get_dir(src,target))
if(!step)
break
src.Move(step)
hit_check()
error += (error < 0) ? tdist_x : -tdist_y;
dist_travelled++
dist_since_sleep++
if(dist_since_sleep >= speed)
dist_since_sleep = 0
sleep(1)
src.throwing = 0
if(isobj(src))
src.throw_impact(get_turf(src))
return 1
@@ -4,6 +4,7 @@
var/obj/item/r_store = null
var/obj/item/l_store = null
var/caste = ""
var/leap_on_click = 0
update_icon = 1
//This is fine right now, if we're adding organ specific damage this needs to be updated
@@ -365,6 +365,8 @@
if(weakened)
weakened = max(weakened-1,0)
if(!weakened)
update_icons()
if(stuttering)
stuttering = max(stuttering-1, 0)
@@ -14,6 +14,7 @@
for(var/image/I in overlays_standing)
overlays += I
if(stat == DEAD)
//If we mostly took damage from fire
if(fireloss > 125)
@@ -22,9 +23,13 @@
else
icon_state = "alien[caste]_dead"
pixel_y = 0
else if(stat == UNCONSCIOUS)
else if(stat == UNCONSCIOUS || weakened)
icon_state = "alien[caste]_unconscious"
pixel_y = 0
else if(leap_on_click)
icon_state = "alien[caste]_pounce"
else if(lying || resting)
icon_state = "alien[caste]_sleep"
else if(m_intent == "run")
@@ -32,6 +37,18 @@
else
icon_state = "alien[caste]_s"
if(leaping)
icon = 'icons/mob/alienleap.dmi'
icon_state = "alien[caste]_leap"
pixel_x = -32
pixel_y = -32
else
icon = initial(icon)
pixel_x = initial(pixel_x)
pixel_y = initial(pixel_y)
/mob/living/carbon/alien/humanoid/regenerate_icons()
..()
if (notransform) return
@@ -494,6 +494,10 @@
else
mode()
/mob/living/simple_animal/drone/assess_threat() //Secbots won't hunt maintenance drones.
return -10
#undef HANDS_LAYER
#undef HEAD_LAYER
#undef TOTAL_LAYERS
+1
View File
@@ -30,6 +30,7 @@
Changing this around would probably require a good look-over the pre-existing code.
*/
var/obj/screen/zone_sel/zone_sel = null
var/obj/screen/leap_icon = null
var/damageoverlaytemp = 0
var/computer_id = null
@@ -671,6 +671,15 @@
icon_state = "female_kinky"
gender = FEMALE
/datum/sprite_accessory/underwear/female_whitealt
name = "Ladies White Sport"
icon_state = "female_whitealt"
gender = FEMALE
/datum/sprite_accessory/underwear/female_blackalt
name = "Ladies Black Sport"
icon_state = "female_blackalt"
gender = FEMALE
////////////////////////////
// Undershirt Definitions //
+2 -2
View File
@@ -186,7 +186,7 @@
res.Blend(img, blendMode2iconMode(A.blend_mode), offX, offY)
if(istype(A, /obj/item/blueprints))
if(istype(A, /obj/item/areaeditor/blueprints))
blueprints = 1
for(var/turf/T in turfs)
@@ -426,4 +426,4 @@ obj/item/device/camera/siliconcam/robot_camera/proc/borgprint()
p.pixel_y = rand(-10, 10)
C.toner -= 20 //Cyborgs are very ineffeicient at printing an image
visible_message("[C.name] spits out a photograph from a narrow slot on it's chassis.")
usr << "You print a photograph."
usr << "You print a photograph."
@@ -67,6 +67,14 @@
max_ammo = 1
multiload = 0
/obj/item/ammo_box/magazine/internal/shotriot
name = "riot shotgun internal magazine"
desc = "Oh god, this shouldn't be here"
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
caliber = "shotgun"
max_ammo = 6
multiload = 0
///////////EXTERNAL MAGAZINES////////////////
/obj/item/ammo_box/magazine/m9mm
name = "handgun magazine (9mm)"
@@ -60,6 +60,12 @@
mag_type = /obj/item/ammo_box/magazine/internal/shotcom
w_class = 5
/obj/item/weapon/gun/projectile/shotgun/riot //for spawn in the armory
name = "riot shotgun"
desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control."
icon_state = "riotshotgun"
mag_type = /obj/item/ammo_box/magazine/internal/shotriot
/obj/item/weapon/gun/projectile/revolver/doublebarrel
name = "double-barreled shotgun"
desc = "A true classic."
@@ -52,7 +52,7 @@ datum/design/synthetic_flash
build_type = MECHFAB
materials = list("$metal" = 750, "$glass" = 750)
reliability = 76
build_path = /obj/item/device/flash/
build_path = /obj/item/device/flash/handheld
category = "Misc"
datum/design/bluespacebeaker