mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 21:40:55 +01:00
Fixing Charging bugs and Breeder bugs (#1296)
Breeders now need to breathe again. Sanity check for any gun that requires charging has been added. It's not been added to the master special_check and firing procs yet because weapons that need to charge remain fairly edge case.
This commit is contained in:
@@ -37,15 +37,17 @@
|
||||
/obj/item/weapon/melee/energy/vaurca/activate(mob/living/user)
|
||||
..()
|
||||
icon_state = "eknife1"
|
||||
item_state = "eknife0"
|
||||
item_state = icon_state
|
||||
damtype = "fire"
|
||||
user.regenerate_icons()
|
||||
user << "<span class='notice'>\The [src] is now energised.</span>"
|
||||
|
||||
/obj/item/weapon/melee/energy/vaurca/deactivate(mob/living/user)
|
||||
..()
|
||||
icon_state = "eknife0"
|
||||
item_state = "eknife0"
|
||||
item_state = icon_state
|
||||
damtype = "brute"
|
||||
user.regenerate_icons()
|
||||
user << "<span class='notice'>\The [src] is de-energised.</span>"
|
||||
|
||||
/obj/item/vaurca/box
|
||||
@@ -57,14 +59,14 @@
|
||||
|
||||
/obj/item/vaurca/box/attack_self(mob/user as mob)
|
||||
|
||||
if(isvaurca(src))
|
||||
if(isvaurca(user))
|
||||
user << "<span class='notice'>You are familiar with the box's solution, and open it to reveal an ancient thing. How tedious.</span>"
|
||||
var/obj/item/weapon/archaeological_find/X = new /obj/item/weapon/archaeological_find
|
||||
user.remove_from_mob(src)
|
||||
user.put_in_hands(X)
|
||||
qdel(src)
|
||||
|
||||
else if(isipc(src))
|
||||
else if(isipc(user))
|
||||
user << "<span class='notice'>You analyze the box's markings, and begin to calculate with robotic efficiency every possible combination. (You must stand still to complete the puzzle box.)</span>"
|
||||
if(do_after(user, 100))
|
||||
user << "<span class='notice'>Calculations complete. You begin to brute-force the box with a mechanical determination.</span>"
|
||||
@@ -75,7 +77,7 @@
|
||||
user.put_in_hands(X)
|
||||
qdel(src)
|
||||
|
||||
else if(isvox(src))
|
||||
else if(isvox(user))
|
||||
user << "<span class='notice'>You are surprised to recognize the markings of the Apex, the Masters! You know this thing... (You must stand still to complete the puzzle box.)</span>"
|
||||
if(do_after(user, 100))
|
||||
user << "<span class='notice'>After a few seconds of remembering, you input the solution to the riddle - a lovely riddle indeed - and open the box to reveal an ancient thing.</span>"
|
||||
|
||||
@@ -284,8 +284,14 @@
|
||||
src << "<span class='warning'>You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = get_aggressive_grab()
|
||||
if(!G) return
|
||||
var/obj/item/weapon/grab/G = src.get_active_hand()
|
||||
if(!istype(G))
|
||||
src << "<span class='warning'>We must be grabbing a creature in our active hand to devour their head.</span>"
|
||||
return
|
||||
|
||||
if(G.state != GRAB_KILL)
|
||||
src << "<span class='warning'>We must have a tighter grip to devour their head.</span>"
|
||||
return
|
||||
|
||||
if(istype(G.affecting,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = G.affecting
|
||||
@@ -300,9 +306,9 @@
|
||||
return
|
||||
|
||||
visible_message("<span class='danger'>\The [src] pulls \the [H] close, sticking \the [H]'s head into its maw!</span>")
|
||||
sleep(50)
|
||||
get_aggressive_grab()
|
||||
if(!G) return
|
||||
sleep(10)
|
||||
if(!src.Adjacent(G.affecting))
|
||||
return
|
||||
visible_message("<span class='danger'>\The [src] closes their jaws around \the [H]'s head!</span>")
|
||||
playsound(H.loc, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
affecting.droplimb(0, DROPLIMB_BLUNT)
|
||||
|
||||
@@ -49,9 +49,6 @@
|
||||
brute_mod = 0.2 //note to self: remove is_synthetic checks for brmod and burnmod
|
||||
burn_mod = 0.8 //2x was a bit too much. we'll see how this goes.
|
||||
toxins_mod = 1 //they're not used to all our weird human bacteria.
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
ethanol_resistance = 2
|
||||
|
||||
speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
|
||||
speech_chance = 100
|
||||
@@ -66,10 +63,8 @@
|
||||
sprint_cost_factor = 0.80
|
||||
stamina_recovery = 3
|
||||
|
||||
vision_flags = SEE_SELF
|
||||
|
||||
spawn_flags = IS_RESTRICTED
|
||||
flags = NO_SCAN | HAS_SKIN_COLOR | NO_SLIP
|
||||
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/bugbite,
|
||||
@@ -78,10 +73,6 @@
|
||||
)
|
||||
|
||||
/datum/species/bug/type_c/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/typec(H),slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/typec(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/gearharness(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/typec(H), slot_back)
|
||||
return
|
||||
|
||||
/datum/species/bug/type_c/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
var/list/burst_accuracy = list(0) //allows for different accuracies for each shot in a burst. Applied on top of accuracy
|
||||
var/list/dispersion = list(0)
|
||||
|
||||
|
||||
var/next_fire_time = 0
|
||||
|
||||
var/sel_mode = 1 //index of the currently selected mode
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
item_state = "ionrifle-empty"
|
||||
else
|
||||
item_state = initial(item_state)
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/ionrifle/mounted
|
||||
name = "mounted ion rifle"
|
||||
self_recharge = 1
|
||||
@@ -170,6 +170,7 @@
|
||||
/obj/item/weapon/gun/energy/vaurca
|
||||
name = "Alien Firearm"
|
||||
desc = "Vaurcae weapons tend to be specialized and highly lethal. This one doesn't do much"
|
||||
var/is_charging = 0 //special var for sanity checks in the three guns that currently use charging as a special_check
|
||||
|
||||
/obj/item/weapon/gun/energy/vaurca/bfg
|
||||
name = "BFG 9000"
|
||||
@@ -232,6 +233,9 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/vaurca/gatlinglaser/special_check(var/mob/user)
|
||||
..()
|
||||
if(is_charging)
|
||||
user << "<span class='danger'>\The [src] is already spinning!</span>"
|
||||
return 0
|
||||
if(!wielded)
|
||||
user << "<span class='danger'>You cannot fire this weapon with just one hand!</span>"
|
||||
return 0
|
||||
@@ -241,7 +245,11 @@
|
||||
"<span class='danger'>You begin spinning [src]'s barrels!</span>",
|
||||
"<span class='danger'>You hear the spin of a rotary gun!</span>"
|
||||
)
|
||||
is_charging = 1
|
||||
sleep(30)
|
||||
is_charging = 0
|
||||
if(!istype(user.get_active_hand(), src))
|
||||
return
|
||||
msg_admin_attack("[key_name_admin(user)] shot with \a [src.type] [key_name_admin(src)]'s target (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
return 1
|
||||
|
||||
@@ -319,6 +327,9 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/vaurca/typec/special_check(var/mob/user)
|
||||
..()
|
||||
if(is_charging)
|
||||
user << "<span class='danger'>\The [src] is already charging!</span>"
|
||||
return 0
|
||||
if(!wielded)
|
||||
user << "<span class='danger'>You could never fire this weapon with merely one hand!</span>"
|
||||
return 0
|
||||
@@ -328,7 +339,11 @@
|
||||
"<span class='danger'>You begin charging the [src]!</span>",
|
||||
"<span class='danger'>You hear a low pulsing roar!</span>"
|
||||
)
|
||||
is_charging = 1
|
||||
sleep(90)
|
||||
is_charging = 0
|
||||
if(!istype(user.get_active_hand(), src))
|
||||
return
|
||||
msg_admin_attack("[key_name_admin(user)] shot with \a [src.type] [key_name_admin(src)]'s target (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
return 1
|
||||
|
||||
@@ -402,6 +417,9 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/vaurca/thermaldrill/special_check(var/mob/user)
|
||||
..()
|
||||
if(is_charging)
|
||||
user << "<span class='danger'>\The [src] is already charging!</span>"
|
||||
return 0
|
||||
if(!wielded)
|
||||
user << "<span class='danger'>You cannot fire this weapon with just one hand!</span>"
|
||||
return 0
|
||||
@@ -411,7 +429,11 @@
|
||||
"<span class='danger'>You begin charging the [src]!</span>",
|
||||
"<span class='danger'>You hear a low pulsing roar!</span>"
|
||||
)
|
||||
is_charging = 1
|
||||
sleep(90)
|
||||
is_charging = 0
|
||||
if(!istype(user.get_active_hand(), src))
|
||||
return
|
||||
msg_admin_attack("[key_name_admin(user)] shot with \a [src.type] [key_name_admin(src)]'s target (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
return 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user