Plenty'o'fixes (#1478)

Nerfs blob rollercoaster of death by making it so that blobs cannot interact with the mobs inside of other blobs.
Replaces blob's gibbing mobs with husking humans, merely killing borgs, and gibbing everything else.
Makes flamethrowers modestly more effective versus blobs - a consistent source of minor AoE damage.
Makes blobs more aesthetically pleasing.
Distinguishes the main core from the aux cores slightly more.

Fixes #1426
Fixes #1427
Fixes #1432
Fixes #1461
Fixes #1464
Fixes #1471

Modifies BFG's to be more like actual BFG's.
Fixes Industrial IPCs being able to select Baseline IPC screens.
Fixes several baycode company names to fit ours in guns. Changes several of our guns to fit Baycode's naming paradigm.
This commit is contained in:
LordFowl
2017-01-08 18:04:36 -05:00
committed by skull132
parent 465b982eeb
commit 13ac6c9351
27 changed files with 182 additions and 86 deletions

View File

@@ -92,6 +92,8 @@
money.pixel_y = rand(-6, 6) money.pixel_y = rand(-6, 6)
money.transform *= 0.6 money.transform *= 0.6
underlays += money underlays += money
for (var/A in S.overlays)
underlays += A
if(2) if(2)
for(var/mob/M in src) for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state) var/image/victim = image(M.icon, M.icon_state)

View File

@@ -164,6 +164,7 @@
allow_quick_gather = 1 allow_quick_gather = 1
use_to_pickup = 1 use_to_pickup = 1
use_sound = null use_sound = null
max_storage_space = 16
/obj/item/weapon/storage/pill_bottle/antitox /obj/item/weapon/storage/pill_bottle/antitox
name = "bottle of Dylovene pills" name = "bottle of Dylovene pills"

View File

@@ -213,16 +213,15 @@
if(istype(W, /obj/item/weapon/weldingtool)) if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0,user)) if(!WT.remove_fuel(0,user))
if(!WT.isOn()) if(WT.isOn())
return
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>" user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return return
new /obj/item/stack/material/steel(src.loc) else
for(var/mob/M in viewers(src)) new /obj/item/stack/material/steel(src.loc)
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2) for(var/mob/M in viewers(src))
qdel(src) M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2)
return qdel(src)
return
if(istype(W, /obj/item/weapon/storage/laundry_basket) && W.contents.len) if(istype(W, /obj/item/weapon/storage/laundry_basket) && W.contents.len)
var/obj/item/weapon/storage/laundry_basket/LB = W var/obj/item/weapon/storage/laundry_basket/LB = W
var/turf/T = get_turf(src) var/turf/T = get_turf(src)

View File

@@ -166,6 +166,7 @@
new /obj/item/weapon/storage/box/holobadge(src) new /obj/item/weapon/storage/box/holobadge(src)
new /obj/item/clothing/head/beret/sec/warden(src) new /obj/item/clothing/head/beret/sec/warden(src)
new /obj/item/clothing/accessory/badge/warden(src) new /obj/item/clothing/accessory/badge/warden(src)
new /obj/item/ammo_magazine/c45m/rubber(src)
return return
@@ -201,6 +202,7 @@
new /obj/item/clothing/head/soft/sec/corp(src) new /obj/item/clothing/head/soft/sec/corp(src)
new /obj/item/clothing/under/rank/security/corp(src) new /obj/item/clothing/under/rank/security/corp(src)
new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/ammo_magazine/c45m/rubber(src)
return return

View File

@@ -28,6 +28,9 @@
/obj/effect/blob/New(loc) /obj/effect/blob/New(loc)
processing_objects.Add(src) processing_objects.Add(src)
health = maxHealth health = maxHealth
var/matrix/M = matrix()
M.Turn(90 * pick(0,1,2,3))
src.transform = M
update_icon() update_icon()
return ..(loc) return ..(loc)
@@ -47,7 +50,13 @@
for(var/mob/living/L in src.loc) for(var/mob/living/L in src.loc)
if(L.stat == DEAD) if(L.stat == DEAD)
if(prob(10)) if(prob(10))
L.gib() if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
H.ChangeToHusk()
else if(istype(L, /mob/living/silicon))
continue
else
L.gib()
if(health < maxHealth) if(health < maxHealth)
health += rand(10,30) health += rand(10,30)
if(health > maxHealth) if(health > maxHealth)
@@ -63,24 +72,30 @@
hangry += 16 hangry += 16
for(var/mob/living/L in range(src,"3x3")) for(var/mob/living/L in range(src,"3x3"))
if(!hangry) var/obj/effect/blob/B = (locate() in get_turf(L))
if(L.stat == DEAD) if(!B)
continue if(!hangry)
if(prob(40)) if(L.stat == DEAD)
L.visible_message("<span class='danger'>The blob sucks \the [L] into itself!</span>", "<span class='danger'>The blob sucks you in!</span>") continue
playsound(loc, 'sound/effects/attackblob.ogg', 50, 1) if(prob(40))
L.take_organ_damage(rand(5, 10)) L.visible_message("<span class='danger'>The blob sucks \the [L] into itself!</span>", "<span class='danger'>The blob sucks you in!</span>")
L.forceMove(src.loc) playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
else L.take_organ_damage(rand(5, 10))
L.visible_message("<span class='danger'>The blob glomps \the [L]!</span>", "<span class='danger'>The blob glomps you!</span>") L.forceMove(src.loc)
playsound(loc, 'sound/effects/attackblob.ogg', 50, 1) else
L.take_organ_damage(rand(5, 20)) L.visible_message("<span class='danger'>The blob glomps \the [L]!</span>", "<span class='danger'>The blob glomps you!</span>")
if(health < maxHealth) playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
health += rand(1,10) L.take_organ_damage(rand(5, 20))
if(health > maxHealth) if(health < maxHealth)
health = maxHealth health += rand(1,10)
hangry += 4 if(health > maxHealth)
health = maxHealth
hangry += 4
for(var/obj/fire/F in range(src,"3x3")) //very snowflake, but much better than actually coding complex thermodynamics for these fuckers
if(prob(50))
src.visible_message("<span class='danger'>The blob melts away under the heat of the flames!</span>")
src.take_damage(5,10)
hangry -= 1 hangry -= 1
if(hangry < 0) if(hangry < 0)
hangry = 0 hangry = 0
@@ -262,6 +277,7 @@
laser_resist = 4 laser_resist = 4
regen_rate = 1 regen_rate = 1
growth_range = 3 growth_range = 3
expandType = /obj/effect/blob
/obj/effect/blob/core/secondary/New() /obj/effect/blob/core/secondary/New()
processing_objects.Add(src) processing_objects.Add(src)
@@ -278,7 +294,6 @@
name = "strong blob" name = "strong blob"
icon = 'icons/mob/blob.dmi' icon = 'icons/mob/blob.dmi'
icon_state = "blob_idle" icon_state = "blob_idle"
opacity = 1
maxHealth = 60 maxHealth = 60
brute_resist = 1 brute_resist = 1
fire_resist = 2 fire_resist = 2

View File

@@ -366,6 +366,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
return TOPIC_REFRESH return TOPIC_REFRESH
else if(href_list["hair_style"]) else if(href_list["hair_style"])
if(mob_species.bald)
return
var/list/valid_hairstyles = list() var/list/valid_hairstyles = list()
for(var/hairstyle in hair_styles_list) for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle] var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
@@ -418,6 +420,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
return TOPIC_REFRESH return TOPIC_REFRESH
else if(href_list["facial_style"]) else if(href_list["facial_style"])
if(mob_species.bald)
return
var/list/valid_facialhairstyles = list() var/list/valid_facialhairstyles = list()
for(var/facialhairstyle in facial_hair_styles_list) for(var/facialhairstyle in facial_hair_styles_list)
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]

View File

@@ -11,6 +11,7 @@
..() ..()
hold = new/obj/item/weapon/storage/internal(src) hold = new/obj/item/weapon/storage/internal(src)
hold.storage_slots = slots hold.storage_slots = slots
hold.max_storage_space = 12
/obj/item/clothing/accessory/storage/attack_hand(mob/user as mob) /obj/item/clothing/accessory/storage/attack_hand(mob/user as mob)
if (has_suit) //if we are part of a suit if (has_suit) //if we are part of a suit

View File

@@ -158,6 +158,8 @@
/mob/living/carbon/human/proc/generate_valid_hairstyles(var/check_gender = 1) /mob/living/carbon/human/proc/generate_valid_hairstyles(var/check_gender = 1)
var/list/valid_hairstyles = new() var/list/valid_hairstyles = new()
if(species.bald)
return
for(var/hairstyle in hair_styles_list) for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle] var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
@@ -173,6 +175,8 @@
/mob/living/carbon/human/proc/generate_valid_facial_hairstyles() /mob/living/carbon/human/proc/generate_valid_facial_hairstyles()
var/list/valid_facial_hairstyles = new() var/list/valid_facial_hairstyles = new()
if(species.bald)
return
for(var/facialhairstyle in facial_hair_styles_list) for(var/facialhairstyle in facial_hair_styles_list)
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]

View File

@@ -39,6 +39,7 @@
var/show_ssd = "fast asleep" var/show_ssd = "fast asleep"
var/virus_immune var/virus_immune
var/short_sighted var/short_sighted
var/bald = 0
// Language/culture vars. // Language/culture vars.
var/default_language = "Ceti Basic" // Default language is used when 'say' is used without modifiers. var/default_language = "Ceti Basic" // Default language is used when 'say' is used without modifiers.

View File

@@ -67,6 +67,7 @@
name = "Industrial Frame" name = "Industrial Frame"
short_name = "ind" short_name = "ind"
name_plural = "Industrials" name_plural = "Industrials"
bald = 1
brute_mod = 0.5 brute_mod = 0.5
burn_mod = 1.3 burn_mod = 1.3
@@ -98,6 +99,8 @@
"r_foot" = list("path" = /obj/item/organ/external/foot/right/industrial) "r_foot" = list("path" = /obj/item/organ/external/foot/right/industrial)
) )
appearance_flags = HAS_HAIR_COLOR
heat_level_1 = 600 heat_level_1 = 600
heat_level_2 = 1200 heat_level_2 = 1200
heat_level_3 = 2400 heat_level_3 = 2400
@@ -130,6 +133,7 @@
name = "Hunter-Killer" name = "Hunter-Killer"
short_name = "hks" short_name = "hks"
name_plural = "HKs" name_plural = "HKs"
bald = 1
blurb = "\[REDACTED\]" blurb = "\[REDACTED\]"
@@ -164,6 +168,7 @@
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON
spawn_flags = IS_RESTRICTED spawn_flags = IS_RESTRICTED
appearance_flags = HAS_HAIR_COLOR
vision_flags = SEE_SELF | SEE_MOBS vision_flags = SEE_SELF | SEE_MOBS
blood_color = "#1F181F" blood_color = "#1F181F"

View File

@@ -23,6 +23,10 @@
return "This subject is too far away..." return "This subject is too far away..."
if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.maxHealth * 1.5 || istype(M, /mob/living/simple_animal) && M.stat == DEAD) if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.maxHealth * 1.5 || istype(M, /mob/living/simple_animal) && M.stat == DEAD)
return "This subject does not have an edible life energy..." return "This subject does not have an edible life energy..."
if (istype(M, /mob/living/carbon))
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
return "This subject has nothing for us to take..."
for(var/mob/living/carbon/slime/met in view()) for(var/mob/living/carbon/slime/met in view())
if(met.Victim == M && met != src) if(met.Victim == M && met != src)
return "The [met.name] is already feeding on this subject..." return "The [met.name] is already feeding on this subject..."

View File

@@ -35,7 +35,7 @@ obj/item/weapon/gun/energy/retro
name = "antique laser gun" name = "antique laser gun"
icon_state = "caplaser" icon_state = "caplaser"
item_state = "caplaser" item_state = "caplaser"
desc = "A rare weapon, handcrafted by a now defunct specialty manufacturer on Luna for a small fortune. It's certainly aged well." desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Baystation 12. The station is exploding."
force = 5 force = 5
fire_sound = 'sound/weapons/Laser.ogg' fire_sound = 'sound/weapons/Laser.ogg'
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
@@ -85,7 +85,7 @@ obj/item/weapon/gun/energy/retro
/obj/item/weapon/gun/energy/sniperrifle /obj/item/weapon/gun/energy/sniperrifle
name = "marksman energy rifle" name = "marksman energy rifle"
desc = "The HI DMR 9E is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful ionized beams, this is a weapon to kill from a distance." desc = "The HI L.W.A.P. is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful ionized beams, this is a weapon to kill from a distance."
icon_state = "sniper" icon_state = "sniper"
item_state = "sniper" item_state = "sniper"
fire_sound = 'sound/weapons/marauder.ogg' fire_sound = 'sound/weapons/marauder.ogg'

View File

@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/lawgiver /obj/item/weapon/gun/energy/lawgiver
name = "Lawgiver Mk II" name = "\improper Lawgiver Mk II"
icon_state = "lawgiver" icon_state = "lawgiver"
item_state = "gun" item_state = "gun"
origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5) origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5)

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/ionrifle /obj/item/weapon/gun/energy/ionrifle
name = "ion rifle" name = "ion rifle"
desc = "The NT Mk60 EW Halicon is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT. Not the best of its type." desc = "The NT Mk60 EW Halicon is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT."
icon_state = "ionrifle" icon_state = "ionrifle"
item_state = "ionrifle" item_state = "ionrifle"
fire_sound = 'sound/weapons/Laser.ogg' fire_sound = 'sound/weapons/Laser.ogg'
@@ -183,13 +183,11 @@
force = 30 force = 30
projectile_type = /obj/item/projectile/energy/bfg projectile_type = /obj/item/projectile/energy/bfg
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
max_shots = 40 max_shots = 10
sel_mode = 1 sel_mode = 1
burst = 20 fire_delay = 10
burst_delay = 1 accuracy = 20
move_delay = 20 muzzle_flash = 10
fire_delay = 40
dispersion = list(3.0, 3.25, 3.5, 3.75, 4.0, 4.25, 4.5, 4.75, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.25)
/obj/item/weapon/gun/energy/vaurca/gatlinglaser /obj/item/weapon/gun/energy/vaurca/gatlinglaser
name = "gatling laser" name = "gatling laser"
@@ -254,7 +252,7 @@
return 1 return 1
/obj/item/weapon/gun/energy/vaurca/blaster /obj/item/weapon/gun/energy/vaurca/blaster
name = "Zo'ra Blaster" name = "\improper Zo'ra Blaster"
desc = "An elegant weapon for a more civilized time." desc = "An elegant weapon for a more civilized time."
icon_state = "blaster" icon_state = "blaster"
item_state = "blaster" item_state = "blaster"
@@ -294,7 +292,7 @@
projectile_type = /obj/item/projectile/beam/megaglaive projectile_type = /obj/item/projectile/beam/megaglaive
max_shots = 36 max_shots = 36
sel_mode = 1 sel_mode = 1
burst = 6 burst = 10
burst_delay = 1 burst_delay = 1
fire_delay = 30 fire_delay = 30
sharp = 1 sharp = 1
@@ -333,14 +331,13 @@
if(!wielded) if(!wielded)
user << "<span class='danger'>You could never fire this weapon with merely one hand!</span>" user << "<span class='danger'>You could never fire this weapon with merely one hand!</span>"
return 0 return 0
playsound(user, 'sound/magic/lightning_chargeup.ogg', 75, 1)
user.visible_message( user.visible_message(
"<span class='danger'>\The [user] begins charging the [src]!</span>", "<span class='danger'>\The [user] begins charging the [src]!</span>",
"<span class='danger'>You begin charging the [src]!</span>", "<span class='danger'>You begin charging the [src]!</span>",
"<span class='danger'>You hear a low pulsing roar!</span>" "<span class='danger'>You hear a low pulsing roar!</span>"
) )
is_charging = 1 is_charging = 1
sleep(60) sleep(40)
is_charging = 0 is_charging = 0
if(!istype(user.get_active_hand(), src)) if(!istype(user.get_active_hand(), src))
return return
@@ -423,7 +420,6 @@
if(!wielded) if(!wielded)
user << "<span class='danger'>You cannot fire this weapon with just one hand!</span>" user << "<span class='danger'>You cannot fire this weapon with just one hand!</span>"
return 0 return 0
playsound(user, 'sound/magic/lightning_chargeup.ogg', 75, 1)
user.visible_message( user.visible_message(
"<span class='danger'>\The [user] begins charging the [src]!</span>", "<span class='danger'>\The [user] begins charging the [src]!</span>",
"<span class='danger'>You begin charging the [src]!</span>", "<span class='danger'>You begin charging the [src]!</span>",

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/taser /obj/item/weapon/gun/energy/taser
name = "taser gun" name = "taser gun"
desc = "The NT Mk30 NL is a small, low capacity gun used for non-lethal takedowns. Produced by NT, it's actually a licensed version of a W-T design." desc = "The NT Mk30 NL is a small, low capacity gun used for non-lethal takedowns."
icon_state = "taser" icon_state = "taser"
item_state = null //so the human update icon uses the icon_state instead. item_state = null //so the human update icon uses the icon_state instead.
fire_sound = 'sound/weapons/Taser.ogg' fire_sound = 'sound/weapons/Taser.ogg'
@@ -20,7 +20,7 @@
/obj/item/weapon/gun/energy/stunrevolver /obj/item/weapon/gun/energy/stunrevolver
name = "stun revolver" name = "stun revolver"
desc = "A LAEP20 Zeus. Designed by Lawson Arms and produced under the wing of the FTU, several TSCs have been trying to get a hold of the blueprints for half a decade." desc = "A high-tech revolver that fires rechargeable stun bolts."
icon_state = "stunrevolver" icon_state = "stunrevolver"
item_state = "stunrevolver" item_state = "stunrevolver"
fire_sound = 'sound/weapons/Gunshot.ogg' fire_sound = 'sound/weapons/Gunshot.ogg'

View File

@@ -61,7 +61,7 @@
/obj/item/weapon/gun/projectile/automatic/wt550 /obj/item/weapon/gun/projectile/automatic/wt550
name = "machine pistol" name = "machine pistol"
desc = "The W-T 550 Saber is a cheap self-defense weapon, mass-produced by Ward-Takahashi for paramilitary and private use. Uses 9mm rounds." desc = "The NI 550 Saber is a cheap self-defense weapon, mass-produced by Necropolis Industries for paramilitary and private use. Uses 9mm rounds."
icon_state = "wt550" icon_state = "wt550"
item_state = "wt550" item_state = "wt550"
w_class = 3 w_class = 3
@@ -209,8 +209,8 @@
user << "\The [launcher] is empty." user << "\The [launcher] is empty."
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw /obj/item/weapon/gun/projectile/automatic/rifle/l6_saw
name = "\improper L6 SAW" name = "light machine gun"
desc = "A rather traditionally made light machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever" desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2431' engraved on the reciever"
icon_state = "l6closed100" icon_state = "l6closed100"
item_state = "l6closedmag" item_state = "l6closedmag"
w_class = 4 w_class = 4
@@ -272,8 +272,8 @@
..() ..()
/obj/item/weapon/gun/projectile/automatic/tommygun /obj/item/weapon/gun/projectile/automatic/tommygun
name = "\improper Tommygun" name = "vintage submachine gun"
desc = "A classic among criminals. Uses .45 rounds." desc = "A classic Thompson submachine gun, ya see? Uses .45 rounds."
icon_state = "tommygun" icon_state = "tommygun"
w_class = 3 w_class = 3
max_shells = 50 max_shells = 50
@@ -314,7 +314,7 @@
/obj/item/weapon/gun/projectile/automatic/terminator /obj/item/weapon/gun/projectile/automatic/terminator
name = "flechette rifle" name = "flechette rifle"
desc = "A fearsome Necropolis Industries designed rifle with attached bayonet that fires lethal flechette rounds." desc = "A fearsome Necropolis Industries designed rifle with unattached bayonet that fires lethal flechette rounds."
icon = 'icons/obj/terminator.dmi' icon = 'icons/obj/terminator.dmi'
icon_state = "flechetterifle" icon_state = "flechetterifle"
item_state = "flechetterifle" item_state = "flechetterifle"

View File

@@ -6,7 +6,7 @@
embed = 1 //the dart is shot fast enough to pierce space suits, so I guess splintering inside the target can be a thing. Should be rare due to low damage. embed = 1 //the dart is shot fast enough to pierce space suits, so I guess splintering inside the target can be a thing. Should be rare due to low damage.
var/reagent_amount = 15 var/reagent_amount = 15
kill_count = 15 //shorter range kill_count = 15 //shorter range
muzzle_type = null muzzle_type = null
/obj/item/projectile/bullet/chemdart/New() /obj/item/projectile/bullet/chemdart/New()
@@ -43,7 +43,7 @@
/obj/item/weapon/gun/projectile/dartgun /obj/item/weapon/gun/projectile/dartgun
name = "dart gun" name = "dart gun"
desc = "Zeng-Hu Pharmaceutical's entry into the arms market, the Z-H P Artemis is a gas-powered dart gun capable of delivering chemical cocktails swiftly across short distances." desc = "A small gas-powered dartgun, capable of delivering chemical cocktails swiftly across short distances."
icon_state = "dartgun-empty" icon_state = "dartgun-empty"
item_state = null item_state = null

View File

@@ -32,7 +32,7 @@
/obj/item/weapon/gun/projectile/sec /obj/item/weapon/gun/projectile/sec
name = ".45 pistol" name = ".45 pistol"
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Found pretty much everywhere humans are. Uses .45 rounds." desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 rounds.."
icon_state = "secguncomp" icon_state = "secguncomp"
magazine_type = /obj/item/ammo_magazine/c45m/rubber magazine_type = /obj/item/ammo_magazine/c45m/rubber
allowed_magazines = list(/obj/item/ammo_magazine/c45m) allowed_magazines = list(/obj/item/ammo_magazine/c45m)
@@ -40,7 +40,7 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg' fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE load_method = MAGAZINE
/obj/item/weapon/gun/projectile/sec/lethal /obj/item/weapon/gun/projectile/sec/lethal
magazine_type = /obj/item/ammo_magazine/c45m magazine_type = /obj/item/ammo_magazine/c45m
@@ -48,7 +48,7 @@
name = ".45 signal pistol" name = ".45 signal pistol"
/obj/item/weapon/gun/projectile/sec/wood /obj/item/weapon/gun/projectile/sec/wood
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. This one has a sweet wooden grip. Uses .45 rounds." desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses .45 rounds."
name = "custom .45 Pistol" name = "custom .45 Pistol"
icon_state = "secgundark" icon_state = "secgundark"
@@ -74,8 +74,8 @@
) )
/obj/item/weapon/gun/projectile/tanto /obj/item/weapon/gun/projectile/tanto
desc = "A Necropolis Industries designed sidearm, designed to compete with the NT Mk58. Uses 10mm rounds." desc = "A Necropolis Industries Tanto .40, designed to compete with the NT Mk58. Uses 10mm rounds."
name = "\improper Tanto .40" name = "10mm pistol"
icon_state = "c05r" icon_state = "c05r"
magazine_type = /obj/item/ammo_magazine/t40 magazine_type = /obj/item/ammo_magazine/t40
allowed_magazines = list(/obj/item/ammo_magazine/t40) allowed_magazines = list(/obj/item/ammo_magazine/t40)
@@ -156,8 +156,8 @@
icon_state = "gyropistol" icon_state = "gyropistol"
/obj/item/weapon/gun/projectile/pistol /obj/item/weapon/gun/projectile/pistol
name = "holdout pistol" name = "9mm pistol"
desc = "The Lumoco Arms P3 Whisper. A small, easily concealable gun. Uses 9mm rounds." desc = "500 years since its creation and the Stechkin automatic pistol is still a common sight throughout the Frontier."
icon_state = "pistol" icon_state = "pistol"
item_state = null item_state = null
w_class = 2 w_class = 2
@@ -170,7 +170,7 @@
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm) allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
/obj/item/weapon/gun/projectile/pistol/flash /obj/item/weapon/gun/projectile/pistol/flash
name = "holdout signal pistol" name = "9mm signal pistol"
magazine_type = /obj/item/ammo_magazine/mc9mm/flash magazine_type = /obj/item/ammo_magazine/mc9mm/flash
/obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob) /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob)

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/revolver /obj/item/weapon/gun/projectile/revolver
name = "revolver" name = "revolver"
desc = "The Lumoco Arms HE Colt is a choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .357 ammo." desc = "The classic Necropolis Industries .357 revolver, for when you only want to shoot once."
icon_state = "revolver" icon_state = "revolver"
item_state = "revolver" item_state = "revolver"
caliber = "357" caliber = "357"

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/automatic/rifle/w556 /obj/item/weapon/gun/projectile/automatic/rifle/w556
name = "\improper Neyland 556mi 'Ranger'" name = "scout rifle"
desc = "A lightweight scout-rifle used within the Sol Navy and Nanotrasen Emergency Response Teams. Equipped with a scope and designed for medium to long range combat, with medium stopping power. Chambered in 5.56 rounds." desc = "A lightweight Neyland 556mi 'Ranger' used within the Sol Navy and Nanotrasen Emergency Response Teams. Equipped with a scope and designed for medium to long range combat, with moderate stopping power. Chambered in 5.56 rounds."
icon_state = "w556rifle" icon_state = "w556rifle"
item_state = "heavysniper" item_state = "heavysniper"
w_class = 4 w_class = 4

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/shotgun/pump /obj/item/weapon/gun/projectile/shotgun/pump
name = "shotgun" name = "pump shotgun"
desc = "The mass-produced W-T Remmington 29x shotgun is a favourite of police and security forces on many worlds. Useful for sweeping alleys." desc = "An ubiquitous unbranded shotgun. Useful for sweeping alleys."
icon_state = "shotgun" icon_state = "shotgun"
item_state = "shotgun" item_state = "shotgun"
max_shells = 4 max_shells = 4

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/heavysniper /obj/item/weapon/gun/projectile/heavysniper
name = "anti-materiel rifle" name = "anti-materiel rifle"
desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." desc = "A portable anti-armour rifle fitted with a scope, the PTR-7 is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells."
icon_state = "heavysniper" icon_state = "heavysniper"
item_state = "heavysniper" item_state = "heavysniper"
w_class = 4 w_class = 4
@@ -89,8 +89,8 @@
usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>" usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>"
/obj/item/weapon/gun/projectile/heavysniper/tranq /obj/item/weapon/gun/projectile/heavysniper/tranq
name = "\improper PTR-7 tranquilizer rifle" name = "tranquilizer rifle"
desc = "A nonlethal modification to the PTR-7 anti-materiel rifle meant for sedation and capture of large animals. Fires .50 cal PPS shells that deploy a torpor inducing drug payload." desc = "A nonlethal modification to the PTR-7 anti-materiel rifle meant for sedation and capture of the most dangerous of game. Fires .50 cal PPS shells that deploy a torpor inducing drug payload."
icon_state = "tranqsniper" icon_state = "tranqsniper"
item_state = "heavysniper" item_state = "heavysniper"
w_class = 4 w_class = 4

View File

@@ -1,6 +1,6 @@
/obj/item/weapon/gun/projectile/dragunov /obj/item/weapon/gun/projectile/dragunov
name = "\improper dragunov sniper rifle" name = "antique sniper rifle"
desc = "An old semi-automatic marksman rifle. Uses 7.62mm rounds." desc = "An old Dragunov semi-automatic marksman rifle. Smells of vodka and Communism. Uses 7.62mm rounds."
icon = 'icons/obj/dragunov.dmi' icon = 'icons/obj/dragunov.dmi'
icon_state = "dragunov" icon_state = "dragunov"
item_state = "dragunov" item_state = "dragunov"

View File

@@ -225,7 +225,7 @@
/obj/item/projectile/beam/megaglaive /obj/item/projectile/beam/megaglaive
name = "thermal lance" name = "thermal lance"
icon_state = "megaglaive" icon_state = "megaglaive"
damage = 10 damage = 6
incinerate = 5 incinerate = 5
armor_penetration = 10 armor_penetration = 10
no_attack_log = 1 no_attack_log = 1
@@ -234,10 +234,10 @@
tracer_type = /obj/effect/projectile/solar/tracer tracer_type = /obj/effect/projectile/solar/tracer
impact_type = /obj/effect/projectile/solar/impact impact_type = /obj/effect/projectile/solar/impact
/obj/item/projectile/beam/megaglaive/on_impact(var/atom/A) /obj/item/projectile/beam/megaglaive/New()
if(isturf(A)) effect_transform = new()
A.ex_act(0) effect_transform.Scale(2)
explosion(A, -1, 0, 2) src.transform = effect_transform
..() ..()
/obj/item/projectile/beam/thermaldrill /obj/item/projectile/beam/thermaldrill

View File

@@ -103,29 +103,91 @@
/obj/item/projectile/energy/bfg /obj/item/projectile/energy/bfg
name = "distortion" name = "distortion"
icon = 'icons/obj/machines/particle_accelerator2.dmi' icon = 'icons/obj/projectiles.dmi'
icon_state = "particle" icon_state = "bfg"
check_armour = "bomb" check_armour = "bomb"
damage = 60 damage = 60
damage_type = BRUTE damage_type = BRUTE
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
kill_count = 100 kill_count = 100
embed = 0 embed = 0
// incinerate = 40 step_delay = 3
weaken = 5 light_range = 4
stun = 5 light_color = "#b5ff5b"
/obj/item/projectile/energy/sonic/on_impact(var/atom/A) /obj/item/projectile/energy/bfg/on_impact(var/atom/A)
if(isturf(A))
A.ex_act(2)
if(ismob(A)) if(ismob(A))
var/mob/M = A var/mob/M = A
explosion(M, -1, 0, 2)
M.gib() M.gib()
if(!(isturf(A)) & !(ismob(A))) explosion(A, -1, 0, 5)
explosion(A, -1, 0, 2)
..() ..()
/obj/item/projectile/energy/bfg/New()
var/matrix/M = matrix()
M.Scale(2)
src.transform = M
..()
/obj/item/projectile/energy/bfg/process()
var/first_step = 1
spawn while(src && src.loc)
if(kill_count-- < 1)
on_impact(src.loc) //for any final impact behaviours
qdel(src)
return
if((!( current ) || loc == current))
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
if((x == 1 || x == world.maxx || y == 1 || y == world.maxy))
qdel(src)
return
trajectory.increment() // increment the current location
location = trajectory.return_location(location) // update the locally stored location data
if(!location)
qdel(src) // if it's left the world... kill it
return
before_move()
Move(location.return_turf())
if(!bumped && !isturf(original))
if(loc == get_turf(original))
if(!(original in permutated))
if(Bump(original))
return
if(first_step)
muzzle_effect(effect_transform)
first_step = 0
else if(!bumped)
tracer_effect(effect_transform)
for(var/turf/T in range(1,src))
if(T.density)
T.ex_act(2)
playsound(src.loc, 'sound/magic/LightningShock.ogg', 75, 1)
for(var/obj/O in range(1,src))
if(O.density)
O.ex_act(2)
playsound(src.loc, 'sound/magic/LightningShock.ogg', 75, 1)
for(var/mob/living/M in range(1,src))
if(M == src.firer) //for the sake of courtesy we will not target our master)
continue
else
if(M.stat == DEAD)
M.gib()
else
M.apply_damage(60, BRUTE, "head")
playsound(src.loc, 'sound/magic/LightningShock.ogg', 75, 1)
if(!hitscan)
sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon
/obj/item/projectile/energy/bee /obj/item/projectile/energy/bee
name = "bees" name = "bees"
icon = 'icons/obj/apiary_bees_etc.dmi' icon = 'icons/obj/apiary_bees_etc.dmi'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 40 KiB