mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 13:05:44 +01:00
[Ready for Review] Unapologetic Vaurca Buffs III: Revenge of the Buffs (#4885)
Implements various changes at the behest of lore-dev BygoneHero, namely: Vaurca can now wear specially modified softsuits. Vaurca now have their own special rigsuit a la the breacher: the combat exoskeleton. It comes with various special modules, including a boring laser that allows them to dig below themselves rapidly, a vaurca variant of the combat injector which includes phoron and k'ois paste, and a neural lattice which reduces halloss by sharing it with everyone else wearing a neural lattice. Vaurca also have received various other currently unavailable event items, including a variant of the tactical mask that filters out nitrogen and allows the Vaurca wearing it to eat, tachyon rifles and carbines which penetrate up to three layers of walls and possess other fringe benefits, the gauss rifle which is a semi-automatic variant of the crossbow with greater power and a 6 rod magazine, the energy zweihander, commando armor and scout armor. Introduces a general climbing mechanic. Climbing can be initiated by clicking on a wall or an open turf, and it is a percentage chance that is modified by the amount of stable/large items beneath you, and decreased by the amount of unstable/small items. Vaurca are naturally proficient and always succeed at climbing. Changes Vaurca to see in blue-green vision. Their vision is generally brighter and reddish colors are converted to a blue-green color. Adds the Sedantis flag, an interhive flag that celebrates the universal longing for Sedantis and is a symbol of the Vaurca diaspora.
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
/obj/effect/effect/water/proc/set_color() // Call it after you move reagents to it
|
||||
icon += reagents.get_color()
|
||||
|
||||
/obj/effect/effect/water/proc/set_up(var/turf/target, var/step_count = 5, var/delay = 5)
|
||||
/obj/effect/effect/water/proc/set_up(var/turf/target, var/step_count = 5, var/delay = 5, var/lifespan = 10)
|
||||
if(!target)
|
||||
return
|
||||
for(var/i = 1 to step_count)
|
||||
@@ -28,7 +28,7 @@
|
||||
if(T == get_turf(target))
|
||||
break
|
||||
sleep(delay)
|
||||
sleep(10)
|
||||
sleep(lifespan)
|
||||
qdel(src)
|
||||
|
||||
//Wets everything in the tile
|
||||
@@ -75,3 +75,8 @@
|
||||
name = "chemicals"
|
||||
icon = 'icons/obj/chempuff.dmi'
|
||||
icon_state = ""
|
||||
|
||||
//used by evil things
|
||||
/obj/effect/effect/water/firewater
|
||||
name = "napalm gel"
|
||||
icon_state = "mustard"
|
||||
@@ -6,66 +6,105 @@
|
||||
anchored = 1
|
||||
var/amount = 1
|
||||
|
||||
Initialize(mapload, amt = 1, nologs = 0)
|
||||
. = ..()
|
||||
if(!nologs && !mapload)
|
||||
message_admins("Liquid fuel has spilled in [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [loc.loc.name] ([loc.x],[loc.y],[loc.z])")
|
||||
src.amount = amt
|
||||
/obj/effect/decal/cleanable/liquid_fuel/Initialize(mapload, amt = 1, nologs = 0)
|
||||
. = ..()
|
||||
if(!nologs && !mapload)
|
||||
message_admins("Liquid fuel has spilled in [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [loc.loc.name] ([loc.x],[loc.y],[loc.z])")
|
||||
src.amount = amt
|
||||
|
||||
var/has_spread = 0
|
||||
//Be absorbed by any other liquid fuel in the tile.
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in loc)
|
||||
if(other != src)
|
||||
other.amount += src.amount
|
||||
other.Spread()
|
||||
has_spread = 1
|
||||
break
|
||||
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
for(var/d in cardinal)
|
||||
var/turf/simulated/target = get_step(src,d)
|
||||
var/turf/simulated/origin = get_turf(src)
|
||||
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
|
||||
if(other_fuel)
|
||||
other_fuel.amount += amount*0.25
|
||||
if(!(other_fuel in exclude))
|
||||
exclude += src
|
||||
other_fuel.Spread(exclude)
|
||||
else
|
||||
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
|
||||
amount *= 0.75
|
||||
|
||||
|
||||
flamethrower_fuel
|
||||
icon_state = "mustard"
|
||||
anchored = 0
|
||||
Initialize(mapload, amt = 1, d = 0)
|
||||
set_dir(d) //Setting this direction means you won't get torched by your own flamethrower.
|
||||
. = ..()
|
||||
var/has_spread = 0
|
||||
//Be absorbed by any other liquid fuel in the tile.
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in loc)
|
||||
if(other != src)
|
||||
other.amount += src.amount
|
||||
other.Spread()
|
||||
has_spread = 1
|
||||
break
|
||||
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
//The spread for flamethrower fuel is much more precise, to create a wide fire pattern.
|
||||
if(amount < 0.1) return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
for(var/d in list(turn(dir,90),turn(dir,-90), dir))
|
||||
var/turf/simulated/O = get_step(S,d)
|
||||
if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O)
|
||||
continue
|
||||
if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0))
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d)
|
||||
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
|
||||
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
for(var/d in cardinal)
|
||||
var/turf/simulated/target = get_step(src,d)
|
||||
var/turf/simulated/origin = get_turf(src)
|
||||
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
|
||||
if(other_fuel)
|
||||
other_fuel.amount += amount*0.25
|
||||
if(!(other_fuel in exclude))
|
||||
exclude += src
|
||||
other_fuel.Spread(exclude)
|
||||
else
|
||||
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
|
||||
amount *= 0.75
|
||||
|
||||
amount *= 0.25
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel
|
||||
icon_state = "mustard"
|
||||
anchored = 0
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Initialize(mapload, amt = 1, d = 0)
|
||||
set_dir(d) //Setting this direction means you won't get torched by your own flamethrower.
|
||||
. = ..()
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread()
|
||||
//The spread for flamethrower fuel is much more precise, to create a wide fire pattern.
|
||||
if(amount < 0.1) return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
|
||||
for(var/d in list(turn(dir,90),turn(dir,-90), dir))
|
||||
var/turf/simulated/O = get_step(S,d)
|
||||
if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O)
|
||||
continue
|
||||
if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0))
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d)
|
||||
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
|
||||
|
||||
amount *= 0.25
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/napalm
|
||||
name = "napalm gel"
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/napalm/Initialize(mapload, amt = 1, nologs = 0)
|
||||
. = ..()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/napalm/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/napalm/Spread()
|
||||
if(amount < 100)
|
||||
return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S))
|
||||
return
|
||||
for(var/d in cardinal)
|
||||
var/turf/simulated/target = get_step(src,d)
|
||||
var/turf/simulated/origin = get_turf(src)
|
||||
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/napalm/other_fuel = locate() in target
|
||||
if(other_fuel)
|
||||
other_fuel.amount += amount*0.5
|
||||
target.hotspot_expose(2000, 400)
|
||||
else
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/napalm(target, amount*0.5,1)
|
||||
target.hotspot_expose(2000, 400)
|
||||
amount *= 0.5
|
||||
origin.hotspot_expose(2000, 400) //immediately ignite. its napalm bitch
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/napalm/process()
|
||||
for(var/mob/living/L in get_turf(src))
|
||||
var/sticky = min(rand(5,25), amount)
|
||||
if(sticky > 1)
|
||||
L.adjust_fire_stacks(sticky)
|
||||
amount = max(1, amount - sticky)
|
||||
@@ -66,3 +66,8 @@
|
||||
/obj/effect/projectile/impact/emitter
|
||||
icon_state = "impact_emitter"
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
/obj/effect/projectile/impact/tachyon
|
||||
name = "xray impact"
|
||||
icon_state = "impact_tachyon"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
@@ -60,3 +60,7 @@
|
||||
|
||||
/obj/effect/projectile/muzzle/bullet
|
||||
icon_state = "muzzle_bullet"
|
||||
|
||||
/obj/effect/projectile/muzzle/tachyon
|
||||
icon_state = "muzzle_pulse"
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
@@ -77,3 +77,8 @@
|
||||
/obj/effect/projectile/tracer/emitter
|
||||
icon_state = "emitter"
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
/obj/effect/projectile/tracer/tachyon
|
||||
name = "particle beam"
|
||||
icon_state = "invisible"
|
||||
light_color = LIGHT_COLOR_VIOLET
|
||||
|
||||
@@ -686,8 +686,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
if(!cannotzoom)
|
||||
M.visible_message("[zoomdevicename ? "[M] looks up from the [src.name]" : "[M] lowers the [src.name]"].")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/proc/pwr_drain()
|
||||
return 0 // Process Kill
|
||||
|
||||
|
||||
@@ -149,6 +149,15 @@
|
||||
icon_state = initial(icon_state)
|
||||
user << "<span class='notice'>\The [src] is de-energised.</span>"
|
||||
|
||||
/obj/item/weapon/melee/energy/glaive/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
||||
user.setClickCooldown(16)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/energy/glaive/pre_attack(var/mob/living/target, var/mob/living/user)
|
||||
if(istype(target))
|
||||
cleave(user, target)
|
||||
..()
|
||||
|
||||
/*
|
||||
* Energy Axe
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
slot_flags = SLOT_BACK
|
||||
max_w_class = 3
|
||||
max_storage_space = 28
|
||||
var/species_restricted = list("exclude","Vaurca Breeder")
|
||||
var/species_restricted = list("exclude","Vaurca Breeder","Vaurca Warform")
|
||||
|
||||
/obj/item/weapon/storage/backpack/mob_can_equip(M as mob, slot)
|
||||
|
||||
|
||||
@@ -39,7 +39,10 @@
|
||||
icon_state = "eknife1"
|
||||
item_state = icon_state
|
||||
damtype = "fire"
|
||||
user.regenerate_icons()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
user << "<span class='notice'>\The [src] is now energised.</span>"
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca/deactivate(mob/living/user)
|
||||
@@ -47,7 +50,10 @@
|
||||
icon_state = "eknife0"
|
||||
item_state = icon_state
|
||||
damtype = "brute"
|
||||
user.regenerate_icons()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
user << "<span class='notice'>\The [src] is de-energised.</span>"
|
||||
|
||||
/obj/item/vaurca/box
|
||||
@@ -172,7 +178,8 @@
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
|
||||
light_overlay = "helmet_light"
|
||||
light_overlay = "helmet_light_dual_green"
|
||||
light_color = "#3e7c3e"
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox/vaurca
|
||||
|
||||
@@ -183,7 +190,257 @@
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
species_restricted = list("Vaurca","Vaurca Warform")
|
||||
sprite_sheets = list(
|
||||
"Vaurca Warform" = 'icons/mob/species/warriorform/shoes.dmi'
|
||||
)
|
||||
|
||||
action_button_name = "Toggle the magclaws"
|
||||
|
||||
/obj/item/clothing/suit/space/void/scout
|
||||
name = "scout armor"
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "scout"
|
||||
item_state = "scout"
|
||||
desc = "Armor designed for K'laxan scouts, made of lightweight sturdy material that does not restrict movement."
|
||||
slowdown = -1
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
armor = list(melee = 50, bullet = 20, laser = 50, energy = 30, bomb = 45, bio = 100, rad = 10)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/scout
|
||||
name = "scout helmet"
|
||||
desc = "A helmet designed for K'laxan scouts, made of lightweight sturdy material that does not restrict movement."
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "helm_scout"
|
||||
item_state = "helm_scout"
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
armor = list(melee = 40, bullet = 20, laser = 40, energy = 30, bomb = 45, bio = 100, rad = 10)
|
||||
|
||||
light_overlay = "helmet_light_dual_green"
|
||||
light_color = "#3e7c3e"
|
||||
|
||||
/obj/item/clothing/suit/space/void/commando
|
||||
name = "commando armor"
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "commando"
|
||||
item_state = "commando"
|
||||
desc = "A design perfected by the Zo'ra, this helmet is commonly used by frontline warriors of a hive. Ablative design deflects lasers away from the body while providing moderate physical protection."
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
armor = list(melee = 40, bullet = 40, laser = 60, energy = 50, bomb = 45, bio = 100, rad = 10)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/commando
|
||||
name = "commando helmet"
|
||||
desc = "A design perfected by the Zo'ra, this helmet is commonly used by frontline warriors of a hive. Ablative design deflects lasers away from the body while providing moderate physical protection."
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "helm_commando"
|
||||
item_state = "helm_commando"
|
||||
|
||||
species_restricted = list("Vaurca")
|
||||
armor = list(melee = 30, bullet = 30, laser = 60, energy = 50, bomb = 45, bio = 100, rad = 10)
|
||||
|
||||
light_overlay = "helmet_light_dual_green"
|
||||
light_color = "#3e7c3e"
|
||||
|
||||
/obj/item/clothing/mask/gas/vaurca
|
||||
name = "tactical garment"
|
||||
desc = "A tactical mandible garment with state of the art air filtration."
|
||||
item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | FLEXIBLEMATERIAL | THICKMATERIAL
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
||||
body_parts_covered = FACE|EYES
|
||||
gas_filter_strength = 3
|
||||
w_class = 2.0
|
||||
filtered_gases = list("nitrogen", "sleeping_agent")
|
||||
armor = list(melee = 25, bullet = 10, laser = 25, energy = 25, bomb = 0, bio = 50, rad = 15)
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "m_metalg"
|
||||
item_state = "m_metalg"
|
||||
contained_sprite = 1
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca_zweihander
|
||||
name = "thermal greatblade"
|
||||
desc = "An infamous execution blade of the Zo'ra, due to its size, only the largest Za were able to carry it in active combat."
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "greatblade0"
|
||||
item_state = "greatblade0"
|
||||
active_force = 30
|
||||
armor_penetration = 30
|
||||
active_throwforce = 20
|
||||
active_w_class = 5
|
||||
force = 10
|
||||
throwforce = 10
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
w_class = 4.0
|
||||
flags = CONDUCT | NOBLOODY
|
||||
attack_verb = list("stabbed", "chopped", "sliced", "cleaved", "slashed", "cut")
|
||||
sharp = 1
|
||||
edge = 1
|
||||
contained_sprite = 1
|
||||
base_reflectchance = 40
|
||||
base_block_chance = 60
|
||||
shield_power = 150
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca_zweihander/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
||||
user.setClickCooldown(16)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca_zweihander/pre_attack(var/mob/living/target, var/mob/living/user)
|
||||
if(istype(target))
|
||||
cleave(user, target)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca_zweihander/activate(mob/living/user)
|
||||
..()
|
||||
icon_state = "greatblade1"
|
||||
item_state = icon_state
|
||||
damtype = "fire"
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
user << "<span class='notice'>\The [src] is now energised.</span>"
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca_zweihander/deactivate(mob/living/user)
|
||||
..()
|
||||
icon_state = "greatblade0"
|
||||
item_state = icon_state
|
||||
damtype = "brute"
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
user << "<span class='notice'>\The [src] is de-energised.</span>"
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca
|
||||
name = "gauss rifle"
|
||||
desc = "An unwieldy, heavy weapon that propels metal projectiles with magnetic coils that run its length."
|
||||
contained_sprite = 1
|
||||
icon = 'icons/obj/vaurca_items.dmi'
|
||||
icon_state = "gaussrifle"
|
||||
item_state = "gaussrifle"
|
||||
fire_sound = 'sound/effects/Explosion2.ogg'
|
||||
fire_sound_text = "a subdued boom"
|
||||
fire_delay = 12
|
||||
slot_flags = SLOT_BACK
|
||||
needspin = TRUE
|
||||
recoil = 6
|
||||
|
||||
|
||||
release_speed = 15
|
||||
var/list/belt = new/list()
|
||||
var/belt_size = 12 //holds this + one in the chamber
|
||||
recoil_wielded = 2
|
||||
accuracy_wielded = -1
|
||||
fire_delay_wielded = 1
|
||||
|
||||
//action button for wielding
|
||||
action_button_name = "Wield rifle"
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/can_wield()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/ui_action_click()
|
||||
if(src in usr)
|
||||
toggle_wield(usr)
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/verb/wield_rifle()
|
||||
set name = "Wield rifle"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
toggle_wield(usr)
|
||||
if(istype(usr,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/update_icon()
|
||||
if(wielded)
|
||||
item_state = "gaussrifle-wielded"
|
||||
else
|
||||
item_state = "gaussrifle"
|
||||
update_held_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/consume_next_projectile(mob/user=null)
|
||||
return bolt
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/handle_post_fire(mob/user, atom/target)
|
||||
bolt = null
|
||||
tension = 1
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/attack_self(mob/living/user as mob)
|
||||
pump(user)
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/proc/pump(mob/M as mob)
|
||||
playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1)
|
||||
|
||||
if(bolt)
|
||||
if(tension < max_tension)
|
||||
M << "<span class='warning'>You pump [src], charging the magnetic coils.</span>"
|
||||
tension++
|
||||
else
|
||||
M << "<span class='notice'>\The [src]'s magnetic coils are at maximum charge.</span>"
|
||||
return
|
||||
var/obj/item/next
|
||||
if(belt.len)
|
||||
next = belt[1]
|
||||
if(next)
|
||||
belt -= next //Remove grenade from loaded list.
|
||||
bolt = next
|
||||
M << "<span class='warning'>You pump [src], loading \a [next] into the chamber.</span>"
|
||||
else
|
||||
M << "<span class='warning'>You pump [src], but the magazine is empty.</span>"
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/proc/load(obj/item/W, mob/user)
|
||||
if(belt.len >= belt_size)
|
||||
user << "<span class='warning'>[src] is full.</span>"
|
||||
return
|
||||
user.remove_from_mob(W)
|
||||
W.forceMove(src)
|
||||
belt.Insert(1, W) //add to the head of the list, so that it is loaded on the next pump
|
||||
user.visible_message("[user] inserts \a [W] into [src].", "<span class='notice'>You insert \a [W] into [src].</span>")
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/proc/unload(mob/user)
|
||||
if(belt.len)
|
||||
var/obj/item/weapon/arrow/rod/R = belt[belt.len]
|
||||
belt.len--
|
||||
user.put_in_hands(R)
|
||||
user.visible_message("[user] removes \a [R] from [src].", "<span class='notice'>You remove \a [R] from [src].</span>")
|
||||
else
|
||||
user << "<span class='warning'>[src] is empty.</span>"
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/arrow))
|
||||
load(I, user)
|
||||
if(istype(I, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/R = I
|
||||
if (R.use(1))
|
||||
var/obj/item/weapon/arrow/rod/ROD = new /obj/item/weapon/arrow/rod(src)
|
||||
load(ROD, user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/attack_hand(mob/user)
|
||||
if(user.get_inactive_hand() == src)
|
||||
unload(user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/superheat_rod(mob/user)
|
||||
if(!user || !bolt) return
|
||||
if(bolt.throwforce >= 25) return
|
||||
if(!istype(bolt,/obj/item/weapon/arrow/rod)) return
|
||||
|
||||
bolt.throwforce = 25
|
||||
bolt.icon_state = "metal-rod-superheated"
|
||||
|
||||
/obj/item/weapon/gun/launcher/crossbow/vaurca/update_icon()
|
||||
return
|
||||
|
||||
@@ -907,7 +907,9 @@
|
||||
/obj/item/ammo_casing/c45/rubber = 0.5,
|
||||
/obj/item/ammo_casing/c9mm/rubber = 0.5,
|
||||
/obj/item/ammo_casing/c45/flash = 0.5,
|
||||
/obj/item/ammo_casing/shotgun/beanbag = 0.5
|
||||
/obj/item/ammo_casing/shotgun/beanbag = 0.5,
|
||||
/obj/item/weapon/flag/america = 1,
|
||||
/obj/item/weapon/flag/america/l = 1
|
||||
)
|
||||
|
||||
//Sometimes the chef will have spare oil in storage.
|
||||
|
||||
@@ -416,6 +416,44 @@
|
||||
/obj/item/weapon/flag/eridani/l
|
||||
flag_size = 1
|
||||
|
||||
/obj/structure/sign/flag/vaurca
|
||||
name = "Sedantis flag"
|
||||
desc = "The emblem of Sedantis on a flag, emblematic of Vaurca longing."
|
||||
icon_state = "sedantis"
|
||||
|
||||
/obj/structure/sign/flag/vaurca/left
|
||||
icon_state = "sedantis_l"
|
||||
|
||||
/obj/structure/sign/flag/vaurca/right
|
||||
icon_state = "sedantis_r"
|
||||
|
||||
/obj/item/weapon/flag/vaurca
|
||||
name = "Sedantis flag"
|
||||
desc = "The emblem of Sedantis on a flag, emblematic of Vaurca longing."
|
||||
flag_path = "sedantis"
|
||||
|
||||
/obj/item/weapon/flag/vaurca/l
|
||||
flag_size = 1
|
||||
|
||||
/obj/structure/sign/flag/america
|
||||
name = "Old World flag"
|
||||
desc = "The banner of an ancient nation, its glory old."
|
||||
icon_state = "oldglory"
|
||||
|
||||
/obj/structure/sign/flag/america/left
|
||||
icon_state = "oldglory_l"
|
||||
|
||||
/obj/structure/sign/flag/america/right
|
||||
icon_state = "oldglory_r"
|
||||
|
||||
/obj/item/weapon/flag/america
|
||||
name = "Old World flag"
|
||||
desc = "The banner of an ancient nation, its glory old."
|
||||
flag_path = "soldglory"
|
||||
|
||||
/obj/item/weapon/flag/america/l
|
||||
flag_size = 1
|
||||
|
||||
/obj/item/weapon/flag
|
||||
name = "boxed flag"
|
||||
desc = "A flag neatly folded into a wooden container."
|
||||
|
||||
Reference in New Issue
Block a user