mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 20:47:10 +01:00
Energy projectiles now move instantly, leaving a straight line from their origin to their destination, like real energy weapons.
Welderbackpack now has a proper icon. Stun rounds can now be reduced or blocked by armor Added more update_clothing() calls Fixed strangling non-humans. Blob is now an announcement only.
This commit is contained in:
@@ -162,6 +162,7 @@
|
||||
#define FILE_DIR "code/WorkInProgress/Wrongnumber"
|
||||
#define FILE_DIR "html"
|
||||
#define FILE_DIR "icons"
|
||||
#define FILE_DIR "icons/48x48"
|
||||
#define FILE_DIR "icons/effects"
|
||||
#define FILE_DIR "icons/misc"
|
||||
#define FILE_DIR "icons/mob"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Welding kit"
|
||||
desc = "A heavy-duty, portable welding fluid carrier."
|
||||
flags = ONBACK
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "engiepack"
|
||||
w_class = 4.0
|
||||
var/max_fuel = 350
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/proc/mini_blob_event()
|
||||
//command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
//world << sound('outbreak5.ogg')
|
||||
var/turf/T = pick(blobstart)
|
||||
/* var/turf/T = pick(blobstart)
|
||||
var/obj/effect/blob/bl = new /obj/effect/blob( T.loc, 30 )
|
||||
spawn(0)
|
||||
bl.Life()
|
||||
@@ -14,9 +14,9 @@
|
||||
spawn(0)
|
||||
dotheblobbaby()
|
||||
spawn(15000)
|
||||
blobevent = 0
|
||||
blobevent = 0*/
|
||||
spawn(rand(30, 60)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()].", "Biohazard Alert")
|
||||
world << sound('outbreak5.ogg')
|
||||
|
||||
/proc/dotheblobbaby()
|
||||
|
||||
@@ -266,6 +266,7 @@ THERMAL GLASSES
|
||||
src.flags &= ~HEADCOVERSEYES
|
||||
icon_state = "weldingup"
|
||||
usr << "You push the mask up out of your face."
|
||||
usr.update_clothing()
|
||||
|
||||
/obj/item/clothing/shoes/magboots/verb/toggle()
|
||||
set name = "Toggle Magboots"
|
||||
@@ -304,6 +305,7 @@ THERMAL GLASSES
|
||||
usr << "You unbutton the suit jacket."
|
||||
else
|
||||
usr << "Sorry! The suit you're wearing doesn't have buttons!"
|
||||
usr.update_clothing()
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/verb/toggle()
|
||||
set name = "Toggle Labcoat Buttons"
|
||||
@@ -365,6 +367,7 @@ THERMAL GLASSES
|
||||
|
||||
else
|
||||
usr << "Sorry! The suit you're wearing doesn't have buttons!"
|
||||
usr.update_clothing()
|
||||
|
||||
/obj/item/clothing/head/ushanka/attack_self(mob/user as mob)
|
||||
if(src.icon_state == "ushankadown")
|
||||
|
||||
@@ -1411,9 +1411,10 @@
|
||||
if(!reagents.total_volume)
|
||||
if(M == user) user << "\red You finish eating [src]."
|
||||
else user << "\red [M] finishes eating [src]."
|
||||
spawn(5)
|
||||
user.update_clothing()
|
||||
del(src)
|
||||
playsound(M.loc,'eatfood.ogg', rand(10,50), 1)
|
||||
user.update_clothing()
|
||||
return 1
|
||||
else if(istype(M, /mob/living/simple_animal/livestock))
|
||||
if(M == user) //If you're eating it yourself.
|
||||
|
||||
@@ -42,13 +42,13 @@
|
||||
if(!effect || (blocked >= 2)) return 0
|
||||
switch(effecttype)
|
||||
if(STUN)
|
||||
Stun(effect/(blocked+1))
|
||||
Stun((effect - (effect*getarmor(null, "melee")))/(blocked + 1))
|
||||
if(WEAKEN)
|
||||
Weaken(effect/(blocked+1))
|
||||
Weaken((effect - (effect*getarmor(null, "melee")))/(blocked + 1))
|
||||
if(PARALYZE)
|
||||
Paralyse(effect/(blocked+1))
|
||||
if(IRRADIATE)
|
||||
radiation += max((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
|
||||
radiation += max((effect - (effect*getarmor(null, "melee"))), 0)//Rads auto check armor
|
||||
if(STUTTER)
|
||||
stuttering = max(stuttering,(effect/(blocked+1)))
|
||||
if(SLUR)
|
||||
|
||||
@@ -78,9 +78,13 @@
|
||||
if ((killing && state == 3))
|
||||
affecting.Stun(5)
|
||||
affecting.Paralyse(3)
|
||||
affecting.being_strangled = 1
|
||||
var/datum/organ/external/head = affecting.organs["head"]
|
||||
head.add_wound("Strangulation", 0)
|
||||
if(ishuman(affecting))
|
||||
var/mob/living/carbon/human/H = affecting
|
||||
affecting.being_strangled = 1
|
||||
var/datum/organ/external/head = H.organs["head"]
|
||||
head.add_wound("Strangulation", 0)
|
||||
else
|
||||
affecting.losebreath = min(affecting.losebreath + 2, 3)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -43,9 +43,18 @@
|
||||
if(!do_after(user, 40))
|
||||
M.visible_message("\blue [user] decided life was worth living")
|
||||
return
|
||||
M.visible_message("\red [user] pulls the trigger.")
|
||||
M.apply_damage(70, BRUTE, "head")
|
||||
M.apply_damage(110, BRUTE, "chest")
|
||||
if(istype(src.in_chamber, /obj/item/projectile/bullet) && !istype(src.in_chamber, /obj/item/projectile/bullet/stunshot))
|
||||
M.apply_damage(160, BRUTE, "head", used_weapon = "Suicide attempt with a projectile weapon.")
|
||||
M.visible_message("\red [user] pulls the trigger.")
|
||||
else if(istype(src.in_chamber, /obj/item/projectile/bullet/stunshot) || istype(src.in_chamber, /obj/item/projectile/energy/electrode))
|
||||
M.apply_damage(10, BURN, "head", used_weapon = "Suicide attempt with a stun round.")
|
||||
M.visible_message("\red [user] pulls the trigger, but luckily it was a stun round.")
|
||||
else if(istype(src.in_chamber, /obj/item/projectile/beam) || istype(src.in_chamber, /obj/item/projectile/energy))
|
||||
M.apply_damage(160, BURN, "head", used_weapon = "Suicide attempt with an energy weapon")
|
||||
M.visible_message("\red [user] pulls the trigger.")
|
||||
else
|
||||
M.apply_damage(160, BRUTE, "head", used_weapon = "Suicide attempt with a gun")
|
||||
M.visible_message("\red [user] pulls the trigger. Ow.")
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -6,6 +6,40 @@
|
||||
damage_type = BURN
|
||||
flag = "laser"
|
||||
eyeblur = 2
|
||||
var/ID = 0
|
||||
var/main = 0
|
||||
|
||||
process()
|
||||
main = 1
|
||||
ID = rand(0,1000)
|
||||
var/lets_not_be_a_derp = 1
|
||||
spawn(0)
|
||||
while(!bumped)
|
||||
for(var/mob/living/M in loc)
|
||||
Bump(M)
|
||||
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))
|
||||
del(src)
|
||||
return
|
||||
if(!lets_not_be_a_derp)
|
||||
var/obj/item/projectile/beam/new_beam = new src.type(loc)
|
||||
processing_objects.Remove(new_beam)
|
||||
new_beam.dir = dir
|
||||
new_beam.ID = ID
|
||||
else
|
||||
lets_not_be_a_derp = 0
|
||||
step_towards(src, current)
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
|
||||
Del()
|
||||
if(main)
|
||||
sleep(3)
|
||||
for(var/obj/item/projectile/beam/beam in world)
|
||||
if(beam.ID == ID)
|
||||
del(beam)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/projectile/beam/heavylaser
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet
|
||||
damage = 10
|
||||
damage = 5
|
||||
stun = 5
|
||||
weaken = 5
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
stun = 10
|
||||
weaken = 10
|
||||
stutter = 10
|
||||
flag = "melee" //Give it a better chance to be blocked.
|
||||
|
||||
|
||||
/obj/item/projectile/energy/declone
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Reference in New Issue
Block a user