Advertisement
Guest User

Untitled

a guest
Mar 17th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. /obj/vehicle/segway/
  2. name = "segway"
  3. desc = "A fancy space segway."
  4. icon = 'icons/obj/segway.dmi'
  5. icon_state = "segway_off"
  6. dir = SOUTH
  7.  
  8. load_item_visible = 1
  9. buckle_pixel_shift = "x=-1;y=2"
  10. health = 100
  11. maxhealth = 100
  12.  
  13. locked = 0
  14. fire_dam_coeff = 0.6
  15. brute_dam_coeff = 0.5
  16. var/protection_percent = 60
  17.  
  18. var/land_speed = 10
  19. var/space_speed = 0
  20. var/segway_icon = "segway"
  21.  
  22. var/obj/item/weapon/engine/engine = null
  23. var/engine_type
  24. var/prefilled = 1
  25.  
  26. /obj/vehicle/segway/New()
  27. ..()
  28. if(engine_type)
  29. load_engine(new engine_type(src.loc))
  30. if(prefilled)
  31. engine.prefill()
  32. update_icon()
  33.  
  34. /obj/vehicle/segway/verb/toggle()
  35. set name = "Toggle Engine"
  36. set category = "Object"
  37. set src in view(0)
  38.  
  39. if(usr.incapacitated()) return
  40. if(!engine)
  41. to_chat(usr, "<span class='warning'>\The [src] does not have an engine block installed...</span>")
  42. return
  43.  
  44. if(!on)
  45. turn_on()
  46. else
  47. turn_off()
  48.  
  49. /obj/vehicle/segway/proc/load_engine(var/obj/item/weapon/engine/E, var/mob/user)
  50. if(engine)
  51. return
  52. if(user)
  53. user.drop_from_inventory(E)
  54. engine = E
  55. engine.forceMove(src)
  56.  
  57. /obj/vehicle/segway/proc/unload_engine()
  58. if(!engine)
  59. return
  60. engine.forceMove(get_turf(src))
  61.  
  62. /obj/vehicle/segway/load(var/atom/movable/C)
  63. var/mob/living/M = C
  64. if(!istype(C)) return 0
  65. if(M.buckled || M.restrained() || !Adjacent(M) || !M.Adjacent(src))
  66. return 0
  67. return ..(M)
  68.  
  69. /obj/vehicle/segway/emp_act(var/severity)
  70. if(engine)
  71. engine.emp_act(severity)
  72. ..()
  73.  
  74. /obj/vehicle/segway/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H)
  75. return
  76.  
  77. /obj/vehicle/segway/attackby(obj/item/W as obj, mob/user as mob)
  78. if(open)
  79. if(istype(W, /obj/item/weapon/engine))
  80. if(engine)
  81. to_chat(user, "<span class='warning'>There is already an engine block in \the [src].</span>")
  82. return 1
  83. user.visible_message("<span class='warning'>\The [user] installs \the [W] into \the [src].</span>")
  84. load_engine(W)
  85. return
  86. else if(engine && engine.attackby(W,user))
  87. return 1
  88. else if(isCrowbar(W) && engine)
  89. to_chat(user, "You pop out \the [engine] from \the [src].")
  90. unload_engine()
  91. return 1
  92. return ..()
  93.  
  94. /obj/vehicle/segway/MouseDrop_T(var/atom/movable/C, mob/user as mob)
  95. if(!load(C))
  96. to_chat(user, "<span class='warning'> You were unable to load \the [C] onto \the [src].</span>")
  97. return
  98.  
  99. /obj/vehicle/segway/attack_hand(var/mob/user as mob)
  100. if(user == load)
  101. unload(load)
  102. to_chat(user, "You unbuckle yourself from \the [src]")
  103.  
  104. /obj/vehicle/segway/relaymove(mob/user, direction)
  105. if(user != load || !on || user.incapacitated())
  106. return
  107. return Move(get_step(src, direction))
  108.  
  109. /obj/vehicle/segway/Move(var/turf/destination)
  110. if(!pulledby)
  111. if(istype(destination,/turf/space) || pulledby)
  112. if(!space_speed)
  113. return 0
  114. move_delay = space_speed
  115. else
  116. if(!land_speed)
  117. return 0
  118. move_delay = land_speed
  119. if(!engine || !engine.use_power())
  120. turn_off()
  121. return 0
  122. return ..()
  123.  
  124. /obj/vehicle/segway/turn_on()
  125. if(!engine || on)
  126. return
  127.  
  128. engine.rev_engine(src)
  129. anchored = 1
  130.  
  131. update_icon()
  132.  
  133. if(pulledby)
  134. pulledby.stop_pulling()
  135. ..()
  136.  
  137. /obj/vehicle/segway/turn_off()
  138. if(!on)
  139. return
  140. if(engine)
  141. engine.putter(src)
  142.  
  143. anchored = 1
  144.  
  145. update_icon()
  146.  
  147. ..()
  148.  
  149. /obj/vehicle/segway/bullet_act(var/obj/item/projectile/Proj)
  150. if(buckled_mob && prob(protection_percent))
  151. buckled_mob.bullet_act(Proj)
  152. return
  153. ..()
  154.  
  155. /obj/vehicle/segway/update_icon()
  156. overlays.Cut()
  157.  
  158. if(on)
  159. icon_state = "[segway_icon]_on"
  160. else
  161. icon_state = "[segway_icon]_off"
  162. overlays += image('icons/obj/segway.dmi', "[icon_state]_overlay", MOB_LAYER + 1)
  163. ..()
  164.  
  165. /obj/vehicle/segway/Destroy()
  166. qdel(engine)
  167. ..()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement