This commit is contained in:
DeityLink
2015-08-07 15:54:49 +02:00
parent c1208aa90f
commit dcc133cf60
12 changed files with 199 additions and 59 deletions

View File

@@ -357,8 +357,7 @@
icon = 'icons/obj/ammo.dmi'
icon_state = "stickybomb"
flags = FPRINT
siemens_coefficient = 1
slot_flags = SLOT_BELT
force = 1
throwforce = 1
w_class = 1.0
var/obj/item/weapon/gun/stickybomb/fired_from = null
@@ -367,6 +366,11 @@
var/image/self_overlay = null
var/signal = 0
/obj/item/stickybomb/New()
..()
pixel_x = rand(-5.0, 5)
pixel_y = rand(-5.0, 5)
/obj/item/stickybomb/Destroy()
if(fired_from)
fired_from.fired -= src
@@ -566,3 +570,68 @@
icon_state = "nikita"
caliber = "nikita"
projectile_type = "/obj/item/projectile/nikita"
/obj/item/weapon/gun/osipr
name = "\improper Overwatch Standard Issue Pulse Rifle"
desc = "Centuries ago those weapons striked fear in all of humanity when the Combine attacked the Earth. Nowadays these are just the best guns that the Syndicate can provide to its Elite Troops with its tight budget."
icon = 'icons/obj/gun_experimental.dmi'
icon_state = "osipr"
item_state = "osipr"
origin_tech = null
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/guns_experimental.dmi', "right_hand" = 'icons/mob/in-hand/right/guns_experimental.dmi')
recoil = 1
w_class = 3.0
fire_sound = 'sound/weapons/osipr_fire.ogg'
var/obj/item/osipr_magazine/magazine = null
var/energy_balls = 2
/obj/item/weapon/gun/osipr/New()
..()
magazine = new(src)
/obj/item/weapon/gun/osipr/Destroy()
if(magazine)
qdel(magazine)
..()
#define OSIPR_MAG_FULL 30
/obj/item/osipr_magazine
name = "pulse magazine"
desc = "Primary ammo for OSIPR."
icon = 'icons/obj/ammo.dmi'
icon_state = "osipr-magfull"
flags = FPRINT
force = 1
throwforce = 1
w_class = 3.0
var/bullets = OSIPR_MAG_FULL
/obj/item/osipr_magazine/New()
..()
pixel_x = rand(-5.0, 5)
pixel_y = rand(-5.0, 5)
/obj/item/osipr_magazine/update_icon()
if(bullets == OSIPR_MAG_FULL)
icon_state = "osipr-magfull"
else
icon_state = "osipr-mag"
#undef OSIPR_MAG_FULL
/obj/item/osipr_core
name = "dark energy core"
desc = "Secondary ammo for OSIPR."
icon = 'icons/obj/ammo.dmi'
icon_state = "osipr-core"
flags = FPRINT
force = 1
throwforce = 1
w_class = 3.0
/obj/item/osipr_core/New()
..()
pixel_x = rand(-5.0, 5)
pixel_y = rand(-5.0, 5)

View File

@@ -52,6 +52,7 @@ var/list/impact_master = list()
var/eyeblur = 0
var/drowsy = 0
var/agony = 0
var/jittery = 0
var/step_delay = 0 //how long it goes between moving. You should probably leave this as 0 for a lot of things
@@ -65,6 +66,12 @@ var/list/impact_master = list()
var/error = 0
var/target_angle = 0
var/override_starting_X = 0
var/override_starting_Y = 0
var/override_target_X = 0
var/override_target_Y = 0
var/last_bump = null
var/custom_impact = 0
//update_pixel stuff
@@ -88,6 +95,8 @@ var/list/impact_master = list()
var/mob/living/L = atarget
if(L.flags & INVULNERABLE) return 0
L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked) // add in AGONY!
if(jittery)
L.Jitter(jittery)
return 1
/obj/item/projectile/proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
@@ -249,6 +258,7 @@ var/list/impact_master = list()
//del(src)
returnToPool(src)
OnDeath()
return 1
@@ -270,6 +280,11 @@ var/list/impact_master = list()
dist_x = abs(target.x - starting.x)
dist_y = abs(target.y - starting.y)
override_starting_X = starting.x
override_starting_Y = starting.y
override_target_X = target.x
override_target_Y = target.y
if (target.x > starting.x)
dx = EAST
else
@@ -309,6 +324,9 @@ var/list/impact_master = list()
update_pixel()
pixel_x = PixelX
pixel_y = PixelY
bumped = 0
sleep(sleeptime)
@@ -342,15 +360,23 @@ var/list/impact_master = list()
/obj/item/projectile/proc/update_pixel()
if(src && starting && target)
var/AX = (starting.x - src.x)*32
var/AY = (starting.y - src.y)*32
var/BX = (target.x - src.x)*32
var/BY = (target.y - src.y)*32
var/AX = (override_starting_X - src.x)*32
var/AY = (override_starting_Y - src.y)*32
var/BX = (override_target_X - src.x)*32
var/BY = (override_target_Y - src.y)*32
var/XX = (((BX-AX)*(-BX))+((BY-AY)*(-BY)))/(((BX-AX)*(BX-AX))+((BY-AY)*(BY-AY)))
PixelX = round(BX+((BX-AX)*XX))
PixelY = round(BY+((BY-AY)*XX))
switch(last_bump)
if(NORTH)
PixelY -= 16
if(SOUTH)
PixelY += 16
if(EAST)
PixelX -= 16
if(WEST)
PixelX += 16
return
/obj/item/projectile/proc/bullet_die()

View File

@@ -915,3 +915,77 @@
mob.orient_object = null
mob.canmove = 1
mob = null
/obj/item/projectile/bullet/osipr
icon = 'icons/obj/projectiles_experimental.dmi'
icon_state = "osipr"
damage = 50
/obj/item/projectile/energy/osipr
icon = 'icons/obj/projectiles_experimental.dmi'
icon_state = "osipr"
damage = 50
stun = 10
weaken = 10
stutter = 10
jittery = 10
/obj/item/projectile/proc/rebound(var/atom/A)
var/turf/T = get_turf(src)
var/turf/W = get_turf(A)
var/orientation = SOUTH
if(T == W)
orientation = dir
else
orientation = get_dir(T,W)
last_bump = orientation
switch(orientation)
if(NORTH)
dy = SOUTH
override_starting_Y = (W.y * 2) - override_starting_Y
override_target_Y = (W.y * 2) - override_target_Y
if(SOUTH)
dy = NORTH
override_starting_Y = (W.y * 2) - override_starting_Y
override_target_Y = (W.y * 2) - override_target_Y
if(EAST)
dx = WEST
override_starting_X = (W.x * 2) - override_starting_X
override_target_X = (W.x * 2) - override_target_X
if(WEST)
dx = EAST
override_starting_X = (W.x * 2) - override_starting_X
override_target_X = (W.x * 2) - override_target_X
var/newdiffX = override_target_X - override_starting_X
var/newdiffY = override_target_Y - override_starting_Y
override_starting_X = W.x
override_starting_Y = W.y
override_target_X = W.x + newdiffX
override_target_Y = W.y + newdiffY
var/disty
var/distx
var/newangle
disty = (32 * override_target_Y)-(32 * override_starting_Y)
distx = (32 * override_target_X)-(32 * override_starting_X)
if(!disty)
if(distx >= 0)
newangle = 90
else
newangle = 270
else
newangle = arctan(distx/disty)
if(disty < 0)
newangle += 180
else if(distx < 0)
newangle += 360
target_angle = round(newangle)
if(linear_movement)
if( !("[icon_state][target_angle]" in bullet_master) )
var/icon/I = new(initial(icon),"[icon_state]_pixel")
I.Turn(target_angle+45)
bullet_master["[icon_state]_angle[target_angle]"] = I
src.icon = bullet_master["[icon_state]_angle[target_angle]"]