atom/var/middleclick = 0
/atom
Click(location,control,params)
var/list/p=params2list(params)
if("left" in p)
if(src.enemytype && src.attacktarget != usr)
usr.incombat = 0
if(src == usr && usr.frozen != 1 && !src.Dead && src.icon != 'CharSprites.dmi')
if(usr.icon_state == "MR-1DriveOn")
usr.speed = 5
usr.icon_state = "MR-1On"
usr << "Changed to combat mode."
else if(usr.icon_state == "MR-1On")
usr.speed = 1
usr.icon_state = "MR-1DriveOn"
usr << "Changed to drive mode."
if(usr.weaponequipped)
usr.overlays -= usr.overlays
weaponequipped = 0
usr.cooldown = 0
if(src != usr && usr.frozen != 1 && !src.Dead && src.icon != 'CharSprites.dmi' && !src.immune)
if(usr.x > src.x && usr.dir == WEST || usr.x < src.x && usr.dir == EAST || usr.y < src.y && usr.dir == NORTH || usr.y > src.y && usr.dir == SOUTH)
if(usr.weaponequipped == 2 && !usr.cooldown)
usr.cooldown = 1
usr.overlays += /obj/overlay/assaultrifle
var/obj/S = new/obj/assaultriflespread(locate(src.x,src.y,src.z))
S.pixel_y += src.pixel_y
if(istype(src,/mob/))
usr << "Shot [src]."
src.Damage = src.Damage + rand(1,10)
src.HP = src.maxHP - src.Damage
usr << "Enemy HP: [src.HP]"
src << "HP: [src.HP]"
spawn(4) usr.overlays -= /obj/overlay/assaultrifle
CheckDeathRifle()
else
spawn(4) usr.overlays -= /obj/overlay/assaultrifle
sleep(15)
usr.cooldown = 0
else if(usr.weaponequipped == 4 && !usr.cooldown)
src = locate(x,y,z)
usr.cooldown = 1
usr.overlays += /obj/overlay/GiantCannonShoot
for(var/X in -1 to 1)
for(var/Y in -1 to 1)
spawn(rand(1,5)) new/obj/CannonExplode(locate(src.x+X,src.y+Y,src.z))
var/mob/M
for(M in view(1,src))
if(M.maxHP > 0 && M.icon != 'CharSprites.dmi')
usr << "Shot [M.name]."
M.Damage = M.Damage + rand(4,12)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0 && M in view(1,src))
CheckDeathM(M)
spawn(4) usr.overlays -= /obj/overlay/GiantCannonShoot
sleep(30)
usr.cooldown = 0
if(usr.weaponequipped == 1 && !usr.cooldown)
usr.cooldown = 1
var/obj/S = new/obj/Slash
S.dir = usr.dir
S.layer = usr.layer+1
S.pixel_y = usr.pixel_y
var/mob/M
if(usr.dir == NORTH)
S.loc = locate(usr.x,usr.y+1,usr.z)
S.pixel_y -= 37
S.pixel_x -= 10
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y < M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(1,5)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == SOUTH)
S.loc = locate(usr.x,usr.y-1,usr.z)
S.pixel_x -= 27
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y > M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(1,5)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == EAST)
S.loc = locate(usr.x+1,usr.y,usr.z)
S.pixel_x -= 20
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x < M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(1,5)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == WEST)
S.loc = locate(usr.x-1,usr.y,usr.z)
S.pixel_x -= 17
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x > M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(1,5)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
sleep(16)
usr.cooldown = 0
if(usr.weaponequipped == 3 && !usr.cooldown)
usr.cooldown = 1
var/obj/S = new/obj/Slash
S.dir = usr.dir
S.layer = usr.layer+1
S.pixel_y = usr.pixel_y
var/mob/M
if(usr.dir == NORTH)
S.loc = locate(usr.x,usr.y+1,usr.z)
S.pixel_y -= 37
S.pixel_x -= 10
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y < M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,7)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == SOUTH)
S.loc = locate(usr.x,usr.y-1,usr.z)
S.pixel_x -= 27
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y > M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,7)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == EAST)
S.loc = locate(usr.x+1,usr.y,usr.z)
S.pixel_x -= 20
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x < M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,7)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == WEST)
S.loc = locate(usr.x-1,usr.y,usr.z)
S.pixel_x -= 17
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x > M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,7)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
sleep(10)
usr.cooldown = 0
if(usr.weaponequipped == 5 && !usr.cooldown)
usr.cooldown = 1
var/obj/S = new/obj/SlashTwin
S.dir = usr.dir
S.layer = usr.layer+1
S.pixel_y = usr.pixel_y
var/mob/M
if(usr.dir == NORTH)
S.loc = locate(usr.x,usr.y+1,usr.z)
S.pixel_y -= 37
S.pixel_x -= 22
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y < M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,15)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == SOUTH)
S.loc = locate(usr.x,usr.y-1,usr.z)
S.pixel_x -= 22
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.y > M.y)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,15)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == EAST)
S.loc = locate(usr.x+1,usr.y,usr.z)
S.pixel_x -= 20
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x < M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,15)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
if(usr.dir == WEST)
S.loc = locate(usr.x-1,usr.y,usr.z)
S.pixel_x -= 17
S.layer = usr.layer-1
for(M in view(1,usr))
if(M.maxHP > 0 && M.layer == usr.layer && M.icon != 'CharSprites.dmi')
if(usr.x > M.x)
usr << "Slashed [M.name]."
if(M.enemytype && M.attacktarget != usr)
usr.incombat = 0
M.Damage = M.Damage + rand(2,15)
M.HP = M.maxHP - M.Damage
usr << "Enemy HP: [M.HP]"
M << "HP: [M.HP]"
if(M.HP <= 0)
CheckDeathM(M)
sleep(10)
usr.cooldown = 0
if(usr.weaponequipped == 6)
usr.checkvar = input("Which variable to check?")
for(var/Vars in src.vars)
if(Vars == usr.checkvar)
world << "[src] [usr.checkvar] = [src.vars[Vars]]"
else if("middle" in p)
Midclick()
proc
Midclick()
if(!usr.middleclick)
usr.middleclick = 1
if(usr.icon == 'Knightmares.dmi' && usr.cooldown2 == 0)
if(usr.secondary == "Slash Harkens" && usr.icon_state == "LancelotOn")
usr.cooldown2 = 1
usr.overlays += /obj/overlay/LancelotSlashHarkens
for(var/mob/M in view(2,usr))
if(M.grapplepoint == 1 && get_dir(usr,M) == NORTH && usr.dir == NORTH)
spawn(10) usr.loc = locate(M.x,M.y+1,M.z)
else if(M != usr && M.name != "")
var/E = M.Damage
M.Damage = M.Damage + rand(0,2)
if(M.Damage > E)
M << "Hit with Slash Harkens."
usr << "Your Slash Harkens hit [M]."
var/S = M.speed
var/J = usr.speed
M.speed = M.speed + 2
usr.speed = usr.speed - 1
spawn(9) M.speed = S
spawn(5) usr.speed = J
else
..()
sleep(10)
usr.overlays -= /obj/overlay/LancelotSlashHarkens
usr.cooldown2 = 0
usr.middleclick = 0
return
else if(usr.secondary == "Slash Harkens" && usr.icon_state != "LancelotOn" && usr.icon_state != "MR-1DriveOn" && !usr.floatequipped)
usr.cooldown2 = 1
usr.overlays += /obj/overlay/grapple
usr.overlays += /obj/overlay/grapple2
usr.overlays += /obj/overlay/grapple3
usr.overlays += /obj/overlay/grapple4
for(var/mob/M in view(5,usr))
if(M.grapplepoint == 1 && get_dir(usr,M) == NORTH && usr.dir == NORTH)
spawn(10) usr.loc = locate(M.x,M.y+1,M.z)
else if(M != usr && get_dir(usr,M) == usr.dir && M.name != "")
var/E = M.Damage
M.Damage = M.Damage + rand(0,1)
if(M.Damage > E)
M << "Hit with a Slash Harken."
usr << "Your Slash Harken hit [M]."
var/S = M.speed
var/J = usr.speed
M.speed = M.speed + 2
usr.speed = usr.speed - 1
spawn(9) M.speed = S
spawn(5) usr.speed = J
else
..()
sleep(10)
usr.overlays -= /obj/overlay/grapple
usr.overlays -= /obj/overlay/grapple2
usr.overlays -= /obj/overlay/grapple3
usr.overlays -= /obj/overlay/grapple4
usr.cooldown2 = 0
usr.middleclick = 0
return
else if(usr.secondary == "Geass Push")
usr.cooldown2 = 1
usr.overlays += /obj/overlay/GeassPush
spawn(4) usr.overlays -= /obj/overlay/GeassPush
for(var/mob/M in oview(3,usr))
if(M.icon == 'Knightmares.dmi' || M.icon == 'Vehicles.dmi')
step_away(M,usr,3)
sleep(30)
usr.overlays -= /obj/overlay/GeassPush
usr.cooldown2 = 0
usr.middleclick = 0
return
else if(usr.secondary == "Geass Time Suspend")
usr.cooldown2 = 1
usr.overlays += /obj/overlay/GeassTimeSuspend
spawn(6) usr.overlays -= /obj/overlay/GeassTimeSuspend
for(var/mob/M in oview(2,usr))
if(M.icon == 'Knightmares.dmi' || M.icon == 'Vehicles.dmi')
M.northdir = 1
M.southdir = 1
M.westdir = 1
M.eastdir = 1
M.southwestdir = 1
M.southeastdir = 1
M.northwestdir = 1
M.northeastdir = 1
M.cooldown = 1
M.cooldown2 = 1
M.frozen = 1
spawn(40) M.northdir = 0
spawn(40) M.southdir = 0
spawn(40) M.westdir = 0
spawn(40) M.eastdir = 0
spawn(40) M.southwestdir = 0
spawn(40) M.southeastdir = 0
spawn(40) M.northwestdir = 0
spawn(40) M.northeastdir = 0
spawn(40) M.cooldown = 0
spawn(40) M.cooldown2 = 0
spawn(40) M.frozen = 0
sleep(50)
usr.overlays -= /obj/overlay/GeassTimeSuspend
usr.cooldown2 = 0
usr.middleclick = 0
return
else if(usr.secondary == "Factsphere Sensor")
usr.cooldown2 = 1
for(var/mob/M in oview(8,usr))
if(M.icon == 'Knightmares.dmi' || M.icon == 'Vehicles.dmi')
var/image/I = image(/obj/overlay/FactsphereKnightmare,M)
usr << I
spawn(10) del(I)
else if(M.icon == 'CharSprites.dmi')
var/image/I = image(/obj/overlay/Factsphere,M)
usr << I
spawn(10) del(I)
sleep(10)
usr.cooldown2 = 0
usr.middleclick = 0
return
usr.middleclick = 0
Problem description: Middle click should activate a weapon but it isn't firing. The weapon is a short distance speed reducer.
With: