Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. /obj/item/clothing/mask/vape
  2. name = "E-Cigarette"
  3. desc = "A classy and highly sophisticated electronic cigarette, for classy and dignified gentlemen. A warning label reads \"Warning: Do not fill with flammable materials.\""//<<< i'd vape to that.
  4. icon = 'icons/obj/clothing/masks.dmi'
  5. icon_state = null
  6. item_state = null
  7. w_class = WEIGHT_CLASS_TINY
  8. var/chem_volume = 100
  9. var/vapetime = 0 //this so it won't puff out clouds every tick
  10. var/screw = 0 // kinky
  11. var/super = 0 //for the fattest vapes dude.
  12. var/emagged = 0 //LET THE GRIEF BEGIN
  13.  
  14. /obj/item/clothing/mask/vape/suicide_act(mob/user)
  15. user.visible_message("<span class='suicide'>[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer
  16. return (TOXLOSS|OXYLOSS)
  17.  
  18.  
  19. /obj/item/clothing/mask/vape/Initialize(mapload, param_color)
  20. . = ..()
  21. create_reagents(chem_volume)
  22. reagents.set_reacting(FALSE) // so it doesn't react until you light it
  23. reagents.add_reagent("nicotine", 50)
  24. if(!icon_state)
  25. if(!param_color)
  26. param_color = pick("red","blue","black","white","green","purple","yellow","orange")
  27. icon_state = "[param_color]_vape"
  28. item_state = "[param_color]_vape"
  29.  
  30. /obj/item/clothing/mask/vape/attackby(obj/item/O, mob/user, params)
  31. if(istype(O, /obj/item/weapon/reagent_containers) && (O.container_type & OPENCONTAINER))
  32. if(reagents.total_volume < chem_volume)
  33. if(O.reagents.total_volume > 0)
  34. O.reagents.trans_to(src,25)
  35. to_chat(user, "<span class='notice'>You add the contents of [O] to the [src]</span>")
  36. else
  37. to_chat(user, "<span class='warning'>The [O] is empty!</span>")
  38. else
  39. to_chat(user, "<span class='warning'>[src] can't hold anymore reagents!</span>")
  40.  
  41. if(istype(O, /obj/item/weapon/screwdriver))
  42. if(!screw)
  43. screw = 1
  44. to_chat(user, "<span class='notice'>You open the cap on the [src]</span>")
  45. if(super)
  46. add_overlay("vapeopen_med")
  47. else
  48. add_overlay("vapeopen_low")
  49. else
  50. screw = 0
  51. to_chat(user, "<span class='notice'>You close the cap on the [src]</span>")
  52. cut_overlays()
  53.  
  54. if(istype(O, /obj/item/device/multitool))
  55. if(screw && !emagged)//also kinky
  56. if(!super)
  57. cut_overlays()
  58. super = 1
  59. to_chat(user, "<span class='notice'>You increase the voltage in the [src]</span>")
  60. add_overlay("vapeopen_med")
  61. else
  62. cut_overlays()
  63. super = 0
  64. to_chat(user, "<span class='notice'>You decrease the voltage in the [src]</span>")
  65. add_overlay("vapeopen_low")
  66.  
  67. if(screw && emagged)
  68. to_chat(user, "<span class='notice'>The [name] can't be modified!</span>")
  69.  
  70.  
  71. /obj/item/clothing/mask/vape/emag_act(mob/user)// I WON'T REGRET WRITTING THIS, SURLY.
  72. if(screw)
  73. if(!emagged)
  74. cut_overlays()
  75. emagged = 1
  76. super = 0
  77. to_chat(user, "<span class='warning'>You maximize the voltage in the [src]</span>")
  78. add_overlay("vapeopen_high")
  79. var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread //for effect
  80. sp.set_up(5, 1, src)
  81. sp.start()
  82. else
  83. to_chat(user, "<span class='warning'>The [name] is already emagged!</span>")
  84. else
  85. to_chat(user, "<span class='notice'>You need to open the cap to do that</span>")
  86.  
  87. /obj/item/clothing/mask/vape/attack_self(mob/user)
  88. if(reagents.total_volume > 0)
  89. to_chat(user, "<span class='notice'>you empty [src] of all reagents.</span>")
  90. reagents.clear_reagents()
  91. return
  92.  
  93. /obj/item/clothing/mask/vape/equipped(mob/user, slot)
  94. if(slot == slot_wear_mask)
  95. if(!screw)
  96. to_chat(user, "<span class='notice'>You start puffing on the vape.</span>")
  97. reagents.set_reacting(TRUE)
  98. START_PROCESSING(SSobj, src)
  99. else //it will not start if the vape is opened.
  100. to_chat(user, "<span class='warning'>You need to close the cap first!</span>")
  101.  
  102. /obj/item/clothing/mask/vape/dropped(mob/user)
  103. var/mob/living/carbon/C = user
  104. if(C.get_item_by_slot(slot_wear_mask) == src)
  105. reagents.set_reacting(FALSE)
  106. STOP_PROCESSING(SSobj, src)
  107.  
  108. /obj/item/clothing/mask/vape/proc/hand_reagents()//had to rename to avoid duplicate error
  109. if(reagents.total_volume)
  110. if(iscarbon(loc))
  111. var/mob/living/carbon/C = loc
  112. if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob
  113. var/fraction = min(REAGENTS_METABOLISM/reagents.total_volume, 1) //this will react instantly, making them a little more dangerous than cigarettes
  114. reagents.reaction(C, INGEST, fraction)
  115. if(!reagents.trans_to(C, REAGENTS_METABOLISM))
  116. reagents.remove_any(REAGENTS_METABOLISM)
  117. if(reagents.get_reagent_amount("welding_fuel"))
  118. //HOT STUFF
  119. C.fire_stacks = 2
  120. C.IgniteMob()
  121.  
  122. if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
  123. var/datum/effect_system/reagents_explosion/e = new()
  124. e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
  125. e.start()
  126. qdel(src)
  127. return
  128. reagents.remove_any(REAGENTS_METABOLISM)
  129.  
  130. /obj/item/clothing/mask/vape/process()
  131. var/mob/living/M = loc
  132.  
  133. if(isliving(loc))
  134. M.IgniteMob()
  135.  
  136. vapetime++
  137.  
  138. if(!reagents.total_volume)
  139. if(ismob(loc))
  140. to_chat(M, "<span class='notice'>The [name] is empty!</span>")
  141. STOP_PROCESSING(SSobj, src)
  142. //it's reusable so it won't unequip when empty
  143. return
  144. //open flame removed because vapes are a closed system, they wont light anything on fire
  145.  
  146. if(super && vapetime > 3)//Time to start puffing those fat vapes, yo.
  147. var/datum/effect_system/smoke_spread/chem/s = new
  148. s.set_up(reagents, 1, loc, silent=TRUE)
  149. s.start()
  150. vapetime = 0
  151.  
  152. if(emagged && vapetime > 3)
  153. var/datum/effect_system/smoke_spread/chem/s = new
  154. s.set_up(reagents, 4, loc, silent=TRUE)
  155. s.start()
  156. vapetime = 0
  157. if(prob(5))//small chance for the vape to break and deal damage if it's emagged
  158. playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0)
  159. M.apply_damage(20, BURN, "head")
  160. M.Knockdown(300, 1, 0)
  161. var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread
  162. sp.set_up(5, 1, src)
  163. sp.start()
  164. to_chat(M, "<span class='userdanger'>The [name] suddenly explodes in your mouth!</span>")
  165. qdel(src)
  166. return
  167.  
  168. if(reagents && reagents.total_volume)
  169. hand_reagents()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement