-
-
Notifications
You must be signed in to change notification settings - Fork 164
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update skill_chooser.dm makes it into an item update ranged buff Update lobotomy-corp13.dme
- Loading branch information
1 parent
e978ceb
commit 8294909
Showing
17 changed files
with
333 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/datum/action/cooldown/hunkerdown_agent | ||
name = "Hunker Down" | ||
desc = "Decrease movespeed and increase defenses for 10 seconds. Costs 10 SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "hunkerdown" | ||
cooldown_time = 30 SECONDS | ||
|
||
|
||
/datum/action/cooldown/hunkerdown_agent/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
if (ishuman(owner)) | ||
var/mob/living/carbon/human/human = owner | ||
human.adjustSanityLoss(10) | ||
human.add_movespeed_modifier(/datum/movespeed_modifier/hunkerdown) | ||
addtimer(CALLBACK(human, TYPE_PROC_REF(/mob, remove_movespeed_modifier), /datum/movespeed_modifier/hunkerdown), 10 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) | ||
human.physiology.red_mod *= 0.6 | ||
human.physiology.white_mod *= 0.6 | ||
human.physiology.black_mod *= 0.6 | ||
human.physiology.pale_mod *= 0.6 | ||
addtimer(CALLBACK(src, PROC_REF(Recall),), 10 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) | ||
StartCooldown() | ||
|
||
/datum/action/cooldown/hunkerdown_agent/proc/Recall() | ||
var/mob/living/carbon/human/human = owner | ||
human.physiology.red_mod /= 0.6 | ||
human.physiology.white_mod /= 0.6 | ||
human.physiology.black_mod /= 0.6 | ||
human.physiology.pale_mod /= 0.6 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/datum/action/cooldown/parry | ||
name = "Parry" | ||
desc = "Parry 90% of damage for 1 second. Immobilize for 3 seconds. Costs 10 SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "parry" | ||
cooldown_time = 30 SECONDS | ||
|
||
|
||
/datum/action/cooldown/parry/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
if (ishuman(owner)) | ||
var/mob/living/carbon/human/human = owner | ||
human.adjustSanityLoss(10) | ||
human.physiology.red_mod *= 0.1 | ||
human.physiology.white_mod *= 0.1 | ||
human.physiology.black_mod *= 0.1 | ||
human.physiology.pale_mod *= 0.1 | ||
addtimer(CALLBACK(src, PROC_REF(Recall),), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) | ||
|
||
human.Immobilize(3 SECONDS) | ||
new /obj/effect/temp_visual/weapon_stun(get_turf(owner)) | ||
StartCooldown() | ||
|
||
/datum/action/cooldown/parry/proc/Recall() | ||
var/mob/living/carbon/human/human = owner | ||
human.physiology.red_mod /= 0.1 | ||
human.physiology.white_mod /= 0.1 | ||
human.physiology.black_mod /= 0.1 | ||
human.physiology.pale_mod /= 0.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
//Curing | ||
/datum/action/cooldown/agent_healing | ||
name = "Healing" | ||
desc = "Heal all humans in a 5 tile radius (except the user) by 15 HP. Costs 10SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "healing" | ||
cooldown_time = 30 SECONDS | ||
var/healamount = 15 | ||
|
||
/datum/action/cooldown/agent_healing/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
|
||
if(owner.stat == DEAD) | ||
return FALSE | ||
|
||
for(var/mob/living/carbon/human/H in view(5, get_turf(src))) | ||
if(H.stat >= HARD_CRIT) | ||
continue | ||
if(H == owner) | ||
H.adjustSanityLoss(10) | ||
continue | ||
H.adjustBruteLoss(-healamount) | ||
new /obj/effect/temp_visual/heal(get_turf(H), "#FF4444") | ||
StartCooldown() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
//Curing | ||
/datum/action/cooldown/agent_soothing | ||
name = "Soothing" | ||
desc = "Heal all humans in a 5 tile radius (except the user) by 15 HP. Costs 10SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "soothing" | ||
cooldown_time = 30 SECONDS | ||
var/healamount = 15 | ||
|
||
/datum/action/cooldown/agent_soothing/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
|
||
if(owner.stat == DEAD) | ||
return FALSE | ||
|
||
for(var/mob/living/carbon/human/H in view(5, get_turf(src))) | ||
if(H.stat >= HARD_CRIT) | ||
continue | ||
if(H == owner) | ||
H.adjustSanityLoss(10) | ||
continue | ||
H.adjustSanityLoss(-healamount) //Healing for those around. | ||
new /obj/effect/temp_visual/heal(get_turf(H), "#6E6EFF") | ||
StartCooldown() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/datum/action/cooldown/autoloader | ||
name = "Autoloader" | ||
desc = "Reload all guns on the user. Costs 10 SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "autoload" | ||
cooldown_time = 30 SECONDS | ||
|
||
|
||
/datum/action/cooldown/autoloader/Trigger() | ||
. = ..() | ||
if (owner.stat == DEAD) | ||
return FALSE | ||
|
||
if(ishuman(owner)) | ||
var/mob/living/carbon/human/H = owner | ||
H.adjustSanityLoss(10) | ||
playsound(H, 'sound/weapons/gun/general/bolt_rack.ogg', 50, TRUE) | ||
for(var/obj/item/ego_weapon/ranged/Gun in H.contents) | ||
Gun.shotsleft = initial(Gun.shotsleft) | ||
StartCooldown() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
|
||
/datum/action/cooldown/grenade | ||
name = "Grenade Spawn" | ||
desc = "Create a grenade that blows up after 15 seconds. Costs 10SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "smokedash" | ||
cooldown_time = 20 SECONDS | ||
|
||
/datum/action/cooldown/grenade/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
|
||
if (owner.stat == DEAD) | ||
return FALSE | ||
|
||
if(!ishuman(owner)) | ||
return FALSE | ||
|
||
var/mob/living/carbon/human/user = owner | ||
user.adjustSanityLoss(10) | ||
|
||
var/obj/item/grenade/r_corp/F = new /obj/item/grenade/r_corp/lcorp(get_turf(user)) | ||
F.explosion_damage_type = pick(RED_DAMAGE, BLACK_DAMAGE, WHITE_DAMAGE) | ||
F.explosion_damage = get_attribute_level(user, JUSTICE_ATTRIBUTE)*2 | ||
user.equip_in_one_of_slots(F, ITEM_SLOT_HANDS , qdel_on_fail = TRUE) | ||
StartCooldown() | ||
|
||
//This is only used by the grenade launcher ability | ||
/obj/item/grenade/r_corp/lcorp | ||
name = "l-corp grenade" | ||
desc = "An anti-abnormality grenade. It deals 90% less damage to humans." |
31 changes: 31 additions & 0 deletions
31
ModularTegustation/agent_skills/ranged/grenade_launcher.dm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/obj/effect/proc_holder/ability/aimed/grenade_launcher | ||
name = "Grenade Launcher" | ||
desc = "Use a gun in hand to fire a grenade. Damage type and amount is based off the gun's damage and type. Costs 10 SP" | ||
action_icon_state = "cross_spawn0" | ||
base_icon_state = "cross_spawn" | ||
cooldown_time = 20 SECONDS | ||
|
||
/obj/effect/proc_holder/ability/aimed/grenade_launcher/Perform(target, mob/user) | ||
if(ishuman(user)) | ||
var/mob/living/carbon/human/shooter = user | ||
H.adjustSanityLoss(10) | ||
|
||
var/list/gunsinhand = list() | ||
for(var/obj/item/ego_weapon/ranged/Gun in shooter.held_items) | ||
gunsinhand+=Gun | ||
if(!LAZYLEN(gunsinhand)) | ||
return ..() | ||
|
||
var/obj/item/ego_weapon/ranged/chosengun = pick(gunsinhand) | ||
var/grenadedamage = chosengun.last_projectile_type | ||
|
||
var/obj/item/grenade/r_corp/F = new /obj/item/grenade/r_corp/lcorp | ||
F.explosion_damage_type = grenadedamage | ||
F.explosion_damage = chosengun.last_projectile_damage*3 | ||
F.forceMove(user.loc) | ||
F.throw_at(target, 30, 2, user) | ||
|
||
//This is only used by the grenade launcher ability | ||
/obj/item/grenade/r_corp/lcorp | ||
name = "l-corp grenade" | ||
desc = "An anti-abnormality grenade. It deals 90% less damage to humans." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
//Smokedash | ||
/datum/action/cooldown/agent_smokedash | ||
name = "Smoke bomb" | ||
desc = "Drop a smoke bomb at your feet, and increase speed for 2 seconds. Costs 10SP" | ||
icon_icon = 'icons/hud/screen_skills.dmi' | ||
button_icon_state = "smokedash" | ||
cooldown_time = 30 SECONDS | ||
|
||
/datum/action/cooldown/agent_smokedash/Trigger() | ||
. = ..() | ||
if(!.) | ||
return FALSE | ||
|
||
if (owner.stat == DEAD) | ||
return FALSE | ||
|
||
//increase speed | ||
var/mob/living/carbon/human/human = owner | ||
human.adjustSanityLoss(10) | ||
human.add_movespeed_modifier(/datum/movespeed_modifier/assault) | ||
addtimer(CALLBACK(human, TYPE_PROC_REF(/mob, remove_movespeed_modifier), /datum/movespeed_modifier/assault), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) | ||
|
||
//drop a bit of smoke | ||
var/datum/effect_system/smoke_spread/S = new | ||
S.set_up(4, get_turf(human)) //Make the smoke bigger | ||
S.start() | ||
qdel(S) | ||
StartCooldown() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
/obj/item/class_chooser | ||
name = "L-Corp agent class chooser accelerator" | ||
desc = "A device used to choose your agent class." | ||
icon = 'icons/obj/device.dmi' | ||
icon_state = "nanite_comm_remote" | ||
|
||
/obj/item/class_chooser/Initialize() | ||
. = ..() | ||
QDEL_IN(src, 60 SECONDS) //You MUST pick within 60 seconds | ||
|
||
/obj/item/class_chooser/attack_self(mob/living/carbon/human/user) | ||
//Let you pick your agent class | ||
var/list/can_class = list( | ||
//Only Agents specifically and Dept Captains get this. | ||
//Might be good for Interns to not have this option | ||
//Captains belong to the "Command" Class | ||
"Agent", | ||
"Department Captain", | ||
) | ||
|
||
if(!(user?.mind?.assigned_role in can_class)) | ||
return ..() | ||
|
||
|
||
var/list/classes = list( //Classes that aren't standard or Random | ||
"Defensive", | ||
"Healing", | ||
"Ranged", | ||
) | ||
|
||
var/list/available_classes = list( | ||
"Standard", | ||
//"Random", Currently bugged | ||
) | ||
|
||
for(var/i in 1 to 3) //You should only get to pick 1-3 of these. | ||
var/random_add = pick(classes) | ||
available_classes += random_add | ||
classes -= random_add | ||
|
||
qdel(src)//Delete it here so you can't re-roll your class. | ||
|
||
var/choice = input(user, "Which Agent class will you choose?", "Select a class") as null|anything in available_classes | ||
if(!choice || !user.canUseTopic(get_turf(user), BE_CLOSE, FALSE, NO_TK)) | ||
to_chat(user, span_notice("You decide to choose the 'Standard' class.")) | ||
return | ||
|
||
classes-= "Random" | ||
if(choice == "Random") | ||
choice = pick(classes) | ||
|
||
switch(choice) | ||
if("Defensive") | ||
to_chat(user, span_greenannounce("You have chosen the Defensive Agent class. In exchange for -10 Work rate and speed, you get 2 Defensive skills.")) | ||
user.adjust_attribute_bonus(TEMPERANCE_ATTRIBUTE, -10) | ||
|
||
var/datum/action/G = new /datum/action/cooldown/hunkerdown_agent | ||
G.Grant(user) | ||
G = new /datum/action/cooldown/parry | ||
G.Grant(user) | ||
|
||
if("Healing") | ||
to_chat(user, span_greenannounce("You have chosen the Healing Agent class. In exchange for -10 melee damage and movement speed, you get 2 Healing skills.")) | ||
user.adjust_attribute_bonus(JUSTICE_ATTRIBUTE, -10) | ||
|
||
var/datum/action/G = new /datum/action/cooldown/agent_healing | ||
G.Grant(user) | ||
G = new /datum/action/cooldown/agent_soothing | ||
G.Grant(user) | ||
|
||
if("Ranged") | ||
to_chat(user, span_greenannounce("You have chosen the Ranged Agent class. In exchange for 20% slower melee, you get a movement skill, a gun skill, and all guns scale justice 50%.")) | ||
ADD_TRAIT(user, TRAIT_WEAK_MELEE, JOB_TRAIT) | ||
ADD_TRAIT(user, TRAIT_BETTER_GUNS, JOB_TRAIT) | ||
|
||
var/datum/action/G = new /datum/action/cooldown/agent_smokedash | ||
G.Grant(user) | ||
G = new /datum/action/cooldown/autoloader | ||
G.Grant(user) | ||
|
||
return ..() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Oops, something went wrong.