mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-28 02:52:01 +00:00
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:
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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..."
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>",
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 |
Reference in New Issue
Block a user