Revert "12/21 modernizations from TG live"

This commit is contained in:
LetterJay
2016-12-22 22:35:44 -06:00
committed by GitHub
parent cf59ac1c3d
commit ae40d4134e
2215 changed files with 86928 additions and 707332 deletions
+2 -2
View File
@@ -6,7 +6,6 @@
force = 40
throwforce = 20
armour_penetration = 50
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/datum/effect_system/spark_spread/spark_system
/obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
@@ -38,7 +37,7 @@
/obj/item/weapon/katana/energy/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0)
if(!istype(user))
return
forceMove(get_turf(user))
loc = get_turf(src)
if(doSpark)
spark_system.start()
@@ -51,6 +50,7 @@
else if(user.equip_to_slot_if_possible(src, slot_belt, 0, 1, 1))
msg = "Your Energy Katana teleports back to you, sheathing itself as it does so!</span>"
else
loc = get_turf(user)
msg = "Your Energy Katana teleports to your location!"
if(caught)
+3 -3
View File
@@ -14,7 +14,7 @@ Contents:
typepath = /datum/round_event/ghost_role/ninja
max_occurrences = 1
earliest_start = 30000 // 1 hour
min_players = 15
/datum/round_event/ghost_role/ninja
var/success_spawn = 0
@@ -55,7 +55,7 @@ Contents:
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/selected_candidate = pick_n_take(candidates)
var/mob/dead/selected_candidate = popleft(candidates)
var/key = selected_candidate.key
//Prepare ninja player mind
@@ -66,7 +66,7 @@ Contents:
var/list/possible_targets = list()
for(var/datum/mind/M in ticker.minds)
if(M.current && M.current.stat != DEAD)
if(ishuman(M.current))
if(istype(M.current,/mob/living/carbon/human))
if(M.special_role)
possible_targets[M] = 0 //bad-guy
else if(M.assigned_role in command_positions)
+1 -2
View File
@@ -31,7 +31,6 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
strip_delay = 120
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/draining = 0
var/candrain = 0
var/mindrain = 200
@@ -41,7 +40,7 @@
/obj/item/clothing/gloves/space_ninja/Touch(atom/A,proximity)
if(!candrain || draining)
return 0
if(!ishuman(loc))
if(!istype(loc, /mob/living/carbon/human))
return 0 //Only works while worn
var/mob/living/carbon/human/H = loc
+3 -4
View File
@@ -5,8 +5,7 @@
name = "ninja hood"
icon_state = "s-ninja"
item_state = "s-ninja_mask"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25, fire = 100, acid = 100)
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25)
strip_delay = 12
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
blockTracking = 1//Roughly the only unique thing about this helmet.
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
unacidable = 1
blockTracking = 1//Roughly the only unique thing about this helmet.
-1
View File
@@ -16,4 +16,3 @@ Contents:
icon_state = "s-ninja"
item_state = "s-ninja_mask"
strip_delay = 120
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -3,7 +3,7 @@ It will teleport people to a holding facility after 30 seconds. (Check the proce
It is possible to destroy the net by the occupant or someone else.
*/
/obj/structure/energy_net
/obj/effect/energy_net
name = "energy net"
desc = "It's a net made of green energy."
icon = 'icons/effects/effects.dmi'
@@ -14,21 +14,27 @@ It is possible to destroy the net by the occupant or someone else.
mouse_opacity = 1//So you can hit it with stuff.
anchored = 1//Can't drag/grab the trapped mob.
layer = ABOVE_ALL_MOB_LAYER
obj_integrity = 25//How much health it has.
max_integrity = 25
var/health = 25//How much health it has.
var/mob/living/affecting = null//Who it is currently affecting, if anyone.
var/mob/living/master = null//Who shot web. Will let this person know if the net was successful or failed.
/obj/structure/energy_net/play_attack_sound(damage, damage_type = BRUTE, damage_flag = 0)
/obj/effect/energy_net/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
switch(damage_type)
if(BRUTE)
playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1)
if(sound_effect)
playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1)
if(BURN)
playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1)
if(sound_effect)
playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1)
else
return
health -= damage
if(health <=0)
qdel(src)
/obj/structure/energy_net/Destroy()
/obj/effect/energy_net/Destroy()
if(affecting)
var/mob/living/carbon/M = affecting
M.anchored = 0
@@ -38,7 +44,7 @@ It is possible to destroy the net by the occupant or someone else.
master << "<span class='userdanger'>ERROR</span>: unable to initiate transport protocol. Procedure terminated."
return ..()
/obj/structure/energy_net/process(mob/living/carbon/M)
/obj/effect/energy_net/process(mob/living/carbon/M)
var/check = 30//30 seconds before teleportation. Could be extended I guess.
var/mob_name = affecting.name//Since they will report as null if terminated before teleport.
//The person can still try and attack the net when inside.
@@ -61,33 +67,37 @@ It is possible to destroy the net by the occupant or someone else.
density = 0//Make the net pass-through.
invisibility = INVISIBILITY_ABSTRACT//Make the net invisible so all the animations can play out.
resistance_flags |= INDESTRUCTIBLE //Make the net invincible so that an explosion/something else won't kill it while, spawn() is running.
health = INFINITY//Make the net invincible so that an explosion/something else won't kill it while, spawn() is running.
for(var/obj/item/W in M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(W == H.w_uniform)
if(istype(M,/mob/living/carbon/human))
if(W==M:w_uniform)
continue//So all they're left with are shoes and uniform.
if(W == H.shoes)
if(W==M:shoes)
continue
M.unEquip(W)
playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(M), M.dir))
spawn(0)
playsound(M.loc, 'sound/effects/sparks4.ogg', 50, 1)
anim(M.loc,M,'icons/mob/mob.dmi',,"phaseout",,M.dir)
visible_message("[M] suddenly vanishes!")
M.forceMove(pick(holdingfacility)) //Throw mob in to the holding facility.
M.loc = pick(holdingfacility)//Throw mob in to the holding facility.
M << "<span class='danger'>You appear in a strange place!</span>"
spawn(0)
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, M.loc)
spark_system.start()
playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1)
anim(M.loc,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
qdel(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0).
for(var/mob/O in viewers(src, 3))
O.show_message("[M] vanishes!", 1, "<span class='italics'>You hear sparks flying!</span>", 2)
if(!isnull(master))//As long as they still exist.
master << "<span class='notice'><b>SUCCESS</b>: transport procedure of \the [affecting] complete.</span>"
M.notransform = 0
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, M.loc)
spark_system.start()
playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(M), M.dir))
qdel(src)
else//And they are free.
M << "<span class='notice'>You are free of the net!</span>"
@@ -96,7 +106,61 @@ It is possible to destroy the net by the occupant or someone else.
/obj/structure/energy_net/attack_paw(mob/user)
/obj/effect/energy_net/bullet_act(obj/item/projectile/Proj)
. = ..()
take_damage(Proj.damage, Proj.damage_type)
/obj/effect/energy_net/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
if(2)
qdel(src)
if(3)
take_damage(rand(10,25), BRUTE, 0)
/obj/effect/energy_net/blob_act(obj/effect/blob/B)
qdel(src)
/obj/effect/energy_net/hitby(atom/movable/AM)
..()
var/tforce = 0
if(ismob(AM))
tforce = 10
else if(isobj(AM))
var/obj/O = AM
tforce = O.throwforce
take_damage(tforce)
/obj/effect/energy_net/attack_hulk(mob/living/carbon/human/user)
..(user, 1)
user.visible_message("<span class='danger'>[user] rips the energy net apart!</span>", \
"<span class='notice'>You easily destroy the energy net.</span>")
qdel(src)
/obj/effect/energy_net/attack_paw(mob/user)
return attack_hand()
/obj/effect/energy_net/attack_alien(mob/living/user)
user.do_attack_animation(src)
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1)
user.visible_message("<span class='danger'>[user] slices the energy net apart!</span>", \
"\green You slice the energy net to pieces.")
qdel(src)
/obj/effect/energy_net/attacked_by(obj/item/weapon/W, mob/user)
..()
take_damage(W.force, W.damtype)
@@ -23,6 +23,5 @@
reagents.trans_id_to(H, "radium", a_transfer)
H << "<span class='danger'>You are beginning to feel the after-effect of the injection.</span>"
a_boost--
H << "<span class='notice'>There are <B>[a_boost]</B> adrenaline boosts remaining.</span>"
s_coold = 3
return
@@ -9,22 +9,22 @@
if(!ninjacost(200,N_STEALTH_CANCEL) && iscarbon(C))
var/mob/living/carbon/human/H = affecting
if(C.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
if(!locate(/obj/structure/energy_net) in C.loc)//Check if they are already being affected by an energy net.
if(!locate(/obj/effect/energy_net) in C.loc)//Check if they are already being affected by an energy net.
for(var/turf/T in getline(H.loc, C.loc))
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
H << "<span class='warning'>You may not use an energy net through solid obstacles!</span>"
return
spawn(0)
H.Beam(C,"n_beam",time=15)
H.Beam(C,"n_beam",,15)
H.say("Get over here!")
var/obj/structure/energy_net/E = new /obj/structure/energy_net(C.loc)
var/obj/effect/energy_net/E = new /obj/effect/energy_net(C.loc)
H.visible_message("<span class='danger'>[H] caught [C] with an energy net!</span>","<span class='notice'>You caught [C] with an energy net!</span>")
E.affecting = C
E.master = H
spawn(0)//Parallel processing.
E.process(C)
else
H << "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>"
H << "<span class='warning'>They are already trapped inside an energy net!</span>"
else
H << "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>"
H << "<span class='warning'>They will bring no honor to your Clan!</span>"
return
@@ -9,11 +9,11 @@
if(!ninjacost(10))
var/mob/living/carbon/human/H = affecting
var/obj/item/weapon/throwing_star/ninja/N = new(H)
if(H.put_in_hands(N))
var/slot = H.hand ? slot_l_hand : slot_r_hand
if(H.equip_to_slot_or_del(new /obj/item/weapon/throwing_star/ninja(H), slot))
H << "<span class='notice'>A throwing star has been created in your hand!</span>"
else
qdel(N)
H.throw_mode_on() //So they can quickly throw it.
@@ -18,9 +18,9 @@ Contents:
U << "<span class='warning'>You don't have enough power to enable Stealth!</span>"
return
s_active=!s_active
animate(U, alpha = 50,time = 15)
animate(U, alpha = 0,time = 15)
U.visible_message("<span class='warning'>[U.name] vanishes into thin air!</span>", \
"<span class='notice'>You are now mostly invisible to normal detection.</span>")
"<span class='notice'>You are now invisible to normal detection.</span>")
return
@@ -1,7 +1,7 @@
/obj/item/clothing/suit/space/space_ninja/proc/ninja_sword_recall()
set name = "Recall Energy Katana (Variable Cost)"
set desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance."
set desc = "Teleports the Energy Katana linked to this suit to it's wearer, cost based on distance."
set category = "Ninja Ability"
set popup_menu = 0
@@ -32,6 +32,9 @@
if(energyKatana in C.stomach_contents)
C.stomach_contents -= energyKatana
if(energyKatana in C.internal_organs)
C.internal_organs -= energyKatana
energyKatana.loc = get_turf(energyKatana)
if(inview) //If we can see the katana, throw it towards ourselves, damaging people as we go.
@@ -12,7 +12,7 @@ Contents:
//Handles elporting while grabbing someone
/obj/item/clothing/suit/space/space_ninja/proc/handle_teleport_grab(turf/T, mob/living/H)
if(H.pulling && (isliving(H.pulling)))
if(H.pulling && (istype(H.pulling, /mob/living)))
var/mob/living/victim = H.pulling
if(!victim.anchored)
victim.forceMove(locate(T.x+rand(-1,1),T.y+rand(-1,1),T.z))
@@ -31,19 +31,22 @@ Contents:
var/turf/destination = get_teleport_loc(H.loc,H,9,1,3,1,0,1)
var/turf/mobloc = get_turf(H.loc)//Safety
if(destination && isturf(mobloc))//So we don't teleport out of containers
playsound(H.loc, "sparks", 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(H), H.dir))
if(destination&&istype(mobloc, /turf))//So we don't teleport out of containers
spawn(0)
playsound(H.loc, "sparks", 50, 1)
anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,H.dir)
handle_teleport_grab(destination, H)
H.loc = destination
spark_system.start()
playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(H.loc, "sparks", 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(H), H.dir))
spawn(0)
spark_system.start()
playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(H.loc, "sparks", 50, 1)
anim(H.loc,H,'icons/mob/mob.dmi',,"phasein",,H.dir)
destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
spawn(0)
destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "<span class='danger'>The VOID-shift device is malfunctioning, <B>teleportation failed</B>.</span>"
@@ -60,19 +63,22 @@ Contents:
if(!ninjacost(200,N_STEALTH_CANCEL))
var/mob/living/carbon/human/H = affecting
var/turf/mobloc = get_turf(H.loc)//To make sure that certain things work properly below.
if(T.density && isturf(mobloc))
playsound(H.loc, "sparks", 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase/out, list(get_turf(H), H.dir))
if((!T.density)&&istype(mobloc, /turf))
spawn(0)
playsound(H.loc, 'sound/effects/sparks4.ogg', 50, 1)
anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,H.dir)
handle_teleport_grab(T, H)
H.loc = T
spark_system.start()
playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(H.loc, "sparks", 50, 1)
PoolOrNew(/obj/effect/overlay/temp/dir_setting/ninja/phase, list(get_turf(H), H.dir))
spawn(0)
spark_system.start()
playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1)
playsound(H.loc, 'sound/effects/sparks2.ogg', 50, 1)
anim(H.loc,H,'icons/mob/mob.dmi',,"phasein",,H.dir)
T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
spawn(0)//Any living mobs in teleport area are gibbed.
T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "<span class='danger'>You cannot teleport into solid walls or from solid matter</span>"
+1 -1
View File
@@ -281,5 +281,5 @@ They *could* go in their appropriate files, but this is supposed to be modular
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, loc)
playsound(src, "sparks", 50, 1)
visible_message("<span class='danger'>[H] electrocutes [src] with [H.p_their()] touch!</span>", "<span class='userdanger'>[H] electrocutes you with [H.p_their()] touch!</span>")
visible_message("<span class='danger'>[H] electrocutes [src] with their touch!</span>", "<span class='userdanger'>[H] electrocutes you with their touch!</span>")
electrocute_act(25, H)
+1 -2
View File
@@ -6,8 +6,7 @@
item_state = "secshoes"
permeability_coefficient = 0.01
flags = NOSLIP
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100)
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
strip_delay = 120
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
+2 -2
View File
@@ -18,8 +18,8 @@ Contents:
item_state = "s-ninja_suit"
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/stock_parts/cell)
slowdown = 0
resistance_flags = LAVA_PROOF | ACID_PROOF
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100)
unacidable = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
strip_delay = 12
//Important parts of the suit.
+7 -16
View File
@@ -41,24 +41,15 @@
else if(istype(I, /obj/item/weapon/disk/tech_disk))//If it's a data disk, we want to copy the research on to the suit.
var/obj/item/weapon/disk/tech_disk/TD = I
var/has_research = 0
for(var/V in TD.tech_stored)
if(V)
has_research = 1
break
if(has_research)//If it has something on it.
if(TD.stored)//If it has something on it.
U << "Research information detected, processing..."
if(do_after(U,s_delay, target = src))
for(var/V1 in 1 to TD.max_tech_stored)
var/datum/tech/new_data = TD.tech_stored[V1]
TD.tech_stored[V1] = null
if(!new_data)
continue
for(var/V2 in stored_research)
var/datum/tech/current_data = V2
if(current_data.id == new_data.id)
current_data.level = max(current_data.level, new_data.level)
break
for(var/datum/tech/current_data in stored_research)
if(current_data.id==TD.stored.id)
if(current_data.level<TD.stored.level)
current_data.level=TD.stored.level
break
TD.stored = null
U << "<span class='notice'>Data analyzed and updated. Disk erased.</span>"
else
U << "<span class='userdanger'>ERROR</span>: Procedure interrupted. Process terminated."